机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 25232|回复: 31

solidworks 批量执行宏

[复制链接]
发表于 2017-3-1 08:30:37 | 显示全部楼层 |阅读模式
各位大大好,在网上找到一个可以批量打开SW零件的宏,代码如下:
, c% N! V( @, C' `- F
: Z) i8 @( k0 H) Z  qSub Test()
/ `( U5 _) N# V3 d$ t" kSet swApp = Application.SldWorks+ |4 `( c$ _$ i2 S
PartPath = "D:\Project\" '设定目录  j, {8 A. g. j$ A6 v  Q% b
PartFileName = Dir(PartPath & "*.sldprt") '搜寻首个零件档案名称
9 L" |7 U0 g; z, ^Do Until PartFileName = "" '直至搜寻到空值$ \+ d( U: a* g- X- E2 e9 H0 b" h8 a
Set Part = swApp.OpenDoc(PartPath & PartFileName, 1) '开启零件* c" y0 B4 t: a& O/ G" W
'加入所需语句
+ X1 f3 G% y1 z& I/ A! o* e$ U'.
3 q' B) _6 }" u9 I: r'.
' K# {$ R% r9 X; p- G& S5 Z) w; \$ w'.
' y: z. x" L6 h3 t2 F1 B'.
/ ?, ?% v" |" e7 V" xPart.Save '保存& q: T$ _  A( G) k( E: w1 C
swApp.CloseDoc (PartFileName) '关闭零件
/ e/ i+ _1 D0 ]. t9 q( ePartFileName = Dir '搜寻下一个零件档案名称
0 W* a; R5 C( H# `/ LLoop '循环搜寻, \9 J' ?: ^& p
End Sub7 ~" a+ C) F% w: U( \. ~5 x( N  C( L( W

+ u$ @! j9 z5 c. t1 }可是却只能打开零件,装配体和工程图就不能打开了,哪位大大可以帮忙改一下,使其可以打开文件夹中的SW所有的三种文件,在此拜谢!!!
: w' p6 q' W2 ~% N
回复

使用道具 举报

发表于 2017-3-1 09:10:04 | 显示全部楼层
劝你到三维网和开思找,那里有几位研究宏的大神。
( V" p% U" l, ~还有为什么要批量打开零件文件,屏幕能装的下吗
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2017-3-1 09:41:47 | 显示全部楼层
本帖最后由 未来第一站 于 2017-3-1 09:47 编辑 + ?# b5 M( T4 J2 {- ?

5 F# Y1 ]2 |" h9 g' z+ m9 `" Y/ E论坛solidworks专家级两位楼上大侠到齐了
回复 支持 反对

使用道具 举报

发表于 2017-3-1 09:50:11 | 显示全部楼层
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?- v- R# i3 Z' W

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:43:21 | 显示全部楼层
工人师_OgIOQ 发表于 2017-3-1 09:10/ S$ B4 D) J, `0 B8 c8 U& d3 k
劝你到三维网和开思找,那里有几位研究宏的大神。, y5 A' k+ O% [) \  S7 B
还有为什么要批量打开零件文件,屏幕能装的下吗
. G' @* m3 F. b6 k) n; y
谢谢你# r5 h# I9 z% \( c3 Y# s: i9 z* e; r
  批量打开的用处是加入其他录制的宏,可以执行批量操作,提高工作效率. I* T7 n- D4 c7 \
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:45:25 | 显示全部楼层
魍者归来 发表于 2017-3-1 09:37; d% U, S/ C1 z' ~
从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下 ...

9 l7 v- Y7 J( F; ?那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:47:29 | 显示全部楼层
footleft 发表于 2017-3-1 09:50$ r5 r: j6 M3 q/ e) H( b
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?
. C/ c1 {' P( ^
只是更改这个还不行的,要配合着更改下面的那 1    分别对应1  2  3
6 [2 k; }, |1 W7 A" V, G* |  但是我想能不能将打开三种文件的代码整合到同一个宏中1 u. a& X3 h& `
回复 支持 反对

使用道具 举报

发表于 2017-3-4 14:21:37 | 显示全部楼层
本帖最后由 ryouss 于 2017-3-4 14:42 编辑
1 r2 F) y( L+ g6 W% f
% Z/ D  M' x; e5 W" {用 Select Case 做篩選循環,0 S8 w1 |! S3 x& G
不過如下宏只是做零件,裝配件及工程圖的叫出再關閉,沒實質意義.
. \& ^9 I4 _# v0 L  l8 H$ B1 G& \8 j0 K9 }
0 T& v1 R! a, y- Z- _) a+ K" k
# D* v6 {4 b  g
  1. '+ T& L' a% V& ]% j: N; _+ o
  2. ' 在某文件路徑下批量開零件,裝配件及工程圖+ n. f. V# C, e6 l  ^+ a
  3. ' sc liang 2017/3/4
    + G' v4 c8 t2 w1 S6 b8 D' I
  4. ' 測試版 2012 sp4
    % W; l; N* I5 M3 S& R
  5. '
    2 o3 k+ ~- B3 J/ b
  6. Dim nErrors          As Long
    ; y0 G  t+ v; a' n6 Y
  7. Dim nWarnings        As Long& S; A5 j; C6 K. S! K# M

  8. , J' V8 R- O. k  E
  9. Sub Test()
    ; i' o! k' k: p3 y
  10.     Set swApp = Application.SldWorks+ t% o$ m3 O: k, T
  11.     Set swModel = swApp.ActiveDoc8 i8 t8 E5 N$ A1 [1 U
  12.     path = "D:\Project"   '存檔路徑/ ~8 N9 z9 }! d5 Y+ g
  13.     sFileName = Dir(path & "*.sld*") '取出SW文件
    ) s/ z7 z2 j  W) a" i0 T- j
  14. '循環開檔: n0 Y3 A% Y! D/ K3 W' P
  15.      Do Until sFileName = ""6 T# O0 }- ^7 r1 [8 n% |; G
  16.         Type_ = Right(sFileName, 3)    '取得SW文件擴展名後三位
    ; G6 [; W+ y% p! Q3 ]
  17.         Select Case Type_ '判定SW文件型式
    ) e) l% [2 M" {  X% e+ V
  18. '開零件檔並存檔
    5 j! b! c" e# ~
  19.             Case "PRT"  C' X; K, O# E$ v( n
  20.                Set swModel = swApp.OpenDoc6(path + sFileName, swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings)! {- D* R+ Y5 R0 P
  21.                Set Part = swApp.ActiveDoc
    * h) |# l% m% C( e9 c/ `
  22.                Part.Save, y9 _( s, I( ?# Y( {
  23. '開組件檔
    : [0 S+ A$ t' o5 ~
  24.             Case "ASM"9 t: @: K. `" `8 \
  25.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocASSEMBLY, swOpenDocOptions_Silent, "", nErrors, nWarnings)& d. _+ M/ l* h- f9 W3 `. Z) N- D
  26. '開工程圖              , \7 Z- @/ T1 D9 T
  27.             Case "DRW"1 y$ x6 K! R9 o4 ~5 e: l1 g" u, V. M
  28.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    1 T! }+ a8 _; B5 f+ r
  29.                   
    - |, _" N1 c) h- l& M9 n
  30.         End Select" M, ~4 _" a$ }6 T1 W3 d
  31.         Set swModel = Nothing; G% b6 O. ~) a1 @1 Z  j
  32.         swApp.CloseDoc (sFileName)" Q* c8 x$ H/ N9 v
  33.         sFileName = Dir   '同路徑取出下個SW文件檔名
    6 o) Q4 z  L" u: Z
  34.     Loop
    " a" B+ v2 Z& W- B3 E
  35. End Sub
复制代码
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-4 15:13:40 | 显示全部楼层
杨猛0230 发表于 2017-3-3 10:450 {9 m  A0 y6 v( _& A: a6 v
那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
, X0 Z2 A- Y! J7 ^; T) [3 O
方案1:If…Then…Else 语句1 v# X2 E7 K8 Q2 V9 C) |) F$ Y9 t
方案2:Select…Case 语句1 _/ N2 v2 Y& f. \9 G- O
方案3:Do…Loop 语句
9 Q% p8 P6 b9 V6 L7 D方案4:For…Next 语句
" ^# I9 |% v$ X1 ?, L8 }方案5:While…Wend 语句
, R) k* Y% T) k* s方案6:……
) }. ]: S7 M: [$ z0 M$ [……
- R* G( \, ?! L7 P/ u* [/ G; k3 n2 y: r3 f. C- f
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-22 16:49 , Processed in 0.065703 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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