机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 26584|回复: 31

solidworks 批量执行宏

[复制链接]
发表于 2017-3-1 08:30:37 | 显示全部楼层 |阅读模式
各位大大好,在网上找到一个可以批量打开SW零件的宏,代码如下:/ x3 Q/ {3 l) L- |
9 w0 c- w. {  r) [7 Z4 G2 V$ ~; w
Sub Test()/ F5 F! h4 f3 Z- Y
Set swApp = Application.SldWorks
5 D8 J; K2 F  gPartPath = "D:\Project\" '设定目录
% v1 `5 l/ a/ I# s5 A' KPartFileName = Dir(PartPath & "*.sldprt") '搜寻首个零件档案名称8 T, @, d% D- d2 t4 A
Do Until PartFileName = "" '直至搜寻到空值. A7 D! z/ e; n7 R0 q
Set Part = swApp.OpenDoc(PartPath & PartFileName, 1) '开启零件
: R  P* j1 I  `  o'加入所需语句
5 \" E2 Z( s) W9 F9 I'.  P- @' Z2 t+ N2 M0 K" j# {
'.
; D* t5 h" ~: T" U9 H! M+ D. U% R'., Y, i9 d$ @6 {  f* O- X
'.
7 t9 }' M( ~; I) F( PPart.Save '保存
7 A. I, ]9 W9 T( ^, QswApp.CloseDoc (PartFileName) '关闭零件
+ _3 m2 S) x+ k# E; v5 m: aPartFileName = Dir '搜寻下一个零件档案名称1 N$ _4 i& p. X& }1 t$ Y
Loop '循环搜寻2 q% M" @% L: h; ~
End Sub9 N1 ?) S5 r5 P4 b( g( S
3 G) }4 y: n9 U) g
可是却只能打开零件,装配体和工程图就不能打开了,哪位大大可以帮忙改一下,使其可以打开文件夹中的SW所有的三种文件,在此拜谢!!!9 f7 T1 ~1 h" z- _0 h
回复

使用道具 举报

