机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: steve_suich
打印 上一主题 下一主题

模型改名同时改工程图

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

使用道具 举报

22#
 楼主| 发表于 2024-9-26 10:27:40 | 只看该作者
cszhouhx01 发表于 2024-9-25 21:43
2 X0 A9 `& Q  M- N: ~) c( t  g+ S楼主你好!我按着你给的代码宏运行了还是有问题呢   运行报错

6 U- r# I% `5 f1 A2 Q2 }提供一下你的宏,我检查一下% }: T- I4 I' d9 \

/ D* Y5 }2 C; y/ B0 r2 B/ ^! j4 a
回复 支持 反对

使用道具 举报

23#
发表于 2024-9-27 21:36:48 | 只看该作者

  h! [3 e  N! b! F/ HDim swApp As Object
- N9 V7 z6 c# W0 {! t& |+ MDim Part As Object
0 N: q) [# s4 ~" mSub main()( d; Q1 b; F0 ?# l- {, N/ {! x1 e! H' I
Set swApp = Application.SldWorks0 K$ L, O  I) |# L! Q
Set Part = swApp.ActiveDoc4 t2 a3 y3 ~0 J9 @5 R$ I% p; H6 s' R
Set swSelMgr = Part.SelectionManager0 g* l  v' S. O/ J! ~7 T7 I3 M
Set swComp = swSelMgr.GetSelectedObject(1)! D. @) D9 Z1 O4 s% c8 ^. G& ~; b. Y3 o$ P
oldpathname = swComp.GetPathName! t: i  S9 z% v% S$ R$ _# x
2 [. R8 S8 r: [- D0 `' r: G, p5 IPath = Left(oldpathname, InStrRev(oldpathname, "\"))
7 x1 e. x1 w& y4 e/ V1 Bntype = Mid(oldpathname, InStrRev(oldpathname, ".")): f% I; o3 ^. B# V/ i  N- Y( I5 s- l. Z; D* I/ [( }! Q, Y1 H- V
oldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1)& _! r& R0 n4 o, V$ U8 i2 i  e
oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)2 d! N5 r1 [/ I# B  M" H6 j. i+ r& y* a& a/ G0 T0 s
     mip = InputBox("changename", "name", oldname)$ e* \5 I$ z- t; B" w7 W* f  O- c& V! u! N
If mip <> "" Then9 t2 L7 y+ z: `7 h  \
  Part.Extension.RenameDocument mip8 b: X. F' n' y  w5 }: m( Y1 ]- g- f+ P& I
  Part.Save5 Q5 w- L+ e, Q
  tmpfi = Dir(Path & "*.SLDDRW")
* h. Q0 D: ^& P5 }" B: Q  Do Until tmpfi = ""- v4 j; l6 {8 v9 h# M5 [" n5 E( Y3 Z0 v' ^
    vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)
; n" S7 l0 |5 e. a- R2 G    If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then% I+ Y3 @) [4 D" ]
2 G4 Y4 D; q6 x* f& g. g9 D     Name Path & tmpfi As Path & mip & ".SLDDRW"
) w, Y- j- M. e4 R! V0 C4 P    bl = swApp.ReplaceReferencedDocument(Path & mip & ".SLDDRW", vDepend(1), Path & mip & ntype)9 s+ K- S$ t8 i9 a& j' E0 B4 o2 @% w. w& w$ F) M# l5 D8 I  C+ [8 y
     Exit Do
5 n3 V4 a6 i6 w) r' ?   End If
1 O$ Z- w1 y4 _tmpfi = Dir* @: D+ V& b  H3 |; B6 ]1 c4 t/ N& h0 w/ n. \2 M, V- q) F
Loop3 Q$ }2 |$ ]6 z4 ~0 u0 W& }5 ]1 n
End If  @/ K' \6 k  [/ y' w- v  ]7 j$ ]& j# C
End Sub28 R( @4 w" I! `2 M9 D, Z0 O

1 `4 c4 i5 u' j! E+ }" c6 @0 h2 r
9 G) C$ D8 R( k你好   我就是按你这提供的代码写的宏

点评

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

使用道具 举报

24#
发表于 2024-9-29 08:56:31 | 只看该作者
怎么讲  v+ W$ I! }* r- G- |$ h

( v5 i: B) B! e4 `
回复

使用道具 举报

25#
 楼主| 发表于 2024-9-30 09:49:00 | 只看该作者
这个宏代码确实有点奇怪,同样的代码在不同的电脑上运行有的可以,有的不行。SW版本都是2016,不好排查原因了。
回复 支持 反对

使用道具 举报

26#
 楼主| 发表于 2024-9-30 10:14:20 | 只看该作者
发现一个问题,如果工程图里面没有参考任何模型。那么这个代码vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)就会报错。
回复 支持 反对

使用道具 举报

27#
 楼主| 发表于 2024-9-30 10:38:51 | 只看该作者
cszhouhx01 发表于 2024-9-27 21:36
$ W% @1 E1 h% m& TDim swApp As Object" o# `/ n4 Y) M" X' c1 Z
Dim Part As Object0 ^9 r% P! B  I* T
Sub main()( d; Q1 b; F0 ?# l- {

2 _5 c  x8 C# e" j, zIf Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then  缺少"\") N# t- g6 b1 l5 G, d: G6 T/ |
正确的应该是If Mid(vDepend(1), InStrRev(vDepend(1), "\") + 1) = oldfi Then2 a0 ^# Q' _2 d* ~6 O
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-12-24 02:19 , Processed in 0.049868 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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