机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: steve_suich

模型改名同时改工程图

[复制链接]
发表于 2024-9-25 21:43:59 | 显示全部楼层
楼主你好!我按着你给的代码宏运行了还是有问题呢   运行报错
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-26 10:27:40 | 显示全部楼层
cszhouhx01 发表于 2024-9-25 21:439 X: n  z/ m2 [# J
楼主你好!我按着你给的代码宏运行了还是有问题呢   运行报错
+ a* ~5 q  |! r: q$ d' v
提供一下你的宏,我检查一下$ L  K+ h# H$ G8 {; k; g0 d/ x
& C9 o2 |$ R, Q" k/ k
回复 支持 反对

使用道具 举报

发表于 2024-9-27 21:36:48 | 显示全部楼层

3 r3 e# q# p. q( u0 H4 WDim swApp As Object
- }" k+ H  l) D' f6 ?+ \5 ~Dim Part As Object
8 h9 ~3 q  C% J9 f6 s" gSub main()( d; Q1 b; F0 ?# l- {8 I4 S% h* O, n7 q& C7 F
Set swApp = Application.SldWorks* m7 T  q  Y' \
Set Part = swApp.ActiveDoc4 t2 a3 y3 ~0 J9 @
3 r8 I; N9 [# M& T0 f7 gSet swSelMgr = Part.SelectionManager
; y$ m/ X# i5 J4 W" r* Z: A( C* Q# D9 M* nSet swComp = swSelMgr.GetSelectedObject(1)! D. @) D9 Z1 O4 s% c* v; \9 x0 b' Z7 B. v0 t8 E
oldpathname = swComp.GetPathName! t: i  S9 z% v% S$ R$ _# x' ]& R% A3 y5 `5 o) Q9 d
Path = Left(oldpathname, InStrRev(oldpathname, "\"))" O' E3 A, s7 A2 K4 Q% h0 Z( i
ntype = Mid(oldpathname, InStrRev(oldpathname, ".")): f% I; o3 ^. B# V/ i  N- Y( I5 s
4 k+ h& b3 O' V$ ~# xoldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1)& _! r& R0 n4 o" e( [7 w6 p# f" F2 f: f
oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)2 d! N5 r1 [/ I# B  M" H6 j
3 @. ~0 Q$ M# \1 V" E# O- c9 \     mip = InputBox("changename", "name", oldname)$ e* \5 I$ z- t; B" w! f6 A4 j8 ?9 y7 t- V
If mip <> "" Then
3 I, x& r, g, R, V$ B3 D  Part.Extension.RenameDocument mip8 b: X. F' n' y  w* O& G* U9 A% y7 }% ?" S, b( `" G
  Part.Save
6 G/ s, E* t; ]; L' h( P2 o" G  tmpfi = Dir(Path & "*.SLDDRW")
, g3 i  o5 q3 H3 D8 S8 J  Do Until tmpfi = ""- v4 j; l6 {8 v9 h# M5 [  F6 ?: Y5 X2 I7 g8 m
    vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)
- f3 f3 o- |( d+ R2 e    If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then% I+ Y3 @) [4 D" ]
6 q, F8 M2 e1 Y% C     Name Path & tmpfi As Path & mip & ".SLDDRW"
+ X! ^+ [( B6 g- ?: l    bl = swApp.ReplaceReferencedDocument(Path & mip & ".SLDDRW", vDepend(1), Path & mip & ntype)9 s+ K- S$ t8 i9 a& j' E0 B4 o2 @% w$ {% C  L. C* D+ B* R
     Exit Do
$ I1 d7 v2 x% p; t3 E   End If
: i6 \" G4 ]5 n  k. q8 O* [6 Atmpfi = Dir* @: D+ V& b  H3 |; B- e* x5 D1 D; L/ x0 `, T
Loop
; |8 B7 L5 X( vEnd If  @/ K' \6 k  [/ y
4 C1 h+ D& \6 `$ x% J* }5 WEnd Sub2
* x  V5 }5 W) [" R) _7 v& N2 W  p

  c+ ?- X3 V" F5 w你好   我就是按你这提供的代码写的宏

点评

先确认一下工程图里面有没有视图,如果没有,那么会报错。  发表于 2024-9-30 10:15
回复 支持 反对

使用道具 举报

发表于 2024-9-29 08:56:31 | 显示全部楼层
怎么讲
. E" i) r5 W% x( A( Q3 e7 ~8 W
* s. K1 R2 ]* v9 |  b5 I
回复

使用道具 举报

 楼主| 发表于 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. ^+ H4 ~! k/ A# l1 Z& x
Dim swApp As Object
! b8 k+ Y- ]! z8 H' C: TDim Part As Object
2 o; s* D, l4 l" \* m! HSub main()( d; Q1 b; F0 ?# l- {

/ q: [; v4 y% P) s% b/ w$ B. JIf Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then  缺少"\"+ k/ j, I% m4 {5 l( ^% n& a
正确的应该是If Mid(vDepend(1), InStrRev(vDepend(1), "\") + 1) = oldfi Then& h0 B4 D$ V6 I
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 11:16 , Processed in 0.046105 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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