|
|

楼主 |
发表于 2016-5-3 16:19:46
|
显示全部楼层
来自: 中国广东深圳
lhl2008 发表于 2016-4-29 12:54
5 O |) K6 I/ E/ z9 s: }1 j a在引用中加入
: I' X) I. q/ i0 M" H, y
1 Y: @% Y* `' f# E+ ]6 ~( x材料库文件是一种XML文件,需要引入Micosoft XML类型库来操作。
$ N/ t# W/ Y4 R$ u7 j, m成功了,谢谢!
/ i2 u! H) Q, |
/ J, n( S" q" g! w- K但不明白下面这句:2 L# l {& e: U4 E9 E) A8 k1 e" m8 D
Set MatList = swMatDB.getElementsByTagName("material"),括号里的“material”为什么是"material"而不是其它?
0 b8 s% R- A' s& Q$ L+ V- ]* W4 Y
; f5 g b" A, z
) k+ W7 N& ]7 ?" H) A下面是我编写的获取材料类别的全部代码:- T R6 z5 A, s% S& A# r* b
Sub main()
9 q, ]/ H7 I% w" z/ z: Z) v; O" E+ @: j5 R
Dim swApp As SldWorks.SldWorks
' ]$ P& y' Z- o6 q% M2 V( }Dim swModel As SldWorks.ModelDoc21 M9 l2 S" B" `7 r# J
Dim swPart As SldWorks.PartDoc: }) s% N4 b7 N( b
Dim dbs As Variant& |( B6 g2 K+ `9 Y' N
Dim sMatName As String
; {) `) R$ X3 Z2 b: E- I# ?* X& VDim sMatDB As String
( P# o+ w1 O1 v/ R) D4 `, DDim bRet As Boolean2 I. u+ ?" a/ |$ Z8 T, @8 x. }( R
Dim i As Long. y, d6 [1 ^* d) {3 O+ u
Dim matPath As String! ^$ N X" N3 W+ D7 ^
Dim swMatDB As MSXML2.DOMDocument& f8 P% e O# |3 Q1 q+ Z
Dim MatList As Variant
6 _; D& u, R* T- a- m5 e& `7 [, @% e0 |3 m* ~0 y
Set swApp = Application.SldWorks" T$ d1 x( T( ?6 h% ~) Z
Set swModel = swApp.ActiveDoc
, V( n0 E+ q. _' mSet swPart = swModel
1 B- Y8 J6 b- \) o/ ?dbs = swApp.GetMaterialDatabases
5 y2 g( P# I5 @# C) I$ J4 i2 W! fsMatName = swPart.GetMaterialPropertyName2("Default", sMatDB)
7 p1 r. m+ L+ A* w8 R. s2 d" d( iFor i = 0 To UBound(dbs)
! i* L V, n5 _' d! F' v If StrComp(LCase(Left(Right(dbs(i), Len(sMatDB) + 7), Len(sMatDB))), LCase(sMatDB)) = 0 Then7 `$ G% c6 \$ ^
matPath = dbs(i)
" z) n0 M% }3 L. Q/ i" q1 K GoTo MatTpye+ p+ C, s d2 h! ~4 |& d! X+ R" F
End If' p, u6 o$ k3 O3 q& ?
Next i5 ]$ [ c7 B2 a. u
1 G: O7 N7 f% `3 D( ZMatTpye:
O! f |% H' D" nSet swMatDB = New MSXML2.DOMDocument
! K( }3 X/ v$ [( ?. ]7 T ' 材料库所存储的路径
; O1 F5 w! {: i& E5 s5 gswMatDB.Load matPath [# L, B: L( Y! Q) @
Set MatList = swMatDB.getElementsByTagName("material")0 m. c3 l$ Y, [# D3 [6 ?& ]
Dim MatName() As String, Mat As Variant+ B0 a) K! E5 Z: O
ReDim MatName(MatList.Length - 1)
# r! ~. }, f# o6 N4 G For Mat = 0 To MatList.Length - 1/ w" o# y! _; B" t
If MatList.Item(Mat).Attributes.Item(0).childNodes.Item(0).nodeValue = sMatName Then' Q$ r2 J9 X; F* f. |1 d8 J j
MatName(Mat) = MatList.Item(Mat).parentNode.Attributes.Item(0).nodeValue
* d. m9 E" N) g2 o2 j GoTo Finish& O) ]* c* q* o
End If0 \2 }6 p. @5 o4 i+ r. ~' n) R; n
Next Mat ^: p- N1 m4 r: M
- ~3 L+ I/ k$ d: R, u# k; c
Finish:2 Y1 l: j' ]7 P3 P% m5 M
End Sub$ q* T2 e+ O8 m6 W; i( {
( a/ |( N6 K; F. H) H0 H
如有不对,请批评指正,谢谢! |
|