找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
楼主: steve_suich

模型改名同时改工程图

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

2 Y  o: f; y5 O) J提供一下你的宏,我检查一下5 c: w5 u/ J0 I( x: `" {- t7 B4 ]

4 o* `# c0 J( e% N6 w
发表于 2024-9-27 21:36:48 | 显示全部楼层
6 \8 c6 \: v6 P7 ?+ N' ~
Dim swApp As Object
  v: J5 b. A' m$ V1 ?) V6 n3 D, [7 _Dim Part As Object! M+ b9 I! p3 C9 O
Sub main()( d; Q1 b; F0 ?# l- {3 Y% ?& I  ]4 v6 F7 T! @. m
Set swApp = Application.SldWorks
, F1 M" f/ g, T& _% V9 F" USet Part = swApp.ActiveDoc4 t2 a3 y3 ~0 J9 @$ g6 z. c2 ~9 k. V9 u- ]& Y, Z( a
Set swSelMgr = Part.SelectionManager- [/ i8 c% D: t: Y1 \" a, D
Set swComp = swSelMgr.GetSelectedObject(1)! D. @) D9 Z1 O4 s% c5 ~9 n- U! M0 ~, _; g  c& j* q
oldpathname = swComp.GetPathName! t: i  S9 z% v% S$ R$ _# x
/ y! r8 i) W, a; Y0 j5 z- i( @Path = Left(oldpathname, InStrRev(oldpathname, "\"))
" q0 t0 H% @6 S9 h) \  cntype = Mid(oldpathname, InStrRev(oldpathname, ".")): f% I; o3 ^. B# V/ i  N- Y( I5 s
! h  g0 ]" @7 t5 K7 ?4 Uoldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1)& _! r& R0 n4 o( b/ [; E" L/ ^* {
oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)2 d! N5 r1 [/ I# B  M" H6 j
( y4 \+ I( }" T0 R     mip = InputBox("changename", "name", oldname)$ e* \5 I$ z- t; B" w
% t6 u0 j6 X2 @* y2 J- {( HIf mip <> "" Then
$ K: m3 Y, y4 y% L# L0 y  Part.Extension.RenameDocument mip8 b: X. F' n' y  w
: h& f* r6 o% s4 P' w* O  Part.Save
0 D  m5 G, g, T! z# U! g% P: ~  tmpfi = Dir(Path & "*.SLDDRW")8 h; _# C( I- X! R/ L; B! P' ]
  Do Until tmpfi = ""- v4 j; l6 {8 v9 h# M5 [
, q0 k" o& e; L2 I6 W    vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)
& d& K$ \0 ^9 M3 z    If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then% I+ Y3 @) [4 D" ]
1 J: i9 U: H7 N) I- D2 @     Name Path & tmpfi As Path & mip & ".SLDDRW"
4 M$ y) a/ B5 W9 s: X4 _    bl = swApp.ReplaceReferencedDocument(Path & mip & ".SLDDRW", vDepend(1), Path & mip & ntype)9 s+ K- S$ t8 i9 a& j' E0 B4 o2 @% w0 {% ^! x1 W( A: [2 d0 {
     Exit Do
5 D/ l$ _; j# G6 R   End If! M: c- W/ t6 V6 k9 V7 z( @
tmpfi = Dir* @: D+ V& b  H3 |; B
: W8 g; [4 y8 d' Y/ C; L4 O1 k/ tLoop+ c( f# U5 `0 l7 S- N
End If  @/ K' \6 k  [/ y
0 w- Y$ g0 j+ j( s$ }End Sub2
, i1 z. o" M! C0 x" o: D  g, v% }: K* F8 o6 M

$ p0 @' X1 B: C3 k+ ^% m! V' I5 D你好   我就是按你这提供的代码写的宏

点评

先确认一下工程图里面有没有视图,如果没有,那么会报错。  发表于 2024-9-30 10:15
发表于 2024-9-29 08:56:31 | 显示全部楼层
怎么讲
$ l; P. y  F3 t+ x/ Q
7 b4 D" E3 @# p. K  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
1 S" ]6 y+ `% a( j, SDim swApp As Object
* q/ R# Y, V* B1 }0 D! b. y+ ?8 j( LDim Part As Object( I$ S# g7 @8 ~( V! C* a: q- r
Sub main()( d; Q1 b; F0 ?# l- {
/ c( \  N; z* x. l+ p
If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then  缺少"\"$ c) C3 J( e& R7 I
正确的应该是If Mid(vDepend(1), InStrRev(vDepend(1), "\") + 1) = oldfi Then
8 g4 V; M8 d3 S, X% u" c" x1 @
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-19 10:23 , Processed in 0.061813 second(s), 13 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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