机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 16672|回复: 15

重命名零件宏

[复制链接]
发表于 2023-8-21 21:07:44 | 显示全部楼层 |阅读模式
Solidworks 虽功能强大,但有些地方做得不尽如人意,比如三维带工程图重命名,就显得十分鸡肋。论坛网友steve_suich发过一个改零件同时改工程图的宏(http://www.cmiw.cn/thread-1058539-1-2.html),虽然有所改进,但不是十分完美。
# G/ Y* }' L+ M% j: D我在此代码的基础上作些优化,希望能给大家带来帮助!$ c6 I) e3 m8 D7 @6 t2 Q+ l, ~4 y

& R% Y  Y* B' R7 N8 RPs:1.前置条件:打开装配体并选择零件
; d! T, l# m% y- f+ B( r' M    2.使用方法:运行宏后输入名称
1 V# {5 n4 Q8 l. s    3.运行结果:同文件夹下生成新零件及附属工程图并保留原工程图/ {& ]5 U: a, ^8 t/ t+ t
( k; f+ I; u  j# K# G
Dim swApp As Object
) G' }* J7 x4 g8 t+ w  Dim Part As Object' \3 x4 R# \- d4 G
  Dim Error As Long' T1 i3 [. G) r8 f1 n
Dim Warning As Long
8 |( p: }; a' K. j& P+ hDim mip As String$ F6 g% n; @6 _* ?6 w
Dim Status As Boolean
' v1 s3 `# A8 @9 i/ P1 t6 |' W2 {Dim Newpath As String, X0 ~, L  d. c
Dim mipname As String. E2 V) E$ f+ Q" `4 d+ W
Dim vDepend() As String& p" k8 U, k4 D) L5 e' F0 P, ]
    Sub main()0 P& B2 ?" ]" ]* ?' A% l* g
    Set swApp = Application.SldWorks! ]; b% {" L7 D% t( U9 S
    Set Part = swApp.ActiveDoc
, w! ?. O2 _8 z    Set swSelMgr = Part.SelectionManager
" `3 G" ?+ y  N- x. {0 T5 p    Set swComp= swSelMgr.GetSelectedObjectsComponent4(1,0), V8 T! |* c$ k2 g
        swComp.SetSuppression2 (3)    + K& p9 U1 O' T+ ?! }: v
    Set swSelModel = swComp.GetModelDoc27 X. m" w! C/ Y, X
    Set swSelModelext = swSelModel.Extension
% e, P7 e  `/ U! _
% _* a6 A, a- `" V& x/ j  H9 l    oldpathname = swComp.GetPathName
6 @7 |% w/ i' y0 Y4 o    # Z! v, g$ |, l! m2 l- S. b/ y4 \
    Path = Left(oldpathname, InStrRev(oldpathname, "\")) '路径
& {" j3 ~. }3 S+ v3 s# `  |. Q    Debug.Print Path- z, u: j" P5 t
    ntype = Mid(oldpathname, InStrRev(oldpathname, ".")) '后缀
( U4 E9 U6 Q0 I1 t  [    Debug.Print ntype
  G5 b: z" X, h% x( |8 t" D- R0 Q' m    oldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1) '旧文件名
9 N% i+ V6 o( k4 c7 M' h    Debug.Print oldfi
4 d0 Z; M& @" b+ s6 p% W  f: m    oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)
6 J8 X; u6 B5 F0 _' {  ?. K         mipname = InputBox("changename", "name", oldname) '新文件名
" i5 [0 x% Z, _         - L  C/ I( }; |6 G0 L- q
         mip = Path & mipname & ntype '新文件名带路径
$ D9 a* t/ _& ?% _2 \& A         Debug.Print mip
$ u: r* S8 ]8 M! X8 k/ W; y/ w
/ z# }9 a5 V& v4 T2 [    If mip <> "" Then
; [& h3 x5 a) }2 K         Status = swSelModelext.SaveAs3(mip, 0, 512, Nothing, Nothing, Error, Warning) '更改零件文件名(替换装配体中的原文件)
4 x  K0 I& {! L% p$ D      Debug.Print Status7 F( g4 g, |& z, f: k
      '========================
4 l9 ~# K' h6 `& Y7 U2 H( n# V      '更改工程图文件名( r( S. {( ^/ K# G
      Debug.Print Path7 Z7 ~/ y3 O7 ^+ x/ }
      tmpfi = Dir(Path & "*.SLDDRW") '遍历原文件夹中的工程图文件
2 ]5 J, V* R, {0 Q+ ^; x! i) P3 Q" Y! j      Debug.Print tmpfi
- o7 h4 J% q* l1 E6 n9 k      Do Until tmpfi =Null - V+ }# C! h, R8 Z
        tmpfiname = Mid(tmpfi, InStrRev(tmpfi, "\") + 1)( [& m3 J' L, }8 P7 a$ t
        Debug.Print tmpfiname
1 g+ S. k% J- N        tmpoldname=mid(oldfi,1,instr(1,oldfi,".")-1) & ".SLDDRW"
, p* O6 M" d2 {$ C* j. U0 S        Debug.Print tmpoldname- J" n0 Z: |* M. Y$ d/ [) A. _3 v
        If tmpfiname = tmpoldname Then '查找同名工程图) @8 ?. O6 Q9 I& b7 U. H# N& p0 A
        newdrwname = Path & mipname & ".SLDDRW"
+ S* f5 s$ u" \7 A        Debug.Print newdrwname
, q$ |5 K8 B9 [3 V8 @" `        olddrwname = Path & tmpfi
6 j7 C4 D; N4 H% n' W         filecopy olddrwname,newdrwname '复制工程图到新文件夹
! E8 M  K1 x+ T: y        vDepend = swApp.GetDocumentDependencies2(Path & tmpfi, False, False, False) '查找工程图依赖8 |$ O( C( Q! w8 \+ z
        Debug.Print vDepend(1)
- \  Y: N9 L: _        bl = swApp.ReplaceReferencedDocument(newdrwname, vDepend(1), mip) '替换工程图依赖
6 d- s7 X0 v& V: @- v
1 b9 \! U# c+ b        Debug.Print bl. X9 p# H) \1 q5 q* R1 ]2 S
         Exit Do
3 w$ z6 L9 p' f- o# n* `. i1 r       End If/ g- c  F+ ?2 l$ a
    tmpfi = Dir% f# ?* E1 ?2 D
    Debug.Print tmpfi
! B+ m' b+ n2 u; H% G/ s    Loop/ k0 E, O4 R4 u* X, E
    End If
/ G# [% [# p, J8 m& {) T    End Sub7 b4 W- @6 B( I/ ?

2 L+ e  B* j/ |" U* v3 g  A8 b3 C/ g: P
1 N0 g" I( U/ }3 `% K' Y

( q( c4 ?! p- |6 r, k. b7 Q% C, m; X

评分

参与人数 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
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-22 21:14:08 | 显示全部楼层
trongtrongtrong 发表于 2023-8-22 10:14
/ M% x4 S( F. M4 w; B2 R凯元工具也可以批量改名

' r) D. N9 q: C( A9 [$ A- p授人以鱼,不如授人以渔& [0 C7 v9 f  ]7 o2 G/ T. I
回复 支持 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 | 显示全部楼层
运行报错咋解决啊大佬, |* b; r8 A1 f( R
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 05:33 , Processed in 0.090379 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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