机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 7119|回复: 14

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

[复制链接]
发表于 2022-1-26 18:12:06 | 显示全部楼层 |阅读模式
各位大侠:* Q0 Q2 _$ Z& n: ]6 B$ y
     想录个宏、设置成快捷键,实现无论在模型窗口选中零件的面、或在左侧区域(commandmanager区域)选中零件或装配体,再按快捷键,即可打开相应的工程图。实现此功能需先做个宏。可是不太成功。问题是:
. h. K2 w* h- q* a1、报错;
* a2 h( ]  T  V) x0 k5 D2、宏里指定了零部件的名称,导致只能打开创建宏时的零件工程图。% f* k. M: j) R* S1 ^4 n' S5 s' M8 f1 P7 j

, m5 d+ Y! a: k哪位高手能否指点下该如何修改这个宏?非常感谢!
, M* D3 w2 p7 P: j2 e. Y. H: s

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2022-1-26 19:14:05 | 显示全部楼层
改了一下,此附件不在报错,但是打开的是创建宏时的工程图,依然不行。
* M/ ]3 c  P7 u再改了一下,见下,启动宏没反应,也不报错,这个是SW2020的版本的宏) y- I2 {: U& j$ p& l+ ^
Dim swApp As Object/ r4 L- g& c* Z# X0 E/ [: V4 {" I2 X* d
9 \, D4 S! r7 n9 {
Dim Part As Object+ g3 D9 m! }6 Z$ b
Dim boolstatus As Boolean
( \# r0 S- o  Q; c  i7 f: V3 {Dim longstatus As Long, longwarnings As Long8 d1 N  W6 V6 @% j5 E0 y
  y% c* k1 }: J3 X1 G/ d; i
Sub main()- B( _0 u3 h' z: |! b5 P: v

( @3 A; @* ~* y# Q+ HSet swApp = Application.SldWorks3 l$ ]( B2 l& z# h! e: y
$ p3 r# }& [# e; |8 R$ b1 E! o6 h
Set Part = swApp.ActiveDoc
  {0 N' N/ Y5 d* W) GDim COSMOSWORKSObj As Object
2 t) y5 Q& r& h- ?+ n0 F0 p. aDim CWAddinCallBackObj As Object  H! d) S# K2 d/ o5 m
Set CWAddinCallBackObj = swApp.GetAddInObject("CosmosWorks.CosmosWorks")2 I5 B: t+ l8 [: r) s
Set COSMOSWORKSObj = CWAddinCallBackObj.COSMOSWORKS7 g& O4 d, z0 b5 C& [, C' s, d% g
boolstatus = Part.Extension.SelectByID2("B111 PLT-1@B000  AAA", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)& f! U/ c$ O; V4 Q' V& d# s) t

9 g3 @1 w4 g7 q: v, h% U' Open9 x# d+ j( T. M: H5 e
Set Part = swApp.OpenDoc6("C:\Users\COMPASSION\Desktop\宏\B111 PLT.SLDDRW", 3, 0, "", longstatus, longwarnings)5 {. V6 F2 ~9 @/ ?! Y( V
Dim swDrawing As DrawingDoc9 n; }# p) u% `. Q: t8 J8 h
Set swDrawing = Part
" `/ }% G% I2 L# K& g* BSet Part = swApp.ActiveDoc! B! U& e/ C: u6 ?% d. }
Dim myModelView As Object
) H6 c2 _0 y4 D. JSet myModelView = Part.ActiveView
) i# _4 r* |6 Q; OmyModelView.FrameLeft = 06 D# S7 B1 G) Q: _4 j8 J/ {$ C
myModelView.FrameTop = 00 m+ G; D2 P* J3 {4 P, a
Set myModelView = Part.ActiveView
( _+ f3 C& o  n+ U# \5 h, W6 W7 xmyModelView.FrameState = swWindowState_e.swWindowMaximized6 r' f$ k% D* |- B, k
swApp.ActivateDoc2 "B111 PLT - 图纸1", False, longstatus* `  ^% I5 [; G  P3 a1 A5 Z
Set Part = swApp.ActiveDoc
1 n& |1 C( n4 Q
/ N' l. D8 N6 y' U- @2 p6 z' Redraw
/ s- d) y+ y" M* N9 WPart.GraphicsRedraw2* z& w9 X' @# M9 c
Set myModelView = Part.ActiveView
$ R9 z7 j3 x$ L3 mmyModelView.FrameState = swWindowState_e.swWindowMaximized/ A- ~% }7 @6 {
Set CWAddinCallBackObj = Nothing
3 A7 |5 M0 ?$ J% i" v: bSet COSMOSWORKSObj = Nothing
# U& z! W5 e- E* B: E5 i: lEnd Sub$ j$ h4 b. F# C2 E1 M* W

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-26 19:16:55 | 显示全部楼层
这个是SW2016的版本的宏,就差一步就成功了,就是如何从被选的零部件获得文件名。
$ w, d# C: W% ^( n% \Dim swApp As Object
7 E& U1 J. E5 `& x1 ]( IDim Part As Object" y. z* h7 c* I" f0 q
Dim boolstatus As Boolean
1 S' H/ b4 @) C9 PDim longstatus As Long, longwarnings As Long4 o0 B2 v# \2 t. b- D
Dim Filename As String
( B2 b  ]: c$ WDim No As Integer1 p1 P7 O, k7 A1 T' ?( R* m
Dim Title As String  V# W% g# x) L. \2 E! }

$ U7 _& D! J# w% l: n7 M1 E
5 l( z+ A* R/ a5 C) RSub main()9 @2 k3 S! l* w% O. x

. X2 l- |: U+ W" GSet swApp = Application.SldWorks
% u, O& Q9 ?8 j- PSet Part = swApp.ActiveDoc
- O8 k/ _% e, e1 m8 F8 o' E* e* Gboolstatus = Part.Extension.SelectByID2("Part", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)+ K& e: v" q4 j4 q
Set Part = Part.Extension.SelectByID2("Part", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
) b# g. h3 O+ p% _+ BFilename = Part.GetPathName()
0 ~5 l8 I& Y5 ?$ X/ w2 PNo = Len(Filename)
, x9 I- c  q" ~  TFilename = Left(Filename, No - 7)
$ y  J1 S2 Z5 A0 T4 ?
1 r2 I' O3 g' P% t; V: q4 W6 YSet Part = swApp.OpenDoc6(Filename & ".SLDDRW", 3, 0, "", longstatus, longwarnings)) N3 E$ R' V9 |/ v3 h& \+ p0 |) j
Set Part = swApp.ActiveDoc
% z6 ]9 l6 p2 BDim myModelView As Object
: l' X- U) p% O& q5 p5 e7 QSet myModelView = Part.ActiveView: V% A+ B. L- i' n7 b% Z
myModelView.FrameLeft = 0  n6 l2 Z) f* }1 c7 |
myModelView.FrameTop = 0) S8 p& e! I. H+ H! [  ]
Set myModelView = Part.ActiveView
6 ^8 q  W! E- |5 V: ?  C; DmyModelView.FrameState = swWindowState_e.swWindowMaximized$ ?. w9 M1 k4 ^0 m
Set Part = swApp.ActiveDoc+ h) p9 b2 v% U
Set myModelView = Part.ActiveView; }4 j$ V, T" t( U" Q5 z
myModelView.FrameState = swWindowState_e.swWindowMaximized  X8 ?6 W) x+ m
End Sub

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2022-1-26 22:21:22 | 显示全部楼层
矫情,有个词叫“快捷键”,操作:你把”从零件/装配体到工程图“设置一个快捷键,比如Ctrl+1。/ X3 N5 }, F  O% k5 |! r. v( x
使用方法:你点中零件,按快捷键就好了
9 o3 r" O3 z# g7 v7 E& I0 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 | 显示全部楼层
零件和工程图并不是一一对应的( }( O* X( L7 ~* F# [# l) k
为啥,有配置,有出图的特殊需要
, s/ E! @' n& t* u* |A零件可以对应工程图B,C,D。。。# [' S- Q( W7 ]! c

" k0 o* Z4 |) w8 B所以,我觉得这个需求就不成立。。。

点评

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

使用道具 举报

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

使用道具 举报

发表于 2022-11-2 11:26:27 | 显示全部楼层
zhufeng_hgp 发表于 2022-1-26 23:08( O+ c/ P$ b, b2 v/ l; F  c1 F
这个功能正如2楼说得那样,把打开工程图这个命令设置成快捷键就能实现的

, [. L, k* \7 ]" F* g你好,请问你这个是从装配体选择零件,然后打开工程图的吗?如果是可以的也帮我发一下吧,谢谢!1142163586@qq.com
% [  K' H9 V1 W4 r
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 19:11 , Processed in 0.057831 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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