找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
楼主: steve_suich

模型改名同时改工程图

  [复制链接]
发表于 2024-9-25 21:43:59 | 显示全部楼层
楼主你好!我按着你给的代码宏运行了还是有问题呢   运行报错
 楼主| 发表于 2024-9-26 10:27:40 | 显示全部楼层
cszhouhx01 发表于 2024-9-25 21:43
1 P4 Y+ k4 C4 Z/ X2 `& k% R楼主你好!我按着你给的代码宏运行了还是有问题呢   运行报错

! V  u$ q6 |" q. ]% \+ y; ?提供一下你的宏,我检查一下9 k6 f( D+ V* k. A* `% b, l

. W, z' o% p8 W( c2 c
发表于 2024-9-27 21:36:48 | 显示全部楼层

; ]! q( D; k& e7 E' y2 U! pDim swApp As Object0 T. e- e8 e6 v0 y- {" E5 I
Dim Part As Object
- v# I8 e+ B  o/ R0 \. @, H% PSub main()( d; Q1 b; F0 ?# l- {9 J- x, p, E6 F7 O+ q) k$ w
Set swApp = Application.SldWorks% {. E, m! U: R# Q6 c1 g, |
Set Part = swApp.ActiveDoc4 t2 a3 y3 ~0 J9 @7 R5 Y& o/ e$ Q3 y9 S9 W; ~. w
Set swSelMgr = Part.SelectionManager8 v- n9 B' n% {! x9 F. c
Set swComp = swSelMgr.GetSelectedObject(1)! D. @) D9 Z1 O4 s% c: y+ J% ^( s: d. N0 c' s% E
oldpathname = swComp.GetPathName! t: i  S9 z% v% S$ R$ _# x4 G& c) ~0 N5 H0 ]5 X
Path = Left(oldpathname, InStrRev(oldpathname, "\")), n8 f- j: Q; [/ z  f0 P+ ~5 d
ntype = Mid(oldpathname, InStrRev(oldpathname, ".")): f% I; o3 ^. B# V/ i  N- Y( I5 s
' Y0 u5 I" G6 coldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1)& _! r& R0 n4 o" w4 X. F/ A1 R( X( `- F
oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)2 d! N5 r1 [/ I# B  M" H6 j
  d" U2 b% J0 D$ ^5 W+ c& C5 E     mip = InputBox("changename", "name", oldname)$ e* \5 I$ z- t; B" w$ G2 R  \8 y- n* A
If mip <> "" Then& s  c! }# T4 q& X- W( X
  Part.Extension.RenameDocument mip8 b: X. F' n' y  w+ h1 B, @+ t# L+ h. A- M
  Part.Save' R2 {, _. i- n3 i3 i1 S0 n
  tmpfi = Dir(Path & "*.SLDDRW")
% o7 A+ q2 D5 r) I  Do Until tmpfi = ""- v4 j; l6 {8 v9 h# M5 [% v0 F. d/ ^+ G' A2 W, R
    vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)" {$ a  k% @" q
    If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then% I+ Y3 @) [4 D" ]9 l+ T6 `3 x# }- J* ^9 Z, r
     Name Path & tmpfi As Path & mip & ".SLDDRW"" @# V; f$ Q0 |( r) r
    bl = swApp.ReplaceReferencedDocument(Path & mip & ".SLDDRW", vDepend(1), Path & mip & ntype)9 s+ K- S$ t8 i9 a& j' E0 B4 o2 @% w2 ^& Q1 P% k; M( b& d  k
     Exit Do
4 v& g6 V: U6 R* b$ U# }1 W4 F   End If
: g; l% m5 @, s: W: O: W1 {6 Y. O9 S; }tmpfi = Dir* @: D+ V& b  H3 |; B
. A- |3 G5 v. a* KLoop
3 @+ U+ j9 Y0 r3 e" xEnd If  @/ K' \6 k  [/ y2 j' L2 Z4 \4 _* n8 x% A
End Sub2: ~7 S, d1 H' _' X7 z

- X: F0 U* e5 U( C3 d- \/ }& u2 h! o+ R3 w4 B
你好   我就是按你这提供的代码写的宏

点评

先确认一下工程图里面有没有视图,如果没有,那么会报错。  发表于 2024-9-30 10:15
发表于 2024-9-29 08:56:31 | 显示全部楼层
怎么讲1 v3 T3 x( l9 o9 n$ K
" z' ~  {8 B: |! p& h
回复

使用道具 举报

 楼主| 发表于 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
+ q; H+ M5 K% q0 g1 x' E& z+ K/ [2 ^) XDim swApp As Object4 r* D/ r: u2 U) i, p" d% z
Dim Part As Object
& S2 v: E0 U+ t2 N4 RSub main()( d; Q1 b; F0 ?# l- {
8 b8 p" v0 l1 c3 l1 R
If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then  缺少"\"7 F# d) ~& [4 k/ l$ c
正确的应该是If Mid(vDepend(1), InStrRev(vDepend(1), "\") + 1) = oldfi Then
& k3 ]! s5 n; Y6 s7 l
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-10-21 03:49 , Processed in 0.068386 second(s), 13 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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