机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 7118|回复: 14

“快速打开零部件工程图的宏”的问题

[复制链接]
发表于 2022-1-26 18:12:06 | 显示全部楼层 |阅读模式
各位大侠:! H" l4 I6 j! L/ H% {* L
     想录个宏、设置成快捷键,实现无论在模型窗口选中零件的面、或在左侧区域(commandmanager区域)选中零件或装配体,再按快捷键,即可打开相应的工程图。实现此功能需先做个宏。可是不太成功。问题是:. y) h7 r) t# J$ G
1、报错;7 w4 q' ~/ q% }8 G
2、宏里指定了零部件的名称,导致只能打开创建宏时的零件工程图。" S8 k  I& W" r, X8 W

9 [% U9 U9 i6 j. U哪位高手能否指点下该如何修改这个宏?非常感谢!4 e# X0 G$ `) Q2 j4 n$ Q# \9 ?: O, F

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2022-1-26 19:14:05 | 显示全部楼层
改了一下,此附件不在报错,但是打开的是创建宏时的工程图,依然不行。
6 P% Q" L9 [% o再改了一下,见下,启动宏没反应,也不报错,这个是SW2020的版本的宏
. `0 I2 o( m$ ]$ ^- \# ~Dim swApp As Object+ z# H( ^7 z. ^0 Z6 P9 |( I- x

7 C7 n: k+ n) sDim Part As Object
* M/ |: T, r) r( L" o) nDim boolstatus As Boolean" W1 y( F) ~& s- L( E5 Q- }- [+ J
Dim longstatus As Long, longwarnings As Long
8 V3 l6 v' D' z! r+ z0 d/ ~8 b% t/ E  j
Sub main()
  o4 n8 ~5 k5 y% J6 O3 E$ v3 Z+ w. I7 y) G; l$ v$ R
Set swApp = Application.SldWorks/ s/ W4 b) K. k: @% r3 P
# y1 E  C0 g& d* d' D. h9 m  ]" x/ \2 U
Set Part = swApp.ActiveDoc! L) U0 r6 [; d! |
Dim COSMOSWORKSObj As Object% x- X$ w4 [' M& T+ q) a
Dim CWAddinCallBackObj As Object5 T* q& i1 O% r& m2 L4 B+ k2 i7 h% g
Set CWAddinCallBackObj = swApp.GetAddInObject("CosmosWorks.CosmosWorks")
4 j; W- b6 t* }" d9 OSet COSMOSWORKSObj = CWAddinCallBackObj.COSMOSWORKS. L6 l1 I1 V- Q6 L0 _
boolstatus = Part.Extension.SelectByID2("B111 PLT-1@B000  AAA", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
$ [6 S8 ?& \' ], B5 r8 F1 {/ v. \' X" t. O
' Open
( X0 P; c) y# i+ }5 X- X9 FSet Part = swApp.OpenDoc6("C:\Users\COMPASSION\Desktop\宏\B111 PLT.SLDDRW", 3, 0, "", longstatus, longwarnings)
6 v' K5 k. f: MDim swDrawing As DrawingDoc9 H4 u" j4 {2 z- W1 ]8 j
Set swDrawing = Part7 C, y0 u, a* [# }$ {; ]
Set Part = swApp.ActiveDoc
; d' u, d. p. J0 VDim myModelView As Object8 g  Y% j* d' b
Set myModelView = Part.ActiveView
7 t0 {, d' Z) e. Z  _. gmyModelView.FrameLeft = 0' g$ _1 Q( ]5 Z$ E0 ?
myModelView.FrameTop = 0$ W# h# W) A1 V7 N% ^/ l
Set myModelView = Part.ActiveView) N4 j; N. Z/ h! I: o& g
myModelView.FrameState = swWindowState_e.swWindowMaximized! Q1 C0 M& \' v# H$ ]
swApp.ActivateDoc2 "B111 PLT - 图纸1", False, longstatus
5 ^3 r. C7 r  PSet Part = swApp.ActiveDoc
, f6 ]8 z" W  M, [2 J
  M9 k2 p( x/ s' Redraw4 s7 h8 L, B) E
Part.GraphicsRedraw2
$ S/ o# D+ I7 F+ S3 GSet myModelView = Part.ActiveView% K) L! C  A# d! P0 \, w
myModelView.FrameState = swWindowState_e.swWindowMaximized$ S! t. U1 X! ]. k' k# e
Set CWAddinCallBackObj = Nothing
" c3 |9 E, d$ P5 ^8 S$ vSet COSMOSWORKSObj = Nothing
9 v: I' I. G2 jEnd Sub
9 U3 C4 Q( J( _' k8 M- S

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-26 19:16:55 | 显示全部楼层
这个是SW2016的版本的宏,就差一步就成功了,就是如何从被选的零部件获得文件名。
. s  h2 j5 m0 TDim swApp As Object4 p! @: o6 o, E* O3 x) m
Dim Part As Object$ H0 r* X( u' O8 J5 T# E$ D* q
Dim boolstatus As Boolean* M4 H$ s6 O* O, W7 W5 v& E
Dim longstatus As Long, longwarnings As Long
4 d5 E$ c3 u! J7 f1 j0 i$ CDim Filename As String
" G+ R4 o" Y" e/ O. d! {Dim No As Integer
, M; |1 D* a, q" Q* {0 V' kDim Title As String- X  A+ h: K+ ]  ]8 F# `0 I! b3 ^

0 l0 g+ k& X! F9 E7 }8 @) S9 A4 z. L. p% N: @. W
Sub main()2 e, v$ ?1 v& h8 ^* C7 |" m

