机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 18951|回复: 30

模型改名同时改工程图

[复制链接]
发表于 2023-6-9 13:46:29 | 显示全部楼层 |阅读模式
先在模型树选中所要修改的模型,再运行宏。宏内容如下:3 J. B. ?' A. D' k7 q
  1. Dim swApp As Object7 m2 K2 S6 C( z
  2. Dim Part As Object( o5 t$ f  K: U8 z0 v! V" z
  3. Sub main()
    2 Z! A9 T& a& l' S  L: F9 i: g
  4. Set swApp = Application.SldWorks
    6 ^% J6 x; K6 O9 b( Y- [7 ~4 }
  5. Set Part = swApp.ActiveDoc4 w& M: `0 \: k: Q5 c; z
  6. Set swSelMgr = Part.SelectionManager# O2 R3 s. Q  @4 H
  7. Set swComp = swSelMgr.GetSelectedObject(1)
    . H3 w' x% h$ \) u6 M% r/ j3 i
  8. oldpathname = swComp.GetPathName% W0 j7 h1 n2 V
  9. Path = Left(oldpathname, InStrRev(oldpathname, ""))
    2 G: K8 T5 @( Q/ G4 D* H5 q
  10. ntype = Mid(oldpathname, InStrRev(oldpathname, "."))
    1 `: d, ^; p, D% A
  11. oldfi = Mid(oldpathname, InStrRev(oldpathname, "") + 1)$ k- f4 t5 @9 B5 e9 A
  12. oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)
    # m. z  O7 S( G- P. I9 v, |
  13.      mip = InputBox("changename", "name", oldname)
    1 X+ A6 J1 K+ \) M1 P3 b
  14. If mip <> "" Then9 ^+ g6 v9 X: G
  15.   Part.Extension.RenameDocument mip
    % Q1 }, e" M2 w; i! d
  16.   Part.Save
    2 i5 P" W4 b; \1 W: L
  17.   tmpfi = Dir(Path & "*.SLDDRW")$ ?/ [5 H1 }2 [! x. O
  18.   Do Until tmpfi = "") ^3 N  P' M9 }$ m, M( v
  19.     vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)
    ! a* O& `2 m3 G2 O8 ~$ k) g
  20.     If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then/ K$ P+ R" u. d
  21.      Name Path & tmpfi As Path & mip & ".SLDDRW" ' X, J' p/ s  C1 M- P
  22.     bl = swApp.ReplaceReferencedDocument(Path & mip & ".SLDDRW", vDepend(1), Path & mip & ntype)
    , |% \3 z$ V. Y0 h# H7 T
  23.      Exit Do9 m6 S. a' z& [+ A5 B  |7 y$ U
  24.    End If
    " T& A& d! |  j) q3 j  u
  25. tmpfi = Dir- L2 O/ a$ ^( ]: {1 K. c* [: j/ @
  26. Loop
    4 K6 Z' U( @- Z; G1 I/ ]  V
  27. End If1 G: O* f' y7 K
  28. End Sub
复制代码

' ~) |( g% H/ o0 ?; q
1 G, \2 Q! ?, y7 v

评分

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

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2023-6-10 09:20:42 | 显示全部楼层
本帖最后由 steve_suich 于 2023-6-10 09:21 编辑 1 p, j+ y; P# F' H, @: S, ~
shentu 发表于 2023-6-9 22:21  w4 c4 @; K! ~# ~% Z
同样运行出错。。。。。
Dim swApp As Object& `" Z1 i$ l- E# m2 j7 u
Dim Part As Object
5 v3 {+ V% [8 d1 C* t, xSub main()1 u8 t; H/ ]% ?/ @* B! E
Set swApp = Application.SldWorks# D) W1 q7 b& n" R8 [7 ]. R' u6 n
Set Part = swApp.ActiveDoc! w4 c. v" \, t5 F5 [
Set swSelMgr = Part.SelectionManager
1 S) A/ k0 }. _Set swComp = swSelMgr.GetSelectedObject(1)
. f  d  n9 p" t0 h; D5 Holdpathname = swComp.GetPathName
7 D+ H' ^7 g* i7 c3 IPath = Left(oldpathname, InStrRev(oldpathname, "\"))
6 f: S9 m- ~+ c7 M9 L+ C) Q8 ^ntype = Mid(oldpathname, InStrRev(oldpathname, "."))* a1 w0 m0 I, b9 d
oldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1)) u" G0 H9 h) E+ z" T# U2 m% l$ n
oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)0 w) i8 @6 [/ N& u6 S
     mip = InputBox("changename", "name", oldname)8 c6 i. N$ B0 y7 a: X
If mip <> "" Then: \4 K5 ]# z5 s, r3 @( ^3 e
  Part.Extension.RenameDocument mip& q& \3 F! S4 _) H# g6 H5 l
  Part.Save3 \% L2 P; U( |" p# }, n' k" B
  tmpfi = Dir(Path & "*.SLDDRW")
9 r; a) _6 }4 w, |" \6 n  Do Until tmpfi = ""( J$ x- {! S1 p, J4 |* m
    vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)' c! r5 Y& x- g. ~& l% I7 G
    If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then9 u3 \: O; g. N) Z/ C
     Name Path & tmpfi As Path & mip & ".SLDDRW"
