|
|

楼主 |
发表于 2016-5-3 16:19:46
|
显示全部楼层
来自: 中国广东深圳
1 {. k: _' x3 \7 f8 T% f: p2 H成功了,谢谢!
9 l2 w* B9 ?; n( c" U7 V5 q# e6 v% r/ r W! | L
但不明白下面这句:7 j; O e, u: T, p
Set MatList = swMatDB.getElementsByTagName("material"),括号里的“material”为什么是"material"而不是其它?
9 K4 M; i& I! d' k
& D; x# a% _9 ~/ Y
, O2 `9 K$ M0 z+ @ S4 M7 c下面是我编写的获取材料类别的全部代码:! n$ X/ b6 P" x
Sub main()
7 G' C( `' Q1 v( \! H# x0 t
x9 C( j; @9 G6 {+ ^4 iDim swApp As SldWorks.SldWorks6 A) U/ _. f8 d+ u% _& ~
Dim swModel As SldWorks.ModelDoc2& R. D# s% ~) }5 L* J2 M
Dim swPart As SldWorks.PartDoc
6 ~7 o3 V/ x: v: L3 x2 QDim dbs As Variant
) _8 @' A1 t, aDim sMatName As String, i- {. j1 x7 D' k( A; t
Dim sMatDB As String) G% w9 ~1 `+ R2 ~; ?9 r
Dim bRet As Boolean: s- i) ~* v9 N1 N+ G1 w
Dim i As Long
4 k' i) O, z$ P" c0 F& i; N# gDim matPath As String
& I) L9 C- A! E' [1 ZDim swMatDB As MSXML2.DOMDocument: M' v( U% r( |2 g" S
Dim MatList As Variant8 o- t; h; ~ D+ j6 Z
9 J; `% _ B, P8 x }5 i2 F1 ~% a
Set swApp = Application.SldWorks) h( T- `& J/ v0 b# B
Set swModel = swApp.ActiveDoc
6 z7 E$ l, A5 L0 U" @; ? YSet swPart = swModel
' i+ `8 ^+ X& e* _4 a. e" adbs = swApp.GetMaterialDatabases7 s( o# \; Z: L; H1 ]: K
sMatName = swPart.GetMaterialPropertyName2("Default", sMatDB)
4 b! @2 a9 t: Y5 cFor i = 0 To UBound(dbs)
" \! J, U+ `& m, k If StrComp(LCase(Left(Right(dbs(i), Len(sMatDB) + 7), Len(sMatDB))), LCase(sMatDB)) = 0 Then
0 g' P3 R- C; M matPath = dbs(i)
4 G3 @$ D; O6 u: Y5 h; T GoTo MatTpye2 `! z: w: Z+ F+ l( F. V# m1 K
End If
! u) n# d! D- j$ c) B. w9 {1 fNext i- E1 U4 {3 h" r' o
7 Z: a: k6 p' ]8 B M( U4 U$ x" lMatTpye:
$ T1 [+ l: }2 g9 ^Set swMatDB = New MSXML2.DOMDocument; X, X7 z0 S" \" z6 o
' 材料库所存储的路径4 d5 m3 g1 O/ w5 d
swMatDB.Load matPath
: @$ ?( ?/ ]6 F0 wSet MatList = swMatDB.getElementsByTagName("material")
7 O1 t. r: N2 _* f7 P: t# j0 kDim MatName() As String, Mat As Variant
$ S& i2 L d% j1 Y9 w7 R, YReDim MatName(MatList.Length - 1)
$ i m( o* {# {, u9 j8 l" j For Mat = 0 To MatList.Length - 16 ~' O8 X Q. Z% G; ?
If MatList.Item(Mat).Attributes.Item(0).childNodes.Item(0).nodeValue = sMatName Then. k5 X k/ T: t" `% J
MatName(Mat) = MatList.Item(Mat).parentNode.Attributes.Item(0).nodeValue! U% q# h9 ]6 I$ {- X# u0 m
GoTo Finish7 X6 ^# n* e+ j3 \
End If
/ G) z$ \4 }& a- W Next Mat
+ M+ s1 N7 s1 @7 b' ]! J5 b& o% f; {4 x: L8 p
Finish:0 ~3 B; L1 r, k1 f. [0 r2 w
End Sub: e/ w. J4 {3 |! t4 f: ]9 k# _
! k9 Y! X9 r' }" D7 h s9 C! T& p5 W如有不对,请批评指正,谢谢! |
|