|
|

楼主 |
发表于 2016-5-3 16:19:46
|
显示全部楼层
来自: 中国广东深圳
lhl2008 发表于 2016-4-29 12:54
0 R6 q" N5 P+ i4 O3 q. t( a在引用中加入# A9 `/ h1 ], \ ~0 {" V
4 r' ]. n+ m3 r7 Q9 F8 [材料库文件是一种XML文件,需要引入Micosoft XML类型库来操作。 8 W6 S9 N7 K/ B% ]
成功了,谢谢!1 Q" k# ]4 K) Y8 f3 v u8 e
1 K1 p( D1 s0 }; N& `
但不明白下面这句:
5 @% k4 M* {; z4 x$ g+ \Set MatList = swMatDB.getElementsByTagName("material"),括号里的“material”为什么是"material"而不是其它?, C# k# G# U, b. l0 r
! X7 f5 m( U1 e% F6 {
! N5 c) T' Y) L下面是我编写的获取材料类别的全部代码:: v- \* _, T% b5 U/ i4 _
Sub main()- b: m1 U/ }/ i" a0 I7 J, @5 g
2 Y1 b* o- G& K8 @7 L; M0 i4 A
Dim swApp As SldWorks.SldWorks8 S3 J8 ?4 \. {/ y; Q7 S2 t
Dim swModel As SldWorks.ModelDoc28 {" G0 I- S+ ^8 V! F# @
Dim swPart As SldWorks.PartDoc7 r4 W( U2 n& n2 p
Dim dbs As Variant
/ q7 z- o1 \. c6 G6 B* F$ T7 x7 H0 g5 UDim sMatName As String7 l4 Z9 t0 U7 o) E
Dim sMatDB As String
5 ^' a7 M8 w9 ^% uDim bRet As Boolean
1 r C) [" a* d* wDim i As Long; s, U; A# ?0 \3 W- E6 V
Dim matPath As String
; F% H, G/ Y: b0 \- GDim swMatDB As MSXML2.DOMDocument
4 G5 }6 S/ K& f" W, ]: f# QDim MatList As Variant- j+ z5 i5 W" v& \( `: O
* ]; P" D6 R, m5 ]3 @: v/ G4 |* gSet swApp = Application.SldWorks1 _* l, U( g( s9 z1 S# _& ?
Set swModel = swApp.ActiveDoc1 N; y+ w% b8 Z
Set swPart = swModel- w% B' L/ i: I1 b: l
dbs = swApp.GetMaterialDatabases
6 b! o! ^' W9 n: ]5 `sMatName = swPart.GetMaterialPropertyName2("Default", sMatDB)$ c' @+ W1 P8 f8 D3 O
For i = 0 To UBound(dbs)+ o ~+ Y% @, M e5 W; k3 [
If StrComp(LCase(Left(Right(dbs(i), Len(sMatDB) + 7), Len(sMatDB))), LCase(sMatDB)) = 0 Then
% {/ V# b0 N+ O7 T3 K matPath = dbs(i)
- J7 Q; \( W G. m) R GoTo MatTpye
$ l/ B% p6 T0 ]6 M O End If2 v, k+ r( `# q% [
Next i
& e7 ?+ ?8 N5 {* o2 n, T# e* n8 c- v2 ^) i- K1 @" Z$ z
MatTpye:
% M; L* u ]+ D1 E; nSet swMatDB = New MSXML2.DOMDocument
9 x; q! C9 ^ Y1 @/ L ' 材料库所存储的路径
$ J6 i% s! X( _2 k% XswMatDB.Load matPath
1 q1 e& t* x0 Q# XSet MatList = swMatDB.getElementsByTagName("material")* Z2 N v) E2 F( H0 s
Dim MatName() As String, Mat As Variant
& v7 R- Z, {, V& \ReDim MatName(MatList.Length - 1)
+ B4 N$ S, b5 i6 L. f For Mat = 0 To MatList.Length - 1- N3 c4 {9 j' w# ?7 z# x
If MatList.Item(Mat).Attributes.Item(0).childNodes.Item(0).nodeValue = sMatName Then
5 `! D% D$ v( |/ G6 y MatName(Mat) = MatList.Item(Mat).parentNode.Attributes.Item(0).nodeValue) E: ~% t" d' i; N" V2 Y; O
GoTo Finish4 f$ D4 B# u% n: t* R
End If
: Q/ y; S0 Q& J; l Next Mat
2 V) r @$ b# e7 A) f, w- R8 t, F4 I
Finish:) ^9 d9 ^$ y1 {$ B* r' _9 X* ~) j
End Sub
- v" m/ ] j5 P5 m Z) Z# l
2 M6 x" A5 I0 E* y0 X6 w1 U如有不对,请批评指正,谢谢! |
|