久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

機械社區

標題: 圖號分離 [打印本頁]

作者: 吶,你要怎樣    時間: 2019-4-22 14:18
標題: 圖號分離
軟件小白一枚,因為公司需要統一零件模板,并且和我們搭建的PDM關聯,需要將文件屬性寫入配置待定里面。之前用圖號分離宏只能把屬性寫入自定義信息中,配置待定中只有空的標題,分離后的內容不能讀取。/ m3 n. f+ T! ]+ o1 b* }* }
下面是我在網上找的說是可以將圖號分離后屬性寫到配置待定的代碼,實際調試有錯誤,見紅色代碼。. E0 v! ?# c' n. ]7 W
---
4 G( w' S3 q  o$ pDim a As Integer& ^4 @# b  O, U7 }

% t. F) P; h, IDim b As String
, V6 o* b% _( I, m3 E
. Q; M$ x7 b2 w$ F; f% pDim m As String
$ f1 d0 @+ Q* |2 b# T# ]/ m
8 {  C* v- C6 H. Y# mDim e As String
! T' g# Y2 \& [; v3 w. ^9 Y" m6 w% ?9 f" x7 O, Q
Dim k As String
7 o( x# X0 p7 K; w. J- e
  U8 |1 V, S0 V0 }: w# L* U% m9 B) pDim t As String
6 ~5 x* h6 u+ X/ D# R: i/ S! n
( {4 f- Y2 w2 F5 `' A' rDim c As String5 l  H3 }& f' x

. t( s. {* ^+ P. sDim j As Integer
. d* v5 ^# ], ]8 K4 g7 z% ^1 m/ @% r  c7 e7 V5 P
Dim strmat As String( ]- t/ b# h; U3 w
$ k6 V1 p; Y: x  T0 v$ `
Dim tempvalue As String
9 Q4 s' o" u4 M. ~1 V  c$ a1 P: b3 y* v0 r; {, S
Dim Part As Object/ s3 S9 V5 a! j0 }# L3 X4 U( d
3 T/ k0 r' I9 z/ t" Q
Dim swApp As SldWorks.SldWorks7 R( a7 ^  `7 {5 W

+ z/ ]. D( m* |. J4 pDim swModelDoc As SldWorks.ModelDoc2
1 A4 ^" i) [, X: o; M& P9 Z( h! t) I) I( F' c8 T2 ~$ {
Dim swConfig As SldWorks.Configuration6 I2 ~' g8 E, W3 O

" R$ |# p  x$ l3 rDim swModel As SldWorks.ModelDoc2; v) [! S9 J/ l; x, u

: I4 w; i' U! N& u1 lSub main()3 F4 z" p7 R. J2 v2 U8 w# y% k
. A( m! f5 L( O) T* A
Set swApp = Application.SldWorks* h0 Q6 l& M* p6 i  ]

( |9 R# v- D" j" q6 C& `Set swModelDoc = swApp.ActiveDoc" Q0 w( |+ D- q4 F9 |

( h0 P0 t3 f% r: n0 gSet swConfig = swModelDoc.ConfigurationManager.ActiveConfiguration
% [' p9 h9 u  ~. {5 k; Q
& g* V- V7 A6 @0 ^, e# YSet swModel = swApp.ActiveDoc- T3 L0 w5 H! L8 M/ E

, t+ b! K7 j6 j1 ?3 t$ t" kSet CustPropMgr = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguratio.Name) '配置特定延伸; B, w2 a+ O; O
4 a% {8 j" ^$ {% `$ x. e' \, Q
'設定變量1 f; g; J* ?4 i* H8 |3 k% K/ i  @
5 ?, g; p' ?, N2 W3 j5 @
c = swApp.ActiveDoc.GetTitle() '零件名
, c& Y% f% m( o% H# b% B6 t3 N* ?& Z6 E  W, M0 o" `1 f
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
, R+ u3 j& w4 l, K- i/ L  B  q/ E9 v" |- r, v
a = InStr(c, " ") - 1 '重點:分隔標識符,這里是一個空格,也可換成其他符號4 a- ], Q! b3 I7 `3 w  H% n

! B' a* D9 o" ^If a > 0 Then
! B1 u" A9 U7 K1 I, I1 G
% G: L$ D9 _4 S/ B: B9 ^k = Left(c, a)
( A( x; `' G+ t+ O. B% G! A% s# \" V7 W/ ~- Z, S
t = Left(LTrim(e), 3)
% _- }9 _& E$ M% D" W, H# X+ Z4 _* [- g  N" m# M4 P4 z
If t = "GBT" Then' D$ h( X1 m  f
. r+ A: a2 c% e
e = "GB/T" + Mid(k, 4)- E- A1 j/ O) D5 {- S, ]

5 m( z4 ~5 G% |4 [8 ^Else3 k; v0 U( C# s8 e

6 [" l& t) q+ K3 O/ s; A! o' J5 Fe = k
; o) c' D  h* k
) F) D. A- Q* N4 b) O, x' qEnd If
: Z, A$ R: }0 M8 m
2 e5 u, |% P5 V8 ab = Mid(c, a + 2)+ C8 y9 s0 r/ A. f. c8 L/ I

: V" ~1 s$ A0 E1 u6 L, }/ ^t = Right(c, 7)9 Y% ^+ d/ R( @- B5 _* H

9 K. p, P9 y5 J$ _If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
( X* Q0 w/ ]' f! K( l' g
" [' I1 I0 i! r" G# oj = Len(b) - 7 '消除后綴(區分大小寫,即含4種)5 \7 z: v- B& m; d; |" j8 P

* I- I; k! m! X8 a- Q, Y" TElse1 j" W, s# ^! h8 v/ x2 Q  P8 U! C

2 a& q  Y& [0 rj = Len(b)
0 R- a  \0 S( c- T6 F! c. z6 J' Z" s$ Y
End If
  R" r% i) m  d6 R6 _8 E9 H
$ B/ k. R! {+ L, Zm = Left(b, j)6 L* z3 v1 h6 U% a
4 V; K% G5 k2 X# |! I, I
End If- I8 h9 `. [; x  Y: F: y4 ?

: v7 ?' ?, X/ y$ d" r9 X'刪除欄! @  G* T* J+ K7 v

; X: g( x" V3 Z9 l5 |: F  ?; y8 MCustPropMgr.Delete ("圖樣代號"). d5 u. d: Y9 w1 E2 o6 a) a# W
8 P( e& ~9 T7 B" m: i" h
CustPropMgr.Delete ("圖樣名稱")
% b' L4 q9 ?7 R9 X% k# q9 d1 h9 L3 i- N0 U8 k$ o8 Q
CustPropMgr.Delete ("材料")
5 f- L% b4 R$ {2 {9 c7 d4 D1 b0 k9 G5 P& B
'新增! C( ~. ^& r) a- C8 F2 r; l' j
) M7 @+ k  A# Q6 }0 e; A% W
CustPropMgr.Add2 "圖樣代號", swCustomInfoText, e5 p% n8 n! ?: Y  ]  _* X4 a4 c
8 I$ d3 D, }& }5 V, l" V
CustPropMgr.Add2 "圖樣名稱", swCustomInfoText, m7 l' R0 q! v! Q3 [5 X& Y
4 Q( ]$ h: V/ l8 K9 L& p3 g
CustPropMgr.Add2 "數量", swCustomInfoText, """ V" \4 H7 K$ s" `- Y

7 H: M* T! |% x2 t6 c8 y4 c4 TCustPropMgr.Add2 "材料", swCustomInfoText, strmat
; i  I6 o. f6 e- Q( [/ g2 B
+ O5 j% F- h" K7 DCustPropMgr.Add2 "單重", swCustomInfoText, ""
( N0 a! o4 J. d" N  m
5 J  f0 K! w6 Q) HCustPropMgr.Add2 "總重", swCustomInfoText, ""4 i: i2 m9 Y7 ]+ k! V! f( v% m, v9 J

/ X1 t: w% O8 g. m6 {CustPropMgr.Add2 "備注", swCustomInfoText, ""
. e$ M! ^0 r- s' @% [5 U; ~/ h$ q9 y3 b  @! n
End Sub  o/ I+ A& [1 J; ]5 P: C4 M& r
---" R3 E/ B* j# j  o* ~6 }
想請教下大拿們,這個代碼要怎么修改才能管用。之前的圖號分離宏,可以讓所有屬性出現在自定義里。或者有沒有辦法加一段自動復制自定義里面屬性到配置待定里去的代碼?) E% j5 {* s- c4 I8 A( H/ v

6 k9 e8 }! C5 d- D7 J4 Z在線等大神解惑- H% s+ c( K9 N$ G6 X$ r5 V

4 C& Y3 Y& I# b" S# ?  Z3 G: g& j
. h% |" M% J9 U/ ?. j2 g  g9 N2 \
作者: 吶,你要怎樣    時間: 2019-4-22 14:32
可以用宏來實現自動復制嗎,嘗試錄制宏,沒有用
作者: Wukui*    時間: 2019-4-22 16:58
叫我大哥,我可以分享現貨給你。。。哈哈哈哈哈
作者: 吶,你要怎樣    時間: 2019-4-22 17:10
Wukui* 發表于 2019-4-22 16:58# A9 R3 r5 r: u3 e* @
叫我大哥,我可以分享現貨給你。。。哈哈哈哈哈
# K3 ]' p% a: v: P
大哥好
; v2 q& L8 B& J2 d: a3 D
作者: 金卯刀-劉    時間: 2019-4-22 20:15
2 C* j$ f8 A7 F! {" y4 ?, E
'定義sw
( j! ~- X4 U  O$ |4 n( \$ J. w$ Y+ x3 D9 I
, u  s8 q- ~. E- W

0 c# l6 u6 s/ ^4 b+ r  U6 ADim a As Integer3 a  m$ |9 h9 U
; s9 I  y( F! ^1 h; ]+ w/ i( T
Dim b As String
& Z- |, V, i& B
6 {0 A& i) S3 X( c$ HDim m As String
, q) i8 v0 o% d' v0 f# b; g! J# m7 j0 t
Dim e As String$ W( \/ E2 w+ I( r
# F. L; j4 S7 V6 q# S9 L
Dim k As String
  ?0 L$ @' `- T1 N( @
+ G3 H% L. a: P6 R3 ZDim t As String
8 h7 s' G- h- D' K1 ^# e. K) p% r; x- A1 I* ^1 H) C
Dim c As String
  w5 u- j% @8 m; ]6 [5 W* P3 D0 A6 l9 P1 W
Dim j As Integer9 A" H9 }4 j1 P" E" A: @8 Q

7 G0 E5 j9 O. l1 U7 B* _2 ?  D6 vDim strmat As String$ F! e7 }# |/ W. u) F8 K2 G

% j% c0 P, i; _( {  O# wDim tempvalue As String
2 D3 R- w/ D/ |1 G# P, R9 {# M# |
# A3 q- @: a! x0 A! [$ @1 eDim Part As Object
3 C* o: g3 ]2 {0 q- f& M5 d% T& [0 W, e: B" Q
Dim swApp As SldWorks.SldWorks
7 O1 f8 J4 v( O1 N7 ^* ^' i  Q: @/ Z) O
Dim swModelDoc As SldWorks.ModelDoc2
# P2 n4 P5 W; a: y% j9 h
! J' p" H9 W1 G+ i6 D0 t* C2 oDim swConfig As SldWorks.Configuration
/ A, W7 W$ T+ Y- s
* `' G6 J7 p3 M7 GDim CustPropMgr As SldWorks.CustomPropertyManager
- z6 D% I) I2 b
" ~2 |4 L) I* l$ U% d) VDim swModel As SldWorks.ModelDoc2
; R% |7 y0 _7 f, c/ P' D$ r2 r& t7 m( c
/ D% z* _! J" R5 T; `
, F' N# V; u2 Q% K$ i6 e- }6 ^! P
Sub main()( S) _3 {' G$ \) o; y4 }
$ r, ?/ e" {: O: ~+ ^
Set swApp = Application.SldWorks
9 y* E6 N# Q( i4 `% f* P) \6 V  u4 N4 X$ j2 w- D& S5 L$ p: o
Set swModelDoc = swApp.ActiveDoc, e2 e2 |/ M( d+ z7 ?; m
, e8 ]; |: s& e7 v
Set swConfig = swModelDoc.ConfigurationManager.ActiveConfiguration
) E; m% C) z1 ^/ E3 d2 q. O/ f8 c2 P! K% s( D8 e* d
Set swModel = swApp.ActiveDoc
8 f. L1 ^$ Z1 U- k, m5 ]& A) J- l6 ~  Q6 D
Set CustPropMgr = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguration.Name) '配置特定延伸
7 G* U! G" n8 m8 u: ~- a7 a% u+ V, G7 S: d" k& T7 n
8 U0 S0 P- G( H, P

, w# v1 R( V* v1 D* Z7 [' l'設定變量/ g8 m" r( V- y. Q

% X& }  b9 U) N  x+ D  Z' c' @: Qc = swApp.ActiveDoc.GetTitle() '零件名
; T5 q  g" E- |, s. l) i5 T3 k( X, F/ |
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
" k0 i6 f5 J; [! V8 `% S4 j2 F9 e4 U$ q0 u( j+ ]" Y& T
a = InStr(c, " ") - 1 '重點:分隔標識符,這里是一個空格,也可換成其他符號
9 d4 B, p6 ~! Q/ k8 h
" J+ Z6 o# x4 y+ e& o. h4 ]If a > 0 Then
3 d; |! B; x+ U. L) y: Z2 L/ I! m9 l. p2 E! a; g$ a8 O; z
k = Left(c, a)  I6 Y2 Q3 o' V

6 c( Y2 U0 N+ p2 b* [3 C4 Ht = Left(LTrim(e), 3)
" W) m3 y3 L& p* }& V) L2 R6 S2 N! @
If t = "GBT" Then
! U8 B' K2 d! ?; z
$ A" M3 z0 O" C1 r! ?) m, Me = "GB/T" + Mid(k, 4); f0 ~# I& s5 \6 w) T. d( A8 N
# z+ }" ~1 Z& F7 G0 Q
Else2 w1 F3 u3 ?5 b
# v8 w6 E1 v' J( h2 k
e = k
) R* v: H3 A" V* c& u% D
1 F4 R- b; p; ?# i/ A  k. AEnd If
6 t( Q  B" U; R5 a2 U) N4 b' [0 d: m5 a9 F( l1 J
b = Mid(c, a + 2)
- p2 T- [' o7 h5 x, |' r) ~3 _. b1 h* \# [4 r3 r& }9 A! Z
t = Right(c, 7)
+ S. X. c" {6 H* B
  {$ I: l% R! fIf t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then' P$ J8 `% `* z8 D1 a- k4 K- c9 M: |
; _9 @. }/ u8 @5 C9 T
j = Len(b) - 7 '消除后綴(區分大小寫,即含4種)* b$ s3 u0 P& |  u2 i
8 F( Q) J# s$ H* H* Z  J# c
Else
6 Y, Y: u7 [( s( e$ p+ z+ j0 N( z& j, a' n) O! g" C
j = Len(b)
5 o3 @/ B3 P2 e( }4 m
( y: x. n8 h7 I1 Y% C7 xEnd If
9 b, L5 J. P% v* @0 s) x
9 ~$ h( o" q9 |5 d  E' sm = Left(b, j)
% L* g5 i$ @+ i+ B
/ J* x8 O0 W( V0 O- e4 |End If/ q% {( D) x$ {9 o! u! c

3 `; l9 ?8 T# A# r& W; J5 J- r'刪除欄( v4 U; s. x1 Z/ p

3 C5 w) o; P5 T) OCustPropMgr.Delete ("圖樣代號")
8 X, f+ f8 f0 l
/ C( P- S4 f/ m* \7 o$ {/ qCustPropMgr.Delete ("圖樣名稱")
$ r' V' C" n8 v3 H* U/ {8 q1 v4 m8 E
CustPropMgr.Delete ("材料")
3 z4 f1 `% M4 W) V3 F" G/ k9 j0 b
) G$ Z) ?7 V" l0 k' q' S! \' H. l3 X) T8 m, o& s) ]

4 z4 a6 N: E7 k8 V'新增
- W8 ?* j# {: T1 L0 M
1 s8 C) {8 V* r* YCustPropMgr.Add2 "圖樣代號", swCustomInfoText, e' s# c; o5 T8 y; U' y
$ w. y4 d+ @- `
CustPropMgr.Add2 "圖樣名稱", swCustomInfoText, m
9 f8 M* O! t# x
0 G+ k9 }' e0 y8 M" j$ KCustPropMgr.Add2 "數量", swCustomInfoText, ""' w' t6 w- X  \4 A
, `: V7 T, Y, n* Z1 P: P8 ^
CustPropMgr.Add2 "材料", swCustomInfoText, strmat
" y  g8 e' W) Q
& s6 i% [' i8 RCustPropMgr.Add2 "單重", swCustomInfoText, ""
8 C9 ]4 p) n$ W9 J
3 n7 a7 o( d, w+ lCustPropMgr.Add2 "總重", swCustomInfoText, ""; N! j& h% _$ ~: f! K5 j+ I$ T
3 j% v  t7 U5 P* r
CustPropMgr.Add2 "備注", swCustomInfoText, ""
$ J' [$ T& H+ ?2 G4 }
( V' p0 v2 \( [7 W8 e- }, ?" S' \* p3 X
. |5 j+ X; J$ j
End Sub
" h$ x5 D' P* _" j  n8 e3 x
- ?" W! v3 i, C2 B( n) A: X親試管用,注意圖號與名稱中間間隔是“空格”
作者: 吶,你要怎樣    時間: 2019-4-23 09:24
金卯刀-劉 發表于 2019-4-22 20:15/ t8 Q9 w/ \; D! i
'定義sw
; C+ E- q" s+ a9 g$ U: [" @) C
感謝大佬,實測有效。但是還是有點小遺憾,不能實現想要的功能。
- y# \% s! X* S6 z& I, H----4 [5 i9 T1 W1 y2 S
CustPropMgr.Add2 "數量", swCustomInfoText, ""' r. t% ^* O$ W! g, K# h# a5 S

+ G2 g' A' Z( k/ p

8 P' r! Q9 x( [7 A/ u( T  q8 ICustPropMgr.Add2 "材料", swCustomInfoText, strmat9 T3 z6 ^3 d3 S) T

. a, z7 W6 X+ h, Y; ^9 Q7 H2 N# P1 d----4 `4 r/ F- P+ n
如上面這兩段代碼,材料后面strmat,會直接連接零件的材質,而類似數量這樣后面是雙引號的,則不能鏈接屬性。
! j& h9 c# B3 g% h* P& u屬性編輯標簽在自定義和配置待定中只能選擇一個,這就很尷尬了。
) x; r, Y. R7 N8 u& u, f' l  i- A) b5 W" C& l% ?
不知道大佬有沒有辦法,可以將代碼中這些信息直接鏈接相關屬性?感謝大佬
% d2 ~4 G) t, k9 N4 @' P7 o
作者: 金卯刀-劉    時間: 2019-4-23 15:40
吶,你要怎樣 發表于 2019-4-23 09:24- U8 f: j/ i" x3 m6 l5 q
感謝大佬,實測有效。但是還是有點小遺憾,不能實現想要的功能。, ?1 O  T/ d1 E. V7 R' `
----  V- _: N: W2 R. M- r9 |3 n
CustPropMgr.Add2 "數量", swCus ...

9 [8 Q1 W( j7 W( ]. A1.有辦法在配置特定里增加數量,但那是另外一個宏,是統計整個裝配體里的零件自動寫數量到你指定是屬性名。并且是在配置特定里。
) P4 |' D/ b: b1 o1 a" k2.材質是要自己選擇的,一個宏沒辦法寫不通用的東西。如果想通用只能是關聯零件材質屬性例如"SW-Material"
; V' T  C$ o$ [+ ]" O' j4 i3.不知道你用過屬性模板,你需要的這些是可以通過屬性模板實現的  a1 d+ D% O7 U& I

作者: 吶,你要怎樣    時間: 2019-4-23 16:49
金卯刀-劉 發表于 2019-4-23 15:40
9 N% b7 y. r' \9 F$ _' Y1.有辦法在配置特定里增加數量,但那是另外一個宏,是統計整個裝配體里的零件自動寫數量到你指定是屬性名 ...

) F2 O% j" f, D( B! Y! f" w' i屬性標簽是有用的,但是不能同時寫入自定義和配置待定,只能選一個。零件繪制完以后,材質、數量等信息就已經通過屬性標簽錄入了,現在其實就是想讓自定義里的信息同樣地出現在配置待定里。* k$ M+ O9 J  ]; P' |
因為看到大佬貼的代碼里,最后Add的東西,如下:) X3 @1 Q7 E1 F! v2 h" J& ?$ b
----
1 z) s2 k' n* |% TCustPropMgr.Add2 "圖樣代號", swCustomInfoText, e
4 v7 k5 k7 e: n" n* y* h/ D----( E! M3 d1 v/ o7 e
這里的e和我之前的圖號分離宏里面定義的是一樣的,然后運行完前一個后,再運行你發的代碼,它會同樣的讀取e的信息,然后再配置待定里面就會出現和自定義里面一樣的圖樣代號。只是好像不知道可不可以把其他的信息都定義為某個字母,這樣是不是可以相互關聯上?
3 D7 t  h8 F( h( N& ~- X
作者: feelling    時間: 2021-7-30 10:28
看起來不錯
作者: 太一OS    時間: 2021-11-30 18:12
金卯刀-劉 發表于 2019-4-23 15:401 V. g' L. }) M8 D' O
1.有辦法在配置特定里增加數量,但那是另外一個宏,是統計整個裝配體里的零件自動寫數量到你指定是屬性名 ...
+ [( S) ~4 l/ E6 G1 X* P$ G
你好,請問一下圖號分離能實現三段分離嗎?比如圖號 圖名 備注( U$ |$ D. J" r% Y+ [- [7 P

作者: 東升西落自動化    時間: 2021-12-2 11:20
謝謝!我正好也在找這方面資料。
作者: qwmib7669    時間: 2023-11-21 14:41
C:\Users\Administrator\Desktop
作者: laotoule8    時間: 2023-11-23 22:18
本帖最后由 laotoule8 于 2023-11-23 22:20 編輯
7 e8 ?! x; U6 D) t2 \8 A; }6 d1 b. L5 W/ E
不錯啊。
作者: qwmib7669    時間: 2023-12-6 09:00
不能自動生成 “類型” 的那列的值,“數值/文字表達”這列都事空白的,
作者: 請填寫名稱    時間: 2023-12-6 13:49
插個眼,有時間再來研究
作者: mengfeit    時間: 2023-12-7 11:55
唉,看著就頭麻,還 是老老實實敲吧8 U/ v; c- h( G

作者: 大白123    時間: 2023-12-14 17:02
吶,你要怎樣 發表于 2019-4-22 17:10
( j5 a2 s' r- }0 V8 I/ W大哥好
6 g' a! |$ Z2 G" \/ \
我也有宏
# p( z% a2 G# H
作者: 獨孤求劍A    時間: 2024-1-25 16:00
看著頭暈
0 k) q  ?% H4 d$ B/ K+ M+ y2 m9 b. h
作者: 劉生693    時間: 2024-1-25 16:37
高手如云
作者: 網中人000    時間: 2024-8-26 09:05
下來看看




歡迎光臨 機械社區 (http://www.ytsybjq.com/) Powered by Discuz! X3.5