机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 23905|回复: 30

solidworks 批量执行宏

[复制链接]
发表于 2017-3-1 08:30:37 | 显示全部楼层 |阅读模式
各位大大好,在网上找到一个可以批量打开SW零件的宏,代码如下:  }) N+ z$ ?: O' D5 x7 K

7 l) |  I, b# E/ ~% i. TSub Test()5 U0 d7 Y; z) m( S' j/ i
Set swApp = Application.SldWorks8 l+ K: c) F% |4 m7 L% v
PartPath = "D:\Project\" '设定目录
' n! w% W' e$ V) [# M7 gPartFileName = Dir(PartPath & "*.sldprt") '搜寻首个零件档案名称  V$ `# }1 N) e9 H  v2 |
Do Until PartFileName = "" '直至搜寻到空值/ W$ Y# e; M" k2 P1 m0 K4 \
Set Part = swApp.OpenDoc(PartPath & PartFileName, 1) '开启零件  k3 A+ {% s% K. m7 C
'加入所需语句
  W9 \* u) ?. M1 j7 P3 w9 F'.8 Z. h- n: l# B3 ?
'.0 }$ e/ S. |) w0 h# s3 P% j3 l
'.2 j- j% u+ J/ W
'.$ L- I# }, L0 m9 R2 b
Part.Save '保存  U, O6 F) A$ z$ u% k1 i; r
swApp.CloseDoc (PartFileName) '关闭零件0 E: H5 H2 m8 @; r% i* z+ T: l
PartFileName = Dir '搜寻下一个零件档案名称
3 m* B. D* n& n4 P- }6 g1 p1 OLoop '循环搜寻' L9 B3 E) D8 G% u; B  o
End Sub
/ o1 _6 a5 x' ~& F0 g) N5 l: K* N* U8 H0 P
可是却只能打开零件,装配体和工程图就不能打开了,哪位大大可以帮忙改一下,使其可以打开文件夹中的SW所有的三种文件,在此拜谢!!!8 j; }! F: H5 X
回复

使用道具 举报

发表于 2017-3-1 09:10:04 | 显示全部楼层
劝你到三维网和开思找,那里有几位研究宏的大神。7 m8 |6 _5 Y5 E9 l6 A0 `
还有为什么要批量打开零件文件,屏幕能装的下吗
回复 支持 反对

使用道具 举报

发表于 2017-3-1 09:37:31 | 显示全部楼层
从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下就明白了,VBA很简单的
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-1 09:41:47 | 显示全部楼层
本帖最后由 未来第一站 于 2017-3-1 09:47 编辑 % l- j' G: U" H, T
: I# A; j8 s( }6 X* l4 F
论坛solidworks专家级两位楼上大侠到齐了
回复 支持 反对

使用道具 举报

发表于 2017-3-1 09:50:11 | 显示全部楼层
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?3 q$ _- Z% j% b7 p; O: u- F

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:43:21 | 显示全部楼层
工人师_OgIOQ 发表于 2017-3-1 09:10! \4 u. q6 ^: }1 p/ ?
劝你到三维网和开思找,那里有几位研究宏的大神。* B" W: b2 W  o  ~7 ]
还有为什么要批量打开零件文件,屏幕能装的下吗
8 U7 o7 q- ~1 a% Y3 p) ]1 Y
谢谢你
* |1 i8 i/ ^" X  批量打开的用处是加入其他录制的宏,可以执行批量操作,提高工作效率9 |# }, r- K. q2 h/ S* z5 v0 m
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:45:25 | 显示全部楼层
魍者归来 发表于 2017-3-1 09:377 V. c2 ]# b/ Z+ n& N( r3 X. B
从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下 ...
. T& t( A  Y& W" m4 @9 }; Q. M
那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:47:29 | 显示全部楼层
footleft 发表于 2017-3-1 09:50
, T5 p4 P4 }* o6 u' z; U; @, k这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?

& C4 s! |# ?+ S5 w  j8 O& d只是更改这个还不行的,要配合着更改下面的那 1    分别对应1  2  3
& r: n9 `" |1 R# d; ~  但是我想能不能将打开三种文件的代码整合到同一个宏中
( o: }2 N; E3 R" J' A; v' P4 t
回复 支持 反对

使用道具 举报