发表于 2017-3-1 09:10:04 | 显示全部楼层
劝你到三维网和开思找,那里有几位研究宏的大神。' X+ R* ?. Q: ~5 L1 G
还有为什么要批量打开零件文件,屏幕能装的下吗
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2017-3-1 09:41:47 | 显示全部楼层
本帖最后由 未来第一站 于 2017-3-1 09:47 编辑   `) ^: p$ l3 T  ^: I9 T5 j

# w6 H) T, h& W- A) K论坛solidworks专家级两位楼上大侠到齐了
回复 支持 反对

使用道具 举报

发表于 2017-3-1 09:50:11 | 显示全部楼层
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?
( Y! _3 w- _( a7 |7 d: P' _  ?5 d

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:43:21 | 显示全部楼层
工人师_OgIOQ 发表于 2017-3-1 09:108 h/ w! D- ?6 R! o2 I& @
劝你到三维网和开思找,那里有几位研究宏的大神。) m8 U; C- G' l+ {
还有为什么要批量打开零件文件,屏幕能装的下吗
, ^: w4 f* F8 C( x
谢谢你
( d: q  h! x! ]+ n: U1 N1 ^( p: ^  批量打开的用处是加入其他录制的宏,可以执行批量操作,提高工作效率! S" d, M- k( W# w6 f5 x/ y  C/ ~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:45:25 | 显示全部楼层
魍者归来 发表于 2017-3-1 09:37
8 a: m( B: A8 o/ U' T从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下 ...
! E* _1 `$ F$ A1 u  V  M
那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 10:47:29 | 显示全部楼层
footleft 发表于 2017-3-1 09:50
, W+ X7 R$ d7 O" w, A6 K/ h这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?
' b5 L0 }7 h# D' ^7 [
只是更改这个还不行的,要配合着更改下面的那 1    分别对应1  2  3
+ q4 y! O3 Q; r: s9 a  但是我想能不能将打开三种文件的代码整合到同一个宏中0 b5 u4 t$ |7 X; F. t- \* ]- G( ~
回复 支持 反对

使用道具 举报

发表于 2017-3-4 14:21:37 | 显示全部楼层
本帖最后由 ryouss 于 2017-3-4 14:42 编辑 4 b% n3 p$ g' T; M
& L- ?1 r7 J+ q. S1 Y
用 Select Case 做篩選循環,
& y2 ^) p7 l: U  @# q, Z不過如下宏只是做零件,裝配件及工程圖的叫出再關閉,沒實質意義.
! k7 Z  s$ A+ k5 n; c6 l% ~6 g
( K) Z) e9 o  y* U% G6 ]# `$ P5 I4 E
: V/ h6 G8 U/ x) w/ U* F5 ^% n: F
  1. '8 s0 |+ S2 ]  B; z8 v0 X  j6 _6 E
  2. ' 在某文件路徑下批量開零件,裝配件及工程圖( Z. j( j+ T+ i( y+ @( N7 m
  3. ' sc liang 2017/3/42 n% l# i- i# b6 X: T( w  o
  4. ' 測試版 2012 sp4# {5 |+ C. y0 z) B8 D
  5. '
    6 f6 k, g( r7 r+ q! i3 f6 d, ~
  6. Dim nErrors          As Long) I8 {( X! T( O+ X) P: ~
  7. Dim nWarnings        As Long7 T4 h1 d5 M. ?
  8. 0 L) M- o3 w. [6 w, b; w
  9. Sub Test()' z8 d9 t0 B1 u9 b& G
  10.     Set swApp = Application.SldWorks" r2 y. Q8 b: O4 w* N8 {
  11.     Set swModel = swApp.ActiveDoc- T7 H& \/ d/ v$ r- p' Q
  12.     path = "D:\Project"   '存檔路徑
    * }' m- p; r  x$ ]  _
  13.     sFileName = Dir(path & "*.sld*") '取出SW文件, u! D& i0 c0 J& V
  14. '循環開檔, p, Z) d+ K3 ^9 O( k9 s3 J
  15.      Do Until sFileName = "": v" d2 q! {- r* U
  16.         Type_ = Right(sFileName, 3)    '取得SW文件擴展名後三位7 h# t/ Q3 R: n* ~  p9 X: e
  17.         Select Case Type_ '判定SW文件型式
    2 x1 l9 J4 U+ z4 Q4 d9 h$ |/ r
  18. '開零件檔並存檔
    4 n# q9 o' l: W4 r
  19.             Case "PRT"- n; X2 a9 v( p8 N  z: i  I
  20.                Set swModel = swApp.OpenDoc6(path + sFileName, swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings). M) J; ^& G$ j' v' I1 ^* H9 Y
  21.                Set Part = swApp.ActiveDoc. O' W& U8 W4 o( N
  22.                Part.Save) r$ k' J0 i; j8 @/ B5 t4 C
  23. '開組件檔
    5 _2 s5 U4 z9 T! \' Z
  24.             Case "ASM"
    1 W* K% Q' P8 [4 U' J; o  F
  25.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocASSEMBLY, swOpenDocOptions_Silent, "", nErrors, nWarnings)0 F! d. L1 c. a/ q& m; p
  26. '開工程圖              * x" A" J7 N- M# y. K
  27.             Case "DRW", p& X1 L3 Y8 A! k6 C/ Q: Y& z6 \
  28.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    : m, x) T) J& u- |1 }' P
  29.                    0 K/ l& u! {$ A2 D/ ?5 a! A- d; u, _
  30.         End Select
    ( Q1 ~, w: A  c% ]8 P  t
  31.         Set swModel = Nothing1 \, b) ]+ z  k0 v
  32.         swApp.CloseDoc (sFileName)
    2 [3 C& H1 }) e- k' s* Z1 S
  33.         sFileName = Dir   '同路徑取出下個SW文件檔名
    * i3 h. L; C5 s
  34.     Loop
    * h  ?, t) X) f
  35. End Sub
复制代码
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-4 15:13:40 | 显示全部楼层
杨猛0230 发表于 2017-3-3 10:45
4 H7 K% S9 L+ \那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
( B9 a" H/ ?0 M
方案1:If…Then…Else 语句. @2 B+ _$ ]$ M4 n
方案2:Select…Case 语句
  Q5 ^$ C- V. n方案3:Do…Loop 语句5 g% @, v  X& A% K  Y7 \
方案4:For…Next 语句) F: P7 Z& D" _/ F
方案5:While…Wend 语句
9 N1 y% w& n- K7 y* f1 U方案6:……5 s" j6 u2 y! s# z
……# k0 R' @+ i3 I+ \9 E& Y% S+ L
, p% s$ M5 N; X( Q+ k$ I4 g
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-12 05:34 , Processed in 0.066835 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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