找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 29250|回复: 31

solidworks 批量执行宏

  [复制链接]
发表于 2017-3-1 08:30:37 | 显示全部楼层 |阅读模式
各位大大好,在网上找到一个可以批量打开SW零件的宏,代码如下:
0 x2 ~9 l1 e5 o7 \; t, D7 D6 r9 B$ `! ?6 M2 u3 h3 M1 W2 H
Sub Test()+ e& c# L( o4 c7 q
Set swApp = Application.SldWorks* _$ u# W7 ]/ E3 b7 q& G+ {9 [
PartPath = "D:\Project\" '设定目录
: E& b0 `" c% Z1 Z0 hPartFileName = Dir(PartPath & "*.sldprt") '搜寻首个零件档案名称
5 g# S! ~( f9 W' ~& i& b+ FDo Until PartFileName = "" '直至搜寻到空值
$ C# }& g$ [) q* o  V: ?8 C$ M0 ZSet Part = swApp.OpenDoc(PartPath & PartFileName, 1) '开启零件
4 Z5 S1 n- ^8 J' ]/ e- m'加入所需语句5 D( b2 c! O- Q& B3 E
'.
2 O% ]9 f( ~/ E( f# e- s'.4 V9 [# v! @5 D; F! h& J. ]% L
'.6 f- O! E+ a* r0 r
'.+ G0 Q# T) M3 t5 v3 w' J
Part.Save '保存7 }7 h) e. `3 a5 k
swApp.CloseDoc (PartFileName) '关闭零件
0 X4 A. c) P% s3 s$ D' |PartFileName = Dir '搜寻下一个零件档案名称( i% {5 r$ K* j7 C# T
Loop '循环搜寻
# C" B. K0 n+ c# x/ b3 GEnd Sub/ b4 I1 h. |, S' m# B+ t

; V+ j* e1 g/ K5 N( B1 z可是却只能打开零件,装配体和工程图就不能打开了,哪位大大可以帮忙改一下,使其可以打开文件夹中的SW所有的三种文件,在此拜谢!!!  @. |+ \1 z, J" a
回复

使用道具 举报

发表于 2017-3-1 09:10:04 | 显示全部楼层
劝你到三维网和开思找,那里有几位研究宏的大神。
& r9 t5 W: x' V4 ^* M+ K6 x  t还有为什么要批量打开零件文件,屏幕能装的下吗
发表于 2017-3-1 09:37:31 | 显示全部楼层
从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下就明白了,VBA很简单的
发表于 2017-3-1 09:41:47 | 显示全部楼层
本帖最后由 未来第一站 于 2017-3-1 09:47 编辑
+ U. ~, k9 c  `& t$ O( k8 h  `2 N" ~$ S9 @! R4 x
论坛solidworks专家级两位楼上大侠到齐了
发表于 2017-3-1 09:50:11 | 显示全部楼层
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?
. e! Y, L0 P- \9 m" \

本帖子中包含更多资源

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

×
 楼主| 发表于 2017-3-3 10:43:21 | 显示全部楼层
工人师_OgIOQ 发表于 2017-3-1 09:10
# S" `4 m  c3 y6 [' @, Z% n劝你到三维网和开思找,那里有几位研究宏的大神。
9 c6 R1 Q6 Q/ H0 ~: P还有为什么要批量打开零件文件,屏幕能装的下吗

0 i  j- M+ S# T9 f+ Z1 Z* Y谢谢你
5 \+ }1 D" v( i6 w( z  批量打开的用处是加入其他录制的宏,可以执行批量操作,提高工作效率
  b7 M" `# D8 r" l) k
 楼主| 发表于 2017-3-3 10:45:25 | 显示全部楼层
魍者归来 发表于 2017-3-1 09:37
; t! r7 M; k6 f1 ]- u从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下 ...

& D8 J1 w/ H. |6 o那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
 楼主| 发表于 2017-3-3 10:47:29 | 显示全部楼层
footleft 发表于 2017-3-1 09:50
& w  f6 \6 a( m  m7 }; C6 Q4 D这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?

( Y) j( c% a5 b2 ]只是更改这个还不行的,要配合着更改下面的那 1    分别对应1  2  3
" d  }4 i9 @1 I  但是我想能不能将打开三种文件的代码整合到同一个宏中* n  b( ^0 \2 i
发表于 2017-3-4 14:21:37 | 显示全部楼层
本帖最后由 ryouss 于 2017-3-4 14:42 编辑 - q) E: g0 p: L2 B
% b1 f! J8 T# H* y/ f, F
用 Select Case 做篩選循環,
7 Z% V8 k: W* [! R2 r# A' v. Q* `不過如下宏只是做零件,裝配件及工程圖的叫出再關閉,沒實質意義." C* N' U/ {" e5 l" v

3 U& E4 i8 |2 N3 u  ]! D3 {$ p/ E. T' u+ C* h. ~+ L
: P. A- `+ i  ^" l
  1. '# x4 b# Q1 U" E6 t
  2. ' 在某文件路徑下批量開零件,裝配件及工程圖( {$ y8 g, h* `- p# R  J1 T+ a1 I
  3. ' sc liang 2017/3/4! C# }) t* E# K# W- t. q
  4. ' 測試版 2012 sp41 ]' H* S7 q( u" ^" B% h
  5. '
    5 r. H& P* Y; [, P, z
  6. Dim nErrors          As Long
    ' f3 m+ i; `8 l0 D, c
  7. Dim nWarnings        As Long" W  C. Y% y( T, |0 R7 r, l

  8. 3 j: ^: h8 G9 Q; \' W+ `& G
  9. Sub Test()0 A& ]2 u& B8 N) Q/ u# R( [
  10.     Set swApp = Application.SldWorks9 x5 Z* |: Z$ D  y: m
  11.     Set swModel = swApp.ActiveDoc
    ( J9 ?- Y/ `; Q6 I
  12.     path = "D:\Project"   '存檔路徑; E) y* C4 |/ u) O4 ]
  13.     sFileName = Dir(path & "*.sld*") '取出SW文件% C3 u2 g) f5 p8 K( t
  14. '循環開檔# U( Q! w, F9 C: Q0 G
  15.      Do Until sFileName = ""/ ]' N) T6 b* a8 d$ F
  16.         Type_ = Right(sFileName, 3)    '取得SW文件擴展名後三位, r$ Y5 z$ U2 o/ A% j% G$ E
  17.         Select Case Type_ '判定SW文件型式
    / L3 q/ D, ~, B# D0 e# J) o
  18. '開零件檔並存檔8 B1 K3 m4 C4 P7 P
  19.             Case "PRT"
    4 l) }5 ~+ l" D( k% k
  20.                Set swModel = swApp.OpenDoc6(path + sFileName, swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings)5 [3 U, e4 c/ b+ c! s3 }
  21.                Set Part = swApp.ActiveDoc
    1 a# W4 Y* P6 i! P1 d0 f
  22.                Part.Save
    ( y: E; \2 e! z2 l" f5 y
  23. '開組件檔) I; Y: o" p' M: O2 f
  24.             Case "ASM"
    ; K& n5 K2 K, M1 I$ C
  25.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocASSEMBLY, swOpenDocOptions_Silent, "", nErrors, nWarnings), F8 [; [& ?- {, O
  26. '開工程圖              
    . l; g5 k! D0 M7 m
  27.             Case "DRW"2 N0 E' k! u% K: U/ J: e0 n
  28.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    8 T" B5 m# f  \. f% }
  29.                    : J# c; D2 G6 s) B- F( i) E
  30.         End Select+ Y# m1 n: I) h2 R% f( S! O+ e1 j& @7 C9 L
  31.         Set swModel = Nothing
    # K, p) x0 `# I% h# i+ u
  32.         swApp.CloseDoc (sFileName)
    - |2 G; z; ?6 U% R
  33.         sFileName = Dir   '同路徑取出下個SW文件檔名/ P* G3 U5 l& \* G$ z1 i
  34.     Loop& p) F4 v$ \9 R% b9 J, Y5 Z: ]: ?
  35. End Sub
复制代码
发表于 2017-3-4 15:13:40 | 显示全部楼层
杨猛0230 发表于 2017-3-3 10:45
' X" f/ q' q* {# |) I那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教

% j5 Q2 x6 w; M' u) [2 y方案1:If…Then…Else 语句
0 X" B" L/ P9 }) r. ^7 J2 z方案2:Select…Case 语句+ }' e- @7 d3 P! u; {" l# x) ?& v
方案3:Do…Loop 语句
2 Y3 g& d6 f( X* r% Z7 P方案4:For…Next 语句
+ a3 G7 O; r' V4 z; T方案5:While…Wend 语句) q5 k) i) B* [7 H7 [
方案6:……; N  n2 M* f5 F$ P
……* n7 Y6 X' e8 l& o3 k" K
9 U3 g4 i9 U/ [% `; z9 {6 N3 c
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-19 15:23 , Processed in 0.075892 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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