机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 23090|回复: 17

重命名零件宏

[复制链接]
发表于 2023-8-21 21:07:44 | 显示全部楼层 |阅读模式
Solidworks 虽功能强大,但有些地方做得不尽如人意,比如三维带工程图重命名,就显得十分鸡肋。论坛网友steve_suich发过一个改零件同时改工程图的宏(http://www.cmiw.cn/thread-1058539-1-2.html),虽然有所改进,但不是十分完美。0 d( o  P1 @7 \8 \4 m% t# `
我在此代码的基础上作些优化,希望能给大家带来帮助!
; L& P, }/ j4 m0 d) ?+ }1 W- G1 b2 X0 g4 c" h+ m% G9 Z
Ps:1.前置条件:打开装配体并选择零件
. w9 @5 g; F. I# Y2 ?, ]4 l    2.使用方法:运行宏后输入名称
- [# s. ~5 A) M: W' \    3.运行结果:同文件夹下生成新零件及附属工程图并保留原工程图
1 ~% i% W( Q. Y  N" Q1 o
7 m9 s8 |; e5 a1 h  q* l8 tDim swApp As Object! d7 t4 @4 ]( s' I
  Dim Part As Object
) J& z* K# m5 m/ K  Dim Error As Long# W2 g' q8 |- w! [& v3 G7 ]
Dim Warning As Long
# [1 n- a( y! V6 ZDim mip As String
, ~/ ^* t1 h$ h1 u& UDim Status As Boolean1 j) |5 p, _9 `5 z- z4 V
Dim Newpath As String+ V7 U, d% ~/ O% y  e
Dim mipname As String
$ W; T! y0 r& cDim vDepend() As String7 q0 Q" I+ [- A
    Sub main()
) O! [- }" d" k+ {    Set swApp = Application.SldWorks4 [  V6 V8 y! V! v+ w) N* ]
    Set Part = swApp.ActiveDoc! r$ m0 f% g% s# o2 j  c
    Set swSelMgr = Part.SelectionManager
9 u$ z& E* C! ?  F    Set swComp= swSelMgr.GetSelectedObjectsComponent4(1,0)& x5 j0 u& K, o# E
        swComp.SetSuppression2 (3)      c% P: M; M1 u9 f' h
    Set swSelModel = swComp.GetModelDoc2) i: }# A9 U& n  y
    Set swSelModelext = swSelModel.Extension
* F) c: ^3 ?5 ]% m: L# F  n* y! {1 j& N" Z
    oldpathname = swComp.GetPathName2 Z3 S' Y5 X9 H/ g, m9 X/ {+ B) t* n. y
    " ]# O  X. F  J9 B$ i6 U
    Path = Left(oldpathname, InStrRev(oldpathname, "\")) '路径
. v9 u1 f; @4 q% }8 B    Debug.Print Path# D, U# k" x1 D5 J7 D. {" D1 G, S: |
    ntype = Mid(oldpathname, InStrRev(oldpathname, ".")) '后缀2 R4 W% Z6 k" O" A8 u
    Debug.Print ntype
/ h% {! {! k, I/ }9 y    oldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1) '旧文件名. c: q8 Z! Y1 y9 e" j
    Debug.Print oldfi
* W; M4 L, K7 ]    oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)) H" V4 p0 q/ Q  S1 G
         mipname = InputBox("changename", "name", oldname) '新文件名. z. D& G1 a. _+ ~
         ; w4 n" \5 _, H1 _" ?
         mip = Path & mipname & ntype '新文件名带路径4 s9 c& r1 }7 _* @
         Debug.Print mip
1 {3 l" v2 C/ t. I- S5 t( C0 k/ l$ |3 {: B1 ?4 v
    If mip <> "" Then. o# C) L3 y5 Q" G, e0 t: e
         Status = swSelModelext.SaveAs3(mip, 0, 512, Nothing, Nothing, Error, Warning) '更改零件文件名(替换装配体中的原文件)
: Y: f$ i% z  t2 J! Z      Debug.Print Status
) F8 o6 @- V* O' J' V, O      '========================6 z% A+ I' Y# Z" N3 h, m6 l4 R8 W+ m
      '更改工程图文件名3 G1 S" k/ |. K4 K* W  _$ i$ A7 G
      Debug.Print Path- Y1 `% V0 I& P9 e" A
      tmpfi = Dir(Path & "*.SLDDRW") '遍历原文件夹中的工程图文件