7 y- `5 Z' h9 G" v    bl = swApp.ReplaceReferencedDocument(Path & mip & ".SLDDRW", vDepend(1), Path & mip & ntype)' S. i& _7 U( a+ X( K
     Exit Do
4 ^8 y2 S3 w) `' M) O   End If
. C+ m. i# ?( M, n7 t3 j6 Xtmpfi = Dir
$ S8 ^' {! |" C. b! Z& s+ tLoop
  c. e" n, z& X+ p0 \# B& mEnd If. M  e6 B3 w- [, i! x, |
End Sub0 A! H! r. K8 _  i5 g' m

: p" Z" o3 g: j3 r
  1. ( y) T# R( E& Z' q7 X! s! n
复制代码
2 q! k3 u( z1 U& z* e, y  E
" H3 e; z& |. B7 U

点评

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 H$ ~: d4 I6 B" A( a6 z9 ]
sw嘛?.

3 _1 B, b$ }! U4 }; j. Csw的宏8 ~& y8 G( I) j7 E
回复 支持 反对

使用道具 举报

发表于 2023-6-9 15:21:17 | 显示全部楼层
能说一下怎么用吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-9 17:21:12 | 显示全部楼层
行云亦 发表于 2023-6-9 15:21
/ x  L& v$ ?7 x& P* W# n+ @能说一下怎么用吗?
/ b- q. |! t. [
1、sw 新建一个宏文件,内容按上面的代码。2、打开一模型文件(装配体或者零件)7 O; W8 b# t4 d4 x* V
3、在打开的模型界面的模型树结构里面用鼠标点选所要改名的零件(或者子装配体)
$ l% b0 G$ w0 A
) u3 K9 l9 A& l3 F9 J8 T9 y4、运行刚才建好的宏文件,---弹出输入框--输入新的名字--点确定---完成。
; a& I2 [$ H0 R& r0 W
; J0 f* h7 D3 N" }- Z/ e6 w4 B& N5 C$ B/ L+ J
回复 支持 反对

使用道具 举报

发表于 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
1 e5 _4 ]' X0 MDim swApp As Object
, i9 a9 W4 D5 A7 |9 u% I, WDim Part As Object: Y2 V* c2 m! v+ W
Sub main()
2 p) \9 f( p" w# b
试了下,只改了part文件名,图纸没变,问题出在哪呢?. s: C9 m8 l" {3 h# R( A
( m- A, F% l6 x0 V4 r0 p0 H* p- w

点评

要改的零部件不能轻化状态。  发表于 2023-6-19 14:50
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-2 00:42 , Processed in 0.076187 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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