|
发表于 2022-2-18 10:31:55
|
显示全部楼层
" Q) v* _- V5 u! ~& u" ~- c
无法打开装配体文件,是因为你把文件类型判定的语句放在循环外了,挪到do...loop内即可,那个call语句调用了什么?用不上可以先屏蔽。# C( F2 s) h; B) Z# p
经过测试,下面的程序可正常打开零件和装配体
' L6 M; X8 ]( j V6 _0 H* y# ~
5 E) P* k+ k3 z, j' ******************************************************************************
4 e. E P# i, a$ L% N' 读取指定目录下的Prt/asm文件,关闭5 f' B% _4 F6 Q- d& X5 {
' ******************************************************************************6 F- S' t( J2 }/ B. _" h7 s
Dim swApp As Object
" o2 R1 c5 ^4 b6 f6 m# p# w
- |. I) B/ C' o' [( F2 c* A( tDim Part As Object. H4 `5 m0 u/ E- v# {" s
Dim boolstatus As Boolean
% L; j; ~- G$ k+ T% s/ n3 A# W$ hDim longstatus As Long, longwarnings As Long, }! O4 }: Z( j( p
'Dim sldPath As String3 X" d# o& y5 k @5 W
Const sldPath As String = "E:\3Dtest\BOM1\" '设定目录' b" u0 O& d. X7 K3 B+ G! X
, a+ i! z! @- zSub main()
( N6 O0 e; ?" U
% e$ m+ E2 m; ^: b) \ Set swApp = _& r! ~/ e1 t' {, R. ^" O5 D5 C
Application.SldWorks, o, \8 z) _% K- n% f1 {. [
Set Part = swApp.ActiveDoc
# g4 h( [) ~% Z& j0 o: ^
8 J$ o- l9 r- [5 w- v swFileName = Dir(sldPath & "*.sld*")
3 H1 B- y+ n5 G: b4 D: _: l) w5 b9 W; N- D1 d6 j, H5 [
Do While swFileName <> ""
/ T/ Y" z: p3 O; Y9 {+ C Set swApp = Application.SldWorks5 V& K* K, K, {/ S7 S u
If UCase(Right(swFileName, 3)) = "PRT" Then swFileTYpe = 1
- i. j* V' z; \+ s4 ^' F: g* | If UCase(Right(swFileName, 3)) = "ASM" Then swFileTYpe = 2
( i R/ L( u6 K L3 X+ _" U% ~7 q9 Q: j$ g2 t
Set swModel = swApp.OpenDoc6(sldPath & swFileName, swFileTYpe, swOpenDocOptions_Silent, "", longstatus, longwarnings)
4 P, C8 Y+ u1 q6 L5 S! B( W, l Set Part = swApp.ActiveDoc
- h9 G/ x+ x2 q* U# r% d4 { 'Call plmain- X6 i0 ~" {2 @& q1 @( d* p
'Part.Save '保存+ E. M& ^( D3 B. P8 `9 ?# q
swApp.CloseDoc (swFileName) '关闭零件/ i1 P+ e1 D R
If swFileName = "" Then Exit Do:
, Z2 H, j6 z- G swFileName = Dir '搜寻下一个零件档案名称
# f( l; m! V, T! G' S Loop '循环搜寻- {& s9 t% v7 ~
1 W+ [: ?4 _6 B- V G L# X. q
End Sub7 g3 |* U/ ?, o3 G! f) ~ V. W
6 S" p) \( J% g8 b7 ?
0 E- @! H. B0 _1 a8 \, R5 [ |
|