机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

solidworks 批量执行宏

[复制链接]
跳转到指定楼层
1#
发表于 2017-3-1 08:30:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大大好,在网上找到一个可以批量打开SW零件的宏,代码如下:
1 w1 w% r1 N  u0 p# W" t
6 n6 u1 g( I6 qSub Test()$ M/ b2 i  t9 V5 O) @$ b* V6 D
Set swApp = Application.SldWorks
9 C9 w! C/ J' j, h2 {* TPartPath = "D:\Project\" '设定目录
" v6 k% {" D/ d# s4 IPartFileName = Dir(PartPath & "*.sldprt") '搜寻首个零件档案名称) b, J  h4 R( h5 G, g
Do Until PartFileName = "" '直至搜寻到空值
0 Z1 I+ ^% s) N4 h6 p" F, ?* {Set Part = swApp.OpenDoc(PartPath & PartFileName, 1) '开启零件7 ]9 P# X* z: @2 O+ A# B; ?
'加入所需语句) u/ b1 h3 O% j
'.* @7 q, l5 t, v0 Y+ r  H% g
'.# d% [$ U* d" R" d' Y( S( Z
'.
+ L, }7 P8 g) j7 y9 U% P: g1 b'.1 F, _" `( {$ I; N% y3 W
Part.Save '保存* i' h6 Q7 n- M3 c5 E1 [1 A
swApp.CloseDoc (PartFileName) '关闭零件
# [( r( n% B1 d2 J; WPartFileName = Dir '搜寻下一个零件档案名称/ @  _0 z! V, X' K9 ]
Loop '循环搜寻" B$ K0 o5 t/ {9 t" ^
End Sub
0 u2 R" d. n% |# ?' U
4 [$ z2 _4 X" ?: ]* ~( f( g可是却只能打开零件,装配体和工程图就不能打开了,哪位大大可以帮忙改一下,使其可以打开文件夹中的SW所有的三种文件,在此拜谢!!!
6 y. o; ?3 K1 s
回复

使用道具 举报

2#
发表于 2017-3-1 09:10:04 | 只看该作者
劝你到三维网和开思找,那里有几位研究宏的大神。1 l) Q$ T$ a- Z/ N# I
还有为什么要批量打开零件文件,屏幕能装的下吗
回复 支持 反对

使用道具 举报

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

使用道具 举报

4#
发表于 2017-3-1 09:41:47 | 只看该作者
本帖最后由 未来第一站 于 2017-3-1 09:47 编辑
2 Z$ l1 `7 r, n
- E, y  J: a0 p3 H; w# r4 m必威APP精装版下载solidworks专家级两位楼上大侠到齐了
回复 支持 反对

使用道具 举报

5#
发表于 2017-3-1 09:50:11 | 只看该作者
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?" J+ E) ?+ {: j$ S/ t

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2017-3-3 10:43:21 | 只看该作者
工人师_OgIOQ 发表于 2017-3-1 09:10& ~2 R( N1 S% W. [4 Z& _. m
劝你到三维网和开思找,那里有几位研究宏的大神。
4 a" |9 k4 w$ l8 t还有为什么要批量打开零件文件,屏幕能装的下吗
, a( A, Y' A% h: B7 c7 a
谢谢你) Q% C" \( h# t9 z  m! d
  批量打开的用处是加入其他录制的宏,可以执行批量操作,提高工作效率  o( G  \$ e. f6 Z/ t; x1 Z
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2017-3-3 10:45:25 | 只看该作者
魍者归来 发表于 2017-3-1 09:37
4 w' b% m& p$ O+ A2 M( v8 m从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下 ...
' l% A& G8 R  _. K, v- p3 V
那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2017-3-3 10:47:29 | 只看该作者
footleft 发表于 2017-3-1 09:50
) l- Q* X3 ^: ~" k; k. g+ }这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?
; |  Y% a7 e2 o# l
只是更改这个还不行的,要配合着更改下面的那 1    分别对应1  2  3
( c( m) o6 b! |; _- \  但是我想能不能将打开三种文件的代码整合到同一个宏中2 X: _: M! Q6 a5 k3 N5 p
回复 支持 反对

使用道具 举报

9#
发表于 2017-3-4 14:21:37 | 只看该作者
本帖最后由 ryouss 于 2017-3-4 14:42 编辑 , Q# ~, B; |4 c7 l

) @* g1 N! z* f5 Z0 Q6 H用 Select Case 做篩選循環,
* V* |" Y( S5 [4 k- i不過如下宏只是做零件,裝配件及工程圖的叫出再關閉,沒實質意義.3 B- h8 C1 }" [* B' h5 B8 Y

+ u2 W& f+ `' Y) G# \6 U  I
# A8 I# ?2 z; M$ ~' I
9 R( l4 [/ T( ^# Q7 t# {! R! z
  1. '
      q) B6 I) _9 i1 g4 f5 ?
  2. ' 在某文件路徑下批量開零件,裝配件及工程圖" y$ }2 }3 b  V1 u. P% G
  3. ' sc liang 2017/3/40 S4 M4 t- O; S1 y5 C1 j* x* A+ G1 a/ U
  4. ' 測試版 2012 sp4
    * B4 Q* a% s& v, k% z
  5. '
    2 z0 F$ N$ O# H5 D' i; p9 C0 a; R, [
  6. Dim nErrors          As Long
    * p" T& w" l" t2 x3 e4 B# q
  7. Dim nWarnings        As Long, U, i6 y5 R& b# H* X$ i- B  D

  8. / z# Y. r# e* S) K: Q# |: q
  9. Sub Test()
    ! `/ w+ w& `: K: D
  10.     Set swApp = Application.SldWorks% B2 d: k/ A5 Z" u* q! S
  11.     Set swModel = swApp.ActiveDoc
    ! v( r* `; r, G7 O
  12.     path = "D:\Project"   '存檔路徑6 V1 `* K" B2 H
  13.     sFileName = Dir(path & "*.sld*") '取出SW文件
    + S4 d' m6 S$ T0 A% C& N9 r2 j
  14. '循環開檔2 C" P" C2 m0 n0 H  Z( F6 s) ]0 H
  15.      Do Until sFileName = ""
    3 [1 ?3 `, w- e" [" ~
  16.         Type_ = Right(sFileName, 3)    '取得SW文件擴展名後三位- Q/ z; k! B1 v* M1 _- C8 X
  17.         Select Case Type_ '判定SW文件型式6 q1 r5 h8 d7 e+ ]# i
  18. '開零件檔並存檔
    * ]" \" t# y- f8 x
  19.             Case "PRT"
    $ M" m+ ]" v! h1 h
  20.                Set swModel = swApp.OpenDoc6(path + sFileName, swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings); c( Z, F0 L# }4 X; z& R
  21.                Set Part = swApp.ActiveDoc
    9 T9 v. n" B# G7 L
  22.                Part.Save
    0 f& f* o1 R; l2 e# r: f
  23. '開組件檔
    ! B& R% A) I3 \' ]' i( D: b
  24.             Case "ASM"
    " w5 Y2 X& l  v! ^( P
  25.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocASSEMBLY, swOpenDocOptions_Silent, "", nErrors, nWarnings)8 c( B5 j& Q% _8 k( J! p! ]1 g
  26. '開工程圖              
    2 J8 A3 h8 }3 g: x$ `  t& ^$ z
  27.             Case "DRW"* O0 U7 J1 @; r5 a0 ?
  28.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    - F) w$ s/ J" A7 @* E
  29.                   
    $ O9 m+ _0 _) g: @% K
  30.         End Select
    1 q* q( ~& k8 h( Z! w; w
  31.         Set swModel = Nothing8 C% b% O: u/ r7 p
  32.         swApp.CloseDoc (sFileName)1 i# l+ D! o' l' W9 d
  33.         sFileName = Dir   '同路徑取出下個SW文件檔名+ l7 q3 B! ?: B; L4 q4 o  |
  34.     Loop
    ' u2 _* ^$ p! w: q  i7 z
  35. End Sub
复制代码
回复 支持 1 反对 0

使用道具 举报

10#
发表于 2017-3-4 15:13:40 | 只看该作者
杨猛0230 发表于 2017-3-3 10:45- m: i4 `* _- {9 c# @7 t' X  W
那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
. g; a# Z  C+ W
方案1:If…Then…Else 语句
9 ~, r( f  H  L: m; ~( W& q5 H方案2:Select…Case 语句
5 Z4 Y; ~& w2 h  o方案3:Do…Loop 语句. Q0 L1 r4 h& {9 F) a
方案4:For…Next 语句4 V& x/ C3 |6 B& L+ f
方案5:While…Wend 语句
+ a0 e' v) K/ a6 W, s1 g方案6:……
! p2 G  u: b. {/ U……5 ]  T1 }3 a/ t  m) ~8 a
* T/ v3 {& _) ^0 a5 Z9 q1 _
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 16:07 , Processed in 0.061131 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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