找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 28497|回复: 31

solidworks 批量执行宏

[复制链接]
发表于 2017-3-1 08:30:37 | 显示全部楼层 |阅读模式
各位大大好,在网上找到一个可以批量打开SW零件的宏,代码如下:; l. J, I0 R; I! \  D; R" B# [
) |! ~$ R2 X9 ]" \, C/ Z
Sub Test()2 J  u1 e* {& n- F5 n6 x! g; Y
Set swApp = Application.SldWorks8 J3 o1 y" J- J5 r7 a
PartPath = "D:\Project\" '设定目录& D7 w9 W9 O. j" D# [
PartFileName = Dir(PartPath & "*.sldprt") '搜寻首个零件档案名称# i0 n- }; f* m
Do Until PartFileName = "" '直至搜寻到空值
2 N: T0 e3 h* l" t. P- LSet Part = swApp.OpenDoc(PartPath & PartFileName, 1) '开启零件
8 K) ]& l% D8 h' [3 w7 Q) E, B'加入所需语句
+ G; i# T4 e2 j'.) _9 t- i3 T3 A# M, s) |" @
'.8 I5 J7 r# P( N7 z4 U
'.
" r2 D4 D: q  Y+ e: I/ H'." |" z8 {3 F: b* `, \9 R
Part.Save '保存5 s# c( }3 `: N: g2 D$ U
swApp.CloseDoc (PartFileName) '关闭零件  _' c% z6 k9 X
PartFileName = Dir '搜寻下一个零件档案名称; O" r. M, x) q0 F
Loop '循环搜寻
7 Z7 c5 l8 v# G# T4 j0 \  ]/ v# @End Sub6 `) M" U) H9 `1 b4 n

/ f% U& f! {2 U& ]/ r# y可是却只能打开零件,装配体和工程图就不能打开了,哪位大大可以帮忙改一下,使其可以打开文件夹中的SW所有的三种文件,在此拜谢!!!: W# O' O7 C) ^) d' k* N* ]9 f
回复

使用道具 举报

发表于 2017-3-1 09:10:04 | 显示全部楼层
劝你到三维网和开思找,那里有几位研究宏的大神。) A% q  R: p& ?. M' j. S' E: ~# d
还有为什么要批量打开零件文件,屏幕能装的下吗
发表于 2017-3-1 09:37:31 | 显示全部楼层
从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下就明白了,VBA很简单的
发表于 2017-3-1 09:41:47 | 显示全部楼层
本帖最后由 未来第一站 于 2017-3-1 09:47 编辑
; h6 X: S8 R0 k; y
0 B* t. \# [0 p论坛solidworks专家级两位楼上大侠到齐了
发表于 2017-3-1 09:50:11 | 显示全部楼层
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?
4 d' ?$ y# J6 S$ b0 E( T9 f

本帖子中包含更多资源

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

×
 楼主| 发表于 2017-3-3 10:43:21 | 显示全部楼层
工人师_OgIOQ 发表于 2017-3-1 09:10' v4 h; ~4 y0 r( x; r4 f. H* H, B3 |
劝你到三维网和开思找,那里有几位研究宏的大神。
' f* u' x. u* @8 F还有为什么要批量打开零件文件,屏幕能装的下吗
; y% N1 y5 `! u& M7 @" B& z, A1 v5 X
谢谢你8 D. q) W% C: M4 c' r
  批量打开的用处是加入其他录制的宏,可以执行批量操作,提高工作效率
  \( P' w  x8 P& d7 w  ~
 楼主| 发表于 2017-3-3 10:45:25 | 显示全部楼层
魍者归来 发表于 2017-3-1 09:37# o; E+ w2 `; M2 `. |* U
从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下 ...

# `6 ^# |6 z2 H+ m, C$ J0 G那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
 楼主| 发表于 2017-3-3 10:47:29 | 显示全部楼层
footleft 发表于 2017-3-1 09:50
2 ?) ~. |5 D% j* t& O这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?
: e+ L" w& G8 p) [8 |' y
只是更改这个还不行的,要配合着更改下面的那 1    分别对应1  2  3# _3 D# @) o& R, c
  但是我想能不能将打开三种文件的代码整合到同一个宏中
