找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
楼主: steve_suich

模型改名同时改工程图

[复制链接]
发表于 2024-9-25 21:43:59 | 显示全部楼层
楼主你好!我按着你给的代码宏运行了还是有问题呢   运行报错
 楼主| 发表于 2024-9-26 10:27:40 | 显示全部楼层
cszhouhx01 发表于 2024-9-25 21:438 y. H, o( R% t. O. R
楼主你好!我按着你给的代码宏运行了还是有问题呢   运行报错

' B8 ?/ u6 F- L  W! [% R提供一下你的宏,我检查一下
% u. P- g6 g5 w2 J2 i( {
8 H1 b& H% T8 g$ y: E7 N2 v& e
发表于 2024-9-27 21:36:48 | 显示全部楼层
3 K. h, E, B2 g9 K) Q( K) z  J
Dim swApp As Object2 m4 v% ?4 J3 w6 a
Dim Part As Object
- L# \( |; G( }" WSub main()( d; Q1 b; F0 ?# l- {
; }. D9 a3 i5 a/ QSet swApp = Application.SldWorks" i. A- f4 b. A% t5 y6 p2 \# C6 r2 B* b
Set Part = swApp.ActiveDoc4 t2 a3 y3 ~0 J9 @
) ?. H* h& _6 l7 f: }+ CSet swSelMgr = Part.SelectionManager
" T2 Z; N+ [* K3 w1 XSet swComp = swSelMgr.GetSelectedObject(1)! D. @) D9 Z1 O4 s% c* N" L- \8 J* Y$ b0 d7 W
oldpathname = swComp.GetPathName! t: i  S9 z% v% S$ R$ _# x
2 ^2 J4 E& t9 o4 f& l" ]Path = Left(oldpathname, InStrRev(oldpathname, "\"))& z) q# r  c: T6 J% f- P
ntype = Mid(oldpathname, InStrRev(oldpathname, ".")): f% I; o3 ^. B# V/ i  N- Y( I5 s" P: t3 I' I' n% `9 Y% F
oldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1)& _! r& R0 n4 o) p9 |$ Q  G; V% _
oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)2 d! N5 r1 [/ I# B  M" H6 j- S3 O! b1 ]1 n# C% u! g" x, K% P2 x
     mip = InputBox("changename", "name", oldname)$ e* \5 I$ z- t; B" w; s/ u, x! O; r# \# e) o
If mip <> "" Then
+ C8 Z1 v( Z  @. t$ ~  Part.Extension.RenameDocument mip8 b: X. F' n' y  w
3 o6 N! N1 N) R" [0 ^, a3 H' p$ q  Part.Save
9 L  o) m1 m, J" l+ M! Q3 N  tmpfi = Dir(Path & "*.SLDDRW")$ M% a2 m8 V5 X/ u# k6 _! t& A
  Do Until tmpfi = ""- v4 j; l6 {8 v9 h# M5 [
4 }' I+ u6 Q- u5 ^1 I: |3 t. E. W    vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)
5 N2 }/ G3 i2 q5 O4 g. \2 R8 ^    If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then% I+ Y3 @) [4 D" ]
0 ~  w' N- ?. w1 B9 H     Name Path & tmpfi As Path & mip & ".SLDDRW"3 d% a& |4 D5 z' G& ~
    bl = swApp.ReplaceReferencedDocument(Path & mip & ".SLDDRW", vDepend(1), Path & mip & ntype)9 s+ K- S$ t8 i9 a& j' E0 B4 o2 @% w
2 d, M3 K. D8 \" @/ [2 S4 s     Exit Do
9 X/ N. s1 g0 m2 Y# k9 @* p   End If) T, U. q+ [7 G$ Y6 R. R, t# [; r
tmpfi = Dir* @: D+ V& b  H3 |; B4 |4 r5 x! R; ]# l; M# M
Loop. l. u' t8 j* Y8 ]- q4 o
End If  @/ K' \6 k  [/ y$ P  a% j4 o4 s( `: W
End Sub2
& D  H5 c4 d. x9 U9 z3 ^8 q4 w% G" ^1 _( T7 q2 F

5 k7 R) g& |  k1 ?5 ~: O! t1 ~你好   我就是按你这提供的代码写的宏

点评

先确认一下工程图里面有没有视图,如果没有,那么会报错。  发表于 2024-9-30 10:15
发表于 2024-9-29 08:56:31 | 显示全部楼层
怎么讲
2 p! b8 v% x% S4 ?, U/ I5 b6 {% g
回复

使用道具 举报

 楼主| 发表于 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
5 `4 Y% n$ W9 m0 R6 d2 JDim swApp As Object# x& T$ B. r! k. O. |
Dim Part As Object
  g8 T. r& a; O0 K* \! ASub main()( d; Q1 b; F0 ?# l- {
' W2 Q& P. N) m
If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then  缺少"\"/ `" v! j0 o  _$ E# P2 N
正确的应该是If Mid(vDepend(1), InStrRev(vDepend(1), "\") + 1) = oldfi Then
* b$ h, j! B/ i% `* l9 Y( g
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-8-2 19:09 , Processed in 0.073809 second(s), 13 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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