软件小白一枚,因为公司需要统一零件模板,并且和我们搭建的PDM关联,需要将文件属性写入配置待定里面。之前用图号分离宏只能把属性写入自定义信息中,配置待定中只有空的标题,分离后的内容不能读取。
8 N! ]6 V: L0 ]. P下面是我在网上找的说是可以将图号分离后属性写到配置待定的代码,实际调试有错误,见红色代码。
& Y; Z5 V6 f, S7 `6 h& b3 L4 K$ a---
6 j( y! Y4 ^: l% |& @4 x6 N7 bDim a As Integer- N& j L/ _! N) ]* V+ r& _' S
3 d( j% m: t+ ~% ~& ?& e/ _ D# T/ j. kDim b As String
1 T, Y& W4 b+ x a3 A0 ~0 B$ V/ P
; J4 n4 y& N0 h8 x& mDim m As String
) C9 K, ^0 S1 B" j: X
, R, D4 X* B( x$ l1 L+ r8 mDim e As String3 z; \2 c0 y; _$ c8 o' R9 t* M$ q
! R, l# {; s4 _3 T$ p# q
Dim k As String* ~# |8 X% p' U A
* k: I3 ?6 V% v# K% J6 T. z6 JDim t As String
% n+ E# ?4 m! |& v1 Z' c8 ?; Q9 U1 @
2 F1 `2 e5 W! }% i% {& [" M5 hDim c As String; f5 m5 g0 L$ n
* G- h/ _5 [2 G$ e: CDim j As Integer
. [+ x* Z4 H1 I9 z, K6 x8 A1 p
) u( ~1 P- L+ e% q8 U K aDim strmat As String9 h' K# o. X$ E0 ^
" p% k, }- p6 W5 d
Dim tempvalue As String' H% R8 K1 h O) L
h0 X# R3 W/ t5 v5 `* V; H# N
Dim Part As Object
9 k* b" a4 R+ t/ j" \# K' _( n. o% W* R* ~
Dim swApp As SldWorks.SldWorks2 c. A7 r& r7 ^0 E! N6 a
% n* Z! @- g% t- ?5 e
Dim swModelDoc As SldWorks.ModelDoc2& N+ m" ?# J4 Y
& \4 y2 |+ ?4 v, I( V2 WDim swConfig As SldWorks.Configuration
9 Q! L0 a5 J% E- _: g9 ~
3 P3 c$ L1 S4 v+ r+ ?6 q. d+ ZDim swModel As SldWorks.ModelDoc2
8 ~- I# \3 W! L. F* g' d" v7 A- y, O" i; x! e
Sub main()
$ S" w; d2 Q4 N" x( j9 `* p7 i& l
0 D. R& O* D4 r2 n( @! [Set swApp = Application.SldWorks
2 H) p) A$ \, T) r' a* g2 i
$ d: N5 d7 ?% h, d, W- RSet swModelDoc = swApp.ActiveDoc- s# s; F% |! D8 q7 ?8 y0 _0 Y
" r6 g6 f4 N M$ @7 ISet swConfig = swModelDoc.ConfigurationManager.ActiveConfiguration
% _3 \2 H6 [( c# O1 F% Q' l/ z
3 [8 ^- R" ]$ s6 a7 j+ t) ~( Z! r$ ASet swModel = swApp.ActiveDoc7 @2 B$ Y* o/ r# Y
3 p4 I' F5 W1 l: O, }1 sSet CustPropMgr = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguratio.Name) '配置特定延伸
. M s4 J9 o6 }# x" N# S% S8 t E' g' W$ M% R) G
'设定变量0 `$ l% p; x" ^1 y2 ^& H
1 y4 }# G* Q9 K4 {4 i1 \ P
c = swApp.ActiveDoc.GetTitle() '零件名
9 [. k% b* r$ V' ]) ^; n# U1 c g# y( F2 M! l& f
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)& N y) G1 u0 R0 m
# }! K6 s1 z$ l- M! y- x& ea = InStr(c, " ") - 1 '重点:分隔标识符,这里是一个空格,也可换成其他符号
8 \8 R& u. @) f5 _: E% r6 Y2 x1 s! m3 w; D! c
If a > 0 Then
; \& S5 h, ~. I" F) [! K% F
9 O7 F& L" U3 x4 R c# T3 Dk = Left(c, a)
9 e& M& t5 {% t
+ t; Y* Q: N; Q/ i8 K Q+ V! U3 xt = Left(LTrim(e), 3) u1 Z! y3 l7 r- p3 J1 ~4 f! _
6 ^' @+ P. e7 p8 D! B! ^1 \
If t = "GBT" Then
" C4 |0 z7 d* `- D
( Z; W* d8 Z- [e = "GB/T" + Mid(k, 4)
z( j% L% _ P1 @* L4 q; B2 Z0 @+ S" s" t8 y: o
Else
A" p/ Z+ P, R- E7 R/ |9 v; y; Q% i4 |* v
e = k
: a" r$ r2 K! w! ~- ~; a4 Y+ U4 B [( k) H
End If
' Z+ r. v' E2 \+ `, @& ]" R$ x+ h
# ^# S7 e' m( U% f* H3 ]3 n$ u( |b = Mid(c, a + 2)
4 [- R1 m" w( h
4 F: J" h& _+ ut = Right(c, 7)
6 C) Z/ i/ h7 \" J7 y7 ?8 L# M8 W9 W% x, j. M4 e
If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then- ^- _) P0 d9 H: R# ]' a
% y& v: Z$ q) ?: V& @
j = Len(b) - 7 '消除后缀(区分大小写,即含4种): Y/ U% k( W& w8 v9 |) M
) Z; e- Y! \- Y3 v& q/ I0 B* KElse
! S) A* M+ M8 y/ k3 ^# c" a! l* K, d# { E8 J
j = Len(b); m a, y7 n6 d* V4 ]8 n
" g" P t( k; b9 nEnd If- a$ @: b0 B: y! |" x+ j
* s" N N# g4 ]3 g, ~$ ~7 fm = Left(b, j)( P4 U2 F, t- b \5 I5 P% F
0 E5 O5 k. Q- x& ^8 J; q) S K7 hEnd If: I& U C' {/ H" I) O# i! r
4 m. J, [+ S1 @& b'删除栏
% Y, w$ v* C5 A( b7 R6 O4 B
' ^/ }3 D7 A5 f3 ?/ `, @. UCustPropMgr.Delete ("图样代号")9 B3 N; U8 U2 S$ ]$ y2 _
+ ?, l3 N: \6 F0 a1 G
CustPropMgr.Delete ("图样名称")
2 z7 u/ b7 X6 C6 H; R. }9 A- V3 n9 c/ Y! f" z/ m6 r+ B
CustPropMgr.Delete ("材料") P N8 t A7 v+ V8 u0 f
* ~ n( R' H" l* b+ x. S8 g4 a'新增
- g" V9 j# H- n) c. U- q( i
0 G# ~, ~/ E/ n% {. x) h% X% t9 f/ kCustPropMgr.Add2 "图样代号", swCustomInfoText, e8 B+ @& }# p3 a& X8 _
: {6 U0 P, w2 K. L! X2 n
CustPropMgr.Add2 "图样名称", swCustomInfoText, m
4 Y0 v! \; |7 m' e* T$ S! L* ^8 a! F) a) m6 f$ d [
CustPropMgr.Add2 "数量", swCustomInfoText, "", Q; X) T U. p0 E5 `, @$ w C
0 s& _9 g) j9 e' y
CustPropMgr.Add2 "材料", swCustomInfoText, strmat5 J# z& f3 C5 `6 ]/ O9 P& M
' s3 [- K, \& C
CustPropMgr.Add2 "单重", swCustomInfoText, ""
, i* t3 F) S0 j+ \- n% G! D: C8 I+ B& T& S. T7 E
CustPropMgr.Add2 "总重", swCustomInfoText, "") G0 P4 g$ I i, l6 b* \6 d
# O- \/ b! V. s: G6 `! K
CustPropMgr.Add2 "备注", swCustomInfoText, ""
: Z% z. Q: R8 }5 I; S
9 J. f5 E, Z; [' O/ ^$ uEnd Sub$ l/ T2 J I) d
---
( |) `2 k, {+ Y4 S# e+ q想请教下大拿们,这个代码要怎么修改才能管用。之前的图号分离宏,可以让所有属性出现在自定义里。或者有没有办法加一段自动复制自定义里面属性到配置待定里去的代码?
. m, p% Z! K% e7 a3 z$ r- d
7 p/ g1 x# i, i3 n4 A在线等大神解惑% ?9 R) l0 T! f, I
& `! t3 {! b9 C9 F
3 ~* A& f% n1 S! |& }1 K4 ? |