/ e" D& j; ?5 H+ }9 S! c      Debug.Print tmpfi+ i' q8 P( F" L. U" V& e$ l
      Do Until tmpfi =Null 1 v3 v7 y9 O: a+ v& w
        tmpfiname = Mid(tmpfi, InStrRev(tmpfi, "\") + 1)$ R1 T* ]' N8 d, \5 e% r
        Debug.Print tmpfiname# i3 c: o' e% `
        tmpoldname=mid(oldfi,1,instr(1,oldfi,".")-1) & ".SLDDRW"
: F# y& C$ I+ n0 n" y& q, m        Debug.Print tmpoldname
3 k; L. V- E5 u8 @" Z        If tmpfiname = tmpoldname Then '查找同名工程图! G4 o5 C1 ?$ U! B2 u; Y3 h
        newdrwname = Path & mipname & ".SLDDRW", [+ H3 |* x/ W5 q9 D
        Debug.Print newdrwname4 y* {* c" g2 t6 Z) r4 ~4 K
        olddrwname = Path & tmpfi' w. S5 Q9 M' h
         filecopy olddrwname,newdrwname '复制工程图到新文件夹1 X& ?' G; A1 A
        vDepend = swApp.GetDocumentDependencies2(Path & tmpfi, False, False, False) '查找工程图依赖8 W( d$ z' T8 a- T% h. J' g
        Debug.Print vDepend(1)
9 |7 z4 d. ~5 J4 H& |' O        bl = swApp.ReplaceReferencedDocument(newdrwname, vDepend(1), mip) '替换工程图依赖" q- k) p! d/ E: N

: b0 {9 ]9 u) Z0 Z3 a4 g        Debug.Print bl9 R- R7 |. F$ F- c. J
         Exit Do
* \1 Z5 I1 \! y$ c3 y' _! i* R       End If' E  w2 i& A  S- M& C2 T& b- ~
    tmpfi = Dir% o0 E' R0 J0 m
    Debug.Print tmpfi
; j1 h/ \5 A& ~' u5 B- R9 t    Loop- R9 K( R7 ]' s# O; F) }
    End If2 m9 u! f5 q% ?& Q7 V
    End Sub
  J% N/ h6 d+ _$ ]. l) L$ S5 k* u3 f
: A0 l: P! [! b

. X: o0 D) p8 m3 t8 R
2 N0 `7 F" Q5 C' |' }' X# ?+ K  L% A" p- n4 g* d

评分

参与人数 1威望 +1 收起 理由
陈进一 + 1

查看全部评分

回复

使用道具 举报

发表于 2023-8-22 07:09:54 | 显示全部楼层
有版本限制吗?
回复 支持 反对

使用道具 举报

发表于 2023-8-22 09:57:12 | 显示全部楼层
Solidworks自带命名,就是不能关联工程图一起改而已。从设计流程来说,改名在出图之前。其实就无所谓要不要插件了。
回复 支持 反对

使用道具 举报

发表于 2023-8-22 10:14:22 | 显示全部楼层
凯元工具也可以批量改名
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-22 21:14:08 | 显示全部楼层
trongtrongtrong 发表于 2023-8-22 10:149 s5 r7 n0 B1 I
凯元工具也可以批量改名

/ W4 }& b4 V& }" i: z, Z授人以鱼,不如授人以渔; _0 G, d7 U% w- h
回复 支持 1 反对 0

使用道具 举报

发表于 2023-8-24 16:19:18 | 显示全部楼层
谢谢版主 分享
回复 支持 反对

使用道具 举报

发表于 2023-11-8 16:07:45 | 显示全部楼层
复制粘贴过去代码错误
回复 支持 反对

使用道具 举报

发表于 2023-11-8 16:08:14 | 显示全部楼层
显示代码错误 一片红
回复 支持 反对

使用道具 举报

发表于 2024-3-26 11:09:39 | 显示全部楼层
怎么拷贝好一些,复制都是乱码
回复 支持 反对

使用道具 举报

发表于 2024-4-3 13:29:17 | 显示全部楼层
运行报错咋解决啊大佬. Z1 ~5 Q7 z: Z) R1 O
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-12 06:24 , Processed in 0.096686 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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