+ q; S( e+ M# v6 f0 fSet swApp = Application.SldWorks
' K) H, H2 s$ l1 Z0 K" ~Set Part = swApp.ActiveDoc+ S2 q; N. ?: d+ r
boolstatus = Part.Extension.SelectByID2("Part", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
  Q; x, ]! W) W) v3 C" t3 f! WSet Part = Part.Extension.SelectByID2("Part", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
& M& g9 P2 {2 V4 @- WFilename = Part.GetPathName()! }& O; B0 i7 m% C% Y# W
No = Len(Filename)
, M! _$ k4 B+ l: P3 a. |Filename = Left(Filename, No - 7)
# l$ ~5 P( v: ^" D& B3 @
0 i* g; ]/ w2 Q2 nSet Part = swApp.OpenDoc6(Filename & ".SLDDRW", 3, 0, "", longstatus, longwarnings): Z- C* G8 I" `. G5 V# a8 t. ]
Set Part = swApp.ActiveDoc
# ~% k/ S: S+ l# J) o  O9 sDim myModelView As Object
- f. O, l( X8 O4 r! o& |Set myModelView = Part.ActiveView3 k+ I5 A  H8 h( |
myModelView.FrameLeft = 04 _$ _; K& V  m& n& d
myModelView.FrameTop = 0% h6 O; L9 z4 ^4 j; o/ M
Set myModelView = Part.ActiveView, e! q/ C" t3 d! ?* }8 X0 w
myModelView.FrameState = swWindowState_e.swWindowMaximized1 G3 @3 t! i  W* G( w3 W' @" Q9 R" ?
Set Part = swApp.ActiveDoc
8 ^* B+ u: Z1 M4 s. D% U% @: pSet myModelView = Part.ActiveView+ g! I: Z4 |7 Q5 V" |
myModelView.FrameState = swWindowState_e.swWindowMaximized0 B) x! M$ \  Z: W$ _
End Sub

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2022-1-26 22:21:22 | 显示全部楼层
矫情,有个词叫“快捷键”,操作:你把”从零件/装配体到工程图“设置一个快捷键,比如Ctrl+1。
6 i+ q! d- i: j" C2 n使用方法:你点中零件,按快捷键就好了' {3 }: {8 h3 K; N+ F6 x

点评

感谢,您说的是从选中的零部件创建工程图的快捷键。我要的是从选中的零部件打开既有工程图的快捷键, sw有点奇怪,不是所有的右键弹出选项都可直接创建快捷键。  发表于 2022-1-27 18:28
回复 支持 1 反对 0

使用道具 举报

发表于 2022-1-26 23:08:57 | 显示全部楼层
这个功能正如2楼说得那样,把打开工程图这个命令设置成快捷键就能实现的

本帖子中包含更多资源

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

x

点评

请把“零件工程图切换”的宏发给我下,非常感谢,[email]arter_2006@126.com[/email]  发表于 2022-7-15 09:50
这个是工程图与零件互相切换,你把邮箱给我  发表于 2022-1-28 17:40
您这个宏是“从选中的零部件打开既有工程图的快捷键”吗?如果是,能否分享下?谢谢  发表于 2022-1-27 18:29
回复 支持 2 反对 0

使用道具 举报

发表于 2022-1-27 08:48:22 | 显示全部楼层
好东西 学习一下
回复 支持 0 反对 1

使用道具 举报

发表于 2022-1-28 09:21:48 | 显示全部楼层
零件和工程图并不是一一对应的8 ]3 F3 [5 P: j' Y
为啥,有配置,有出图的特殊需要2 K8 a8 S- m2 S/ J2 E
A零件可以对应工程图B,C,D。。。! z" i- w# t1 B# @

3 d. U, D! o5 f% f7 R所以,我觉得这个需求就不成立。。。

点评

这个要看个人习惯了。 有的人不采用配置的做法;有的人采用配置,但不同配置的工程图都放在一个工程图文件里,也就是都和文件名关联;有的人就不是这样。即使是最后一种情况,有这个快捷键也好的多,前两种习惯更..   发表于 2022-1-28 16:40
回复 支持 反对

使用道具 举报

发表于 2022-1-28 21:02:17 | 显示全部楼层
感谢楼主分享,学习了
回复 支持 反对

使用道具 举报

发表于 2022-11-2 11:26:27 | 显示全部楼层
zhufeng_hgp 发表于 2022-1-26 23:08
# Q. B: D% H) k7 m5 e9 p这个功能正如2楼说得那样,把打开工程图这个命令设置成快捷键就能实现的

; f1 y+ s/ B4 P3 ^+ @/ r" [你好,请问你这个是从装配体选择零件,然后打开工程图的吗?如果是可以的也帮我发一下吧,谢谢!1142163586@qq.com( F% T% O# e6 u4 t/ E, ]% s
回复 支持 反对

使用道具 举报

发表于 2022-11-3 08:49:26 | 显示全部楼层
已学习,多谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 17:45 , Processed in 0.056987 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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