机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

模型改名同时改工程图

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

使用道具 举报

 楼主| 发表于 2024-9-26 10:27:40 | 显示全部楼层
cszhouhx01 发表于 2024-9-25 21:43/ g9 E% d& P! L
楼主你好!我按着你给的代码宏运行了还是有问题呢   运行报错

1 q; Y5 \: k( R4 x6 E) C$ G提供一下你的宏,我检查一下: c, M" C+ z; p! ]9 f9 T4 B0 g- x, j

* h0 A" y8 ~3 V0 N, A* y  P
回复 支持 反对

使用道具 举报

发表于 2024-9-27 21:36:48 | 显示全部楼层
: Y- H* C# c+ }- H4 f" u
Dim swApp As Object+ |  A7 y$ K. n* g2 c1 Q. l' n
Dim Part As Object! z0 y: U7 b; P% f
Sub main()( d; Q1 b; F0 ?# l- {
# @0 y8 {3 w  J/ Q# wSet swApp = Application.SldWorks  t" N, i2 T' m1 @% ~" c- @' W
Set Part = swApp.ActiveDoc4 t2 a3 y3 ~0 J9 @
& m* f4 m+ O$ n- ^Set swSelMgr = Part.SelectionManager
7 l. o# F9 ^/ ?Set swComp = swSelMgr.GetSelectedObject(1)! D. @) D9 Z1 O4 s% c
9 T& }+ h& V) R9 holdpathname = swComp.GetPathName! t: i  S9 z% v% S$ R$ _# x
+ G% X$ V7 f+ h2 xPath = Left(oldpathname, InStrRev(oldpathname, "\"))
8 v3 R8 i! M- V+ w+ Q7 f. J- z5 ?2 W3 D: Sntype = Mid(oldpathname, InStrRev(oldpathname, ".")): f% I; o3 ^. B# V/ i  N- Y( I5 s
& t  z/ K/ ~2 M, coldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1)& _! r& R0 n4 o% L+ f6 O4 ~! ]' t) ^- t
oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)2 d! N5 r1 [/ I# B  M" H6 j! L, i& D; K# v% ?0 \: V
     mip = InputBox("changename", "name", oldname)$ e* \5 I$ z- t; B" w/ i# P3 ]/ Q: ]$ u
If mip <> "" Then2 @; A( v# X  L1 K
  Part.Extension.RenameDocument mip8 b: X. F' n' y  w
$ u+ c1 @0 p. b: U- P  Part.Save
0 i$ e7 u2 A/ B( f  tmpfi = Dir(Path & "*.SLDDRW")# B0 x4 V& j' G- H+ L
  Do Until tmpfi = ""- v4 j; l6 {8 v9 h# M5 [
& U2 X2 `9 K: Z; T7 I$ a    vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)
. C/ n( |' d: c    If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then% I+ Y3 @) [4 D" ]
" }- L+ E1 H; F8 w: _     Name Path & tmpfi As Path & mip & ".SLDDRW"3 X  g) c) \% K
    bl = swApp.ReplaceReferencedDocument(Path & mip & ".SLDDRW", vDepend(1), Path & mip & ntype)9 s+ K- S$ t8 i9 a& j' E0 B4 o2 @% w) y3 s# w3 a. O5 E7 x: d- I$ o
     Exit Do
% a" R0 b2 s4 ^* l3 v2 l   End If; i: v! K( A# ?8 [
tmpfi = Dir* @: D+ V& b  H3 |; B+ J* }& P) r, B8 a  `& }  H) u0 |/ `
Loop
! c1 d7 J0 v- p+ A, AEnd If  @/ K' \6 k  [/ y
5 D3 X5 l7 _# T0 ]End Sub2
3 U& y& @; ?8 r! N- ^, L
5 z6 g0 G8 S+ X6 _6 k( ?5 C1 v6 M  `* V( S
你好   我就是按你这提供的代码写的宏

点评

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

使用道具 举报

发表于 2024-9-29 08:56:31 | 显示全部楼层
怎么讲. X1 U' D1 ^+ d% y8 u6 Z# N$ V
. _6 G( ]8 x( u  {; Z: w
回复

使用道具 举报

 楼主| 发表于 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/ g6 W% d: E: S
Dim swApp As Object4 p" D! W1 n. S) |
Dim Part As Object) A) N' j1 c+ x: s* j, r1 ^
Sub main()( d; Q1 b; F0 ?# l- {
$ e: K  \, p$ r6 I
If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then  缺少"\") p- j  c/ ^6 u/ y* Y0 s2 T
正确的应该是If Mid(vDepend(1), InStrRev(vDepend(1), "\") + 1) = oldfi Then
9 l6 I3 n' X! F1 s3 J
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-21 01:31 , Processed in 0.060395 second(s), 13 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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