机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

solidworks 批量执行宏

[复制链接]
跳转到指定楼层
1#
发表于 2017-3-1 08:30:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大大好,在网上找到一个可以批量打开SW零件的宏,代码如下:2 {6 t9 o8 \% R" Z. ~1 v$ T

7 Q* ^$ d/ V( K- {Sub Test()5 a- O0 c; f4 u
Set swApp = Application.SldWorks: A% ]* `8 i) t, Y4 W+ L
PartPath = "D:\Project\" '设定目录/ g% G$ P) N7 D" F7 r
PartFileName = Dir(PartPath & "*.sldprt") '搜寻首个零件档案名称, U  M1 _! u; [: a
Do Until PartFileName = "" '直至搜寻到空值+ z$ D4 p' P& p! `! _
Set Part = swApp.OpenDoc(PartPath & PartFileName, 1) '开启零件
6 S9 ?+ D! t, G( x'加入所需语句" m- ]; `& i9 l% u) q# I' j& b
'.* t/ A7 X! a. ^7 u7 P$ P3 p. ?; g" y# Q
'.  `2 P9 h( z9 u: P, K* k
'./ s3 z) K6 x4 c4 ?
'.
* o9 B8 j3 H; {8 DPart.Save '保存
' P7 z% I% V# T4 w. I) H- {4 ?. ]swApp.CloseDoc (PartFileName) '关闭零件! z) N0 s6 `, X
PartFileName = Dir '搜寻下一个零件档案名称
5 |: r1 M: E5 z3 _Loop '循环搜寻
& i# e, p3 M7 t2 p8 C! t6 t& S2 hEnd Sub
4 ~) t: N3 u9 ~0 d3 V8 _  {' m
4 ^. h0 v6 T0 M0 Y可是却只能打开零件,装配体和工程图就不能打开了,哪位大大可以帮忙改一下,使其可以打开文件夹中的SW所有的三种文件,在此拜谢!!!
$ p3 Z' b0 y4 D& v- X
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

4#
发表于 2017-3-1 09:41:47 | 只看该作者
本帖最后由 未来第一站 于 2017-3-1 09:47 编辑
. a+ N+ ~8 C4 y/ P' x5 }6 [# U( I. ]3 _1 I- m9 ]" I# ]
必威APP精装版下载solidworks专家级两位楼上大侠到齐了
回复 支持 反对

使用道具 举报

5#
发表于 2017-3-1 09:50:11 | 只看该作者
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?4 Z! @# O8 c) N' W+ O

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2017-3-3 10:43:21 | 只看该作者
工人师_OgIOQ 发表于 2017-3-1 09:10
, b3 D$ x7 M+ {( `% @劝你到三维网和开思找,那里有几位研究宏的大神。
' y( z9 K; Y; i; v1 j$ _还有为什么要批量打开零件文件,屏幕能装的下吗

4 o2 n% n) q" P谢谢你
) I  r" B& i2 j  批量打开的用处是加入其他录制的宏,可以执行批量操作,提高工作效率8 V8 `7 B* |5 `' S/ h* N
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2017-3-3 10:45:25 | 只看该作者
魍者归来 发表于 2017-3-1 09:37
5 R* j; x5 _3 w; U; k, o从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下 ...
) Y1 a4 L% i7 a
那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2017-3-3 10:47:29 | 只看该作者
footleft 发表于 2017-3-1 09:50: k0 v+ W: r, c3 i, z
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?
! ^( @$ r$ Q8 j) D' D
只是更改这个还不行的,要配合着更改下面的那 1    分别对应1  2  3$ d, b: _% Y! Y. ?% P, Q
  但是我想能不能将打开三种文件的代码整合到同一个宏中
6 L  f/ a+ X" T  F, t
回复 支持 反对

使用道具 举报

9#
发表于 2017-3-4 14:21:37 | 只看该作者
本帖最后由 ryouss 于 2017-3-4 14:42 编辑
. i9 F/ v: l, v$ N, A, M5 c6 T: }3 y5 ]6 ?$ i3 X
用 Select Case 做篩選循環,) b' ]9 E! {1 S1 a
不過如下宏只是做零件,裝配件及工程圖的叫出再關閉,沒實質意義.+ u# V: I2 t$ e) k, M. Q

  e9 r3 d' K  K3 R1 v: m3 B
