找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 27766|回复: 31

solidworks 批量执行宏

[复制链接]
发表于 2017-3-1 08:30:37 | 显示全部楼层 |阅读模式
各位大大好,在网上找到一个可以批量打开SW零件的宏,代码如下:
/ H5 |$ F+ D, {- F2 H: I  O- D; d. J& E8 ]5 e
Sub Test()6 ?1 V# h1 j8 }: s. A/ _
Set swApp = Application.SldWorks6 R) a5 G; S- a3 \" m
PartPath = "D:\Project\" '设定目录
4 s, K4 Q; [+ X6 A7 X4 Y8 IPartFileName = Dir(PartPath & "*.sldprt") '搜寻首个零件档案名称
& f& P6 B2 w; m8 _, @Do Until PartFileName = "" '直至搜寻到空值* k  M7 h7 L( w
Set Part = swApp.OpenDoc(PartPath & PartFileName, 1) '开启零件0 t0 ]- W' r! z/ @# _& C( P7 R
'加入所需语句! B9 Y6 n2 M$ `7 H/ I) N: [
'.
  B" Y9 D1 _7 l1 s; }6 a. ?- E# V6 L'." A& f, k( R6 k$ Z) ]
'., R( M6 Z0 ]5 u  b
'.
2 V: H& t7 ^( a* ?% f% XPart.Save '保存% k' y4 i  a- r
swApp.CloseDoc (PartFileName) '关闭零件
, [, C# I9 {; hPartFileName = Dir '搜寻下一个零件档案名称/ r% N& |7 t4 f' q  L! K' _
Loop '循环搜寻  _. P% W$ o, s2 h3 ?- v
End Sub
) v7 C9 u# s9 u( g) l
- ~/ }9 y( P. ^) m% [! h: p# C. t可是却只能打开零件,装配体和工程图就不能打开了,哪位大大可以帮忙改一下,使其可以打开文件夹中的SW所有的三种文件,在此拜谢!!!+ u& {% m9 w( i% k! A8 z- H
回复

使用道具 举报

发表于 2017-3-1 09:10:04 | 显示全部楼层
劝你到三维网和开思找,那里有几位研究宏的大神。# R9 S5 G% M' m( Q5 k* j0 j
还有为什么要批量打开零件文件,屏幕能装的下吗
发表于 2017-3-1 09:37:31 | 显示全部楼层
从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下就明白了,VBA很简单的
发表于 2017-3-1 09:41:47 | 显示全部楼层
本帖最后由 未来第一站 于 2017-3-1 09:47 编辑 $ R7 G( G9 u9 h& n: g

  l4 ?$ {; `' |, v$ o/ J0 }3 ?论坛solidworks专家级两位楼上大侠到齐了
发表于 2017-3-1 09:50:11 | 显示全部楼层
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?
2 s! m9 t% K0 U1 a5 Q

本帖子中包含更多资源

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

×
 楼主| 发表于 2017-3-3 10:43:21 | 显示全部楼层
工人师_OgIOQ 发表于 2017-3-1 09:109 c0 F# P0 _4 T$ M8 {9 W
劝你到三维网和开思找,那里有几位研究宏的大神。
4 ~. b  V- r5 r+ x还有为什么要批量打开零件文件,屏幕能装的下吗

( Z* K! X+ N, O# c$ J4 i) j谢谢你* i6 l; n* R: T% r
  批量打开的用处是加入其他录制的宏,可以执行批量操作,提高工作效率
4 E- A" O3 y. Q- m
 楼主| 发表于 2017-3-3 10:45:25 | 显示全部楼层
魍者归来 发表于 2017-3-1 09:37
  x  s# W) H+ P1 O9 Z. y) T' X从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下 ...

( H8 h7 p5 P1 @& W3 c+ m3 v那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
 楼主| 发表于 2017-3-3 10:47:29 | 显示全部楼层
footleft 发表于 2017-3-1 09:50, G) p& q5 I, K2 k" |. N4 ?0 u$ x# f
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?

. z2 n2 G1 Q7 \1 s0 N只是更改这个还不行的,要配合着更改下面的那 1    分别对应1  2  32 s) Z0 K. x5 D9 K7 g
  但是我想能不能将打开三种文件的代码整合到同一个宏中
+ z4 [# {: F3 f( }8 w" f" B. s5 J
发表于 2017-3-4 14:21:37 | 显示全部楼层
本帖最后由 ryouss 于 2017-3-4 14:42 编辑
! c4 S& X% f0 m5 Y; E1 A/ L! {9 [0 g! X7 j3 b* D& n4 r
用 Select Case 做篩選循環,
7 n6 q1 v4 I+ @1 s: L6 H7 M8 A不過如下宏只是做零件,裝配件及工程圖的叫出再關閉,沒實質意義.6 z2 r: Z3 B# g. X

! K& ]# b8 B5 Q( T' L! W
; Q( k# l  u- Y$ M/ s' M+ C. t1 S7 e- [6 v. Y$ Y' H" G8 ?4 N2 v( v$ b4 p' l
  1. '
    , e; i+ o; a$ j# J+ y
  2. ' 在某文件路徑下批量開零件,裝配件及工程圖/ {& P8 s5 j( r# L9 c, F
  3. ' sc liang 2017/3/4
    & W( U. K# M: ]7 ]6 b" a; W
  4. ' 測試版 2012 sp4
    # [8 h: J/ z- D6 S' q
  5. '+ N% b7 ^0 H1 f
  6. Dim nErrors          As Long
    ! E8 h8 s+ a0 y+ v$ s" k, R2 |" d
  7. Dim nWarnings        As Long
    2 V2 r  m6 p- W1 l* L

  8. 5 `# v6 p  l. H1 s2 I+ L
  9. Sub Test()
    # P& e. E4 t7 q+ K# }
  10.     Set swApp = Application.SldWorks
    ' v9 d/ y( J4 P; f
  11.     Set swModel = swApp.ActiveDoc# I- ^8 F1 K- G% i9 A4 G
  12.     path = "D:\Project"   '存檔路徑
    : x# d5 ^2 n9 S4 f2 A; ^) l1 r
  13.     sFileName = Dir(path & "*.sld*") '取出SW文件
    2 I' K. r! y, y) n
  14. '循環開檔
    3 r' y2 D$ P0 }( `4 o( h" s) ?
  15.      Do Until sFileName = ""5 v. r* e+ G& H2 j& [$ m
  16.         Type_ = Right(sFileName, 3)    '取得SW文件擴展名後三位
    # X8 E' D: f8 b+ D' ]& @) P) ]
  17.         Select Case Type_ '判定SW文件型式
    7 m5 q. k' Q: o/ M; q
  18. '開零件檔並存檔6 ^9 E* X3 @9 Z6 V
  19.             Case "PRT"
    # ^3 k% ]( J" ~5 N" q
  20.                Set swModel = swApp.OpenDoc6(path + sFileName, swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings)9 J; \- }5 t3 a, u4 r4 }
  21.                Set Part = swApp.ActiveDoc
    & r& T/ A6 H! `5 w4 p$ ^7 j+ o8 ?
  22.                Part.Save4 r5 @$ F0 r& I* x: r: H
  23. '開組件檔
    8 _5 Q: s& a1 Q6 D2 \7 d
  24.             Case "ASM"9 |% ]9 V4 ~0 {1 i1 r" ~* A
  25.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocASSEMBLY, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    / ~! q. ^" F/ O
  26. '開工程圖              $ h% l: q! E( Z# h& ~0 u; }
  27.             Case "DRW"9 v  ]1 R9 f0 P( y
  28.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)5 t( \- {+ n1 t3 }0 O
  29.                    9 a: I5 o9 w3 v3 R' R$ W. m
  30.         End Select
    * H+ W4 |$ A3 y4 x$ }
  31.         Set swModel = Nothing
    - J* i! m" P9 |( G, B  u
  32.         swApp.CloseDoc (sFileName)
    + ~) r5 C! z4 |# S" Z4 C, Q
  33.         sFileName = Dir   '同路徑取出下個SW文件檔名( Q3 m" \4 z. J3 B5 G
  34.     Loop
    6 N4 G" c( O, @
  35. End Sub
复制代码
发表于 2017-3-4 15:13:40 | 显示全部楼层
杨猛0230 发表于 2017-3-3 10:45) x. s5 W6 q2 m: T
那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教

( I  e2 c5 k, ~2 e) o方案1:If…Then…Else 语句( {# ~& g; c. p( @( k! I2 c& s: S. D$ i
方案2:Select…Case 语句2 ^+ q* F  a+ ]' U7 P
方案3:Do…Loop 语句
$ O: m$ J- o) g+ @方案4:For…Next 语句  b: |: _! t9 |4 S
方案5:While…Wend 语句. |0 E- t2 }/ q5 \$ |$ C2 k
方案6:……
( e% k3 r# G' ?. i: k' L……
/ q* |# z1 |) w& Q) Q4 K, M4 y4 m; _. ]4 |' [0 V+ Y
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-6-17 05:18 , Processed in 0.081433 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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