找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
楼主: steve_suich

模型改名同时改工程图

  [复制链接]
发表于 2024-9-25 21:43:59 | 显示全部楼层
楼主你好!我按着你给的代码宏运行了还是有问题呢   运行报错
 楼主| 发表于 2024-9-26 10:27:40 | 显示全部楼层
cszhouhx01 发表于 2024-9-25 21:43
+ F+ D0 [+ h: x楼主你好!我按着你给的代码宏运行了还是有问题呢   运行报错

. p7 }) x- {8 w8 e" p提供一下你的宏,我检查一下
$ Z" E1 e, U7 O% Z# t
( a7 t( D0 a# q
发表于 2024-9-27 21:36:48 | 显示全部楼层

- t# H+ y( K" a9 L8 Y5 l4 RDim swApp As Object. R! s2 |* ?2 _
Dim Part As Object
1 z6 I( n% l1 ^9 [8 ]+ ?+ {$ u6 LSub main()( d; Q1 b; F0 ?# l- {
) L& \- ?1 T1 T. |) a% ~Set swApp = Application.SldWorks, _9 Q4 T2 d/ {: t' A8 ~! _0 U
Set Part = swApp.ActiveDoc4 t2 a3 y3 ~0 J9 @$ b* `7 y, C- {5 _. w. F
Set swSelMgr = Part.SelectionManager- J! b( y4 U& C- w- h
Set swComp = swSelMgr.GetSelectedObject(1)! D. @) D9 Z1 O4 s% c8 j: r1 Y, m8 W$ i4 {7 {
oldpathname = swComp.GetPathName! t: i  S9 z% v% S$ R$ _# x0 d: r" R) m/ {% \
Path = Left(oldpathname, InStrRev(oldpathname, "\"))
+ c. F7 S' w3 [( W& ontype = Mid(oldpathname, InStrRev(oldpathname, ".")): f% I; o3 ^. B# V/ i  N- Y( I5 s. [2 m+ Z1 P. F+ O; @1 R
oldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1)& _! r& R0 n4 o
' H0 M+ w4 T7 Moldname = Left(oldfi, InStrRev(oldfi, ".") - 1)2 d! N5 r1 [/ I# B  M" H6 j
% q5 B5 Z6 k, N7 C8 ^     mip = InputBox("changename", "name", oldname)$ e* \5 I$ z- t; B" w
" Z0 e, h" q1 {% T" vIf mip <> "" Then
  |, B9 L9 L3 N( r: J5 g  Part.Extension.RenameDocument mip8 b: X. F' n' y  w
8 W- m* }) }. ]5 i( N% q  Part.Save& e" ?5 A" u1 M3 _
  tmpfi = Dir(Path & "*.SLDDRW")% x) s( t; a4 {+ f
  Do Until tmpfi = ""- v4 j; l6 {8 v9 h# M5 [" v5 J# h+ F4 V" x/ ~* C
    vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)
8 y7 L$ X5 S/ R# x5 w" F/ \    If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then% I+ Y3 @) [4 D" ]; {, c/ e# k. I/ m: }9 u4 u
     Name Path & tmpfi As Path & mip & ".SLDDRW"0 }* G; v/ @0 [; a) n  ]" R
    bl = swApp.ReplaceReferencedDocument(Path & mip & ".SLDDRW", vDepend(1), Path & mip & ntype)9 s+ K- S$ t8 i9 a& j' E0 B4 o2 @% w
) v6 I' x! ]- f: N     Exit Do& {! w5 L, U3 d1 V0 v# Z
   End If
6 N: j, _/ Y0 K1 I2 T& R. B- j: `tmpfi = Dir* @: D+ V& b  H3 |; B
/ h* m1 w& G% G: o, _$ GLoop  q) N( {2 `3 S' F' _
End If  @/ K' \6 k  [/ y
/ A4 y' y' {" X7 GEnd Sub2
5 Q, B, L8 C) L
* K6 W; H' `2 ]3 U8 E
4 u6 F- H- C+ _你好   我就是按你这提供的代码写的宏

点评

先确认一下工程图里面有没有视图,如果没有,那么会报错。  发表于 2024-9-30 10:15
发表于 2024-9-29 08:56:31 | 显示全部楼层
怎么讲& V& ?5 V' Y4 Y" r" E4 S
: p+ P0 B% [9 `& S6 p% L
回复

使用道具 举报

 楼主| 发表于 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
) s8 f, I* k! g! u! x" V! yDim swApp As Object
  m+ f+ Z0 U* Z- XDim Part As Object
2 G* [6 Y& p6 D1 m# m% MSub main()( d; Q1 b; F0 ?# l- {

4 i, H/ U/ T2 r2 iIf Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then  缺少"\": s% T5 _7 T# f8 U5 m# H' Q. c
正确的应该是If Mid(vDepend(1), InStrRev(vDepend(1), "\") + 1) = oldfi Then
% B3 e- }3 m. ]8 \2 w5 \$ ~$ o9 C
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-20 03:05 , Processed in 0.080719 second(s), 13 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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