软件小白一枚,因为公司需要统一零件模板,并且和我们搭建的PDM关联,需要将文件属性写入配置待定里面。之前用图号分离宏只能把属性写入自定义信息中,配置待定中只有空的标题,分离后的内容不能读取。
2 T0 q% Z& i! J& s3 x) L: A8 M4 g下面是我在网上找的说是可以将图号分离后属性写到配置待定的代码,实际调试有错误,见红色代码。0 V- R, }0 u& Z2 B
---
& v* i& N, P, U6 p9 O' T! }Dim a As Integer
3 [% ]6 @, L& n1 Y% ~
3 Z4 A4 C' e3 J) @' JDim b As String ]# [5 h- I+ e+ m) y2 P
1 q% R. y1 x, X, }9 c' t; ]
Dim m As String
& {' A) d( r% Y: ?; z0 f. n$ ~2 ?* x0 o0 `: X
Dim e As String
1 k5 ?2 v" j) H0 M! {* D8 N
9 |# t& f/ i8 GDim k As String
+ F& I6 r$ A# [* b1 j. e+ _& C8 l/ L# F( K
Dim t As String8 o% S4 h1 ^2 a3 x! }/ |
. _6 J1 {8 m% k. P! ]9 MDim c As String+ V: Y, D! G9 O% h3 |3 ^3 l
+ O+ {: e( k. K3 g: \, x% D9 aDim j As Integer9 |$ d4 @8 [9 e |9 ]
" V- F' W0 Z* E# s! ]
Dim strmat As String
) M/ ]) Y. v& m2 m' }! b$ z6 a9 C
Dim tempvalue As String
! M+ a- |: o% {& y: Q
6 P9 C5 [9 I& E# mDim Part As Object* n0 C2 {; z( F+ a, F
2 V$ _2 W# A; m6 Y" {2 r& @/ \Dim swApp As SldWorks.SldWorks& M; {# A k8 W) S
5 [* L7 H8 L- j! j( [
Dim swModelDoc As SldWorks.ModelDoc2
7 E8 _+ C; _5 L4 {9 Y- [, b5 C9 A( z) n8 W! V: E
Dim swConfig As SldWorks.Configuration- G: @' M" C7 _ D0 X
/ A8 W f2 c8 Z+ D3 \! _% M7 d9 K
Dim swModel As SldWorks.ModelDoc2
4 G/ u( g- H' H$ W8 J- @3 v+ T3 f
! t! N) z% L6 Z- Y; A y' iSub main()
: |- S, s$ W6 }5 n- d5 t) F7 Y! g
Set swApp = Application.SldWorks
: T+ O& C8 a! U5 ]* q6 R
# f+ V1 R% Q/ d# _/ G. h4 U8 mSet swModelDoc = swApp.ActiveDoc3 h- \) E/ ~4 g
$ u+ C* Z. Z' H, z" j; W- }' W% T7 n$ S
Set swConfig = swModelDoc.ConfigurationManager.ActiveConfiguration
& q2 \) ?/ B* e& Y) r, K
% ^% H2 ^& `8 d K& [Set swModel = swApp.ActiveDoc* K# b: m- M6 v
. z" N, D0 E) V" p' J* ~; FSet CustPropMgr = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguratio.Name) '配置特定延伸1 z6 m. Q- Y: L* f9 U
; e) J0 W5 `: G! P
'设定变量
( H7 v$ v f& A8 W* f6 ~$ G1 d! c2 q/ K1 {
c = swApp.ActiveDoc.GetTitle() '零件名2 N* }" b9 m/ A! \7 s$ a
1 L6 t# P" H- v! `strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)4 n* z! t( ?1 o+ J* {+ K) Y. Y
/ s6 i' C8 T4 T, g; Z: v( u9 u
a = InStr(c, " ") - 1 '重点:分隔标识符,这里是一个空格,也可换成其他符号
9 ~" |# q2 N3 ]* {, N$ `& D
4 c6 T; W! A6 o6 c" w; K, X/ qIf a > 0 Then8 P3 [2 U" H' F7 `. I2 D
/ |' j( O; q1 ok = Left(c, a)
& M8 C9 c( |, E
9 b& t3 r4 f5 Q- Q& ^t = Left(LTrim(e), 3)0 k; Y( O2 a+ L8 _" R, T
+ @5 A) ]- W. Z' B- D
If t = "GBT" Then
0 h1 w$ Y1 H2 ?& R* Z6 H$ ]) M# R! W, f C, E0 _7 ?
e = "GB/T" + Mid(k, 4)
J! _7 R* K* ]$ g; l4 X2 k4 \7 a) G, b; Z4 ~. A) t" V
Else+ a! N6 G* ?9 d( ~: W# d% u
* Z; r; |" ]3 g, F |e = k
' i: h; F9 e! @( Q8 l+ B# H
1 P, b0 S8 x- E( _4 ?0 kEnd If
/ R7 E& Q1 o+ s! ~' r
6 ?" m' M( J% T8 i' S, |4 P# p! Nb = Mid(c, a + 2)
% t( n6 R9 O& j% _' f0 l# e/ R) |$ S- ^9 ^
t = Right(c, 7)/ t& S$ u4 u0 n; H9 R3 z! M
6 i& I- s' Y' L
If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
+ b" S2 z$ ?5 T
0 b- o5 H I* @2 U2 Bj = Len(b) - 7 '消除后缀(区分大小写,即含4种)" I! Q4 s$ H! h- J8 k5 W
( R1 F0 v) {# s- k" J6 X% ^& fElse
5 B- x. N+ ^0 R7 L, ]% c# F5 ~" z" R% [$ J" Q- I
j = Len(b)
# }. Z* Z$ S: @; ^0 U
* R; j+ b) g, ~* b& X& @End If
* i0 L! u* ^: q& p- I# Y! [8 g/ P3 `% [: d
m = Left(b, j)6 }8 B2 U) q" w, e: r# h6 V3 \
4 ^( w$ n& M5 n: _+ R+ tEnd If. T+ s( h( t9 ~8 b. B+ I+ I
( L- {2 @- X- h' C3 M8 c! R'删除栏0 P3 r' {4 x! l9 T: r
. p0 J9 A* x( n( Q9 h. X
CustPropMgr.Delete ("图样代号")
6 w' q0 _- V: _+ z) }3 ^" p/ O0 G/ D
CustPropMgr.Delete ("图样名称")$ G& [+ M5 B, j' l* z& o$ D9 k
3 n) g9 h2 F6 ~% f& q# ~" Y
CustPropMgr.Delete ("材料")
7 r h0 [1 y2 j( s: e. C
) a) `, ^, O2 Y/ t9 B. D'新增2 A7 s% p9 B5 C2 Z$ o# {
: `* m* l% b; c, ?) X/ H; VCustPropMgr.Add2 "图样代号", swCustomInfoText, e; _& R2 q4 y7 \+ z$ O, m% g. P& _
+ m( @/ |3 \5 Y/ m9 e1 X
CustPropMgr.Add2 "图样名称", swCustomInfoText, m
l+ D- a7 O2 q3 T+ |
, l: }2 v; s* `CustPropMgr.Add2 "数量", swCustomInfoText, ""& i! s% @2 Y: }& }. M; @
! w/ ~; ~3 l6 E: M& j7 {* Q2 _
CustPropMgr.Add2 "材料", swCustomInfoText, strmat
- A0 w' X+ o: |5 l# `* C- Z/ H+ O+ @5 b: O$ [
CustPropMgr.Add2 "单重", swCustomInfoText, ""
$ ~3 o, Q+ v. O* l4 o$ e& N3 s4 ?) R8 g# r
CustPropMgr.Add2 "总重", swCustomInfoText, ""3 x+ n7 p+ }3 J' g2 q
7 g; W/ P4 Z) G4 h* \* ECustPropMgr.Add2 "备注", swCustomInfoText, ""% Q. l8 B& @ H2 w" y6 Z7 _
2 \( A% U: \! C' bEnd Sub8 k; B3 L2 a0 n( B
---. B* y* S( ]% Y1 E1 V
想请教下大拿们,这个代码要怎么修改才能管用。之前的图号分离宏,可以让所有属性出现在自定义里。或者有没有办法加一段自动复制自定义里面属性到配置待定里去的代码?
9 a% _) v/ F3 q
' W4 |0 s4 G6 W4 W0 J; ~- g在线等大神解惑
. U: B G, ]/ K" c6 K! g
M% ]* r* A G2 Z
! W( Q2 ^! _4 C0 t- K6 u |