机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 18097|回复: 30

模型改名同时改工程图

[复制链接]
发表于 2023-6-9 13:46:29 | 显示全部楼层 |阅读模式
先在模型树选中所要修改的模型,再运行宏。宏内容如下:
# [# W% g, S$ {: V3 ]8 z$ I! o% I
  1. Dim swApp As Object8 L9 O  s% y( r
  2. Dim Part As Object& N& r3 i% j9 t+ h4 Z' ~# m% D
  3. Sub main()" F9 p; i, k  n3 S( V' B7 r
  4. Set swApp = Application.SldWorks
    ! @  F! K1 Z& B) k# Z
  5. Set Part = swApp.ActiveDoc
    " }; `- E  ?; r( H" b0 |9 l  X
  6. Set swSelMgr = Part.SelectionManager
    6 O, I0 N! i& o$ f
  7. Set swComp = swSelMgr.GetSelectedObject(1)
    0 s% O% G" Z9 a4 b9 ]" G
  8. oldpathname = swComp.GetPathName
    / Q, w( H" p+ [, D# E+ D( Y9 F6 H
  9. Path = Left(oldpathname, InStrRev(oldpathname, ""))
      M6 u1 }8 Q9 A3 s6 ^1 G; P
  10. ntype = Mid(oldpathname, InStrRev(oldpathname, "."))
    % x2 u7 r) N7 p. I5 A1 t3 l: @$ T
  11. oldfi = Mid(oldpathname, InStrRev(oldpathname, "") + 1)
    3 |2 o) W, m- h3 e& U) m7 v% ^
  12. oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)0 u- r. x1 Y- ]
  13.      mip = InputBox("changename", "name", oldname)% @* r. U  ~) Q4 g' y! ^2 P5 _
  14. If mip <> "" Then
    ! u; b: m% l9 f& r
  15.   Part.Extension.RenameDocument mip ! X3 `" J+ v( A+ h% s1 A
  16.   Part.Save: r& z8 {0 _" c" c
  17.   tmpfi = Dir(Path & "*.SLDDRW")- Z: H; W  O; ^* `" s
  18.   Do Until tmpfi = ""
    : l' l4 m8 j4 e1 t5 x$ ?- q8 w
  19.     vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)
    + |  c6 L5 g: ?0 S) u
  20.     If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then  g- T2 E8 t& Z1 D2 j: I" `9 Q. A
  21.      Name Path & tmpfi As Path & mip & ".SLDDRW" ' ]& d3 Q# s( \0 ]# l2 K) B; U
  22.     bl = swApp.ReplaceReferencedDocument(Path & mip & ".SLDDRW", vDepend(1), Path & mip & ntype) 7 H. H5 A# M# d5 n( D9 d3 L9 Z$ g
  23.      Exit Do/ L4 t: Q. s- ^, r. Y9 t5 k
  24.    End If
    / v9 t- \( ]1 s0 ~# Z8 P
  25. tmpfi = Dir
    8 j' Q2 K& t* t: O: @! }1 S& Q. |
  26. Loop
    + b, Y! g$ Z- j" o
  27. End If4 m: J8 G- J! _& S; L
  28. End Sub
复制代码

* U, b! l1 e, p+ M# o# o1 r, |9 {& ]9 k7 \" c3 {- e) V

