找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
楼主: steve_suich

模型改名同时改工程图

[复制链接]
发表于 2024-9-25 21:43:59 | 显示全部楼层
楼主你好!我按着你给的代码宏运行了还是有问题呢   运行报错
 楼主| 发表于 2024-9-26 10:27:40 | 显示全部楼层
cszhouhx01 发表于 2024-9-25 21:43
7 B2 o. w0 q. Q+ d7 J- P楼主你好!我按着你给的代码宏运行了还是有问题呢   运行报错
; Z* i/ |( t+ o: ?* y. @! F& l
提供一下你的宏,我检查一下
. z  \4 g9 u2 q& z# f' i! U  u( X; F# y* I7 A) S
发表于 2024-9-27 21:36:48 | 显示全部楼层
2 z+ K1 ]  U' z
Dim swApp As Object& C+ o' E! _( W4 H0 L7 v
Dim Part As Object
" F' r: w8 s9 ?) f! g/ NSub main()( d; Q1 b; F0 ?# l- {
4 g- c+ A8 \3 v, t7 YSet swApp = Application.SldWorks
! X# ?+ Z4 m2 L) Z" V2 ASet Part = swApp.ActiveDoc4 t2 a3 y3 ~0 J9 @
  B1 x: J0 Z7 K# ^Set swSelMgr = Part.SelectionManager
$ w* [3 X, {. R1 c' L: OSet swComp = swSelMgr.GetSelectedObject(1)! D. @) D9 Z1 O4 s% c
9 [1 t. I; b: W* z+ roldpathname = swComp.GetPathName! t: i  S9 z% v% S$ R$ _# x
  Z# E5 F6 f3 uPath = Left(oldpathname, InStrRev(oldpathname, "\"))( N9 F: B* ?( {& m3 e( V
ntype = Mid(oldpathname, InStrRev(oldpathname, ".")): f% I; o3 ^. B# V/ i  N- Y( I5 s
! u) H- {' _( ]' g& }, ooldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1)& _! r& R0 n4 o; R. C1 [( p7 I7 H0 i& ]
oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)2 d! N5 r1 [/ I# B  M" H6 j
; O& O  ^3 I8 {     mip = InputBox("changename", "name", oldname)$ e* \5 I$ z- t; B" w
: u) t. a% q7 d$ g; ?If mip <> "" Then
0 D3 n5 F. j, x& ]1 Y  Part.Extension.RenameDocument mip8 b: X. F' n' y  w
2 S' W) l" N  M* Q4 M# }# v: j) X+ p  Part.Save
5 u9 f* S, }, n' _. u/ a  tmpfi = Dir(Path & "*.SLDDRW")% E7 C, c& `# o  A; \5 n
  Do Until tmpfi = ""- v4 j; l6 {8 v9 h# M5 [$ f. b5 m% h8 k3 [9 p
    vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)
1 [  @' V, I. ^+ u. Z# \    If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then% I+ Y3 @) [4 D" ]
3 q$ [8 J6 l7 H, O2 \     Name Path & tmpfi As Path & mip & ".SLDDRW"
! `: P1 C2 x: G% \/ d& O2 f( G    bl = swApp.ReplaceReferencedDocument(Path & mip & ".SLDDRW", vDepend(1), Path & mip & ntype)9 s+ K- S$ t8 i9 a& j' E0 B4 o2 @% w$ [1 z& ]0 A( d3 {3 |# G8 j  B
     Exit Do
4 U; b6 W- g( S   End If/ z7 B3 \5 q7 }+ S  s! W' q
tmpfi = Dir* @: D+ V& b  H3 |; B# I3 X* G+ d4 |* k6 v% Y# z. E
Loop% v& o+ J# G8 X2 V
End If  @/ K' \6 k  [/ y
3 C3 D2 j2 u# s- OEnd Sub2  \$ K- r1 F% P
& E! m' }- r& Z. b( U
. O' [  d% |- t! ~! o; o& V
你好   我就是按你这提供的代码写的宏

点评

先确认一下工程图里面有没有视图,如果没有,那么会报错。  发表于 2024-9-30 10:15
发表于 2024-9-29 08:56:31 | 显示全部楼层
怎么讲( G& g4 p7 r& v! o8 X9 j

) F, }9 w; m( H$ Z# o% j
回复

使用道具 举报

 楼主| 发表于 2024-9-30 09:49:00 | 显示全部楼层
这个宏代码确实有点奇怪,同样的代码在不同的电脑上运行有的可以,有的不行。SW版本都是2016,不好排查原因了。
 楼主| 发表于 2024-9-30 10:14:20 | 显示全部楼层
发现一个问题,如果工程图里面没有参考任何模型。那么这个代码vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)就会报错。
 楼主| 发表于 2024-9-30 10:38:51 | 显示全部楼层
cszhouhx01 发表于 2024-9-27 21:36
: p* I/ N/ L7 X/ _! C1 nDim swApp As Object0 a1 z/ a* i, e8 n1 i" Q
Dim Part As Object" Z# o' z( B* I/ m
Sub main()( d; Q1 b; F0 ?# l- {
5 F" r& W( R3 d4 r
If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then  缺少"\"4 Y9 u. H8 m5 x2 }8 \+ j# k. O( @$ N
正确的应该是If Mid(vDepend(1), InStrRev(vDepend(1), "\") + 1) = oldfi Then( }$ p6 @6 b: Z! q
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-6-17 07:51 , Processed in 0.059717 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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