机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 23879|回复: 30
打印 上一主题 下一主题

solidworks 批量执行宏

[复制链接]
跳转到指定楼层
1#
发表于 2017-3-1 08:30:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大大好,在网上找到一个可以批量打开SW零件的宏,代码如下:
+ w: @/ g* `, ]' t$ M  o: X
& \2 K; M" \& r- t3 {! kSub Test()
0 G# f  D9 j+ O8 ^$ \) M" L( wSet swApp = Application.SldWorks5 h2 ?8 \) Q1 K$ ?
PartPath = "D:\Project\" '设定目录
+ V& v: V! F. m- D% P9 Z1 i9 HPartFileName = Dir(PartPath & "*.sldprt") '搜寻首个零件档案名称
8 v$ O" H3 d2 K3 sDo Until PartFileName = "" '直至搜寻到空值
: Z" ~9 E1 e0 s5 {' }9 c4 l5 NSet Part = swApp.OpenDoc(PartPath & PartFileName, 1) '开启零件0 M1 j& W* @% d
'加入所需语句0 s4 x5 v( ]; a4 G! Y, y
'.
$ o- m1 ?8 P# p! Z'.
  v" u7 ?9 M$ m'.
2 D. i) ~( p4 l2 }! O'.
6 e. X# h8 p6 t$ h4 v. YPart.Save '保存
# t- E+ X( u2 W4 v5 D# Z& @# tswApp.CloseDoc (PartFileName) '关闭零件9 f. c8 |( M, _% p* J
PartFileName = Dir '搜寻下一个零件档案名称& `) }  e7 m$ n7 D
Loop '循环搜寻
3 {# b4 k3 n# d& }, g5 NEnd Sub
% ~# |7 \& b% o6 p+ ^9 m+ {
5 N2 Z( J# f4 Q3 f: w可是却只能打开零件,装配体和工程图就不能打开了,哪位大大可以帮忙改一下,使其可以打开文件夹中的SW所有的三种文件,在此拜谢!!!5 {3 R1 U4 a- F# V5 [5 k2 i2 H
回复

使用道具 举报

2#
发表于 2017-3-1 09:10:04 | 只看该作者
劝你到三维网和开思找,那里有几位研究宏的大神。. U% N- V# s# s: D8 b( `
还有为什么要批量打开零件文件,屏幕能装的下吗
回复 支持 反对

使用道具 举报

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

使用道具 举报

4#
发表于 2017-3-1 09:41:47 | 只看该作者
本帖最后由 未来第一站 于 2017-3-1 09:47 编辑
6 e9 ]0 o' ]) G, }; I- Y6 \# R3 p+ f; p3 m: W6 t
必威APP精装版下载solidworks专家级两位楼上大侠到齐了
回复 支持 反对

使用道具 举报

5#
发表于 2017-3-1 09:50:11 | 只看该作者
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?
1 N, T0 g. Z8 k

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2017-3-3 10:43:21 | 只看该作者
工人师_OgIOQ 发表于 2017-3-1 09:10/ U' G! I# e0 s0 p0 \* z% c
劝你到三维网和开思找,那里有几位研究宏的大神。, b! k1 z4 h% `& ^% n# e0 L4 e' _
还有为什么要批量打开零件文件,屏幕能装的下吗

* M4 N/ H+ C6 z% T0 x3 m& w! `8 ~谢谢你
8 _  y% H( |5 r  批量打开的用处是加入其他录制的宏,可以执行批量操作,提高工作效率0 F! M* Y/ x! ]/ U6 k0 n
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2017-3-3 10:45:25 | 只看该作者
魍者归来 发表于 2017-3-1 09:37& T4 u: H3 e! x
从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下 ...
4 r8 P1 o' N- ^" [* a; w; k
那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2017-3-3 10:47:29 | 只看该作者
footleft 发表于 2017-3-1 09:50; W/ y2 e! k) \9 `% C( o
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?

8 R# ^" r: r4 O- a只是更改这个还不行的,要配合着更改下面的那 1    分别对应1  2  3
1 w" B* h% X6 x5 P* k$ V* b, ~0 B  但是我想能不能将打开三种文件的代码整合到同一个宏中" J$ ~, @+ f( H& X
回复 支持 反对

使用道具 举报

9#
发表于 2017-3-4 14:21:37 | 只看该作者
本帖最后由 ryouss 于 2017-3-4 14:42 编辑 , Y: f5 q# N- i7 i! O+ c" S. q

2 m* c; }- X4 W( w用 Select Case 做篩選循環,: J+ v# D& _7 J6 O2 u5 B
不過如下宏只是做零件,裝配件及工程圖的叫出再關閉,沒實質意義.! n+ H: t) ]$ g8 |  i1 L" @; H
  ]# ]! e6 b) p9 @
" U" V4 x* y  ?! R0 J. l; ]  M: g; d

8 r  k/ \: \7 U2 @8 A
  1. '" z% r% T( t( `- m  `
  2. ' 在某文件路徑下批量開零件,裝配件及工程圖
    & c3 u9 X6 K( x: \. b
  3. ' sc liang 2017/3/42 |1 a2 R2 @. M# d& J5 n6 ~. H
  4. ' 測試版 2012 sp47 E/ h- N) B7 T* R7 J
  5. '+ G" N- ~( ]5 r
  6. Dim nErrors          As Long
    9 K+ S4 h' c0 c% D1 w
  7. Dim nWarnings        As Long
    - X. @% X' k/ y0 J8 N
  8. + r( F% u$ G/ M- t( `- i; V" @
  9. Sub Test()  A7 ?# {$ o5 t' i& I. Z  M
  10.     Set swApp = Application.SldWorks4 }& [6 F6 }* C6 M5 A4 ~
  11.     Set swModel = swApp.ActiveDoc
    , Q# l+ q+ g1 |: b4 z( X% H
  12.     path = "D:\Project"   '存檔路徑+ {& a6 s3 _3 y4 C
  13.     sFileName = Dir(path & "*.sld*") '取出SW文件
    . l4 R$ b! R+ @3 b! t" N5 p
  14. '循環開檔1 X2 I! o' K) I4 r4 R# ]8 [  u& g
  15.      Do Until sFileName = ""$ G- x, x7 R) j5 a$ I. r; p6 n
  16.         Type_ = Right(sFileName, 3)    '取得SW文件擴展名後三位
    9 l5 C$ T& Z! x  q8 J. u
  17.         Select Case Type_ '判定SW文件型式
    " `7 f) H0 i5 I
  18. '開零件檔並存檔
    + }: {5 Z5 U& e3 u
  19.             Case "PRT"
    ' K+ I; p1 Z7 w( i* a& t9 p, g0 S
  20.                Set swModel = swApp.OpenDoc6(path + sFileName, swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings)- r7 \  Q) ?% r% n! w+ B  l
  21.                Set Part = swApp.ActiveDoc' v5 v4 M  i) {$ J
  22.                Part.Save% T( F( e# L# H
  23. '開組件檔
    5 y* J3 ?4 r8 _: i1 X/ s& |
  24.             Case "ASM"+ `" z$ l7 M) x& a, ^: s/ @
  25.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocASSEMBLY, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    7 M1 q( ^2 i; D9 X) Q- \* P. K4 ^
  26. '開工程圖              
    + C* ]6 _. }* }0 V8 \
  27.             Case "DRW"
    * d7 t) t3 j' W4 Q
  28.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    4 }# D1 j9 z1 o: N( ?' N: y
  29.                   
    ; o4 t2 y5 c7 \' a
  30.         End Select
    3 _6 O5 S; a: I9 I
  31.         Set swModel = Nothing
    + a- A1 j' S* w& b. O5 S
  32.         swApp.CloseDoc (sFileName)
    " G+ ~% `8 Q& [4 O+ G8 F  y
  33.         sFileName = Dir   '同路徑取出下個SW文件檔名
    + g+ F+ w& K" @5 g, A- F' Q
  34.     Loop+ B8 o8 D; t! b; r1 w1 r  O
  35. End Sub
复制代码
回复 支持 1 反对 0

使用道具 举报

10#
发表于 2017-3-4 15:13:40 | 只看该作者
杨猛0230 发表于 2017-3-3 10:45! q$ `/ l$ V. {# {" ?% Z
那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
% Y( X, r: m8 \; B/ z  c
方案1:If…Then…Else 语句
' X' l) M' `% M# L% h& K4 ]8 y方案2:Select…Case 语句
# o# X! V, B2 t3 U+ r方案3:Do…Loop 语句. [, A5 N( d7 d+ N1 S$ `& @7 G
方案4:For…Next 语句6 J) P3 C" V0 {) }
方案5:While…Wend 语句6 E3 e! d- A- Y* z. z
方案6:……5 J1 l1 L; C3 c9 x+ v- X1 P9 F7 H
……
% D" L1 E8 I/ \) v" b/ O0 s* A+ l. L7 h8 _0 Q" m
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-11-22 22:31 , Processed in 0.064605 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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