找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 8165|回复: 14

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

[复制链接]
发表于 2022-1-26 18:12:06 | 显示全部楼层 |阅读模式
各位大侠:# b/ F7 p1 F  q
     想录个宏、设置成快捷键,实现无论在模型窗口选中零件的面、或在左侧区域(commandmanager区域)选中零件或装配体,再按快捷键,即可打开相应的工程图。实现此功能需先做个宏。可是不太成功。问题是:% H/ P8 [( D, m5 G
1、报错;# Q3 u( f! A- R6 D3 @2 @4 X; }
2、宏里指定了零部件的名称,导致只能打开创建宏时的零件工程图。
! {) I! G  u0 {9 A6 M5 p
( G. d' V8 l8 ]9 t& Q0 I) E) z7 p/ e哪位高手能否指点下该如何修改这个宏?非常感谢!: {% y7 w0 r4 U) `' J

本帖子中包含更多资源

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

×
回复

使用道具 举报

 楼主| 发表于 2022-1-26 19:14:05 | 显示全部楼层
改了一下,此附件不在报错,但是打开的是创建宏时的工程图,依然不行。& v: {- k' o3 F, e# R0 b2 B
再改了一下,见下,启动宏没反应,也不报错,这个是SW2020的版本的宏6 y# Y+ \1 M' {1 s
Dim swApp As Object
1 e3 R, l5 D4 O1 `6 Z! D
5 T- m' k) D" h0 `# F, l  tDim Part As Object/ f7 X) f; P, j; k2 o
Dim boolstatus As Boolean" S0 Y# _: n5 z/ q1 ]( B
Dim longstatus As Long, longwarnings As Long- [& U8 m/ U1 Q$ K4 C; E7 F

' X" Y  }1 i* |$ x- [Sub main()
( `& ]( G' i# i* C2 Y3 j- u. T0 X8 p  j) E! F- e
Set swApp = Application.SldWorks
( q( @( x, n1 O& C$ }( |) I  v( M
0 w# L6 f. @3 `9 w6 }: CSet Part = swApp.ActiveDoc1 F  s" c8 W  ?
Dim COSMOSWORKSObj As Object
. G  o7 |: J9 b  c& yDim CWAddinCallBackObj As Object% o4 u% o. \" p$ R9 y# `
Set CWAddinCallBackObj = swApp.GetAddInObject("CosmosWorks.CosmosWorks")0 s( r2 o0 Z6 M: ?7 K1 k2 ?' \
Set COSMOSWORKSObj = CWAddinCallBackObj.COSMOSWORKS
. l6 E* F1 r+ l: t6 x" Tboolstatus = Part.Extension.SelectByID2("B111 PLT-1@B000  AAA", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)4 e' E  L9 X* ^$ X* V
1 @8 ~3 `$ }8 C7 W1 c
' Open$ a! @, d( l% n8 h) r1 V
Set Part = swApp.OpenDoc6("C:\Users\COMPASSION\Desktop\宏\B111 PLT.SLDDRW", 3, 0, "", longstatus, longwarnings)* E! p) F( n2 a' n! D
Dim swDrawing As DrawingDoc
% q3 X3 T2 {) iSet swDrawing = Part7 t0 u- g" u9 N' v( _
Set Part = swApp.ActiveDoc
1 y: V2 A) m0 x8 j& QDim myModelView As Object
' V0 B3 ^% q, [& w: p- TSet myModelView = Part.ActiveView, o- X2 c3 x* R' W2 _$ |
myModelView.FrameLeft = 0
& d2 w. Y2 d: {myModelView.FrameTop = 0
( G+ H' s: o! V* t+ FSet myModelView = Part.ActiveView
- I" U: B  ^, E+ g% g: N# @myModelView.FrameState = swWindowState_e.swWindowMaximized
* G  r' P5 p1 x: x1 gswApp.ActivateDoc2 "B111 PLT - 图纸1", False, longstatus% \. u! i3 J/ g  C
Set Part = swApp.ActiveDoc( W; z) g: ]6 p1 @0 d

! @2 |7 A6 w* Q% F' u3 ]' Redraw
. _/ D; Q" c6 W0 B( O2 dPart.GraphicsRedraw2
5 s) W% m- n' zSet myModelView = Part.ActiveView
' ], Q8 b6 R/ U* k' t; ?myModelView.FrameState = swWindowState_e.swWindowMaximized+ v" W7 Y3 M" E4 K
Set CWAddinCallBackObj = Nothing7 L& x) P2 m9 n0 L( B. T
Set COSMOSWORKSObj = Nothing
4 `' H" \) U$ J) R3 ?7 ?7 i  F4 {4 j& hEnd Sub2 g0 V4 Z3 z- Y3 g' }: a

本帖子中包含更多资源

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

×
 楼主| 发表于 2022-1-26 19:16:55 | 显示全部楼层
这个是SW2016的版本的宏,就差一步就成功了,就是如何从被选的零部件获得文件名。# W3 p6 @% P' Q' y+ A  H' O
Dim swApp As Object% X5 y" S0 ]7 U
Dim Part As Object
' z3 C2 g' u8 y$ u! nDim boolstatus As Boolean
6 e/ L1 ^+ i# L, Q0 [Dim longstatus As Long, longwarnings As Long7 x: G4 `# K& ?% T/ ^) r# V( r4 a
Dim Filename As String
3 O. ]" J; t4 Y. ZDim No As Integer
9 B" }2 T& P' u3 h- F* |1 gDim Title As String
1 c; F# d$ ]3 A" v6 n' m7 z% m/ k4 Z( w& ?
- Q( B: T2 D7 u( F' m
Sub main()
$ W/ e# I' p8 Q. d1 d1 L8 R8 [4 W
/ `* u/ `0 E+ |3 ISet swApp = Application.SldWorks
/ @# ^% z! C" U  `* R- lSet Part = swApp.ActiveDoc
: a; z" e( j% k; Uboolstatus = Part.Extension.SelectByID2("Part", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)9 @0 f. u& D& C
Set Part = Part.Extension.SelectByID2("Part", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)# ], X( `% P) y
Filename = Part.GetPathName()
, M- [% ~. }! j! D+ D$ O6 }; {' VNo = Len(Filename)
. W; d" P" H( N+ VFilename = Left(Filename, No - 7)
! c" P8 B) i3 e6 [7 C! `% R/ q: `0 a+ b7 I# w  T. I, I
Set Part = swApp.OpenDoc6(Filename & ".SLDDRW", 3, 0, "", longstatus, longwarnings)
8 r/ e  [: X$ `# a/ E& s+ X6 _: TSet Part = swApp.ActiveDoc/ I0 K2 V+ ~2 M! a
Dim myModelView As Object+ E* Z) I; Y* N9 y* `& a
Set myModelView = Part.ActiveView
4 q1 S" y" S8 R) U1 H" EmyModelView.FrameLeft = 0# V+ x" w) \& W  c; I6 w% r
myModelView.FrameTop = 0
& ]! o: V5 a1 A+ a3 v0 k) LSet myModelView = Part.ActiveView
9 n# x: N. O7 `7 Q6 MmyModelView.FrameState = swWindowState_e.swWindowMaximized+ T; j+ V4 @/ J. m
Set Part = swApp.ActiveDoc0 z# `( [2 U) c+ @2 |
Set myModelView = Part.ActiveView
# d8 _  a) \0 [' n: ?myModelView.FrameState = swWindowState_e.swWindowMaximized
+ V/ V" a  b9 ~9 E% @End Sub

本帖子中包含更多资源

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

×
发表于 2022-1-26 22:21:22 | 显示全部楼层
矫情,有个词叫“快捷键”,操作:你把”从零件/装配体到工程图“设置一个快捷键,比如Ctrl+1。
) P3 o9 N4 W: \4 R使用方法:你点中零件,按快捷键就好了+ z- U. e! t' @

点评

感谢,您说的是从选中的零部件创建工程图的快捷键。我要的是从选中的零部件打开既有工程图的快捷键, sw有点奇怪,不是所有的右键弹出选项都可直接创建快捷键。  发表于 2022-1-27 18:28
发表于 2022-1-26 23:08:57 | 显示全部楼层
这个功能正如2楼说得那样,把打开工程图这个命令设置成快捷键就能实现的

本帖子中包含更多资源

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

×

点评

请把“零件工程图切换”的宏发给我下,非常感谢,[email]arter_2006@126.com[/email]  发表于 2022-7-15 09:50
这个是工程图与零件互相切换,你把邮箱给我  发表于 2022-1-28 17:40
您这个宏是“从选中的零部件打开既有工程图的快捷键”吗?如果是,能否分享下?谢谢  发表于 2022-1-27 18:29
发表于 2022-1-27 08:48:22 | 显示全部楼层
好东西 学习一下
发表于 2022-1-28 09:21:48 | 显示全部楼层
零件和工程图并不是一一对应的
4 N2 i9 C0 d: |$ n0 u" u# V" i. f为啥,有配置,有出图的特殊需要7 {3 m) e. G' o
A零件可以对应工程图B,C,D。。。6 |/ l. E% O' Y/ |5 O8 v. ~2 ~# m% ?
( u/ N) T% _1 E9 C) O
所以,我觉得这个需求就不成立。。。

点评

这个要看个人习惯了。 有的人不采用配置的做法;有的人采用配置,但不同配置的工程图都放在一个工程图文件里,也就是都和文件名关联;有的人就不是这样。即使是最后一种情况,有这个快捷键也好的多,前两种习惯更..   发表于 2022-1-28 16:40
发表于 2022-1-28 21:02:17 | 显示全部楼层
感谢楼主分享,学习了
发表于 2022-11-2 11:26:27 | 显示全部楼层
zhufeng_hgp 发表于 2022-1-26 23:08# l) g# d: u' E8 s
这个功能正如2楼说得那样,把打开工程图这个命令设置成快捷键就能实现的
% W& E# s, l( F
你好,请问你这个是从装配体选择零件,然后打开工程图的吗?如果是可以的也帮我发一下吧,谢谢!1142163586@qq.com
# x5 J" v3 {/ ~4 u
发表于 2022-11-3 08:49:26 | 显示全部楼层
已学习,多谢!
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-16 14:46 , Processed in 0.086167 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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