|
|

楼主 |
发表于 2016-5-3 16:19:46
|
显示全部楼层
来自: 中国广东深圳
lhl2008 发表于 2016-4-29 12:541 g; H y+ e$ Y% l& {
在引用中加入
4 O1 c w% E" _2 N+ l' o4 z+ S
3 b0 t7 a3 p; d0 Q8 ^, x; m& H: C材料库文件是一种XML文件,需要引入Micosoft XML类型库来操作。
% n6 W4 N5 V+ j6 W5 R* t8 W9 D成功了,谢谢!
& G$ [ W' d: k; L z5 `+ @& b, M% G$ Y; d" P
但不明白下面这句:
; C* Z5 p8 O# N0 MSet MatList = swMatDB.getElementsByTagName("material"),括号里的“material”为什么是"material"而不是其它?
% I1 e( ~+ k5 x$ v) E7 \' g6 X, l" v* ~
# d1 E2 w4 Q& }3 Y$ ~/ _下面是我编写的获取材料类别的全部代码:0 }. h6 G. X! z1 [% b& n5 o$ h1 V
Sub main()
) b/ o! @1 c L! g3 j" \$ C) I+ I6 i3 n) F
Dim swApp As SldWorks.SldWorks
7 t6 W5 m0 J1 Z. x1 d) YDim swModel As SldWorks.ModelDoc2
4 H- M) l- u2 @6 P( {: zDim swPart As SldWorks.PartDoc
8 I2 ?; a0 H8 g4 d7 P& ~+ ]Dim dbs As Variant
+ p5 d1 x& v k1 qDim sMatName As String! y+ k+ a5 q9 o
Dim sMatDB As String, z. T+ A) w s4 ?- S1 x
Dim bRet As Boolean
& Q! z! M9 I* k; B8 rDim i As Long' d: s# \$ p5 c! v# V% I
Dim matPath As String+ ]% Y3 N" a; v% T. w
Dim swMatDB As MSXML2.DOMDocument0 w: _1 e% k8 X; u
Dim MatList As Variant5 U8 `( j1 _9 b$ L7 ~4 z7 r7 n S
/ m+ m( {4 a/ }6 l
Set swApp = Application.SldWorks
: X5 H8 O2 o W# B- f. B" G! USet swModel = swApp.ActiveDoc
) w7 W1 i$ s# @; |Set swPart = swModel
8 l1 y" t- |& x+ n8 U) pdbs = swApp.GetMaterialDatabases
) t( o! L9 h, w+ u ?) esMatName = swPart.GetMaterialPropertyName2("Default", sMatDB)
5 j9 {) n3 E/ e& F- MFor i = 0 To UBound(dbs)3 b7 W: P# E# w0 h
If StrComp(LCase(Left(Right(dbs(i), Len(sMatDB) + 7), Len(sMatDB))), LCase(sMatDB)) = 0 Then
6 k- s1 ^2 n; r matPath = dbs(i)# Y3 d! S7 \" u" O- D8 z) V
GoTo MatTpye! S$ K$ {) a' M( W$ {2 D& c6 g
End If5 Q) X6 G$ q; n* }6 C" }
Next i
9 P7 w+ Q0 \# [9 ~& c. ~0 C1 C# o+ U# Q6 _1 |! V4 Z
MatTpye:
4 T. h4 i* i0 [Set swMatDB = New MSXML2.DOMDocument
0 Q. x& {: [4 V1 U4 S8 W; B$ S: G1 @ ' 材料库所存储的路径
! F! [8 Z9 J9 h, LswMatDB.Load matPath# T0 \4 F% a! e e8 Q5 |3 O: Q A
Set MatList = swMatDB.getElementsByTagName("material")
9 _7 C( w1 C" I, d$ R$ UDim MatName() As String, Mat As Variant
( T- F+ s* J$ Q% k. Z+ MReDim MatName(MatList.Length - 1)
9 o; ?7 T% M% n8 `( r2 Q1 ~( A For Mat = 0 To MatList.Length - 1, J$ p6 T8 n' [2 _& h8 P6 u
If MatList.Item(Mat).Attributes.Item(0).childNodes.Item(0).nodeValue = sMatName Then
' g" a+ i1 f" w MatName(Mat) = MatList.Item(Mat).parentNode.Attributes.Item(0).nodeValue! c+ k" w3 {4 ^( ^2 k
GoTo Finish& ]& w# b/ j3 b2 _$ T v% E1 S
End If
3 I1 {; P7 S( T0 D# ?7 {6 @ Next Mat1 o' e. D$ q" S9 t5 r! @
4 m5 I1 \* _9 ?) ]8 y8 [1 dFinish:
" ?+ }8 P) @% S; jEnd Sub+ j0 M( E9 `, y
' v% C$ @" U7 w6 v! V
如有不对,请批评指正,谢谢! |
|