软件小白一枚,因为公司需要统一零件模板,并且和我们搭建的PDM关联,需要将文件属性写入配置待定里面。之前用图号分离宏只能把属性写入自定义信息中,配置待定中只有空的标题,分离后的内容不能读取。2 W. q' z7 X8 f6 x
下面是我在网上找的说是可以将图号分离后属性写到配置待定的代码,实际调试有错误,见红色代码。$ n. p j2 B6 N7 T8 I
---
. d$ Y$ f2 E) _6 ]Dim a As Integer
( r$ a( p( o% n) N! g1 l4 }1 `4 j5 M. H* b- d4 z" V) k
Dim b As String
6 `- c( y% D4 ?) w: u
- n6 Q+ W# @; RDim m As String; E5 K. D6 X8 s$ {" g+ b1 O
( o2 q' s5 k3 `1 u5 B
Dim e As String
. m: B' `+ `" }! y( W( j u) Z" x1 P, o# t* c Y' ^
Dim k As String2 P; e# o0 t. \% Z
& \5 X- y( H L2 S3 S
Dim t As String e9 l+ Q0 K8 C. I: C" A0 {
6 n; F' t2 A: x; y# d" \, cDim c As String
/ p# b; R+ N% h5 _/ G" h: \6 a$ e, z5 m
Dim j As Integer
* c6 E* ^2 y4 r% p5 Q( Q G
7 z6 J$ m1 u. j$ J( PDim strmat As String5 P( n, N* l8 }& h: c' I( b
5 g+ a/ d7 G# }; x3 @+ r
Dim tempvalue As String
! P g1 k6 B- T- d2 O8 W# f
# r% q& v- E: u+ l7 S0 i0 GDim Part As Object c- w* n( t3 w) ~& l. t+ [. t
: w3 y, v1 }# d; Y2 MDim swApp As SldWorks.SldWorks6 r9 Y6 b$ v4 m! d0 O! p: Q, Q3 Y
" u2 v" ~" [2 [, ]8 C
Dim swModelDoc As SldWorks.ModelDoc2) s0 n, v5 B3 Q; ]- a; m( q
D/ M' k9 ~2 d# O" {! x, d2 j- V
Dim swConfig As SldWorks.Configuration: a m6 Z. A' l* b
. k& Z" u' J9 n& h3 T7 o
Dim swModel As SldWorks.ModelDoc2
$ m9 l, q2 V, p4 T8 w* T* ]
1 a, p' {2 [0 j7 [, I0 ]Sub main()% o9 K# M" e. E0 e* i& a
2 o5 c' C6 Z# P6 \. X1 @" _; Q& aSet swApp = Application.SldWorks1 E3 X: [+ U6 {, g, G' L
3 e# l( [" |1 B- ^& g5 A3 K f2 KSet swModelDoc = swApp.ActiveDoc
+ b' O+ A( A2 X+ Q F- U6 u( _# y. N i$ ~* y# I) B
Set swConfig = swModelDoc.ConfigurationManager.ActiveConfiguration: c0 t/ S$ ~) l" q/ H7 T
2 t. \# F1 v# [& L% U, D
Set swModel = swApp.ActiveDoc
, f. k7 U1 u+ \5 T
1 I3 n: M& o2 v$ ASet CustPropMgr = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguratio.Name) '配置特定延伸9 A/ H$ _# q( I! q! A* F' h7 z8 V1 H3 h
2 U# I- {6 _) [# ?" Z'设定变量6 w6 |" m" {8 n f( {5 S
8 S8 Y# B$ `& Lc = swApp.ActiveDoc.GetTitle() '零件名3 M, U5 l! N9 x' G* Z
6 I P( s) L' ~/ F% J. J& R
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34). \7 w7 h0 k6 s3 k0 _/ V
% n: q. ?6 D- J8 \! V2 ~a = InStr(c, " ") - 1 '重点:分隔标识符,这里是一个空格,也可换成其他符号
! u0 M0 O3 P6 p4 P* @. m. S! \( k0 I `* E# {) {
If a > 0 Then
! `& [( D% X, O* s% e# H {. \1 _) h1 F
1 [, [& q* D& o: g! o: ?& Vk = Left(c, a)
5 p) Q/ e, M. ]1 R7 O7 S6 m
6 y U5 f9 ~* t5 p' N4 }9 x n2 Mt = Left(LTrim(e), 3)
/ c2 v, J9 `7 ^2 d
8 i5 x. Y! k3 p* W; Y& `+ ~* |If t = "GBT" Then
" Y* S3 T! _, l, r9 a5 ]1 [+ N$ Q" G( x1 b
e = "GB/T" + Mid(k, 4)1 o7 N% k* C$ |5 W1 u- k) r' m: D
4 s# Y% L0 a. E+ f/ {
Else L$ Q( K3 M: Y+ ^& k8 Y# k7 \/ k
/ K0 r( i7 c4 P
e = k7 E5 h. b5 m6 L
7 b" H7 k9 {. ?- D
End If3 N1 X" e7 _) o2 P4 [5 n# W
2 G: N7 V( m# t
b = Mid(c, a + 2)
$ j. W$ o! e5 y4 Y$ u2 A7 }/ {1 D6 g
t = Right(c, 7)
2 _# N. i8 m/ B1 r
+ ^0 O. N% r9 GIf t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
# _. ~& H4 g- o5 e% y& x* \$ [: W& s$ N ~& p; `) H
j = Len(b) - 7 '消除后缀(区分大小写,即含4种)+ |0 `9 L5 k, H$ p+ ]$ P6 y( Z
: b( c. _" g: t( uElse
! ?0 P+ J2 u) D7 P1 a( W9 ], S, ]5 g8 z) w& \/ {/ z
j = Len(b). E) |6 A& ]5 i/ c5 X# d
3 Q# J: E8 n6 k$ Z- G% B% T, ]. w
End If; V3 D% F7 a q* K$ g
d. `% Z1 p) H3 b1 |' _1 hm = Left(b, j)
- b# D$ g4 |; a- ~! w6 s. U0 n# O# T
. L U: n. j/ x. L. G7 f' T/ F1 y* WEnd If
; |! E* u' s; t# i) R3 C* }* ^# Y* k& u
'删除栏- F+ j* J3 d* _9 \2 w7 M, i
/ }7 E! b& ~& i0 [( F9 w. VCustPropMgr.Delete ("图样代号")3 x7 @# O \1 |+ q( [0 j
& a; n W2 _" }- i
CustPropMgr.Delete ("图样名称")7 X1 Q9 ] R) F: `9 l% V
5 ]7 m- q. y. \; C/ i; B/ x# wCustPropMgr.Delete ("材料")2 F1 d2 {% m4 W, G# g3 \
$ m% @2 K* w h% W3 z
'新增
$ y/ o1 Q5 E7 W4 r# Z( v6 q
/ r9 P+ z6 O2 j$ t/ lCustPropMgr.Add2 "图样代号", swCustomInfoText, e
' I1 G( e# _: A# x( Y6 P9 j- J1 E
CustPropMgr.Add2 "图样名称", swCustomInfoText, m0 B/ C/ j8 ^, M2 J9 N2 V
( b% B- O. D! o: i- T
CustPropMgr.Add2 "数量", swCustomInfoText, ""
. W; u3 o0 N& S+ O; u1 k' P8 t! o+ P& g
CustPropMgr.Add2 "材料", swCustomInfoText, strmat
0 J0 [' x; v7 Z9 q; v8 |
( w ?1 V4 r( o! i# _CustPropMgr.Add2 "单重", swCustomInfoText, ""
, m8 A1 s4 A0 }5 M6 \: Q1 j6 D% G' t5 T1 l) h3 B+ X) D
CustPropMgr.Add2 "总重", swCustomInfoText, ""5 H! p( F! D) _" K" g9 }) I B Y
! T1 R) {3 O% c* }
CustPropMgr.Add2 "备注", swCustomInfoText, ""
: l. ], M, D9 J Y/ a3 \+ s2 L( H* P! R2 B# }: g# W b
End Sub) O' A" _1 M" p
---
1 O) m7 _7 z/ W) I" p6 l. u- R8 |- m想请教下大拿们,这个代码要怎么修改才能管用。之前的图号分离宏,可以让所有属性出现在自定义里。或者有没有办法加一段自动复制自定义里面属性到配置待定里去的代码?
6 t& J- U2 v6 U7 H" x
6 ]- G3 a* }. i5 }' ~在线等大神解惑
" d$ `* [ t- H1 e: q2 e8 l. y5 p: i) h
3 j' F1 D6 D9 s9 y# D
|