( w" C7 X0 f: j( \0 y! t& \
发表于 2017-3-4 14:21:37 | 显示全部楼层
本帖最后由 ryouss 于 2017-3-4 14:42 编辑
. E. @% e& y& `' _
- W, _: y9 t' r' Q用 Select Case 做篩選循環,
1 l% z% h7 F0 e不過如下宏只是做零件,裝配件及工程圖的叫出再關閉,沒實質意義.
6 h6 m+ s, {( j- G0 L, O' P9 y9 o# @/ Y/ r
. s! X9 J1 A- y) v

' H5 p$ r; |3 t8 j" ^/ s  ~& S  u( W$ b
  1. '
    ; r: J0 A! S0 S# _0 ^
  2. ' 在某文件路徑下批量開零件,裝配件及工程圖
    7 t5 `0 }( j$ l/ r2 @
  3. ' sc liang 2017/3/4
    # b" C1 J# ?  d( Q; @6 y8 x/ n* i
  4. ' 測試版 2012 sp4: j4 T  l  g" K  Z: N+ |' D
  5. '+ d/ y8 ~4 [3 z8 E2 `
  6. Dim nErrors          As Long
    * f, A$ ^( @( ?1 S( ~( P" o2 R
  7. Dim nWarnings        As Long
    - e- ^! S. U6 M/ K/ ]$ e% Q: @- W
  8. ) s2 v% q& @* j# e1 W1 D
  9. Sub Test(). I" w& t! H2 w0 t
  10.     Set swApp = Application.SldWorks" j. y6 x& Z6 g+ `
  11.     Set swModel = swApp.ActiveDoc
    % ~2 Y7 m1 a9 `. P7 W
  12.     path = "D:\Project"   '存檔路徑- k4 Q( Y  P6 j& T* h# t' x
  13.     sFileName = Dir(path & "*.sld*") '取出SW文件8 o4 N& g/ [# U
  14. '循環開檔
    2 I3 v7 |, I: I2 u! w: r
  15.      Do Until sFileName = ""
    . X# F2 l4 d; y% ~$ m2 C! ?' N  W
  16.         Type_ = Right(sFileName, 3)    '取得SW文件擴展名後三位
    : @7 T6 G& {& Q  K  r
  17.         Select Case Type_ '判定SW文件型式
    1 @  c# x5 I1 @5 O2 X, `' |" w. Q
  18. '開零件檔並存檔) e" o5 L# a9 c& i
  19.             Case "PRT"
    + r  T, b8 T/ V5 e3 E7 Y6 |
  20.                Set swModel = swApp.OpenDoc6(path + sFileName, swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    : K: X: `- Y4 E1 T) x& g
  21.                Set Part = swApp.ActiveDoc/ J2 X0 g( `' W" m- H) r
  22.                Part.Save1 D% i! d( I; Y: ?
  23. '開組件檔5 U, f8 I1 B% J$ N
  24.             Case "ASM"( f' n, N. c; q) P
  25.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocASSEMBLY, swOpenDocOptions_Silent, "", nErrors, nWarnings)& ]/ N$ b/ o  a! ^/ A, z
  26. '開工程圖              
    ' [. b$ O; |! G2 |, q
  27.             Case "DRW"
    ) l, T7 E. Z3 ]+ o* n- U
  28.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    5 B/ A5 I3 R9 R, T
  29.                    4 w2 V% h4 v4 e% `  x
  30.         End Select
    3 x! k  `& E3 c* H
  31.         Set swModel = Nothing7 T7 o# E/ s$ R1 q! I4 t% x/ x/ s
  32.         swApp.CloseDoc (sFileName)
    , W, @/ m6 W& Q2 ~( G: U% @
  33.         sFileName = Dir   '同路徑取出下個SW文件檔名1 f+ l: H# N+ x  O- \# Y1 `& {' C" D
  34.     Loop
    , A( ~% g& o: H& }% W8 \. c
  35. End Sub
复制代码
发表于 2017-3-4 15:13:40 | 显示全部楼层
杨猛0230 发表于 2017-3-3 10:45
; f1 S" {/ G" }那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教

: `  I0 P# W# A* p5 H6 }( R方案1:If…Then…Else 语句
7 W* x- J  Y. [3 Y- D2 M方案2:Select…Case 语句  n; P+ o9 e9 x/ O) m& R
方案3:Do…Loop 语句1 Q  y4 w5 e& G2 g9 h/ m
方案4:For…Next 语句9 R& b* i/ p: O: K0 \* {0 O
方案5:While…Wend 语句' i4 }% q* H2 V4 I; h
方案6:……
: v3 U5 _! q5 X% y. y/ r* F……
* p: B+ ~, M6 m" P( x1 ]7 m; ^$ H5 q/ }  C( B( J  \5 X
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-8-2 23:28 , Processed in 0.075290 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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