机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 21161|回复: 30

solidworks 批量执行宏

[复制链接]
发表于 2017-3-1 08:30:37 | 显示全部楼层 |阅读模式
各位大大好,在网上找到一个可以批量打开SW零件的宏,代码如下:
6 W+ L, s3 f6 j* ^
& B" y$ R0 ?" H* v1 s- `' J' JSub Test()4 t7 j2 c9 T: o( O
Set swApp = Application.SldWorks
5 ^, F! a6 z6 ~PartPath = "D:\Project\" '设定目录/ K  ^6 E- k# I' i+ g
PartFileName = Dir(PartPath & "*.sldprt") '搜寻首个零件档案名称
, K1 B+ j5 S. FDo Until PartFileName = "" '直至搜寻到空值
$ [3 ?8 l9 e- c+ c- {: H& K% W1 KSet Part = swApp.OpenDoc(PartPath & PartFileName, 1) '开启零件
3 e- @: L+ |; g'加入所需语句- _% W8 _( o- A9 b3 J8 ?
'.
$ X5 n3 _6 t8 q8 a'.- U6 ^  U9 l* W# @
'./ u! h- ^" @9 n& a: E
'.
4 X0 Z% ]3 `1 h9 V, R$ iPart.Save '保存! j2 o. `; B' y, h9 V( K3 L4 h
swApp.CloseDoc (PartFileName) '关闭零件
- K( |# c5 g) f+ L; I8 c7 JPartFileName = Dir '搜寻下一个零件档案名称
& B6 s! @! ?' B# @, p, ?. DLoop '循环搜寻
4 w1 `2 ~4 y- y: aEnd Sub, }( W7 \9 F! m, b# w1 |
' p, V# L! g% R+ M1 y$ V
可是却只能打开零件,装配体和工程图就不能打开了,哪位大大可以帮忙改一下,使其可以打开文件夹中的SW所有的三种文件,在此拜谢!!!
/ B5 N& f" q4 ~! {
回复

使用道具 举报

发表于 2017-3-1 09:10:04 | 显示全部楼层
劝你到三维网和开思找,那里有几位研究宏的大神。
$ P5 V; M& z# R  y, H$ b还有为什么要批量打开零件文件,屏幕能装的下吗
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2017-3-1 09:41:47 | 显示全部楼层
本帖最后由 未来第一站 于 2017-3-1 09:47 编辑 0 _" J, e% |6 A) W* |7 W
6 J4 ^. B3 B! U  ~7 S
论坛solidworks专家级两位楼上大侠到齐了
回复 支持 反对

使用道具 举报

发表于 2017-3-1 09:50:11 | 显示全部楼层
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?
% e* j9 O6 D$ p5 Z* E, i

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:43:21 | 显示全部楼层
工人师_OgIOQ 发表于 2017-3-1 09:107 {; b- g/ y8 ^5 S/ A  W1 y
劝你到三维网和开思找,那里有几位研究宏的大神。
/ }3 \3 i. s, K7 `还有为什么要批量打开零件文件,屏幕能装的下吗

4 I+ J5 G* j! v8 F谢谢你' {! G  j% }! E0 l, n
  批量打开的用处是加入其他录制的宏,可以执行批量操作,提高工作效率# T! ?0 B" ~# r) Z
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:45:25 | 显示全部楼层
魍者归来 发表于 2017-3-1 09:377 V4 w  C8 f) M# D+ e$ B4 `5 h
从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下 ...
/ u" ]# G1 t9 P* |
那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:47:29 | 显示全部楼层
footleft 发表于 2017-3-1 09:50
. ?" Z3 r3 S6 U! k! U/ o( j1 n这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?

) W6 e! M+ k1 Y8 N2 r只是更改这个还不行的,要配合着更改下面的那 1    分别对应1  2  3
; C; |0 ^2 S/ h% {  但是我想能不能将打开三种文件的代码整合到同一个宏中1 I  Q7 U$ |* x! ?9 i
回复 支持 反对

使用道具 举报

发表于 2017-3-4 14:21:37 | 显示全部楼层
本帖最后由 ryouss 于 2017-3-4 14:42 编辑 - f2 J9 a( [! j. z/ r) [! o- i

0 j8 y& k0 i# s7 k! s用 Select Case 做篩選循環,. Y2 |4 H- ?+ y' e  K! Z* I+ g& u  D
不過如下宏只是做零件,裝配件及工程圖的叫出再關閉,沒實質意義.
8 _/ A/ g; g3 y7 S  d/ U
: {9 W' ^$ d) E6 Y9 \4 ~0 ~9 U* c& A! H% U" ^
9 G# g- Z& D0 Z0 `/ w. H/ S) E3 R+ q
  1. '
    4 w, X) B1 z9 Z& f
  2. ' 在某文件路徑下批量開零件,裝配件及工程圖$ X  W2 p5 j, W! U8 M
  3. ' sc liang 2017/3/4
    7 ?2 [" Q7 p8 |$ y
  4. ' 測試版 2012 sp4
    / m: Z: }$ |# Z' C
  5. '2 `+ s% ?1 d; V& f/ P/ D
  6. Dim nErrors          As Long: Q2 q+ k* o2 L# N+ R8 R" f6 N
  7. Dim nWarnings        As Long4 H1 [2 m+ c7 D/ E" g$ i0 x* p

  8. 4 z) @* U  n2 {$ U( V1 b
  9. Sub Test()
    $ I% P/ u. K* y
  10.     Set swApp = Application.SldWorks
    / S/ c: h4 Q( d4 q. z$ q# b
  11.     Set swModel = swApp.ActiveDoc" S( ?5 F# J" u: b- d
  12.     path = "D:\Project"   '存檔路徑
    ' [3 q% g5 H5 m% m
  13.     sFileName = Dir(path & "*.sld*") '取出SW文件
    ( T) l# D6 A0 b" _$ |/ P, X
  14. '循環開檔
    # {1 F- @$ v0 W2 J3 ^4 x6 p
  15.      Do Until sFileName = ""
    ! Y: l: e, n/ g$ b7 ^' b8 i* E7 z
  16.         Type_ = Right(sFileName, 3)    '取得SW文件擴展名後三位) M: Q6 c" f3 c1 L
  17.         Select Case Type_ '判定SW文件型式, s1 ?% L8 r" S9 \9 H- A( X
  18. '開零件檔並存檔- z) N8 q# ]# Y7 q% G' t
  19.             Case "PRT"" Y6 L+ m9 P$ @
  20.                Set swModel = swApp.OpenDoc6(path + sFileName, swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings)2 ]4 y% }. ?: K/ J6 Y
  21.                Set Part = swApp.ActiveDoc
    " F: ^" u' w6 A* T( F
  22.                Part.Save4 R7 d; j; `/ W7 m; D
  23. '開組件檔2 o* y8 B% I. W* F2 |1 }+ y" A
  24.             Case "ASM"
    % d( b# E6 D" T( l6 V
  25.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocASSEMBLY, swOpenDocOptions_Silent, "", nErrors, nWarnings)* q2 r% A* f# Q8 B7 v% ~
  26. '開工程圖              
    * t$ z, I8 _: Z' r/ s4 Q3 ~
  27.             Case "DRW"% r* ^5 J6 ]- D, w
  28.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)- ~, z" h  B) E  L
  29.                    $ {- N/ m+ C1 N2 Z* g# _, m
  30.         End Select1 U( m& V& \$ E) K
  31.         Set swModel = Nothing
    + y8 i4 w: b, P" k1 N
  32.         swApp.CloseDoc (sFileName)
    " G6 ~' Q- F) |+ @
  33.         sFileName = Dir   '同路徑取出下個SW文件檔名
    9 e, S  o# l' I
  34.     Loop
    : C- e2 q8 g( L. Z( j' T. H
  35. End Sub
复制代码
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-4 15:13:40 | 显示全部楼层
杨猛0230 发表于 2017-3-3 10:45
: v9 g1 s0 w+ c2 d那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
9 @/ c& V6 }1 m: T1 v
方案1:If…Then…Else 语句) M3 S, J' b/ o# R3 [6 c4 E
方案2:Select…Case 语句9 d0 n2 w0 J, m4 W& U' m8 B; h4 a. o
方案3:Do…Loop 语句
: ?/ z; ^! N. L3 @" H3 _* F3 q方案4:For…Next 语句
9 s8 ^9 [! z$ S) s方案5:While…Wend 语句' w4 x# U2 T8 a/ i% x
方案6:……" P& {8 W. \' [# J" k1 u: V0 h
……* H0 s6 r% l; |2 _& p5 |

, {# x* F  `; Q
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 14:55 , Processed in 0.061300 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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