机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

solidworks 批量执行宏

[复制链接]
跳转到指定楼层
1#
发表于 2017-3-1 08:30:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大大好,在网上找到一个可以批量打开SW零件的宏,代码如下:
- J5 i" t; g! y3 H0 Q' L
3 C! \& u& j3 s" Z. F2 gSub Test()
6 `* p" B& b& J' ^Set swApp = Application.SldWorks3 [" q+ h8 [3 H+ L' `& {
PartPath = "D:\Project\" '设定目录
: A% }* l8 D& aPartFileName = Dir(PartPath & "*.sldprt") '搜寻首个零件档案名称
) h8 i( Y2 y: T" R9 f) R) q, H$ PDo Until PartFileName = "" '直至搜寻到空值1 J1 h% n* p( ?! t0 M
Set Part = swApp.OpenDoc(PartPath & PartFileName, 1) '开启零件
1 g2 O. k1 O, e' c2 N* u, `, p'加入所需语句
8 w2 g+ X5 Z3 Q5 F'.
+ L$ }& S( n9 q1 b6 z( H'.
8 y0 q3 u; [7 b'.
% o5 o5 `0 v, i1 E: ['.# }! X0 O6 Y: D0 l. K
Part.Save '保存2 o2 x' h' p: q% ]
swApp.CloseDoc (PartFileName) '关闭零件
8 `, }% Z! H! sPartFileName = Dir '搜寻下一个零件档案名称
7 c9 |- u, R% s; d; y. b" B0 n" T4 \Loop '循环搜寻
5 z. M# g# a! ^, rEnd Sub% S* ]% A2 |1 [0 _

! E% u6 z) b/ @  y/ J0 \" E可是却只能打开零件,装配体和工程图就不能打开了,哪位大大可以帮忙改一下,使其可以打开文件夹中的SW所有的三种文件,在此拜谢!!!
9 ~- V8 I0 s* C5 H" I
回复

使用道具 举报

2#
发表于 2017-3-1 09:10:04 | 只看该作者
劝你到三维网和开思找,那里有几位研究宏的大神。! k* i, g2 P% r$ d9 {: \1 F( W7 \
还有为什么要批量打开零件文件,屏幕能装的下吗
回复 支持 反对

使用道具 举报

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

使用道具 举报

4#
发表于 2017-3-1 09:41:47 | 只看该作者
本帖最后由 未来第一站 于 2017-3-1 09:47 编辑 & ^3 j+ {* S; H& `0 h7 C) v5 S
* b! d" E9 E4 Y+ T" g
必威APP精装版下载solidworks专家级两位楼上大侠到齐了
回复 支持 反对

使用道具 举报

5#
发表于 2017-3-1 09:50:11 | 只看该作者
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?7 z; R) M6 W% ]- ~9 B! V

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2017-3-3 10:43:21 | 只看该作者
工人师_OgIOQ 发表于 2017-3-1 09:10
: K4 A. P+ N& Y. w劝你到三维网和开思找,那里有几位研究宏的大神。( O/ S4 f% G. j; m2 M+ _
还有为什么要批量打开零件文件,屏幕能装的下吗
- E1 p9 X  S( ^
谢谢你6 j- }6 F4 H% y: v
  批量打开的用处是加入其他录制的宏,可以执行批量操作,提高工作效率/ r- ^5 e1 _5 e- v9 J9 W
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2017-3-3 10:45:25 | 只看该作者
魍者归来 发表于 2017-3-1 09:37) \) a7 C/ f( |6 t4 ~
从第三行开始,每行的part楼主没看到么?替换成工程图和装配体就好。不知道怎么敲代码就自己录制宏,看一下 ...
7 \2 K% }1 b/ D, \8 M: I+ Y
那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2017-3-3 10:47:29 | 只看该作者
footleft 发表于 2017-3-1 09:50- T. }8 k3 Z! p4 P
这个难道不是图中圈住的改为"slddrw"和"sldsam"吗?
+ C; O, s# A0 E4 a& u  }
只是更改这个还不行的,要配合着更改下面的那 1    分别对应1  2  38 Y' {( c% K- h$ ~* g6 _. V5 x& I
  但是我想能不能将打开三种文件的代码整合到同一个宏中, }) [, }& x- }
回复 支持 反对

使用道具 举报

9#
发表于 2017-3-4 14:21:37 | 只看该作者
本帖最后由 ryouss 于 2017-3-4 14:42 编辑 # H+ t8 S# v' Z' f/ W
: v# L4 S1 N% X% G1 |2 c4 o
用 Select Case 做篩選循環,
1 U7 T: A$ V4 ]+ K. t不過如下宏只是做零件,裝配件及工程圖的叫出再關閉,沒實質意義.9 Y4 I- U7 A: G9 N( K% `/ W( k9 q
5 {+ Z0 J- c8 t) b* V" D3 R3 ?

. e- B4 X% W' H; @) V$ B: t& M1 L( {# }9 @9 Z6 i% U
  1. '
    7 w3 D( f$ k1 ^: Z$ a# j( w
  2. ' 在某文件路徑下批量開零件,裝配件及工程圖
    3 N4 {% L& S& W" `  U
  3. ' sc liang 2017/3/43 x' B5 k) {2 Q; W: o7 W3 x
  4. ' 測試版 2012 sp4
    ! V+ j" T6 y6 H
  5. '. i9 @5 S' S- D; m! m
  6. Dim nErrors          As Long
    # o6 B+ a7 Q* b: f& Q( p
  7. Dim nWarnings        As Long$ L9 O9 b' |% U+ \/ w- P9 i

  8. & Z1 R; |2 I0 C4 l  V  n% R
  9. Sub Test()- q# V% t$ m; \3 }) V* k
  10.     Set swApp = Application.SldWorks
    7 s7 h- I( s; `" N1 d
  11.     Set swModel = swApp.ActiveDoc+ \2 I+ i, k6 V
  12.     path = "D:\Project"   '存檔路徑
    / N- g  [9 f; \$ z) e
  13.     sFileName = Dir(path & "*.sld*") '取出SW文件7 D$ N; E$ G: r) l& C4 i
  14. '循環開檔
    8 q- q* Y# Q$ G, I- }
  15.      Do Until sFileName = ""
    6 B% i, Z) j! g) w! d
  16.         Type_ = Right(sFileName, 3)    '取得SW文件擴展名後三位
    / h, j5 `' j: a0 Y0 j
  17.         Select Case Type_ '判定SW文件型式, i* v& ?  ^' H1 S
  18. '開零件檔並存檔
    & v* M! }2 }1 y' a& Y4 I/ p
  19.             Case "PRT"+ q' R5 L+ Y$ M( J# d" }7 T) }( @3 O
  20.                Set swModel = swApp.OpenDoc6(path + sFileName, swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    ) ~$ }9 L6 w; ]$ o
  21.                Set Part = swApp.ActiveDoc
    ' X5 }) T$ O7 I' {" _( m
  22.                Part.Save
    % \! K% y6 x) G; a% M7 e
  23. '開組件檔
    + l/ t( q9 o* N+ x2 _+ J
  24.             Case "ASM"0 ~7 E/ D) P0 }4 i$ d9 [! \5 \& }9 z$ M/ u
  25.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocASSEMBLY, swOpenDocOptions_Silent, "", nErrors, nWarnings); {! k; ], X* B/ C; }) o* }* n
  26. '開工程圖              - v8 j7 k& T: g4 k1 ]2 A3 ~
  27.             Case "DRW"& A- V9 N# S! J  ~8 H
  28.                 Set swModel = swApp.OpenDoc6(path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)
    ; D- u, m6 m# j6 a2 L
  29.                    . Z0 X- l+ j7 C' C7 h
  30.         End Select
    2 R) {  L8 V3 y* y
  31.         Set swModel = Nothing; J4 A+ k5 m2 p& P! I2 P
  32.         swApp.CloseDoc (sFileName)# l3 {, x/ |0 J
  33.         sFileName = Dir   '同路徑取出下個SW文件檔名# ^; ?. t3 {) x7 {  R
  34.     Loop7 e- L% v/ [. Z6 u5 u
  35. End Sub
复制代码
回复 支持 1 反对 0

使用道具 举报

10#
发表于 2017-3-4 15:13:40 | 只看该作者
杨猛0230 发表于 2017-3-3 10:451 C+ l. X5 }* i+ ~- I5 @+ y( c
那如何才能将打开三种文件的代码整合到一个宏里面?望大侠指教

; X) `" O9 W8 \( F$ F3 j* s方案1:If…Then…Else 语句
! G, h2 j: W2 h9 _/ b' ]方案2:Select…Case 语句
: K. z% H4 J  N$ c% ]方案3:Do…Loop 语句
; t+ w2 H0 t+ j+ P% y" J方案4:For…Next 语句
  Z- n0 H* x  V) f5 K方案5:While…Wend 语句( h4 d  c- H& W5 y  l4 S. c6 H
方案6:……6 U/ d1 g1 r# g# t
……
+ J- r- C2 l, {# j+ I' M9 e% J/ e2 i+ {' I/ u' \" {
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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