机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 26847|回复: 31

solidworks 批量执行宏

[复制链接]
发表于 2017-3-1 08:30:37 | 显示全部楼层 |阅读模式
各位大大好,在网上找到一个可以批量打开SW零件的宏,代码如下:& O2 P: C4 ^* O* Y) _, @

* _7 Y- ?  O- B, }Sub Test()
, X# s4 |, X( q2 |9 I% XSet swApp = Application.SldWorks, H% K; ?$ N. F2 c' ]) @" }3 `( `
PartPath = "D:\Project\" '设定目录
6 p* p( ^" `; {/ QPartFileName = Dir(PartPath & "*.sldprt") '搜寻首个零件档案名称
6 o* p! l3 `& X0 i# f3 h+ B9 CDo Until PartFileName = "" '直至搜寻到空值
9 s0 ]4 {1 j3 O' b. @* w; ?  a% lSet Part = swApp.OpenDoc(PartPath & PartFileName, 1) '开启零件
. `4 t, ?" ?$ V5 @'加入所需语句2 c- P' g+ C( ~- S6 a% V
'.
+ W$ M! J# ?: o- g( n1 _6 F'.
9 A) M* u0 k0 S  A2 v$ s; f+ }3 E'.0 K6 G9 e4 h8 s3 ~
'.3 U% ^4 [& c3 {+ K& V1 p: }$ T
Part.Save '保存
: R) w. L% f& d% LswApp.CloseDoc (PartFileName) '关闭零件
& g, ]4 Z# B# ?) G8 BPartFileName = Dir '搜寻下一个零件档案名称& ^  W: o& f+ w6 \# D! [
Loop '循环搜寻- \& @" E+ x5 G
End Sub
# n; |; y, `$ O, q4 ]4 [: G: C2 i0 d) X+ V. g# U9 }) b
可是却只能打开零件,装配体和工程图就不能打开了,哪位大大可以帮忙改一下,使其可以打开文件夹中的SW所有的三种文件,在此拜谢!!!
9 D; X) B7 `( o2 @
回复

使用道具 举报

发表于 2017-3-1 09:10:04 | 显示全部楼层
劝你到三维网和开思找,那里有几位研究宏的大神。9 ~9 N  V3 X+ V, i/ q& [
还有为什么要批量打开零件文件,屏幕能装的下吗
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2017-3-1 09:41:47 | 显示全部楼层
本帖最后由 未来第一站 于 2017-3-1 09:47 编辑 # b5 w0 k0 K9 H' A% o0 z; j

0 E0 D; [/ K9 p论坛solidworks专家级两位楼上大侠到齐了
回复 支持 反对

使用道具 举报

发表于 2017-3-1 09:50:11 | 显示全部楼层
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?& d3 G7 w1 o! f

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:43:21 | 显示全部楼层
工人师_OgIOQ 发表于 2017-3-1 09:10
. d! I1 P& d! {" a劝你到三维网和开思找,那里有几位研究宏的大神。
8 W; w7 |& O3 B6 g+ a还有为什么要批量打开零件文件,屏幕能装的下吗

8 p0 I- R% l' K6 E. \谢谢你
. q4 \6 j/ ]4 b. V9 g  批量打开的用处是加入其他录制的宏,可以执行批量操作,提高工作效率
3 R9 e9 B  A: @
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:45:25 | 显示全部楼层
魍者归来 发表于 2017-3-1 09:37% j6 X9 L' `# z* i9 @
从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下 ...

: I) r" h5 h! r那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:47:29 | 显示全部楼层
footleft 发表于 2017-3-1 09:50" `2 R- Q2 s. t9 \) d0 \
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?
! ^$ Y. S+ Z4 Q4 C8 _
只是更改这个还不行的,要配合着更改下面的那 1    分别对应1  2  3+ N/ _2 U1 P# Q
  但是我想能不能将打开三种文件的代码整合到同一个宏中" Y6 u4 G5 t# W  M
回复 支持 反对

使用道具 举报

发表于 2017-3-4 14:21:37 | 显示全部楼层
本帖最后由 ryouss 于 2017-3-4 14:42 编辑
- T" R, _5 G  h, z- J. [3 q9 ~4 d  T% L$ ]- k
用 Select Case 做篩選循環,' p: v$ ~1 I+ v
不過如下宏只是做零件,裝配件及工程圖的叫出再關閉,沒實質意義." j" v5 Z) I' \& S" B8 k
9 O( W0 h7 i; }  D" n

