|
|

楼主 |
发表于 2016-5-3 16:19:46
|
显示全部楼层
来自: 中国广东深圳
lhl2008 发表于 2016-4-29 12:542 _7 M' a, Y l2 W
在引用中加入9 T: N( Q& {& q* H: n& s
+ G* S" `' m5 ^% P: G q材料库文件是一种XML文件,需要引入Micosoft XML类型库来操作。 ! R: H9 j; u, n8 \8 I
成功了,谢谢!
P% R8 z4 h6 r6 ?" t8 x* [7 D
9 {; K; c$ k0 c1 Y4 y但不明白下面这句:
- `- s/ c& U6 G: }Set MatList = swMatDB.getElementsByTagName("material"),括号里的“material”为什么是"material"而不是其它?# J O2 j g d: K* e
" u: _1 s9 i7 G4 ^
1 Q% l5 M u7 Z9 Q) `2 l下面是我编写的获取材料类别的全部代码:
0 w! E3 u. I% @4 RSub main() h0 L; I6 f$ j0 o7 ~
# W: d. |0 D7 b) l) K2 qDim swApp As SldWorks.SldWorks! \ z+ k2 O+ {# K( q, @* a
Dim swModel As SldWorks.ModelDoc27 v2 S: {; C, ?6 O& |
Dim swPart As SldWorks.PartDoc
) j- p) R r) B+ i4 @6 a: y3 cDim dbs As Variant! h+ v% [, I5 S4 Y6 c0 |
Dim sMatName As String
4 s" }8 ]) z* p8 } MDim sMatDB As String
% M" U6 F' C* d6 [Dim bRet As Boolean( j$ c& }. e" m6 a/ N
Dim i As Long s( [: R6 O4 f( t; l' {$ H: _. S
Dim matPath As String
& ^) r# K7 C$ s+ B4 k" L' VDim swMatDB As MSXML2.DOMDocument
' v9 g7 _0 z! R$ wDim MatList As Variant
+ f9 j0 W7 U: T
7 |$ D) ?4 }5 dSet swApp = Application.SldWorks3 Z$ k! c& ^ X% o5 p- R0 g
Set swModel = swApp.ActiveDoc
/ _: b( n+ _- z6 A9 \4 HSet swPart = swModel1 x( l$ y% U- f+ w3 ?3 U
dbs = swApp.GetMaterialDatabases
* W' y! ]4 x$ O+ \, |sMatName = swPart.GetMaterialPropertyName2("Default", sMatDB)* d4 S$ ~) M( y) Y6 P9 {3 x
For i = 0 To UBound(dbs)% M* Z$ ?1 ^; n7 \3 k
If StrComp(LCase(Left(Right(dbs(i), Len(sMatDB) + 7), Len(sMatDB))), LCase(sMatDB)) = 0 Then
8 ~0 S0 Q5 r. H2 a matPath = dbs(i)& E' k" X3 v0 Q8 h
GoTo MatTpye
+ u: `/ d" h; a3 l0 C End If9 i# S( `* x+ h3 E: E1 D
Next i' u1 K1 N# F: @% u- ?2 ?. Z# r
9 [0 y) a$ k9 i* r& Z# E( jMatTpye:1 F* j3 D6 ^: ]( u% l1 W
Set swMatDB = New MSXML2.DOMDocument. H8 {! G' Y) p
' 材料库所存储的路径
' w# p9 {8 p1 m% v. lswMatDB.Load matPath) X2 f6 E, x- L; c, V+ B
Set MatList = swMatDB.getElementsByTagName("material")1 W( j$ \1 d# E* F7 b- X
Dim MatName() As String, Mat As Variant
/ r# S& w- v/ F7 jReDim MatName(MatList.Length - 1). S! i8 b& b, i h! d4 u' v, @
For Mat = 0 To MatList.Length - 1
( C' S$ ]: n( [* L' M5 }. ]. y If MatList.Item(Mat).Attributes.Item(0).childNodes.Item(0).nodeValue = sMatName Then
Y, @; s! R, ~- C5 y0 p M MatName(Mat) = MatList.Item(Mat).parentNode.Attributes.Item(0).nodeValue: {- m* g5 B6 I. S6 J
GoTo Finish6 H- {5 m% j$ S& N9 q. z, X
End If3 e W1 O( u& ?, F- L: O
Next Mat
( ]/ q4 ?- C0 v& M9 N
3 @" n5 H5 d6 }! ?, A& [* }: iFinish:
" r# Z7 q! h8 T) w) h4 jEnd Sub
0 j7 a" X# a5 W( R& t
3 @$ H' e u" Z: N8 S7 u. ?) W' D如有不对,请批评指正,谢谢! |
|