机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 7695|回复: 14

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

[复制链接]
发表于 2022-1-26 18:12:06 | 显示全部楼层 |阅读模式
各位大侠:' H& e' }' t, ~; u8 D
     想录个宏、设置成快捷键,实现无论在模型窗口选中零件的面、或在左侧区域(commandmanager区域)选中零件或装配体,再按快捷键,即可打开相应的工程图。实现此功能需先做个宏。可是不太成功。问题是:3 h' x4 a* f0 Z
1、报错;
0 s. g/ H  M, i* l% D$ D2、宏里指定了零部件的名称,导致只能打开创建宏时的零件工程图。0 q# R1 A& E& T

# S1 L* J" i' @$ c3 f7 f哪位高手能否指点下该如何修改这个宏?非常感谢!
8 j, Q  T; O* R! u. n0 A

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2022-1-26 19:14:05 | 显示全部楼层
改了一下,此附件不在报错,但是打开的是创建宏时的工程图,依然不行。
" W8 F6 x, X: B& E- P- J再改了一下,见下,启动宏没反应,也不报错,这个是SW2020的版本的宏
' y# \$ R; o! S& nDim swApp As Object$ a2 h" ~# d" d( E

6 V' c, i, D/ }7 N& WDim Part As Object
9 N5 T6 g& i1 r/ X' Q) H" ~Dim boolstatus As Boolean
* h5 T0 O) @2 g! TDim longstatus As Long, longwarnings As Long
; k6 u" M$ Y. ]" q' J9 k8 f+ o2 T7 ^6 E. P; H; [
Sub main()
& t4 V+ g% H- [* V; V: z- T5 c, t
" F/ Y6 ~! }3 p; e# `9 q" q$ pSet swApp = Application.SldWorks
8 Y9 v7 c& _& [# `+ @
7 x8 z5 P) Z# ]3 R; [0 V, CSet Part = swApp.ActiveDoc7 c9 e+ z8 r& ]6 s  F
Dim COSMOSWORKSObj As Object
" m2 @' C2 C% u$ ~: [2 f2 jDim CWAddinCallBackObj As Object1 D8 F+ j1 ^( g3 z) |, S" f
Set CWAddinCallBackObj = swApp.GetAddInObject("CosmosWorks.CosmosWorks")
$ f+ Y3 e9 a( ]4 bSet COSMOSWORKSObj = CWAddinCallBackObj.COSMOSWORKS' A# F0 L2 {5 g. t( g
boolstatus = Part.Extension.SelectByID2("B111 PLT-1@B000  AAA", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0). i3 m7 p, V; I" Q( `. {3 v
; x/ {$ P- @! O/ a4 i. x
' Open: D" d9 Y0 Q' h) q; G0 Y; \
Set Part = swApp.OpenDoc6("C:\Users\COMPASSION\Desktop\宏\B111 PLT.SLDDRW", 3, 0, "", longstatus, longwarnings)
( F& _0 L# a8 PDim swDrawing As DrawingDoc
1 d2 m/ [7 _" B2 i/ v% @9 XSet swDrawing = Part: W, g9 N, |2 Z5 G2 J/ W
Set Part = swApp.ActiveDoc" r/ u. z' [. i0 k7 C* w
Dim myModelView As Object
& U( |5 q4 ~8 {# ^9 f: V. p, wSet myModelView = Part.ActiveView
5 y. ]5 ~& [6 K/ q6 D# ZmyModelView.FrameLeft = 08 T, {( D8 \0 s- S. n
myModelView.FrameTop = 0
% r- l& g- l4 F3 I* A9 w4 R1 [: kSet myModelView = Part.ActiveView
- j7 `% c* }" R" ^# x4 V5 w! `. pmyModelView.FrameState = swWindowState_e.swWindowMaximized
0 \- Y# S& @" P& |+ [2 l4 i, oswApp.ActivateDoc2 "B111 PLT - 图纸1", False, longstatus1 e. O8 N, O7 j9 u
Set Part = swApp.ActiveDoc2 @! W! Y* q* m8 l- {! x8 o$ [
4 B; e' t2 J5 T* L
' Redraw+ E. Q7 e9 m& T
Part.GraphicsRedraw27 u2 N! J* I( N) S( U6 r
Set myModelView = Part.ActiveView4 M* M9 d* F* P8 x* ]' `
myModelView.FrameState = swWindowState_e.swWindowMaximized
, O# a# _- \% FSet CWAddinCallBackObj = Nothing# G# E9 g4 c/ M1 n0 G; O
Set COSMOSWORKSObj = Nothing
9 V) ^  I! ~4 }1 U! _3 f1 tEnd Sub; V8 u7 |1 W8 B9 h

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-26 19:16:55 | 显示全部楼层
这个是SW2016的版本的宏,就差一步就成功了,就是如何从被选的零部件获得文件名。
% {3 k4 k7 w3 TDim swApp As Object
# Q- q, y$ t4 xDim Part As Object1 L, u: {8 h1 W) U6 z! Z% A/ p8 \, x
Dim boolstatus As Boolean
) Q6 Q0 W) J0 ]  U# ^: Q+ jDim longstatus As Long, longwarnings As Long
# m: h: R$ C7 Q4 W$ ^7 {: XDim Filename As String, O, t5 v) p, [% w
Dim No As Integer
1 Y& o( L7 p5 L0 J$ I7 vDim Title As String- n8 |) D. |0 [
- N6 _: R; p$ g  u) M
$ e% ~3 J+ O6 S) f
Sub main(). m9 _$ i* O  ~3 t3 W3 s# V" O& p

" H. D5 V; `- e5 n& B% n! ^Set swApp = Application.SldWorks
: ?9 |7 V# q0 ?* x5 l& u+ c$ |Set Part = swApp.ActiveDoc
  y% q3 H# E. P/ F( sboolstatus = Part.Extension.SelectByID2("Part", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)4 |+ \4 V9 F( T% k% x8 w3 T5 v
Set Part = Part.Extension.SelectByID2("Part", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)% M" Y7 c7 H+ H+ o
Filename = Part.GetPathName()
( F+ n# L% k" DNo = Len(Filename)
5 N, X' U4 F3 A7 ]Filename = Left(Filename, No - 7)
- e: I4 Q  l) `! M! s
1 l/ c- l. Z+ z/ L) h6 MSet Part = swApp.OpenDoc6(Filename & ".SLDDRW", 3, 0, "", longstatus, longwarnings)
0 ]- y( K2 W; v  Y0 ^# t$ kSet Part = swApp.ActiveDoc3 n) n" U1 f3 ]
Dim myModelView As Object: [5 @" d% T" D! }) S8 e
Set myModelView = Part.ActiveView$ d9 K7 V1 h" y# S' y
myModelView.FrameLeft = 0! U2 l- I7 ~9 H# v! w; G
myModelView.FrameTop = 0% R2 }5 l& a& L9 z& I1 L' w
Set myModelView = Part.ActiveView, [2 W) a: \- @5 `2 ?
myModelView.FrameState = swWindowState_e.swWindowMaximized" x# D5 b8 c$ I" e  f
Set Part = swApp.ActiveDoc
3 G4 I5 ?% V0 A+ }Set myModelView = Part.ActiveView3 {0 E0 _# K3 @' I; {! K! R
myModelView.FrameState = swWindowState_e.swWindowMaximized! ^8 v, [: c- o: F- ~7 r
End Sub

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2022-1-26 22:21:22 | 显示全部楼层
矫情,有个词叫“快捷键”,操作:你把”从零件/装配体到工程图“设置一个快捷键,比如Ctrl+1。; v/ n, C1 }- c5 `9 G( V- ?
使用方法:你点中零件,按快捷键就好了
) k6 d) q: Y# [( s( U" ?

点评

感谢,您说的是从选中的零部件创建工程图的快捷键。我要的是从选中的零部件打开既有工程图的快捷键, 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 | 显示全部楼层
零件和工程图并不是一一对应的
: r) U# ?; v( A( Y( j% W为啥,有配置,有出图的特殊需要
3 ]- i9 V  c8 D# uA零件可以对应工程图B,C,D。。。8 F. ]2 h( r9 c( G
) ^& E2 `+ Y5 Z0 \( y& X3 ]
所以,我觉得这个需求就不成立。。。

点评

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

使用道具 举报

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

使用道具 举报

发表于 2022-11-2 11:26:27 | 显示全部楼层
zhufeng_hgp 发表于 2022-1-26 23:08
! e! n3 J" [$ ?' C这个功能正如2楼说得那样,把打开工程图这个命令设置成快捷键就能实现的

% L4 ~5 x4 \! Q  m% X你好,请问你这个是从装配体选择零件,然后打开工程图的吗?如果是可以的也帮我发一下吧,谢谢!1142163586@qq.com
8 w) t! C0 }. G/ X7 x7 Z
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-15 06:26 , Processed in 0.062871 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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