|
|

楼主 |
发表于 2016-5-3 16:19:46
|
显示全部楼层
来自: 中国广东深圳
lhl2008 发表于 2016-4-29 12:54) i4 h+ r0 x. {
在引用中加入- Y% ^$ i& u- r0 b' x3 y6 b K8 `. r- x
% A2 n1 A1 O3 d2 B5 E* I# h5 W材料库文件是一种XML文件,需要引入Micosoft XML类型库来操作。
7 S" p2 d H) A$ B- ^成功了,谢谢!' Y! A" ?- o% I
% R, \. q0 F( N' y$ M+ g4 I- m. N: s- q但不明白下面这句:+ O/ z3 `# |( r/ [0 I; T
Set MatList = swMatDB.getElementsByTagName("material"),括号里的“material”为什么是"material"而不是其它?
C) u0 s; g. X8 T# s3 p' Z1 q, O, C8 B' P, S+ a
! f, {" Z; J0 \" r& N% z7 x- o
下面是我编写的获取材料类别的全部代码:: x) W% y w9 E/ X S4 {4 _
Sub main()
: T+ v2 ~2 y/ j+ ^9 K: Q+ Y0 W+ @) }! [) N# `4 D1 T
Dim swApp As SldWorks.SldWorks
$ Y1 _9 n& S1 ^1 ?; U Z& [. B: BDim swModel As SldWorks.ModelDoc2
, C: g$ j& c& f% WDim swPart As SldWorks.PartDoc0 D6 C, b: {! Y' C& _3 l
Dim dbs As Variant$ o- s, R8 g# X- g/ {; O: T
Dim sMatName As String
2 ?9 `$ H! _1 V& }, U1 u( R1 r: ~Dim sMatDB As String
, W, C3 u8 O5 Q; d6 oDim bRet As Boolean m9 s0 x+ a: I
Dim i As Long
1 t F9 ?8 b uDim matPath As String; w4 `" P$ @; ]1 S) W$ j2 ^
Dim swMatDB As MSXML2.DOMDocument- M% U) S! f+ G& C
Dim MatList As Variant
/ ]! z# _; I5 M" B( Y+ U: d8 O& o; p3 X! c& q; ^
Set swApp = Application.SldWorks
( b; v! ?/ p, `/ r: i: y: MSet swModel = swApp.ActiveDoc5 p, X! n8 B) S
Set swPart = swModel
! M+ H' X* E- p+ wdbs = swApp.GetMaterialDatabases4 d) F) k0 f2 w* ?2 j! b( F! Q$ ]
sMatName = swPart.GetMaterialPropertyName2("Default", sMatDB)8 N7 {$ i9 n3 _. @3 m* C8 k
For i = 0 To UBound(dbs)6 K! V' C7 \0 ]: J* ~
If StrComp(LCase(Left(Right(dbs(i), Len(sMatDB) + 7), Len(sMatDB))), LCase(sMatDB)) = 0 Then
S8 I- X; s0 F; o8 Y+ \ U matPath = dbs(i)
& B. v% w/ i; b A4 } GoTo MatTpye1 P9 j7 o) s, e( a+ q
End If& ]& F( E3 C3 F* j9 B0 d1 @4 Y
Next i
6 D2 s/ M- B# w) @
Z9 O8 W1 G i H) OMatTpye:% E# r5 ~/ Y9 z \7 i
Set swMatDB = New MSXML2.DOMDocument
* H$ K4 m C. S D) R$ F; P6 i0 B: B ' 材料库所存储的路径
+ T( M" N5 W0 M) qswMatDB.Load matPath, I q# G5 }: v9 G) h" }
Set MatList = swMatDB.getElementsByTagName("material")4 C4 Z/ G' n {1 F# J& {4 U) E
Dim MatName() As String, Mat As Variant
9 e; c. k" D6 j; m3 I. Y8 c W$ B" JReDim MatName(MatList.Length - 1)
' J# |4 ~' N j" B, q1 I* z; S4 U For Mat = 0 To MatList.Length - 1- L" o" L# Z9 u9 C6 C
If MatList.Item(Mat).Attributes.Item(0).childNodes.Item(0).nodeValue = sMatName Then3 s* w- s; P# o O) G" |4 E0 r+ t- \) Q
MatName(Mat) = MatList.Item(Mat).parentNode.Attributes.Item(0).nodeValue. `3 `) A5 j* G7 Q u/ q/ W( |/ f. j
GoTo Finish
4 @$ H" X. J2 M0 b End If$ ?! W7 z6 L8 O' H9 d$ J6 j
Next Mat
. o4 A& \- L. q! {8 j2 E( m, i/ x' x6 \/ l0 H8 ]$ R3 m3 D
Finish:
. }' Z/ f4 x' a/ t& jEnd Sub
' @4 R: `. o/ H6 c2 g* g0 Q( }7 ~. y3 t |
如有不对,请批评指正,谢谢! |
|