# }4 o/ u: n! o3 D8 |
  D0 Y; n: K+ I
  1. '
    6 v  L" V0 n5 ~' J: B' C
  2. ' 在某文件路徑下批量開零件,裝配件及工程圖
    3 _$ s, I3 s+ \! b) _- k. l( ^
  3. ' sc liang 2017/3/4
    0 M; F* z8 y# G: I: i% w/ c) H
  4. ' 測試版 2012 sp4& n( [7 a9 j8 N( \8 v' T  H. T, z; j9 u
  5. ', b3 r* ^( ^6 Z. w; F0 ]; A
  6. Dim nErrors          As Long
    - W& W- ~9 q' Z7 k/ k
  7. Dim nWarnings        As Long
    + v6 H% h# [) _7 B

  8. $ q8 p; h4 R" v5 P% x5 Z
  9. Sub Test(); o0 k  ]' U% X% w
  10.     Set swApp = Application.SldWorks
    * B, L- K# b- g$ _! W
  11.     Set swModel = swApp.ActiveDoc/ t, S0 W5 I% v6 V6 @# t3 F2 m
  12.     path = "D:\Project"   '存檔路徑
    " s6 Y+ R! i# z, z1 \% q
  13.     sFileName = Dir(path & "*.sld*") '取出SW文件
    - s! e+ y: F- _" t6 r) R6 t/ ^( k$ v
  14. '循環開檔
    ; b7 j3 ^& F- t2 G) y0 h7 O3 p# z8 w
  15.      Do Until sFileName = ""
    , F) A! W" Z' w( _4 W6 _7 m
  16.         Type_ = Right(sFileName, 3)    '取得SW文件擴展名後三位, ^: T4 \6 k8 q* Z$ _* H: K# S4 `7 V
  17.         Select Case Type_ '判定SW文件型式
    ! v/ d! [8 ?6 [+ {
  18. '開零件檔並存檔% y. d* ~1 ]* J: T
  19.             Case "PRT"
    1 n8 k* P& }5 z% Y3 Z
  20.                Set swModel = swApp.OpenDoc6(path + sFileName, swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings): b0 }: [8 Z: ?, \0 D" l5 ]. [
  21.                Set Part = swApp.ActiveDoc9 N  B( y  `  b: C0 k7 K
  22.                Part.Save
    : D( t# e+ o0 `9 ~  d
  23. '開組件檔
      j5 m2 \% |! Q. x' ?
  24.             Case "ASM"
    7 ^9 c2 l' ]3 P3 V# [- P
  25.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocASSEMBLY, swOpenDocOptions_Silent, "", nErrors, nWarnings)0 H3 \" P/ C5 V3 G
  26. '開工程圖              % k& h) u: T- X4 G1 a  j) ?+ T
  27.             Case "DRW"0 D5 j% Z5 E' y  k- b
  28.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)( F* a' s3 O+ \/ E9 p' O/ F# o  x: z
  29.                   
    7 N( U5 R% T' C- a! o
  30.         End Select
    : j  @. w; T8 g% Z7 K' o# V
  31.         Set swModel = Nothing
    ; t+ c0 C: I% K( w4 b) l% a
  32.         swApp.CloseDoc (sFileName)
    5 y0 l6 I! n2 q9 R! Y! m
  33.         sFileName = Dir   '同路徑取出下個SW文件檔名
    ) h3 `4 u2 u1 p* {; I$ u# h0 V
  34.     Loop
    ( U, [# j7 Z/ w! E0 d' S6 @  @
  35. End Sub
复制代码
回复 支持 1 反对 0

使用道具 举报

10#
发表于 2017-3-4 15:13:40 | 只看该作者
杨猛0230 发表于 2017-3-3 10:45
3 V' z3 X9 Z8 {) r. l那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教

5 l- Q3 h7 U" O方案1:If…Then…Else 语句
0 a. a8 R0 X0 C方案2:Select…Case 语句
7 D+ m7 t) Z/ g: t  o8 b方案3:Do…Loop 语句3 r, ?) u) F) \; u
方案4:For…Next 语句5 J$ ]' }$ J% `& w
方案5:While…Wend 语句
/ y2 C8 }2 S' P: l" o( W. P3 e方案6:……$ b. _7 x4 [' w
……) B4 {2 R: P0 S8 q  c: u+ p  Z

- r4 D9 P- ^' O. \: U) e% p5 K6 p
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 21:24 , Processed in 0.059731 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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