评分

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

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2023-6-10 09:20:42 | 显示全部楼层
本帖最后由 steve_suich 于 2023-6-10 09:21 编辑
9 q$ l! [" v0 g
shentu 发表于 2023-6-9 22:21
1 J1 E, J9 g, [1 ~: l2 r) i同样运行出错。。。。。
Dim swApp As Object- O; x2 m' u9 j4 k2 J$ f
Dim Part As Object
( k" l0 M5 ~7 j3 E1 _  ]' V- ESub main()
* G1 J, ~; p& P7 t6 A; U5 vSet swApp = Application.SldWorks
/ q' S5 \  E% b/ t; b: F" qSet Part = swApp.ActiveDoc7 B" Q, v9 P6 V' z
Set swSelMgr = Part.SelectionManager0 A/ x) m8 G! O( V* U
Set swComp = swSelMgr.GetSelectedObject(1)5 {7 w! q( w& c4 ~4 K( L
oldpathname = swComp.GetPathName
5 j) R1 m  S; O" jPath = Left(oldpathname, InStrRev(oldpathname, "\"))
( d: h0 u/ X! K' q) B# W+ }ntype = Mid(oldpathname, InStrRev(oldpathname, "."))
* F4 p# ^& y2 X6 ?( Koldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1)
' `% H8 @) K& c1 k4 K4 j; zoldname = Left(oldfi, InStrRev(oldfi, ".") - 1)& A. s" c' ~) s( |! ~0 s
     mip = InputBox("changename", "name", oldname)
4 y! [4 E* T- ^6 y# KIf mip <> "" Then6 `2 j1 K$ _8 N$ Z% G$ B
  Part.Extension.RenameDocument mip- h; T  r! K9 O  e
  Part.Save
* D& Q4 R, {: ^5 \# l  tmpfi = Dir(Path & "*.SLDDRW"); u. P! I* a& ]7 A
  Do Until tmpfi = ""
/ T# k! f( g* c& L3 Z- S! }1 e    vDepend = swApp.GetDocumentDependencies(Path & tmpfi, False, False)
2 X) A# W& J  L; u, N' f  f    If Mid(vDepend(1), InStrRev(vDepend(1), "") + 1) = oldfi Then* |" o( ]* ]9 F  _" a) J) e3 G
     Name Path & tmpfi As Path & mip & ".SLDDRW"9 W4 }1 ^* U' B5 a
    bl = swApp.ReplaceReferencedDocument(Path & mip & ".SLDDRW", vDepend(1), Path & mip & ntype)% J' A  f; K& C4 D
     Exit Do
2 l8 m* A( D/ r6 H) q% i   End If
5 }6 c7 ~3 n" Atmpfi = Dir
* E" o: _. |1 p# S& S: R9 V7 BLoop
) c5 T3 _: M0 ~2 DEnd If
: S+ r" s0 s% u+ [, TEnd Sub
+ h8 [6 C( y, E* Z
8 z9 o- n, s1 j4 M; P
  1. , o5 l2 G5 U- x2 X  s( ]
复制代码

  z& p: R  b( m' f- B$ z; |3 n- N! e& V0 J  v

点评

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:14
6 Y, \4 P- k5 J  B$ @8 qsw嘛?.
2 c4 H3 @  I& u2 Y9 W" p( b
sw的宏" F2 b5 y  D  `# f6 P+ h
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2023-6-9 17:21:12 | 显示全部楼层
行云亦 发表于 2023-6-9 15:21+ j1 n6 P+ X& E. D
能说一下怎么用吗?

# G% A- k2 U' L" k* E) U1、sw 新建一个宏文件,内容按上面的代码。2、打开一模型文件(装配体或者零件)
  A' {$ I) H7 W3 R' k, a3、在打开的模型界面的模型树结构里面用鼠标点选所要改名的零件(或者子装配体)
- e* l* _8 t0 ~7 \
* @, m3 }* t8 I1 V1 e5 Z8 I. T4、运行刚才建好的宏文件,---弹出输入框--输入新的名字--点确定---完成。
' ~& g, z1 @) L+ z% v6 v% A9 G( G! o' U) x
3 m* t: z3 f1 @! Q/ j7 N4 B" m
回复 支持 反对

使用道具 举报

发表于 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
/ ~3 i3 T# b7 BDim swApp As Object; s3 g9 u/ J$ ?9 E; W' {+ T( s
Dim Part As Object! t0 H0 f) E; j( ]
Sub main()

' w! H  L" V: x6 Z& `/ Z7 V( U试了下,只改了part文件名,图纸没变,问题出在哪呢?
* Q# K( r9 b7 w' W* M: I) E: w2 F" p; e' C

点评

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-24 15:04 , Processed in 0.069093 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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