|
|

楼主 |
发表于 2016-5-3 16:19:46
|
显示全部楼层
来自: 中国广东深圳
lhl2008 发表于 2016-4-29 12:549 l/ F% z. @$ B9 K
在引用中加入/ A/ a9 S* G1 u2 ^% N& \' ?
* v! }3 p& d4 N) E V* T6 |材料库文件是一种XML文件,需要引入Micosoft XML类型库来操作。 5 v* T( X- e8 E& Q- o$ w
成功了,谢谢!
2 B4 n" z6 g5 e3 n) d' ]# T
+ v L& [* E: T* j d* Z" _但不明白下面这句:) ~7 p1 }$ Q" ^! R5 p: e* }
Set MatList = swMatDB.getElementsByTagName("material"),括号里的“material”为什么是"material"而不是其它?# ?" K- M) g1 V0 w0 L8 p" z
+ c: |2 p1 }+ O: K6 O/ B5 M' g/ h+ P: a
下面是我编写的获取材料类别的全部代码:- s: P o# t0 }. X
Sub main()/ i, j7 B: V0 w, ]* H
$ v; a ]- z6 j% ODim swApp As SldWorks.SldWorks
& {; u& L$ p* i5 |) tDim swModel As SldWorks.ModelDoc2
: k; P5 j, Z- W/ Z! S' ]2 qDim swPart As SldWorks.PartDoc
7 j. U4 }" |& M+ P7 h0 ?/ {Dim dbs As Variant
3 D& ]: ?! c& P: t( }" EDim sMatName As String" G% m+ v# p: p7 L8 D
Dim sMatDB As String$ d) v [5 g5 n$ J
Dim bRet As Boolean' S! E9 a) V! t5 k9 [4 ^
Dim i As Long
" `4 b; @: x5 W9 P3 pDim matPath As String
% y! t( X1 o! G% rDim swMatDB As MSXML2.DOMDocument9 Y0 N) S d; n, d$ H1 U/ l0 V
Dim MatList As Variant
& S0 h9 D; A9 Q- q9 |( ~% t2 O' X) K \ _1 Y" q7 k: H& r
Set swApp = Application.SldWorks
& d0 _9 Q. T- \) C. ISet swModel = swApp.ActiveDoc7 s! T' h( d8 \* p. A* t+ ?
Set swPart = swModel) o8 C. M, T0 q5 W2 i& A9 K5 l
dbs = swApp.GetMaterialDatabases
: T" ~5 h5 }: ?! f& msMatName = swPart.GetMaterialPropertyName2("Default", sMatDB)) }4 c* v; V4 B
For i = 0 To UBound(dbs)$ S9 J: \9 \' i# E
If StrComp(LCase(Left(Right(dbs(i), Len(sMatDB) + 7), Len(sMatDB))), LCase(sMatDB)) = 0 Then6 t. z$ u/ h/ v/ M
matPath = dbs(i)
% |5 N! m5 K6 B2 L! |& L GoTo MatTpye1 N, I5 ~7 j% Z& |9 ^+ \7 ?
End If
+ _) m; h- z! J0 b3 P) cNext i
0 J5 _0 o" y6 q* p _
" z% d* @( P0 `$ E, KMatTpye:
; Z% p: b; m I r t8 X2 v+ ZSet swMatDB = New MSXML2.DOMDocument1 N! X. D: a: Q6 L3 Y4 r: f: W
' 材料库所存储的路径
: J! n" v4 U2 x6 [. UswMatDB.Load matPath) P$ F* ]) q( N! D$ H7 |
Set MatList = swMatDB.getElementsByTagName("material")
4 b+ r( I& [# u9 k8 }! j, ~4 @1 v4 uDim MatName() As String, Mat As Variant+ N2 U4 M( x. m; _, m! N L
ReDim MatName(MatList.Length - 1)) }" Y, l1 {$ p: i' b j" @- T z5 l
For Mat = 0 To MatList.Length - 1. N3 T" W% e2 E' @
If MatList.Item(Mat).Attributes.Item(0).childNodes.Item(0).nodeValue = sMatName Then
/ g; p: T( M! F MatName(Mat) = MatList.Item(Mat).parentNode.Attributes.Item(0).nodeValue7 b# Y" s P+ J6 S
GoTo Finish# C2 w5 r0 Q% \
End If- M- R1 p5 l2 h* k% y
Next Mat2 y! d$ ?1 l) m& C% Z
; @2 K/ C1 N; N2 YFinish:) J l+ E$ h1 g* ^) R% E0 v( y
End Sub
2 K% ]3 B! t! _& m8 X ~
4 ~, |7 {/ z/ j& c/ a如有不对,请批评指正,谢谢! |
|