找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 20212|回复: 30

模型改名同时改工程图

[复制链接]
发表于 2023-6-9 13:46:29 | 显示全部楼层 |阅读模式
先在模型树选中所要修改的模型,再运行宏。宏内容如下:
& U6 e6 o9 u& ~* p# m. k
  1. Dim swApp As Object4 u% ?7 `! V1 q$ K8 U& }
  2. Dim Part As Object
    " x7 n  U6 m2 v1 ?
  3. Sub main()
    9 U% f. R3 D5 n' |8 ], c) u
  4. Set swApp = Application.SldWorks
    0 A+ l# B% _& \* E
  5. Set Part = swApp.ActiveDoc
    + h- u0 K- n7 S% G9 T6 x
  6. Set swSelMgr = Part.SelectionManager
    ' t& w6 P  w& x4 e
  7. Set swComp = swSelMgr.GetSelectedObject(1)
    1 T5 ~6 G7 c7 _
  8. oldpathname = swComp.GetPathName
    0 {  V; [0 Q9 s7 J
  9. Path = Left(oldpathname, InStrRev(oldpathname, ""))
    ! u# P% U( S& [3 F2 x% ]
  10. ntype = Mid(oldpathname, InStrRev(oldpathname, "."))
      h% ]8 `0 ^7 Y2 g& P+ ?/ x
  11. oldfi = Mid(oldpathname, InStrRev(oldpathname, "") + 1)
    - ?( R( R7 N' x& z! I% V
  12. oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)
    ) i' q! Q# r  P: D
  13.      mip = InputBox("changename", "name", oldname)5 o" N; F7 e/ c( ]* w/ z$ ]
  14. If mip <> "" Then
    - Q" N/ r# x& b6 ]
  15.   Part.Extension.RenameDocument mip 1 l5 B0 I4 A+ c
  16.   Part.Save6 y6 W1 k- |" B0 \' s* e9 ~
  17.   tmpfi = Dir(Path & "*.SLDDRW")7 \4 ?( x. \* i% L! v
  18.   Do Until tmpfi = ""% v4 D, S: Y& `! j2 [4 m
  19.     vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)
    3 X3 M2 V7 Y& u3 {/ G
  20.     If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then8 ?6 M- `2 {9 g  {# O+ w
  21.      Name Path & tmpfi As Path & mip & ".SLDDRW"
      B& n- T( l* v' M
  22.     bl = swApp.ReplaceReferencedDocument(Path & mip & ".SLDDRW", vDepend(1), Path & mip & ntype) # `8 a3 @8 g7 s. N
  23.      Exit Do
    , e9 V! e0 |% D
  24.    End If2 L( ^* ~/ k: B- R% _& H' h  P
  25. tmpfi = Dir4 K! A% w8 M! W2 T6 T
  26. Loop
    " i# j! q$ ]  [4 A- J5 W
  27. End If) w* o- @0 M1 q4 p1 R
  28. End Sub
复制代码

# F4 H% J9 {7 E; E, H/ [
5 }% a; w, T9 c+ p% P4 _

评分

参与人数 2威望 +6 收起 理由
怕瓦落地2011 + 5 问题描述清楚,显得很专业!
happilly + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2023-6-10 09:20:42 | 显示全部楼层
本帖最后由 steve_suich 于 2023-6-10 09:21 编辑 3 W% c; ^& L5 z2 K
shentu 发表于 2023-6-9 22:21
; p% i9 j/ I$ q# Q同样运行出错。。。。。
Dim swApp As Object
& B! J+ W: F3 }) V9 ?+ H6 U! _( I* c2 BDim Part As Object
8 ^+ \) G& |; T! Y8 {' y/ ISub main()
! P+ e3 t5 k& R* y" D! }% TSet swApp = Application.SldWorks7 I+ {* r, [. _; u& m
Set Part = swApp.ActiveDoc
8 T$ o3 B7 T& f! ?7 @7 O/ uSet swSelMgr = Part.SelectionManager
" q' [8 U5 F7 V9 k8 n- ^& [9 HSet swComp = swSelMgr.GetSelectedObject(1)
% J2 z0 r2 d% @4 G- holdpathname = swComp.GetPathName6 [& J9 a* Q  t4 e1 L, M' Q
Path = Left(oldpathname, InStrRev(oldpathname, "\"))
$ a* x& ~7 n# q  T8 nntype = Mid(oldpathname, InStrRev(oldpathname, "."))
4 {! T" D1 j8 s) p. Loldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1)
( \- \( f! c) b9 l- ^; Zoldname = Left(oldfi, InStrRev(oldfi, ".") - 1)9 O' s- Q) P2 }4 \# s
     mip = InputBox("changename", "name", oldname)" ~2 j% N  v, r" z* d: ^& D
If mip <> "" Then
* O+ }$ P! q3 {$ o; a: j& M  Part.Extension.RenameDocument mip
, ?8 a/ p+ V9 a: R0 |, Q  Part.Save" b) v8 w. T, k7 g$ u: G
  tmpfi = Dir(Path & "*.SLDDRW")7 m* h/ @% k3 b# b$ z
  Do Until tmpfi = ""
# r% G6 I, w* x8 @1 V: [" v    vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False), A5 I- ^! K, M) Q& g( a/ M
    If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then* ^5 Q; c4 W4 P
     Name Path & tmpfi As Path & mip & ".SLDDRW"
% d& s( o% X7 a8 u8 j    bl = swApp.ReplaceReferencedDocument(Path & mip & ".SLDDRW", vDepend(1), Path & mip & ntype). \! K0 }- }7 l4 ?
     Exit Do) n4 J1 ~; H' ?. Q" e0 {  r/ m2 G8 N' P
   End If; j+ B" l, [& {; A1 U7 |
tmpfi = Dir
  x; c# W: ?& DLoop
6 p. i4 Q$ G4 m- m. w% d8 XEnd If" ~( ?9 I: ?* f6 Y7 T1 x
End Sub5 z! u$ X& S: I
' p  M. T) j. n  @% a  v7 D. T

  1. ( L$ P) L/ {: m6 k- _( l& W$ z9 q% I
复制代码
/ z8 y/ @, [; z' d  L  }; w8 E

4 n" R- b) Z8 N+ F5 q4 H

点评

If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then正确的应该是If Mid(vDepend(1), InStrRev(vDepend(1), "\") + 1) = oldfi Then  发表于 2024-9-30 10:41
前面发帖是用代码方式,发现"\"符号缺失,所以运行有错。按以上文本方式就没有问题。  发表于 2023-6-10 09:24
发表于 2023-6-9 14:14:20 | 显示全部楼层
sw嘛?.
回复

使用道具 举报

发表于 2023-6-9 14:24:40 | 显示全部楼层
你是chatgpt搞的?
 楼主| 发表于 2023-6-9 14:28:38 | 显示全部楼层
happilly 发表于 2023-6-9 14:145 ]: x  `$ S1 E* |+ w4 Q1 O) m$ d
sw嘛?.
9 o' c* H- N$ g* n' a
sw的宏
1 g$ o9 {9 w2 u
发表于 2023-6-9 15:21:17 | 显示全部楼层
能说一下怎么用吗?
 楼主| 发表于 2023-6-9 17:21:12 | 显示全部楼层
行云亦 发表于 2023-6-9 15:21
4 V; l2 R6 K& M能说一下怎么用吗?
/ w" A9 F5 w8 I2 \9 [
1、sw 新建一个宏文件,内容按上面的代码。2、打开一模型文件(装配体或者零件)# [- _8 y* c% |" V: p4 h
3、在打开的模型界面的模型树结构里面用鼠标点选所要改名的零件(或者子装配体)! Z. C* u, K: n' u# Q. H, j
/ ~, i1 O: `- Y
4、运行刚才建好的宏文件,---弹出输入框--输入新的名字--点确定---完成。
: o, X0 P# ?0 y2 x. T
0 t7 p6 r; Z& p" H0 w3 y, a' [
7 k5 g+ V5 z( C; J' R0 O, U4 e& x
发表于 2023-6-9 21:52:39 | 显示全部楼层
运行出错,08行有问题。错误91,对象变量或with 块变量未设置
发表于 2023-6-9 22:21:02 | 显示全部楼层
同样运行出错。。。。。
发表于 2023-6-19 10:59:33 | 显示全部楼层
steve_suich 发表于 2023-6-10 09:20
( M2 n5 ~4 l2 UDim swApp As Object" t0 a) r$ A" E0 `. N! s' X+ ]
Dim Part As Object0 T' u/ R9 ]) f1 x: S
Sub main()

4 |/ ^1 S0 b' B% X( k7 w+ \试了下,只改了part文件名,图纸没变,问题出在哪呢?
6 i/ O) b6 ~8 K5 E7 x. T
7 m5 U' y7 Y  l; o% z  q" ~

点评

要改的零部件不能轻化状态。  发表于 2023-6-19 14:50
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-8-2 10:11 , Processed in 0.068133 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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