机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 7399|回复: 14

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

[复制链接]
发表于 2022-1-26 18:12:06 | 显示全部楼层 |阅读模式
各位大侠:4 s5 F/ ^) u9 R; t
     想录个宏、设置成快捷键,实现无论在模型窗口选中零件的面、或在左侧区域(commandmanager区域)选中零件或装配体,再按快捷键,即可打开相应的工程图。实现此功能需先做个宏。可是不太成功。问题是:
- W4 K1 ^, D: J, J, A6 J1、报错;1 O' ]* l. A  m
2、宏里指定了零部件的名称,导致只能打开创建宏时的零件工程图。
4 ~0 C0 g. Z/ H- f" \
0 M/ _0 C6 A% K$ N6 g+ \哪位高手能否指点下该如何修改这个宏?非常感谢!
* a2 x( i: m- W4 u$ h

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2022-1-26 19:14:05 | 显示全部楼层
改了一下,此附件不在报错,但是打开的是创建宏时的工程图,依然不行。4 ~2 W9 Y3 s# f
再改了一下,见下,启动宏没反应,也不报错,这个是SW2020的版本的宏
4 k3 E$ U& X# NDim swApp As Object
6 W- [2 \3 y3 r+ X
6 u& d( ]. t! _7 [9 t8 bDim Part As Object
0 b# n. c& i. H7 V/ m2 {) TDim boolstatus As Boolean& @$ e5 t  v5 e% y& G
Dim longstatus As Long, longwarnings As Long
& h# n1 @1 l8 r2 w! x/ T! J' C5 ^" G5 n, S
Sub main()
. C/ [2 o% A# @: R/ j$ B5 i& ^, @- ]+ u# {  g* m
Set swApp = Application.SldWorks! F! |4 ^0 ?6 P( n6 k0 N  g

0 u: k+ |2 x/ X4 o9 i7 X% dSet Part = swApp.ActiveDoc) r& I/ D% f% R8 E
Dim COSMOSWORKSObj As Object8 `# v5 Z! c0 F: Y$ Q4 q9 F) K
Dim CWAddinCallBackObj As Object
9 ^! l# @5 A2 J& U9 j7 ^: _2 hSet CWAddinCallBackObj = swApp.GetAddInObject("CosmosWorks.CosmosWorks")* v; h0 Q9 u, H+ c' @
Set COSMOSWORKSObj = CWAddinCallBackObj.COSMOSWORKS. E# b$ F' ~1 Z+ C. b' Z; R/ L& f
boolstatus = Part.Extension.SelectByID2("B111 PLT-1@B000  AAA", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
- i4 c0 i. \4 E1 [$ V6 t! m
: \" ~& e7 E2 F" e: s5 X' Open
5 c6 ~4 X0 q% V8 m1 BSet Part = swApp.OpenDoc6("C:\Users\COMPASSION\Desktop\宏\B111 PLT.SLDDRW", 3, 0, "", longstatus, longwarnings)& i& {2 s6 O  ]- L, a% I' G# \5 p
Dim swDrawing As DrawingDoc% {. ?" N5 n2 x  u- |$ M  k2 ]4 M
Set swDrawing = Part
% `2 X6 g+ [" C* VSet Part = swApp.ActiveDoc
+ E" U) O' V" I" VDim myModelView As Object* T0 f- O6 J* H5 a
Set myModelView = Part.ActiveView" Q) e- B, c; A5 D+ {* x
myModelView.FrameLeft = 0
+ }  d6 I  V3 c5 o! Y2 |4 n( I' QmyModelView.FrameTop = 0
. U* [8 Z. A! ZSet myModelView = Part.ActiveView9 B% c: S. r7 \+ V* u/ j
myModelView.FrameState = swWindowState_e.swWindowMaximized
' t* d+ |) f5 C8 {, HswApp.ActivateDoc2 "B111 PLT - 图纸1", False, longstatus
. M3 Z5 C5 O! B" T: eSet Part = swApp.ActiveDoc
/ l/ `3 a0 y* C, i
) @' y+ g; q0 S$ z- q7 x7 n' Redraw
4 u( ?" |/ v) U: RPart.GraphicsRedraw27 Y: b5 V& q1 l. u9 G, x3 ?& Q
Set myModelView = Part.ActiveView
/ D$ k9 K, S" ]7 [! w( O. V2 F  vmyModelView.FrameState = swWindowState_e.swWindowMaximized# q8 Q4 s4 S) ^- H: |9 j1 E
Set CWAddinCallBackObj = Nothing3 v. u6 E$ O8 u
Set COSMOSWORKSObj = Nothing* C% T& g2 I* @* R$ G! m2 n
End Sub
2 `2 n! i- n/ H* T8 r8 T. }+ X6 E

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-26 19:16:55 | 显示全部楼层
这个是SW2016的版本的宏,就差一步就成功了,就是如何从被选的零部件获得文件名。' n* {- a& W- B' `( A& Y
Dim swApp As Object
0 @9 f' p( X- Z$ c3 X" D$ m, RDim Part As Object
" H. ~; F: W9 x5 y7 W- `9 yDim boolstatus As Boolean, I. c% V& O4 @5 t7 `. n) {
Dim longstatus As Long, longwarnings As Long8 H/ D& a' F$ h/ o, E, ]4 @
Dim Filename As String
6 G, p: g3 V- A9 DDim No As Integer
8 B* M) l, Z0 ]) }Dim Title As String' i8 u, h% U7 g

8 `! L8 e7 e, |# n& m6 ^: @0 s
/ ]1 }5 w$ h/ u2 ~Sub main()
' Z% x) \  q- R  L6 h
- ]  P! H( K1 u& _Set swApp = Application.SldWorks
5 G' K2 @, E& p+ {3 PSet Part = swApp.ActiveDoc
9 _. j4 L' S1 O6 e8 }boolstatus = Part.Extension.SelectByID2("Part", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)+ [, @# L& R) U- P
Set Part = Part.Extension.SelectByID2("Part", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
" y% O/ l* s7 N8 XFilename = Part.GetPathName()
' J% Q( j& q% d5 f' N2 {No = Len(Filename)
9 x1 H& e6 e) r$ X& OFilename = Left(Filename, No - 7): ?9 u5 k  j; p  {4 v

- L6 K) [- \# ]4 A" D: u# y% USet Part = swApp.OpenDoc6(Filename & ".SLDDRW", 3, 0, "", longstatus, longwarnings)
2 B$ r/ X. c( U" e* zSet Part = swApp.ActiveDoc0 L: K% T6 F) ~5 \' X7 _6 S
Dim myModelView As Object5 V4 ?( B- r9 V5 s( O6 _0 ^- z
Set myModelView = Part.ActiveView
! E# _, w/ K1 q8 C7 tmyModelView.FrameLeft = 0/ Q% @! I4 Y; q9 |: d
myModelView.FrameTop = 0! E: F( N, y/ p# H; C# }2 h: l1 n
Set myModelView = Part.ActiveView5 Q7 L' x5 J5 P9 Q
myModelView.FrameState = swWindowState_e.swWindowMaximized
2 r. z* `5 b3 ~2 E5 c4 ]Set Part = swApp.ActiveDoc1 O% b+ l3 E& q
Set myModelView = Part.ActiveView
" ~! W  N' K# U/ e2 N: I" u" NmyModelView.FrameState = swWindowState_e.swWindowMaximized& k8 j1 ]: [# i6 X8 A4 b5 f0 r
End Sub

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2022-1-26 22:21:22 | 显示全部楼层
矫情,有个词叫“快捷键”,操作:你把”从零件/装配体到工程图“设置一个快捷键,比如Ctrl+1。
5 i" v+ T. ~5 u' U1 T( o2 t使用方法:你点中零件,按快捷键就好了
% [( J) }0 V9 n" c" K

点评

感谢,您说的是从选中的零部件创建工程图的快捷键。我要的是从选中的零部件打开既有工程图的快捷键, 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 | 显示全部楼层
零件和工程图并不是一一对应的
, ~/ d1 ?3 G5 R为啥,有配置,有出图的特殊需要
, Y" o6 e) w4 x. h/ {5 vA零件可以对应工程图B,C,D。。。
1 G. A/ d3 s  }' l: ^
4 w6 t/ X, w+ ?! F7 n" l所以,我觉得这个需求就不成立。。。

点评

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

使用道具 举报

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

使用道具 举报

发表于 2022-11-2 11:26:27 | 显示全部楼层
zhufeng_hgp 发表于 2022-1-26 23:08
7 L$ Z: l" C* c这个功能正如2楼说得那样,把打开工程图这个命令设置成快捷键就能实现的
' s. I  W/ @+ l( t5 Q
你好,请问你这个是从装配体选择零件,然后打开工程图的吗?如果是可以的也帮我发一下吧,谢谢!1142163586@qq.com
' E6 h+ U- n: Z: C, K
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-25 09:18 , Processed in 0.078164 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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