发表于 2017-3-4 14:21:37 | 显示全部楼层
本帖最后由 ryouss 于 2017-3-4 14:42 编辑 ( d0 U6 k2 i$ }: |
0 i. I9 `. ]# S! c& e2 \
用 Select Case 做篩選循環,
# [8 _5 f8 E5 v" H( k, X5 h* {不過如下宏只是做零件,裝配件及工程圖的叫出再關閉,沒實質意義.1 n4 ~9 q, @/ u& D8 l  ^

5 Q2 {6 n: G; D3 i8 w" z
; ]  o: H' s% ^5 }( |' W5 }/ W4 J; [: u( c  }0 S. E: ]
  1. '
    ( S. g/ b* w8 P6 E5 `$ k+ h
  2. ' 在某文件路徑下批量開零件,裝配件及工程圖
    8 ~( S4 |2 ^* a
  3. ' sc liang 2017/3/4  i; {  Q$ P# J0 w. C9 U1 ^
  4. ' 測試版 2012 sp4
    3 C- ?7 C  `" m1 x3 S- f/ D+ Q
  5. '
    - ]' g$ D/ C4 V( j6 }
  6. Dim nErrors          As Long
    4 X" q8 ?( I" D  g2 ^
  7. Dim nWarnings        As Long7 R5 y6 v" j8 x; J# ^! g5 T
  8. * n' \/ N( U- L$ L! {, i
  9. Sub Test()
    & s) o& g9 v5 R/ Y) }  N
  10.     Set swApp = Application.SldWorks/ ?" L2 {9 y. m% ?
  11.     Set swModel = swApp.ActiveDoc
    4 p+ \+ O$ D; K5 c9 s( S
  12.     path = "D:\Project"   '存檔路徑9 S' n# G# H7 T, u1 [
  13.     sFileName = Dir(path & "*.sld*") '取出SW文件+ w& ?5 d7 x  \; e
  14. '循環開檔0 M- L/ O0 t0 H2 Q% _( H+ f' h
  15.      Do Until sFileName = ""
    ' y2 n: U. z  {
  16.         Type_ = Right(sFileName, 3)    '取得SW文件擴展名後三位  U& D8 k2 @8 }6 v. D
  17.         Select Case Type_ '判定SW文件型式9 H7 }0 P8 N' a1 ?
  18. '開零件檔並存檔" Q& ?- z) p0 G# k, k
  19.             Case "PRT"
    3 V2 G: y+ C7 |; i
  20.                Set swModel = swApp.OpenDoc6(path + sFileName, swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    $ N: Y/ A; v4 W; Q
  21.                Set Part = swApp.ActiveDoc" O6 M$ k% ]/ q. d: Y
  22.                Part.Save9 H6 s! l6 n/ \  g- F' M) O
  23. '開組件檔# e0 t" x6 W% Q- I' h- s8 {
  24.             Case "ASM"
    1 g! k1 D3 i/ x$ p/ v
  25.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocASSEMBLY, swOpenDocOptions_Silent, "", nErrors, nWarnings)4 Y+ e( R& W( ~9 B% Z- E1 S: b
  26. '開工程圖              # F" q) W" U7 y+ I+ ~% B9 @/ y
  27.             Case "DRW"
    5 |; P5 w) k: D6 n1 R; l; ~
  28.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)* r- f  e  A; w6 ]3 q( v, U
  29.                   
    7 \8 w3 Z: o, o) l' ^
  30.         End Select9 h# q& w5 S' {6 ]7 }: X
  31.         Set swModel = Nothing
    - ?  P" Y* Z' g+ o/ u+ o3 E! _
  32.         swApp.CloseDoc (sFileName)+ Y: K0 X' ]: G3 V, y
  33.         sFileName = Dir   '同路徑取出下個SW文件檔名5 W; g5 Y2 S, U% v/ ^
  34.     Loop6 i  c' H3 N) G
  35. End Sub
复制代码
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-4 15:13:40 | 显示全部楼层
杨猛0230 发表于 2017-3-3 10:45# F( W3 B8 G* `5 h# B
那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教

- V; f# n, n1 W. h/ C方案1:If…Then…Else 语句: ~: [) [6 i( X/ X6 t5 E
方案2:Select…Case 语句
+ l8 |' `6 K: I' L4 t方案3:Do…Loop 语句$ j+ F1 F) u! _/ K# \
方案4:For…Next 语句: y- b: T" c1 Y: y- C
方案5:While…Wend 语句
% e5 A; y4 L9 k. T/ b方案6:……( G' U$ t( X" u! H2 v
……5 V; E9 }, c% `1 W9 G5 o

" j( @. ]  Q# \+ W
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-11-24 11:03 , Processed in 0.067063 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表