|
|

楼主 |
发表于 2016-5-3 16:19:46
|
显示全部楼层
来自: 中国广东深圳
: ?+ u6 T% V$ C9 R. W" b) d成功了,谢谢!: R* k% W" h5 O" C/ V2 U& N4 G4 Z4 S
+ w' ]! }# I/ ~( e1 z" G7 w但不明白下面这句:
7 f0 ~2 H* [) Q2 X3 h. YSet MatList = swMatDB.getElementsByTagName("material"),括号里的“material”为什么是"material"而不是其它?
3 l, _+ \* T- x
' J; \! d* F* S) {4 w
. P, Y* g5 z# G6 {5 P, l W. k$ ~下面是我编写的获取材料类别的全部代码:* d5 Y# y3 C/ {4 W' i. t' m1 z# F5 k! m
Sub main()
9 f5 c# _3 Q; e8 y/ ?# y1 ~( A' W0 b
Dim swApp As SldWorks.SldWorks
$ a& Y7 S, z ^; ]) w ^3 eDim swModel As SldWorks.ModelDoc2
8 i+ I8 H% C* p! K! O' X$ PDim swPart As SldWorks.PartDoc6 m4 h7 H N+ p7 J* N, w
Dim dbs As Variant0 x, t' C2 b' c! M6 W4 t
Dim sMatName As String
" {" \7 b w+ y% r4 y7 {( }( V. IDim sMatDB As String' H/ }+ {- Z2 a4 L: }0 U
Dim bRet As Boolean; T0 b" p) R! z5 e% B$ n6 T% i
Dim i As Long% j. y6 t0 m" `& g& L
Dim matPath As String2 B$ i' C# c( X
Dim swMatDB As MSXML2.DOMDocument
# w3 ^% Y( [* y uDim MatList As Variant: e' H* h- q/ Q, Y) y- u: p' J! T0 Z
; m9 n3 k3 Z' k9 r# U) V8 gSet swApp = Application.SldWorks
& Q6 N) m9 T6 `) a g1 gSet swModel = swApp.ActiveDoc
7 ]; r- P" ^7 _: J' ySet swPart = swModel
* g" G% G7 T: l0 O udbs = swApp.GetMaterialDatabases- i$ D9 k+ C! ~- D( | f0 }. F
sMatName = swPart.GetMaterialPropertyName2("Default", sMatDB)) z* v( f+ b K2 n/ |% y' i
For i = 0 To UBound(dbs)1 h% c( ~2 [7 u. o
If StrComp(LCase(Left(Right(dbs(i), Len(sMatDB) + 7), Len(sMatDB))), LCase(sMatDB)) = 0 Then5 k2 U- n- \8 z
matPath = dbs(i). V8 G( _4 s3 r' }% e3 k0 f# n
GoTo MatTpye
& K, p8 u# C I& B End If4 @& p4 ?! I* @8 l
Next i
4 m( A$ Y# }3 o L& F$ H7 k4 L) u) ~+ g
MatTpye:$ V/ {# T8 B5 f( ^/ _: `
Set swMatDB = New MSXML2.DOMDocument
2 Z/ c! C0 ~ Z% d$ [ ' 材料库所存储的路径
' h; [2 c% @# z1 ^1 K! NswMatDB.Load matPath" I" K @5 @0 X) ?
Set MatList = swMatDB.getElementsByTagName("material")
' t/ E9 o# M6 l9 ]* Z0 z: } P9 NDim MatName() As String, Mat As Variant
, h" b2 z7 n, M6 ~' `9 GReDim MatName(MatList.Length - 1)
" o; x) C2 A' _, F8 | For Mat = 0 To MatList.Length - 1
: D7 [/ r0 ^* X3 F: Z If MatList.Item(Mat).Attributes.Item(0).childNodes.Item(0).nodeValue = sMatName Then
% @* u* D4 B1 K& O5 c% I MatName(Mat) = MatList.Item(Mat).parentNode.Attributes.Item(0).nodeValue) y+ v# O& m8 ^/ }2 X
GoTo Finish9 R' V4 ? {/ N/ P) D
End If2 z' g8 @5 C6 Q) X, B
Next Mat2 q+ c3 D/ Z# K, B1 F8 h
4 ?' {; D9 J/ N X# }+ U; I
Finish:
6 ?8 D' P: p j6 L4 k( s$ QEnd Sub* b k4 Y: F' B$ j; ?
/ \9 k! } [# ~% u9 H7 Z/ Q2 h* A如有不对,请批评指正,谢谢! |
|