软件小白一枚,因为公司需要统一零件模板,并且和我们搭建的PDM关联,需要将文件属性写入配置待定里面。之前用图号分离宏只能把属性写入自定义信息中,配置待定中只有空的标题,分离后的内容不能读取。
8 D5 \" E1 ^! Q/ f, r. P& u, S! v下面是我在网上找的说是可以将图号分离后属性写到配置待定的代码,实际调试有错误,见红色代码。
' n3 u7 z p* N---- O/ H6 G8 Y& n( r
Dim a As Integer5 _* J7 h7 c4 {1 H' A) ^* l8 R
* e, F% W5 x* Q3 h7 HDim b As String0 L' a* j9 e& c+ _& f$ I
2 N! ?) d1 l, f' \
Dim m As String
; C% e n& U3 [% v6 L. ~+ M$ @) ?5 J: i# V6 m9 @
Dim e As String
9 B# o' v3 S8 E. j, \( H* u+ N# M* W3 s/ n
Dim k As String
( P5 s; ?- [: C8 o% ]# h) p8 A' w$ _
Dim t As String% \8 i9 q( A: b( F; j+ w/ Z H; y
D$ z, G9 y3 u- [
Dim c As String
0 @8 L, y4 ]9 e' P# ]/ R. |) W+ |: l, E8 z( ?% e) L: j0 H' Z
Dim j As Integer
* y2 B. j F' z6 q
, s# o) Z$ Z- \% z9 @0 Z1 k7 tDim strmat As String
' {* d2 Z% m6 G# I) h: |3 m0 t. z! w$ b) T( H: x3 t1 L( M
Dim tempvalue As String9 \# k5 U, }# a* {) q
4 K+ F! X* R0 J* h4 M3 mDim Part As Object
7 z) j8 m4 S' b9 A6 g8 T+ \$ }5 W
" m. j- V |; s. G& NDim swApp As SldWorks.SldWorks
+ W& t8 `7 P# C) ^/ {- I/ W8 X8 i, R4 f5 T! G
Dim swModelDoc As SldWorks.ModelDoc2
4 M3 X' P0 ^9 b% k1 C+ y" ~4 e( e6 d- d; W* H, S& i
Dim swConfig As SldWorks.Configuration
* d) p/ g, T- A; ~& ?% i# a, X$ k8 [, S( v; K6 y& @7 R
Dim swModel As SldWorks.ModelDoc26 n# y" x3 v$ i" y
g, E# a9 g1 mSub main()7 G& I3 G! W+ G7 a) L$ b
( o+ U% v$ n. p3 ], rSet swApp = Application.SldWorks
X% E* p. n+ F
# D0 x4 q3 V. @ `- p) ISet swModelDoc = swApp.ActiveDoc
7 j$ D+ p$ `* Y7 c# I3 m) D4 L; a9 X1 _9 |
Set swConfig = swModelDoc.ConfigurationManager.ActiveConfiguration- K9 `% r1 s& @4 A. C7 @) i
7 F1 i2 k! M% b' `; L
Set swModel = swApp.ActiveDoc
, C7 @. \2 j+ F
& K6 p) Q$ ^+ L" G+ rSet CustPropMgr = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguratio.Name) '配置特定延伸
% c& {/ r. @. n/ {# W( E) v/ S. ~
3 L Z# J% N" q' ?% q- x" h2 @ b'设定变量
" @8 Y5 c) l5 N3 t( b# R( U+ r# ^" J( z9 y
c = swApp.ActiveDoc.GetTitle() '零件名& B/ t! @# c' ^ w( Y
, a. h+ k$ q3 L8 `3 m
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
7 p7 v9 S' g. }: x1 c! O; P
6 H( i( x% o# D5 sa = InStr(c, " ") - 1 '重点:分隔标识符,这里是一个空格,也可换成其他符号
& k" w/ d9 U4 H/ w! `& m
9 A, Y0 x) n/ M1 @1 W4 uIf a > 0 Then6 \1 H# F4 {; T# j$ r! q
$ w8 P1 u& o- n# Y! P& sk = Left(c, a)
/ Y8 {8 j* }6 F4 x: _% Z& N! v6 G" |$ E
t = Left(LTrim(e), 3)
5 r% ^3 |6 a( e$ t
2 Q7 H& t" w+ d, e) P) s3 V9 CIf t = "GBT" Then- s6 I# p$ @3 y4 p4 Y: b- l
+ U; S2 b, ]; Y" ^
e = "GB/T" + Mid(k, 4)
) _% ?$ K& o: Z3 L" o c
( X; Q8 y5 `& O8 s- pElse6 `# y4 l+ o7 {( S
( V9 }9 J5 ~; ^
e = k
( y' Y5 @4 ~- q, a; P, I3 b8 `
5 K$ E4 k. C7 E8 w3 {. [( JEnd If8 ? p2 a" O/ ~3 e8 |- {$ _
' b+ R+ A8 _0 G1 M; sb = Mid(c, a + 2)
6 `- ?1 a. f% n" b# T9 k. T# }
7 E ^ M" `8 r# v0 kt = Right(c, 7)3 g, q5 k: c8 D/ w( q/ S
9 q; j# B @$ D( D: z) j: bIf t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
4 ]+ ^: u4 T( c1 c' \% u2 K6 a( [1 E [5 Z
j = Len(b) - 7 '消除后缀(区分大小写,即含4种)
! u& |, L3 d- Z5 _7 i4 X$ h# [7 C
8 v, E! U. x* C/ o& O/ ]* m `9 sElse
. J7 m" q+ S2 ^2 A. l" L
+ R- X, m$ }' Q, Lj = Len(b)( E0 F4 `" x2 s+ o
6 U, {/ ~+ A: B, yEnd If- g3 v, v7 [$ z( S
2 q, [6 g+ a7 H: P$ _: b2 w u
m = Left(b, j), \" e4 n) l% M/ t% j" g$ G: f
# j) M4 G- l8 |5 G$ |8 n: \5 |
End If
: @ g/ R9 a; Z/ _
: k p3 X0 L/ w& W; [" T1 D0 r'删除栏3 [' |0 }: w, P& }5 a
$ D+ e9 C- ]$ x# R
CustPropMgr.Delete ("图样代号")+ ~( O2 [/ ^# p0 n: H% T3 O; O* e
2 a; x2 J- ]2 o. L
CustPropMgr.Delete ("图样名称")
% B- O; a/ `+ V6 B) v
4 Q$ ~& j# x! p# c5 mCustPropMgr.Delete ("材料")
7 I* v9 ?1 {! l7 c. M1 ^; `2 f, P
'新增
4 J: Y* H* |' _/ n; B
7 t+ G4 B0 s& f5 g. ]/ @: m KCustPropMgr.Add2 "图样代号", swCustomInfoText, e
5 X" ~' ^$ P! M) x8 Z9 m1 v* p- J7 c* b$ y( b
CustPropMgr.Add2 "图样名称", swCustomInfoText, m
, ~; x/ w; ` N) c0 j* F |7 d7 ]% t: n. v+ q; }* h I
CustPropMgr.Add2 "数量", swCustomInfoText, ""
6 [6 d8 |9 U3 B A5 t/ Z: e1 f
0 y! q6 b5 e3 {! ~( OCustPropMgr.Add2 "材料", swCustomInfoText, strmat
* o+ e& `8 G* o( J; ?$ U% M
% r: f! n0 n9 m9 ~( b, }CustPropMgr.Add2 "单重", swCustomInfoText, ""
' }, s6 I& M6 {7 ?8 c
) {! X( z8 U0 I SCustPropMgr.Add2 "总重", swCustomInfoText, ""
! x" u! s. ?- @4 L7 `
% f( I5 Y! h* Q, }CustPropMgr.Add2 "备注", swCustomInfoText, """ b1 ~# y2 u( Y8 {/ Z' Y
9 T: L$ K+ W/ TEnd Sub
* O1 H5 u3 A. S) y, G N---
( v9 B( F- X5 A想请教下大拿们,这个代码要怎么修改才能管用。之前的图号分离宏,可以让所有属性出现在自定义里。或者有没有办法加一段自动复制自定义里面属性到配置待定里去的代码?
; A) l. I' U0 i r; {( D% B1 D! j2 Z! F7 ?/ w. I3 E |
在线等大神解惑
; a& N2 R, c9 @
& A3 t, g# r: ~! V: w' }. X7 B
; R5 u/ ?/ y' {6 _1 x* _( P |