找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2769|回复: 9

关于SW宏程序

[复制链接]
发表于 2024-3-19 16:10:50 | 显示全部楼层 |阅读模式
昨天略微涉略SW宏程序,今天想整个一键出CAD及PDF的宏,奈何,不会设置宏读取图纸名称,再把红圈那设置成对应图纸名,以致出的CAD及PDF都是固定名称,有没有大佬知道咋先读取图纸名。感谢。
: v4 @+ H- l3 T3 C, f# n

本帖子中包含更多资源

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

×
回复

使用道具 举报

发表于 2024-3-19 19:29:44 | 显示全部楼层
描述一下你的需求,

点评

先定义,识别图纸名称变量,在用该变量替换红圈图纸名,  发表于 2024-3-19 21:21
发表于 2024-3-19 23:35:21 | 显示全部楼层
工程图下导出PDF+DWF,部分宏( k  V0 o0 w! i- u
Dim swApp           As SldWorks.SldWorks/ {6 V8 ]+ p+ }. K+ Z& {& `& _
Dim swModel         As SldWorks.ModelDoc2/ D6 X& F! ~9 g# E

; g# o% _; b3 q1 J0 V4 f6 i! w2 ]Sub main()
% [" O( }$ e4 Y7 K$ x4 {
4 J) o/ O9 D" R3 u4 q; z" Y& `Set swApp = Application.SldWorks
- f; Q' T0 A' `7 `! HSet swModel = swApp.ActiveDoc
6 R' }% _, z3 X. ~* ~
$ I3 o+ S7 K4 Z- f' Check to see if a drawing is loaded.# v* d4 o- E' ?
If (swModel Is Nothing) Or (swModel.GetType <> swDocDRAWING) Then7 p/ Y5 t$ H3 r6 Q; @" D

" n2 y% L/ d0 f" q4 MswApp.SendMsgToUser ("To be used for drawings only, Open a drawing first and then TRY!")
+ b' s. f$ N4 T. i4 U- w
/ s! d5 D5 ]" u# B6 E' If no model currently loaded, then exit( ]; A0 P4 U; k9 X0 W9 M
Exit Sub
0 Y, T1 a1 [' h3 `& x/ G+ v; A: D' S" ~7 H
End If
. z, a- T! v* N% C- p1 l1 T
& f' |6 z  ^0 NSet swDraw = swModel  w2 X& B/ _) k" i+ c+ w$ D
Filepath = Left(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\")): [* H" E9 i2 \2 @/ ~, T! S5 M0 ~0 M1 E& V) E
/ U; F9 m- f2 i' Y5 b6 ]
If Dir(Filepath & "导出图纸", vbDirectory) = "" Then ' Change Sub folder Name here
9 ?; v+ X7 L& j, Q# ^MkDir Filepath + "导出图纸" ' Change Sub folder Name here& [, l) Z  E: x; \3 ^  ^
End If
' ^; r% }( z! T: UFilepath = Filepath + "导出图纸\" ' Change Sub folder Name here7 B6 Z1 E7 H: n
, O. X% F: P: b
Set swCustPrpMgr = swModel.Extension.CustomPropertyManager("")
3 n0 a+ m* {  p   swCustPrpMgr.Get3 "", False, "", Value 'Change here the var revision "Rev"( c3 R" F& d6 c3 q' i" {3 R
5 [0 }1 M4 f5 v
FileName = Mid(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\") + 1)
8 s' l0 t2 m/ [( l1 ~FileName = Left(FileName, Len(FileName) - 7) & "" & Value & ".pdf"# ~+ x& S) X. m0 X) b, i6 c9 S
swDraw.SaveAs3 Filepath & FileName & "", 0, 0
# i/ }. n2 t, j- o0 x% _+ |
6 i( W9 i- I) J0 R( I3 x1 x'-------------------------------------------------- SAVE DXF
$ p& ]1 c( y  e) l9 T3 i' I
' z8 _7 s9 o3 S& T, W$ SSet swDraw = swModel
, d% {8 B: o  w/ |5 B* Q& JFilepath = Left(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\"))
6 W! M9 C1 W# h/ z- U: EIf Dir(Filepath & "导出图纸", vbDirectory) = "" Then ' Change Sub folder Name here
' f0 N" c' q' S4 z, OMkDir Filepath + "导出图纸" ' Change Sub folder Name here
  D4 }6 J9 x+ p. WEnd If
+ ]2 G4 g3 e! }: @, s* k  U1 m$ sFilepath = Filepath + "导出图纸\" ' Change Sub folder Name here
' R$ v1 ~9 L. j
7 J( }. t, i  e/ A7 ISet swCustPrpMgr = swModel.Extension.CustomPropertyManager("")+ E' b4 n8 z3 I; i
   swCustPrpMgr.Get3 "", False, "", Value 'Change here the var revision "Rev"
2 K3 |) u9 J( F' g* X' k8 O1 I1 P& T8 `& ]$ Y9 E8 \* s: S  S
FileName = Mid(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\") + 1)  B) _! M! p) P7 q
FileName = Left(FileName, Len(FileName) - 7) & "" & Value & ".DXF"' f+ r' U: Z4 w  T5 b6 G

; e! `1 c. Q3 U5 TswDraw.SaveAs3 Filepath & FileName & "", 0, 0
' L  m+ z# e6 @- A# x/ J/ L2 J( Z
6 K: |; o* V; F; V* xswDraw.Save
- Y: A3 S+ L! Y% a! @
8 h& `" ~3 q' `8 j; `/ n+ o'swApp.ExitApp '关闭SW软件8 L1 l4 ~* V2 c2 Q
End Sub! P7 D5 s% K3 w  s1 g

1 ^8 l! w: n$ G- o: X$ M* |+ {4 r+ |6 j

点评

论坛,高手如云啊  发表于 2024-3-20 10:36
非常,感谢,正是我需要的  发表于 2024-3-20 07:59

评分

参与人数 1威望 +1 收起 理由
shengyz + 1 热心助人,专业精湛!

查看全部评分

发表于 2024-3-21 15:42:11 | 显示全部楼层
宏怎么用都不知道
 楼主| 发表于 2024-3-21 16:26:50 | 显示全部楼层
大兄弟aa 发表于 2024-3-21 15:42
; g0 Y' m+ \% d  R" R& {) L宏怎么用都不知道

- I& Z% _: U, e& d% T& k$ r8 F很强大,可以了解了解
9 h6 b, |0 A  S6 x& k
发表于 2024-3-22 11:23:42 | 显示全部楼层
本帖最后由 steve_suich 于 2024-3-22 11:25 编辑
- q" k8 ?! l. U- j9 E6 a
5 M8 `# C" {5 ~: t" e% FDim swApp As Object: V, O9 M& X9 [" c' ~6 z8 O' D3 V
& `6 @& b3 K3 P* p& h9 h+ n' Z% H
Sub main()
. ^' {4 P* \; t+ E( _- h* P9 d- u. g" u, G/ o& ?. b+ T! o
Set swApp = Application.SldWorks2 s8 U' L" Q% v
Set part = swApp.ActiveDoc
, l/ t6 J0 ~8 q: _7 A1 P
6 ^" j( ^8 R: v$ b. v4 wIf part.GetType = 3 Then
: k- N1 S9 e2 C( s+ |
3 Y1 R/ j% q% K2 o) a. L8 @  _part.SaveAs (Left(part.GetPathName, InStrRev(part.GetPathName, "\")) & Left(part.GetTitle, Len(part.GetTitle) - 6) & ".PDF")$ x  _3 _* V2 z. e0 F/ l' U/ b
  
8 q- X" O' K0 P4 H! Z4 K0 F; aswApp.CloseDoc (part.GetTitle)) d+ \/ n  J3 o. p

6 d  o- F! ]  m( c& tEnd If
4 H! q" O) G1 a4 `0 }: M5 H  a, t  
( r  X( w, |$ f1 {# |* qEnd Sub

点评

谢谢  发表于 2024-3-22 12:30
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-8-6 01:34 , Processed in 0.068815 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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