8 |: u& x$ Y) K2 F# S3 r, M% n! o* h" N% M
  1. '% [8 f& G' C4 `
  2. ' 在某文件路徑下批量開零件,裝配件及工程圖6 S7 [7 R( F1 W! S: l  w
  3. ' sc liang 2017/3/4) f, x# Q5 }( g$ Z9 `: O8 i) g
  4. ' 測試版 2012 sp4
    , r& n% G& l1 g% |. b
  5. '
    / W7 u% K" W5 o% L* \2 ^
  6. Dim nErrors          As Long
    : R, M; I$ p8 w9 C5 x
  7. Dim nWarnings        As Long" u( r5 w) j2 h6 D- Z/ k

  8. $ ~. S. H) o  C- V- Q
  9. Sub Test()6 j; E4 ?/ j8 f2 }5 @6 G
  10.     Set swApp = Application.SldWorks+ y0 s: q/ N: a
  11.     Set swModel = swApp.ActiveDoc2 {3 Z+ |4 N- |* N8 L% L
  12.     path = "D:\Project"   '存檔路徑' e9 g- I' e* N  G3 l& m" R) t
  13.     sFileName = Dir(path & "*.sld*") '取出SW文件3 `2 ]+ o+ n& v3 E; P' c/ _) \
  14. '循環開檔
    " _+ a5 Y4 C! p: w. d: X$ N' v
  15.      Do Until sFileName = ""# G. K6 r. ^( N8 S4 R
  16.         Type_ = Right(sFileName, 3)    '取得SW文件擴展名後三位
    2 G0 Z* B8 D( \* ~8 j( C
  17.         Select Case Type_ '判定SW文件型式
    ' E. Y& m. I' U
  18. '開零件檔並存檔6 R' M: t2 T# U6 g
  19.             Case "PRT"2 \$ n5 w+ c5 V+ f
  20.                Set swModel = swApp.OpenDoc6(path + sFileName, swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    ; K9 I) t5 U; {# f
  21.                Set Part = swApp.ActiveDoc
    / t4 p9 }* y( X; U1 x% I$ @
  22.                Part.Save
    - ~# ]# D% b9 E+ I" A' i. Y
  23. '開組件檔  x( \; T# _! l# T3 o
  24.             Case "ASM"0 g+ ^& F, k# m; \; Q# l0 S8 u' ~1 I; L
  25.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocASSEMBLY, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    % Q. V6 Z4 Z4 H/ i
  26. '開工程圖              
    " c; j' Q- W# P4 Y6 s5 F
  27.             Case "DRW"! S( ]; o/ J" i8 Y! P
  28.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)" \( l+ Z5 b; u  |
  29.                   
    : K7 E3 d) k4 f* u& f. ]& _) G% ~
  30.         End Select5 w/ S* ]% n6 F1 z* E0 L9 {. U
  31.         Set swModel = Nothing1 ?" N# @% V% X, c/ N! }$ a
  32.         swApp.CloseDoc (sFileName)' V6 ?& K0 Z' ^6 E$ c. W
  33.         sFileName = Dir   '同路徑取出下個SW文件檔名
    + T7 s: P4 V* \4 r! e6 c' `& x0 w* R
  34.     Loop5 d; `! X. v1 `" g3 G
  35. End Sub
复制代码
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-4 15:13:40 | 显示全部楼层
杨猛0230 发表于 2017-3-3 10:45
6 ~* U  ?( H) S4 ]9 B- J那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
, o1 [! C! [# Q/ Y9 Q5 z# _
方案1:If…Then…Else 语句
( g7 t8 L2 t0 w方案2:Select…Case 语句) S$ y! X5 @: h5 T2 u& f
方案3:Do…Loop 语句
7 u) d' I, [: p0 n, A$ m8 X& S方案4:For…Next 语句
& K" `9 p9 N# |* @( L0 x! |' I方案5:While…Wend 语句
: }& u8 b4 y* @方案6:……
7 E- S1 x/ r3 P5 ^……
0 k4 V4 H" V! c& {2 l
# x# S0 R- {  i
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-1 18:00 , Processed in 0.073908 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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