|
|

楼主 |
发表于 2016-5-3 16:19:46
|
显示全部楼层
来自: 中国广东深圳
2 m& A$ s W X3 e8 F
成功了,谢谢!
# J( Y6 C1 W$ |8 ~' D- ^% l/ ]( }/ k" W! n7 v2 C
但不明白下面这句:1 s8 n' _% p0 _ R1 ~# C3 i
Set MatList = swMatDB.getElementsByTagName("material"),括号里的“material”为什么是"material"而不是其它?
1 i. a8 T6 k$ F" v: C9 k2 I) k2 Q2 ?! m8 ]$ I2 a
0 y6 j' p" p3 f1 g, X) q; z下面是我编写的获取材料类别的全部代码:
' e. b9 T- Q: W9 { |2 NSub main()
# Q7 H$ A& M% K* C% N! h) x- T A( H
Dim swApp As SldWorks.SldWorks6 w% p+ e; Q8 h, d$ ]
Dim swModel As SldWorks.ModelDoc2
0 a6 L& }3 k/ t8 y! J# M2 Z: T# rDim swPart As SldWorks.PartDoc7 V- R" A" L3 x9 n; i$ H
Dim dbs As Variant2 Q5 W; i4 O0 ]1 r+ V
Dim sMatName As String
* A+ s+ o# J; O; R5 q+ M- o, MDim sMatDB As String
# g- _3 e& O9 C5 F2 m( Q) HDim bRet As Boolean; }( t/ G }4 P
Dim i As Long
7 T4 C# j! E# f$ O8 T/ @. rDim matPath As String
8 c0 _ N2 K. t! u4 j5 d" _Dim swMatDB As MSXML2.DOMDocument
8 i9 I2 F* o- A4 e+ RDim MatList As Variant
' Z- ~- L; L. [5 W) P6 ?
" O* o6 `7 B) R: k% HSet swApp = Application.SldWorks
/ N& O5 d4 u( H7 S3 K7 vSet swModel = swApp.ActiveDoc4 V U4 y5 d! L! Z0 e
Set swPart = swModel
, G! }* i" Q3 odbs = swApp.GetMaterialDatabases
/ I [4 G/ r% L+ U0 C2 d( psMatName = swPart.GetMaterialPropertyName2("Default", sMatDB)
, W5 o0 C e/ n6 Q- u1 K/ D4 iFor i = 0 To UBound(dbs)6 `8 \' K; K+ ?, ]) w
If StrComp(LCase(Left(Right(dbs(i), Len(sMatDB) + 7), Len(sMatDB))), LCase(sMatDB)) = 0 Then
& s& |( ]& b# n/ _) l& A& H matPath = dbs(i)
4 {5 T# v! U5 j/ j: v$ O5 s GoTo MatTpye
3 d+ @( [' c$ U% O End If2 i$ ?) K- h5 w E) \
Next i; l! t- B* S/ P1 h, k5 D& J ^
4 A. u0 `# Q3 s8 `% I4 h
MatTpye:' r4 Q x q/ V4 p0 C
Set swMatDB = New MSXML2.DOMDocument9 B6 {9 h0 ]# g8 ` W
' 材料库所存储的路径
% V& N {# r8 ~: I: }swMatDB.Load matPath7 K5 n2 Z6 y% R0 F7 [8 M( C
Set MatList = swMatDB.getElementsByTagName("material")
. P5 E! a! R5 IDim MatName() As String, Mat As Variant
8 T, E$ A3 F m7 H RReDim MatName(MatList.Length - 1)( A0 s9 ^: O" t# Y
For Mat = 0 To MatList.Length - 1
5 x+ |& r! O+ e6 g: K3 g+ @ If MatList.Item(Mat).Attributes.Item(0).childNodes.Item(0).nodeValue = sMatName Then% J, c3 S/ `+ E
MatName(Mat) = MatList.Item(Mat).parentNode.Attributes.Item(0).nodeValue3 k/ W( } E# ?" R
GoTo Finish7 t/ `" a) Y. Z5 }: C7 u
End If% {6 J4 ]. e i$ u
Next Mat; n8 l3 i: z+ [9 R. P+ h! V( k
: N' o# [: B) V( K* YFinish:
" Z; K7 l8 C0 a* w. j& y* BEnd Sub' L, Q p- Z6 v6 P! i( \! I% R5 J" |
5 E9 o3 C2 E# C! |& T如有不对,请批评指正,谢谢! |
|