找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 8184|回复: 14

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

[复制链接]
发表于 2022-1-26 18:12:06 | 显示全部楼层 |阅读模式
各位大侠:; f2 ]6 f# v$ c6 w7 d! X
     想录个宏、设置成快捷键,实现无论在模型窗口选中零件的面、或在左侧区域(commandmanager区域)选中零件或装配体,再按快捷键,即可打开相应的工程图。实现此功能需先做个宏。可是不太成功。问题是:
9 }: c0 }! W1 t8 \9 b, ]1 }1、报错;! G) o) |. a/ X2 [
2、宏里指定了零部件的名称,导致只能打开创建宏时的零件工程图。
( ?. m/ @) q. U1 T+ s8 l* t7 \: n& k. `4 f5 w; S0 A% O: A
哪位高手能否指点下该如何修改这个宏?非常感谢!
9 |$ o  t9 `  s! k. f/ ?  x4 J

本帖子中包含更多资源

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

×
回复

使用道具 举报

 楼主| 发表于 2022-1-26 19:14:05 | 显示全部楼层
改了一下,此附件不在报错,但是打开的是创建宏时的工程图,依然不行。& Z6 K4 ^) ]% C9 @' `. B
再改了一下,见下,启动宏没反应,也不报错,这个是SW2020的版本的宏- B& W% y3 a2 S$ Y; _/ P" k3 _
Dim swApp As Object
# ~& p* ]% U4 E  E  g6 j3 b
+ m: ^2 s& W) J0 EDim Part As Object0 O% O# e3 A" r1 W1 K4 L
Dim boolstatus As Boolean/ H) E, ]# W/ `
Dim longstatus As Long, longwarnings As Long# V. ?3 n9 J9 b  {7 H+ Y2 q/ E
/ F7 I! ~: f  S+ F  S: s# I: w
Sub main()6 m; T5 p. j- X( y3 l

; S/ d; o; j+ u) _$ |3 V. r7 H4 Y# DSet swApp = Application.SldWorks
/ w4 L0 ^+ A, s. j2 b" l  l- U& H# ^+ e4 I4 K1 C! |7 u: M
Set Part = swApp.ActiveDoc5 d+ Y4 L- r' N: o7 }5 c. u
Dim COSMOSWORKSObj As Object
* O! f2 v% ?1 U8 MDim CWAddinCallBackObj As Object
# o1 f$ ]* z* z. C- `' sSet CWAddinCallBackObj = swApp.GetAddInObject("CosmosWorks.CosmosWorks")
5 ?# q' I- @7 WSet COSMOSWORKSObj = CWAddinCallBackObj.COSMOSWORKS$ P) _0 E; Z' u$ Y) Q, |1 ~
boolstatus = Part.Extension.SelectByID2("B111 PLT-1@B000  AAA", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
7 ~* I& Y+ M+ [  b, r& g, l: @5 `$ J! V2 g( c# f. ?( j0 U
' Open& X# }  Y3 K$ d7 }! o+ J
Set Part = swApp.OpenDoc6("C:\Users\COMPASSION\Desktop\宏\B111 PLT.SLDDRW", 3, 0, "", longstatus, longwarnings)
# ^7 J3 r6 E" {# a8 j1 Q1 i/ zDim swDrawing As DrawingDoc# d2 e; K& e2 D+ E7 ~
Set swDrawing = Part
0 B& Y& W/ g* [' [Set Part = swApp.ActiveDoc/ U* E- Z" }4 A& g: N% X
Dim myModelView As Object- i1 p4 n/ Q( w
Set myModelView = Part.ActiveView
1 |* {1 ?+ Q8 k: A( wmyModelView.FrameLeft = 0; \  h$ N: m" P0 i2 I
myModelView.FrameTop = 0
# Q' Q+ [) }4 K/ A, m- u- N+ fSet myModelView = Part.ActiveView
7 `- N, v; q: }( {myModelView.FrameState = swWindowState_e.swWindowMaximized
2 E4 H4 {8 ]! u5 M; ^& q) ]swApp.ActivateDoc2 "B111 PLT - 图纸1", False, longstatus3 h+ y* A, `2 n) @9 ~$ f
Set Part = swApp.ActiveDoc  R6 f; R3 o; p7 n

0 o1 L& E/ ?) Q9 Z, o2 t' Redraw' x' m' g, c# w; s+ K$ l! X6 n/ u
Part.GraphicsRedraw22 j# j5 [2 p; t, p- E; K
Set myModelView = Part.ActiveView
& R- L, j: a6 ^7 g0 D& p. QmyModelView.FrameState = swWindowState_e.swWindowMaximized
* ~! m+ w7 ~6 l  MSet CWAddinCallBackObj = Nothing- V$ l& j' O% H( R- o# n# v
Set COSMOSWORKSObj = Nothing
# I0 a3 i$ F  j! ]( C& }End Sub
' l& A* g6 b" A/ u9 v6 \' c

本帖子中包含更多资源

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

×
 楼主| 发表于 2022-1-26 19:16:55 | 显示全部楼层
这个是SW2016的版本的宏,就差一步就成功了,就是如何从被选的零部件获得文件名。3 |, m. b/ A' d1 h* ]# q
Dim swApp As Object1 f" w. }1 g$ K4 M4 n3 q' R$ d% K; Z
Dim Part As Object
/ [3 b! I. S/ ?- A8 i% [. oDim boolstatus As Boolean
8 r0 I0 s4 T5 I' @! YDim longstatus As Long, longwarnings As Long0 j+ e8 T1 |% K
Dim Filename As String
/ X# Q9 Z( T/ U% c' b7 h( kDim No As Integer3 j  y( {( e+ \" F/ Y
Dim Title As String) d- A7 j" R2 l

' ?9 O9 r7 I! {3 M! D- P6 H: V- Z/ q7 j# [2 l0 y
Sub main()* b! R& A- Z9 Y
$ q9 g9 b  _5 I% T+ o
Set swApp = Application.SldWorks9 c, E- e. ?- I, k' F$ j- H  ^+ Y
Set Part = swApp.ActiveDoc, R% c0 X/ \# }3 i" ^4 z
boolstatus = Part.Extension.SelectByID2("Part", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)' ?4 M2 E; T8 {
Set Part = Part.Extension.SelectByID2("Part", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)* V; [3 |' m6 D. z0 P
Filename = Part.GetPathName()
( ?2 c) \* z5 F! ]/ I4 }4 D, hNo = Len(Filename)
1 O' R9 x3 s* G2 O  SFilename = Left(Filename, No - 7)
7 Q( \' e! f. W1 O) I/ T' w  S& J; ~( e
Set Part = swApp.OpenDoc6(Filename & ".SLDDRW", 3, 0, "", longstatus, longwarnings)' d6 a5 W+ d  y& w' G
Set Part = swApp.ActiveDoc, g5 j% L) a  H1 G1 U
Dim myModelView As Object
5 w- Y+ z1 s4 XSet myModelView = Part.ActiveView
. \! H  ]0 ]! L$ ]myModelView.FrameLeft = 0
6 H  D: {# p' H9 W8 j. TmyModelView.FrameTop = 0- x6 k4 r/ y6 t4 C
Set myModelView = Part.ActiveView
+ [9 f, f$ N5 t- N$ e) y7 AmyModelView.FrameState = swWindowState_e.swWindowMaximized( [: y0 f4 x. O9 v
Set Part = swApp.ActiveDoc
; R! n( Z, F) w7 r: lSet myModelView = Part.ActiveView
, T! @( b% m4 H+ a9 D: l9 |myModelView.FrameState = swWindowState_e.swWindowMaximized
' Y# T3 v; e) i, q, B+ zEnd Sub

本帖子中包含更多资源

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

×
发表于 2022-1-26 22:21:22 | 显示全部楼层
矫情,有个词叫“快捷键”,操作:你把”从零件/装配体到工程图“设置一个快捷键,比如Ctrl+1。$ J: k4 Z" @! p& e" Q) u; C( ?% ^
使用方法:你点中零件,按快捷键就好了
3 a. Q) K- X( S

点评

感谢,您说的是从选中的零部件创建工程图的快捷键。我要的是从选中的零部件打开既有工程图的快捷键, 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 | 显示全部楼层
零件和工程图并不是一一对应的* X# m3 A6 X+ [- _0 M( l$ A
为啥,有配置,有出图的特殊需要
) O8 Z' s5 Y$ VA零件可以对应工程图B,C,D。。。, t6 W% s/ R. r' e( J0 X

  b' C$ h. r4 z$ u所以,我觉得这个需求就不成立。。。

点评

这个要看个人习惯了。 有的人不采用配置的做法;有的人采用配置,但不同配置的工程图都放在一个工程图文件里,也就是都和文件名关联;有的人就不是这样。即使是最后一种情况,有这个快捷键也好的多,前两种习惯更..   发表于 2022-1-28 16:40
发表于 2022-1-28 21:02:17 | 显示全部楼层
感谢楼主分享,学习了
发表于 2022-11-2 11:26:27 | 显示全部楼层
zhufeng_hgp 发表于 2022-1-26 23:08; k1 t3 ?. X! O6 N5 ^
这个功能正如2楼说得那样,把打开工程图这个命令设置成快捷键就能实现的
7 s* K! R( q# a5 j. f" }6 `! \
你好,请问你这个是从装配体选择零件,然后打开工程图的吗?如果是可以的也帮我发一下吧,谢谢!1142163586@qq.com
; Q; D1 v- g7 q
发表于 2022-11-3 08:49:26 | 显示全部楼层
已学习,多谢!
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-21 11:45 , Processed in 0.069228 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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