找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2908|回复: 9

关于SW宏程序

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

本帖子中包含更多资源

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

×
回复

使用道具 举报

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

点评

先定义,识别图纸名称变量,在用该变量替换红圈图纸名,  发表于 2024-3-19 21:21
发表于 2024-3-19 23:35:21 | 显示全部楼层
工程图下导出PDF+DWF,部分宏
/ ~! E& R7 a5 M! ?: T4 Y* Q5 A0 kDim swApp           As SldWorks.SldWorks3 i; A% g4 K* g& |
Dim swModel         As SldWorks.ModelDoc2! O/ y$ \$ t( k$ y8 G( r( Q
+ `1 P  r& X$ I8 W* J! a
Sub main()6 ]$ j9 q- `/ ~- x
0 u+ ]/ u: O* C( I, {
Set swApp = Application.SldWorks
) E) i0 J8 N9 Q. b  |  ~Set swModel = swApp.ActiveDoc+ e0 X% x2 ~* A* t
7 J% c; g% G: G9 e
' Check to see if a drawing is loaded.
$ U0 _. E- D) `  |If (swModel Is Nothing) Or (swModel.GetType <> swDocDRAWING) Then
9 d1 I: ?# S, z5 {4 n8 ^3 I
) Q3 M! \4 F" i3 b: T, ^6 LswApp.SendMsgToUser ("To be used for drawings only, Open a drawing first and then TRY!")" t0 \/ F0 A6 b6 B; c. p' C3 J1 U

% r4 X5 I! x/ {: D: M' If no model currently loaded, then exit! S- P9 O, S5 k5 K+ V! d
Exit Sub/ K, I- b' Z- m- q$ C. @( G
8 T/ o% J8 t) r) g
End If
9 }1 `- L- n; W3 H' U1 X/ r& d# U' _1 t! i6 j+ ?0 P
Set swDraw = swModel
0 }' n6 W$ _0 i7 z- U( ?Filepath = Left(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\"))
1 T8 x5 v, u7 k0 i6 R& h
1 \) H4 V* @, j6 b8 f- b5 hIf Dir(Filepath & "导出图纸", vbDirectory) = "" Then ' Change Sub folder Name here/ ^0 a* _% y* [/ H; ~
MkDir Filepath + "导出图纸" ' Change Sub folder Name here
! Y0 K0 u- q" X7 O+ H9 HEnd If
* z0 ~9 Q+ X2 N: P! q1 B2 ?Filepath = Filepath + "导出图纸\" ' Change Sub folder Name here
1 ^; @' q7 J9 }# v8 z" ]/ S$ ^( ^1 I4 F. ]+ L9 l$ A# d, n; l
Set swCustPrpMgr = swModel.Extension.CustomPropertyManager("")
5 I0 `/ t5 ?$ P: S" C6 a( B   swCustPrpMgr.Get3 "", False, "", Value 'Change here the var revision "Rev"" {7 e, n( @9 U4 K/ _! a+ ~
: N2 g  Y0 `' J/ \# t3 m8 Y; H
FileName = Mid(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\") + 1)
) v& B) V" u- d# c/ v; j. J$ MFileName = Left(FileName, Len(FileName) - 7) & "" & Value & ".pdf"5 J& H$ T. t! Q
swDraw.SaveAs3 Filepath & FileName & "", 0, 0
5 D8 N8 v; z; W: O# f: y7 q, `
# C! t. @7 m; u! N1 I3 E* }' t'-------------------------------------------------- SAVE DXF
9 P( I5 a  q2 Y4 b: s0 w6 `# y7 k* {# `9 a/ P" _/ b' C+ D7 r1 t
Set swDraw = swModel
8 M5 J% {% I/ {  ~0 tFilepath = Left(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\"))% |% O' S# L. r4 X. @; u
If Dir(Filepath & "导出图纸", vbDirectory) = "" Then ' Change Sub folder Name here
6 o6 z, r6 w) O/ k; bMkDir Filepath + "导出图纸" ' Change Sub folder Name here  G& \7 K& h* t+ [* L
End If2 }9 t% Y9 D% m. |8 }
Filepath = Filepath + "导出图纸\" ' Change Sub folder Name here. h# I" M3 S3 v$ @  H0 C
9 u$ K# m9 L6 z. Z
Set swCustPrpMgr = swModel.Extension.CustomPropertyManager("")
8 a% R3 T0 e) l2 D   swCustPrpMgr.Get3 "", False, "", Value 'Change here the var revision "Rev"
2 ]& |' ]2 S0 w2 N
3 q: r  ?1 S6 P' ]FileName = Mid(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\") + 1)
+ v: ]; o! P# ~$ o% nFileName = Left(FileName, Len(FileName) - 7) & "" & Value & ".DXF"
% @+ e' L. V  O$ r
/ r' o% e: V" [" Q8 KswDraw.SaveAs3 Filepath & FileName & "", 0, 0
4 h  Z+ e" e0 C5 @" h! I1 \9 T9 y6 Q
swDraw.Save; L" R% z5 T+ a  q7 s

3 K9 u% S" ]. y- R: J2 P4 H& f: F5 T'swApp.ExitApp '关闭SW软件/ l  W0 J0 }) G- o3 R2 C) u
End Sub. D( Z: q% P% e  q. }; f
/ T9 E3 y$ k& L) G. H1 w! n

1 t8 ^' I4 O8 b( 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
: l. U3 z$ I5 A9 G宏怎么用都不知道

0 @& C/ u' Y. i8 Y很强大,可以了解了解
8 U/ k! @; ]9 _: R
发表于 2024-3-22 11:23:42 | 显示全部楼层
本帖最后由 steve_suich 于 2024-3-22 11:25 编辑 / \& W6 G- x+ d
$ e* i  H# G# S. Z  Q* b3 a
Dim swApp As Object5 x8 {4 W% l) B% q$ x

+ s, X$ {9 h5 c; J  bSub main()
- C% K& v7 T/ a- v# v( A( g/ i; T7 p; I( @3 m; g8 g
Set swApp = Application.SldWorks
1 o/ v' p- r* O, L9 `# uSet part = swApp.ActiveDoc$ \& q- a! p+ n. n6 e7 q

! B3 J' I1 X4 J; a, xIf part.GetType = 3 Then
7 {  H) s: |; a' Z8 }% r" N
5 C# d" I0 F" N) Cpart.SaveAs (Left(part.GetPathName, InStrRev(part.GetPathName, "\")) & Left(part.GetTitle, Len(part.GetTitle) - 6) & ".PDF")
4 b) Q  v4 e, d  9 x; F! A( e* Z$ H, D$ |' L' ~  o& L
swApp.CloseDoc (part.GetTitle)
: e" W: K3 `5 B+ _0 m
% j/ s) @. T" {" ?8 {# gEnd If
! v0 t; M& C. m& Y: T  " |% R  D0 j1 |6 Q
End Sub

点评

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

本版积分规则

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

GMT+8, 2025-9-20 15:50 , Processed in 0.065970 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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