軟件小白一枚,因為公司需要統一零件模板,并且和我們搭建的PDM關聯,需要將文件屬性寫入配置待定里面。之前用圖號分離宏只能把屬性寫入自定義信息中,配置待定中只有空的標題,分離后的內容不能讀取。
* v/ O* |1 z9 }9 l4 g下面是我在網上找的說是可以將圖號分離后屬性寫到配置待定的代碼,實際調試有錯誤,見紅色代碼。! j' M) m9 u a
---
4 ^$ e5 k$ T7 F7 N' C5 y. p: sDim a As Integer
2 J, j% G- p$ a& W* T. Y3 Y3 r6 a x! X: ^4 a
Dim b As String( |- I! {8 C% Y4 S8 n
: ?: o9 B1 Y+ ~: f( ?$ F3 c/ |7 f
Dim m As String" i% q& C) p- R% z& T! f% t/ e
, D) M' f6 l6 g; q0 ]. q. j5 o3 \. yDim e As String
5 v" a5 l2 q$ d0 O! o5 X
8 N( p9 b- g2 V" cDim k As String/ m& F4 I- ]3 n1 a2 t
) n" r' Z" G) U3 i9 Y* EDim t As String
7 n+ o- x1 u+ t) {, `2 d+ \" y4 p( u6 {0 L/ M% L7 P! x/ f
Dim c As String
5 m: P( t2 l0 s) Y
& c& c" x& H8 eDim j As Integer
0 R5 K# r$ n2 D. H
. P4 _( F' f, P2 jDim strmat As String
" C6 r8 m5 P% u" p; `; h
; T; p/ j5 e# g3 x! R5 {7 L5 qDim tempvalue As String
% W0 r: |4 R" Z9 F2 a& l" h5 @
i" S9 p1 y8 i8 ]Dim Part As Object
2 F1 ^( j. `8 s6 |; ~5 i! d/ F- ^; ?+ s
Dim swApp As SldWorks.SldWorks8 t6 ?. t, M8 b' E \* d" R
% h. x/ Y" W9 j! H/ n( U# w
Dim swModelDoc As SldWorks.ModelDoc2
2 f5 k8 n9 Z7 c; V# p! x* Q1 O5 w
Dim swConfig As SldWorks.Configuration$ M6 G2 b: \+ n* d: X6 c# _
J+ E5 k% Y/ J1 b
Dim swModel As SldWorks.ModelDoc2* c2 Q; H- z: i6 S3 a" l! T
, f8 Q7 f2 l% h! ~5 Y1 aSub main()
- q" r( W3 f7 `0 j3 B0 t& y7 ^6 {* ?
Set swApp = Application.SldWorks8 [9 a9 j; r8 a, [2 T3 U, z, I
/ I& `8 u* B% f9 S7 {. R2 }; HSet swModelDoc = swApp.ActiveDoc! Q6 J+ w; b0 e& H/ ^
: X. q B) W$ T1 L' ESet swConfig = swModelDoc.ConfigurationManager.ActiveConfiguration
, _$ r: i2 ~0 h1 c3 Q! z( F4 T" [, r9 _- w) c( P
Set swModel = swApp.ActiveDoc% }: E+ i; R" m) e9 ?+ @
6 Z, ~2 n0 R' Q% A
Set CustPropMgr = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguratio.Name) '配置特定延伸: _+ w; ]# S5 C$ {9 z
" r" `! [- }, V! k8 a' ['設定變量
/ q5 e& p0 r! O& s9 V0 m. a2 g* S+ l7 s! S6 i
c = swApp.ActiveDoc.GetTitle() '零件名: V+ N6 [( A1 [+ i2 T5 x8 b
7 m$ W" `6 N, }9 o& W estrmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)/ w* M% C) j8 n9 N; e
4 h& H$ L3 K; I$ S* T5 k" o9 J( {
a = InStr(c, " ") - 1 '重點:分隔標識符,這里是一個空格,也可換成其他符號
7 P- E8 H% }& O
! m" J. W9 n0 H: J) q3 K* V& lIf a > 0 Then% _7 i0 n& F6 i1 {& h2 @- W% [
4 g2 E! `; b ~3 ^" r
k = Left(c, a). u/ w9 o7 K' T( g4 s3 I+ N
$ k( @! z( r( L! ct = Left(LTrim(e), 3)
1 w0 y( r3 c9 @0 }+ F% i d, j) ?6 A& R/ [
If t = "GBT" Then
- t4 r- R! g$ _0 A/ w7 s3 r7 C: j4 k6 L& T2 z
e = "GB/T" + Mid(k, 4)2 u# I& P' E; G( x S
) b5 B3 P8 a3 u, f# e
Else3 Z0 \/ ~# }, I- \5 \
2 h+ H5 U& Z, L# B' S& s" B
e = k
* n' q4 X7 C# d5 X b: J. `. b& ?0 D' s% L# ?+ p' M# p3 G8 a
End If' x. Y/ `6 _9 c/ V5 C
1 y0 e9 ?' y% S: sb = Mid(c, a + 2)5 V( u0 a; K* S% M0 \9 r; u8 y
% {0 w4 f' e5 T1 c7 H* Lt = Right(c, 7). P" Y T0 f( q
. T; t# I( y- x _
If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
' `6 o3 G( _+ K0 U1 A$ M
; \7 D; m, w0 E9 c- vj = Len(b) - 7 '消除后綴(區分大小寫,即含4種)
- X: @! J/ n9 G6 A, a6 e) w3 r/ s) i; F' e7 e( @
Else' r2 d( m7 Y% h/ t7 T/ X
! h" I. S5 T7 V6 ~, ?1 e
j = Len(b)* k( b. L+ [# q& M; h1 P
$ }6 u6 Q, i: s9 `1 m1 i: DEnd If
5 r( b/ V2 V9 P$ d& ?* y# {! D' j2 p. E5 |$ j" K
m = Left(b, j)/ a7 e e+ y3 D# N. E
6 ? f6 j: E+ Z+ a8 Z- [0 @
End If4 G/ s6 ]( Z7 J }; J7 A, p
$ h- o1 s! A2 w2 Y, z7 `9 ?, M% R X'刪除欄( P- L0 K2 _& W) W9 s$ K
4 _- H: O; @6 U: H. l: N/ D: R8 L
CustPropMgr.Delete ("圖樣代號")
( U% c$ K9 c0 H
4 i' n) j, E0 H3 w, E( h& V) m, Q0 kCustPropMgr.Delete ("圖樣名稱")5 ~$ \$ D/ f7 i" k: E3 s6 {1 W8 ^
1 T/ E! D7 t3 C! j
CustPropMgr.Delete ("材料")
& y& B+ O+ `+ L$ }1 a( `
7 }$ k+ N6 @& p7 J6 m/ J/ G# V5 R- i'新增
0 |$ @7 L8 y0 @3 R1 g: w9 n) F, {- U. q: R+ i
CustPropMgr.Add2 "圖樣代號", swCustomInfoText, e
8 G9 a+ ]( N' }/ D) {
; S4 r, E! b, J* W% q( TCustPropMgr.Add2 "圖樣名稱", swCustomInfoText, m% r" T2 ]1 p2 z- K$ ` i* B% l7 q* S
$ e1 A4 o& W9 I& Y' G3 Y& j8 _CustPropMgr.Add2 "數量", swCustomInfoText, ""5 ~, S; F3 i' l& h$ t" u! J0 W
- r: A; H8 r. e' z1 MCustPropMgr.Add2 "材料", swCustomInfoText, strmat
$ u8 s/ D" }6 Z1 k$ [# i" ?5 U @3 _, A: S1 T, W
CustPropMgr.Add2 "單重", swCustomInfoText, ""4 N) X7 v+ Q& \. j
. o: a( s2 s0 p6 T
CustPropMgr.Add2 "總重", swCustomInfoText, ""& o- E4 }& ^5 g" e
( `$ N/ X! a+ b5 z% u4 \CustPropMgr.Add2 "備注", swCustomInfoText, ""; g. Q. |/ j. t& t5 Q+ Z3 F' W& Z
( h6 E+ o% D6 Y7 |
End Sub: }. N _5 t9 J5 G* ?
---
& H" y. u- R; k% n想請教下大拿們,這個代碼要怎么修改才能管用。之前的圖號分離宏,可以讓所有屬性出現在自定義里。或者有沒有辦法加一段自動復制自定義里面屬性到配置待定里去的代碼?) A. D6 }: ]! w5 p! W2 p+ [& A
% B7 H' Z( U% D( D
在線等大神解惑% m, a% o- o* G8 j
: }4 X2 w' a, W* v3 i6 a4 ^
3 l# o x1 Z7 U* R0 @8 E
|