软件小白一枚,因为公司需要统一零件模板,并且和我们搭建的PDM关联,需要将文件属性写入配置待定里面。之前用图号分离宏只能把属性写入自定义信息中,配置待定中只有空的标题,分离后的内容不能读取。# B' J9 `! ^7 D6 r S" H
下面是我在网上找的说是可以将图号分离后属性写到配置待定的代码,实际调试有错误,见红色代码。
4 I1 R7 y, ]7 }1 T4 ^; ~& Y W! ^---7 v& u' Z; x; B5 G; O
Dim a As Integer
7 H Y* S+ d3 t: {) O4 w8 M2 _% c+ r
Dim b As String
5 s$ h( X) D3 G2 H3 J. p B: V& V; F# ^$ T
Dim m As String. c" Z$ z5 ^9 ?
$ t# @) R4 B- l V7 e1 p. P+ |Dim e As String/ h/ Q1 W3 @" a: a: X2 `# Q/ J
1 P$ w% p' l @1 k" U5 f" W5 FDim k As String
2 }" N- Q2 w% D: D+ _) O( Y6 i* b. H: `9 i) a
Dim t As String
& Q% u; V. g! G! z v
8 M u4 N, j. {( ZDim c As String( v5 Z, x2 p% z$ o2 g9 X3 Q: T
' }" z% a, j# [6 eDim j As Integer4 X0 D# F" q9 x" u) h; d
# x, A! _8 F( ]Dim strmat As String
$ k* ]; S' W# R7 K7 M; J+ C E* s
Dim tempvalue As String& O: \- ]2 x. ?% ~- L
& E- B, j/ Y/ j2 @7 E
Dim Part As Object
% \4 V6 w3 L; P
, }8 ]% `: @* mDim swApp As SldWorks.SldWorks9 B8 \8 i1 B2 Y9 m; d
. c8 Z/ [5 E ^# ~8 Z: dDim swModelDoc As SldWorks.ModelDoc2/ S! O; [9 y! K) M( m$ d
* Z" K" x. A2 X4 [Dim swConfig As SldWorks.Configuration
8 k& X L, W! o: r/ T% R3 S( W, s% w: i' F" `* i. _( G4 w
Dim swModel As SldWorks.ModelDoc2# v+ [0 N O- o
% v5 w8 T: M" P3 uSub main()
5 P7 [6 G3 [1 c/ D% x3 }* s3 |1 i" j
, u7 ^% q5 o; X7 GSet swApp = Application.SldWorks1 t+ ]0 y/ b! V& o
! I' ?9 j* L' ~9 U3 a) G: W. N
Set swModelDoc = swApp.ActiveDoc
4 V0 a5 t+ d& @5 l8 b$ b
& v9 @3 w9 }' a5 d- bSet swConfig = swModelDoc.ConfigurationManager.ActiveConfiguration
% d# A& P6 d1 i/ a# ~
: r4 |6 R/ _* h8 BSet swModel = swApp.ActiveDoc/ I7 x4 d/ Y S7 h- p4 U* [3 {
8 O( q9 r, O1 ^0 L& s+ }Set CustPropMgr = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguratio.Name) '配置特定延伸
) K& J: q$ `$ T, f8 _' Y7 o- P6 |: i$ J, R) ]
'设定变量
3 c5 X0 G' g/ c* d! T5 F! `" }" T8 _" v: J, C+ y' l! d
c = swApp.ActiveDoc.GetTitle() '零件名
* N/ l) R9 |5 J# j# \+ G) w/ o1 r9 L9 ]( o# v# X
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)( {2 A" F8 Z$ W9 i9 }) `
i; C. c) r& [, L" l* r4 Z' za = InStr(c, " ") - 1 '重点:分隔标识符,这里是一个空格,也可换成其他符号
! I; @ L! K' q1 b* i( B
" Q0 I' @6 r4 z& _- [8 cIf a > 0 Then/ ^- ~; O/ ^/ N5 X* r: M
- i3 L! r- p& B5 {2 hk = Left(c, a)
& N' w& Y, U `% x' w6 B
J0 c1 Q5 M) C) o: Pt = Left(LTrim(e), 3)* x5 d, Y2 s& P
" x) ]5 E$ p# S2 F- I1 ^* v
If t = "GBT" Then
9 o% l% c- ~! ?+ R6 A8 K1 n+ e9 I; f, i/ }
e = "GB/T" + Mid(k, 4)4 e4 f7 r1 V& H/ W
8 x; H3 ~. Z3 G6 N$ J0 a3 I' j
Else$ _* w9 p! r4 ]+ ?$ C+ C( r
1 u# g+ |% [/ W; \! h8 x8 G& t9 i9 Oe = k" h1 u' Y' W: b4 z% O* |0 z3 p6 ?
" Y- Z$ S* ?) l) r
End If( X4 E% Z5 a" L6 S) s* U
3 k1 J, D- K7 i$ z2 ]# w5 l3 a1 C
b = Mid(c, a + 2)+ V2 u( T: [/ s* T0 P- e8 z
( t9 T: E1 T. r- e' [2 pt = Right(c, 7)
) j5 G6 J' a3 M2 [, k
* D2 l6 L0 W6 QIf t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then E: ^# a/ u$ z0 C4 ^6 B9 _( w( q0 o
" c4 f- B) B6 y: E8 p
j = Len(b) - 7 '消除后缀(区分大小写,即含4种)
1 l, W/ G7 q, Q" a
5 v3 ?) T9 i2 v |! ]Else
. I( M" }: C, p, H# Q* o! s# @+ r7 ^+ O2 k% r: o7 m
j = Len(b)
* x% L# L. B3 n$ Y* x7 v/ ^" x) `+ i# U3 W# T
End If+ O# q$ L; J6 G6 u" f) ?
: ^9 G& q' L* h0 ^: e) }, Xm = Left(b, j), u9 d/ O0 N3 @0 p$ q1 ?
) K( k7 p$ c4 U
End If$ K9 V8 H# E. ~
( O* L9 |# ]2 F4 m$ i* ['删除栏
9 z1 j0 b M6 i4 o- b& ?" R
3 E& W' N* G' K. }/ DCustPropMgr.Delete ("图样代号")
/ d$ }" u Z3 u7 R' s, a+ @0 m6 B9 v4 J
CustPropMgr.Delete ("图样名称")1 @$ C8 X) Z* [. x" j" H
! Z) o7 G6 T8 k. p6 J! l
CustPropMgr.Delete ("材料")5 P7 W0 U+ A5 } w4 V
8 V, M% G! J$ ~'新增0 c- P- e! i7 w' _# I- d
0 M! A% H7 v/ [- b6 K+ ?; \5 S1 ]/ A8 }CustPropMgr.Add2 "图样代号", swCustomInfoText, e, ~! @2 _3 C( D) p! i
3 G& o8 a8 W& m! I8 E1 z/ vCustPropMgr.Add2 "图样名称", swCustomInfoText, m3 S! t6 ^1 @- i, @2 g5 |
) L* ]2 u* y, ] o% t# B
CustPropMgr.Add2 "数量", swCustomInfoText, ""8 A" t: @/ A7 w% C
0 q- Y, T3 l$ _; F& W
CustPropMgr.Add2 "材料", swCustomInfoText, strmat: D! L: |+ A' a5 U3 g6 P
& q$ l. t' d: k1 t7 P
CustPropMgr.Add2 "单重", swCustomInfoText, ""
7 K0 P# d. O/ w. s; n# P: S$ [9 Z2 x4 n# M/ V/ \& \
CustPropMgr.Add2 "总重", swCustomInfoText, ""
2 J( }* K" U) `* [4 k0 y5 C
9 w8 d1 m/ N p. ?CustPropMgr.Add2 "备注", swCustomInfoText, ""3 R- e, i2 {4 M6 j
1 t6 ^; D! Q8 X t, C( L
End Sub. o4 V" ~7 G ^! n' _
---) k, Z; j( C0 L
想请教下大拿们,这个代码要怎么修改才能管用。之前的图号分离宏,可以让所有属性出现在自定义里。或者有没有办法加一段自动复制自定义里面属性到配置待定里去的代码?
3 R" I% F( k0 N* B4 C
/ f" l& d1 b/ {& [4 ~) ?* G在线等大神解惑" N3 J7 @9 C3 l: }: y
- y5 G( p i0 s; l; D
2 m; E0 g4 \$ {7 M& F1 b |