找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 24827|回复: 23

重命名零件宏

[复制链接]
发表于 2023-8-21 21:07:44 | 显示全部楼层 |阅读模式
Solidworks 虽功能强大,但有些地方做得不尽如人意,比如三维带工程图重命名,就显得十分鸡肋。论坛网友steve_suich发过一个改零件同时改工程图的宏(http://www.cmiw.cn/thread-1058539-1-2.html),虽然有所改进,但不是十分完美。
# l  f4 e, w$ I  b) V我在此代码的基础上作些优化,希望能给大家带来帮助!/ X, U& z1 H& U7 C, p9 }0 M; I

3 {+ ~7 z( e) I/ Z: D9 Z& ]* uPs:1.前置条件:打开装配体并选择零件0 W8 r! u1 @6 e
    2.使用方法:运行宏后输入名称
6 p0 @1 c1 }, d- p5 t    3.运行结果:同文件夹下生成新零件及附属工程图并保留原工程图
3 c' K2 H5 ]& ^  j5 K, y
, C/ D! {# N/ l+ qDim swApp As Object3 m0 n) u# z0 \
  Dim Part As Object( x. L6 N+ g0 L3 l
  Dim Error As Long
/ o) F+ @! v& hDim Warning As Long* ?' w" y4 f, S: {
Dim mip As String
) p, F8 g" _) x+ U4 IDim Status As Boolean% ?  w6 ?2 q& r
Dim Newpath As String1 C0 u' J$ y+ J' g
Dim mipname As String
) X8 z' f7 @7 p1 _  Q6 CDim vDepend() As String) [5 U/ f# f6 i5 v
    Sub main()7 e# g3 \; v3 h* N6 C7 O+ M7 x
    Set swApp = Application.SldWorks( F: M/ l; l8 g' [% w  |
    Set Part = swApp.ActiveDoc0 o! k  j! l7 A
    Set swSelMgr = Part.SelectionManager: M/ e( Z+ s4 x* H
    Set swComp= swSelMgr.GetSelectedObjectsComponent4(1,0). N' S; }8 |3 u) V; ^/ |
        swComp.SetSuppression2 (3)    5 g7 p2 m# }2 ?" `( @2 Q
    Set swSelModel = swComp.GetModelDoc2
( v8 I% A, o6 }" m$ J& y    Set swSelModelext = swSelModel.Extension5 t, o6 q! c& ^
% x! k$ O1 b: o. I, n4 N8 h0 ]8 n! k9 h
    oldpathname = swComp.GetPathName  g+ e  ~, H. ]  t1 z
      I4 \/ I! o4 H1 _, g$ H
    Path = Left(oldpathname, InStrRev(oldpathname, "\")) '路径
0 v9 B1 t+ ~+ F: c; N1 D! q; ^    Debug.Print Path( T$ f, {3 n$ f
    ntype = Mid(oldpathname, InStrRev(oldpathname, ".")) '后缀, v- ]: ^' f; j* h1 ?% d) ?% m
    Debug.Print ntype% _9 c0 P. v, i1 C1 f
    oldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1) '旧文件名% n) p# J; t5 l" _# W: M6 }
    Debug.Print oldfi  U1 L+ X2 s: c# c5 |5 Y' u; S& ]
    oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)
" E6 b  m( A( z2 S7 Q% I         mipname = InputBox("changename", "name", oldname) '新文件名
# A( y( O. @0 w& ~! q+ E& [         
$ H3 ?$ V( `( R' o8 j         mip = Path & mipname & ntype '新文件名带路径
6 C" B% L# ?3 `2 v$ o6 Q( c3 v& T- ^+ i         Debug.Print mip
+ F7 {1 P3 S" [- o5 @# c5 G  P- N6 l/ Y8 c2 O5 A. {$ a4 s
    If mip <> "" Then
* p9 O% ~$ b! m1 j         Status = swSelModelext.SaveAs3(mip, 0, 512, Nothing, Nothing, Error, Warning) '更改零件文件名(替换装配体中的原文件)1 G0 }, ~0 o0 p- W7 u! `# j
      Debug.Print Status& c% u, @$ ~8 J) P+ b7 M( q  G
      '========================! E6 v$ m: u; I# a. f& z4 c1 Y" a
      '更改工程图文件名# ~) x# B- y( U( v3 P
      Debug.Print Path5 I2 I1 X( {. b; J2 O
      tmpfi = Dir(Path & "*.SLDDRW") '遍历原文件夹中的工程图文件, H* I7 Q, z" p1 P, i
      Debug.Print tmpfi
% O' E/ K2 d- j. y) R      Do Until tmpfi =Null
$ U2 w' r6 s0 d/ P        tmpfiname = Mid(tmpfi, InStrRev(tmpfi, "\") + 1)7 r2 A/ U9 K5 V, m6 o) [
        Debug.Print tmpfiname
' g9 N: I2 y" _3 @        tmpoldname=mid(oldfi,1,instr(1,oldfi,".")-1) & ".SLDDRW"7 M4 E8 b/ l' Q; A/ N6 E
        Debug.Print tmpoldname5 B0 ^6 }$ X" w- P
        If tmpfiname = tmpoldname Then '查找同名工程图6 x! p4 `9 H6 y" D2 b
        newdrwname = Path & mipname & ".SLDDRW"
: w$ e% d1 \& ?# _" v        Debug.Print newdrwname4 K0 `5 G, K0 @- f
        olddrwname = Path & tmpfi
- F: p9 u  c" _2 O6 H         filecopy olddrwname,newdrwname '复制工程图到新文件夹* s8 X' I/ M6 e# O3 n! y) n8 J- o
        vDepend = swApp.GetDocumentDependencies2(Path & tmpfi, False, False, False) '查找工程图依赖
0 y( M$ x# ^$ R        Debug.Print vDepend(1)% M. e: u0 n7 o! t9 r4 u
        bl = swApp.ReplaceReferencedDocument(newdrwname, vDepend(1), mip) '替换工程图依赖
. x* [3 `0 G4 D5 D' h# x) T3 Z. p& ?( F: D% J# }
        Debug.Print bl* }+ M! T( u% i% B, U
         Exit Do
$ B$ s6 c% L' c8 D4 M# B9 C       End If
* z) h* m4 Y# z4 z4 l    tmpfi = Dir0 g) |5 D/ D$ [2 w  Q- q
    Debug.Print tmpfi
1 n- }6 W2 y( m) d. @4 e% v- z& ?    Loop0 {, N3 I  O5 G3 ^+ _# u
    End If  m, Q+ J; F1 l* b  L0 e
    End Sub; Q+ ]7 Z* {' W% d2 C( Q
9 J4 [) [7 K! c+ |0 x, G
9 Z& V9 n6 }  `7 v" M% F- |

* t$ [' A. @7 I' t/ `+ L# @5 [; L7 O. b( T  Y

! L: Z8 R- e  U7 U6 q& n

评分

参与人数 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:145 r/ d8 a+ C, @
凯元工具也可以批量改名

& H' ^& b9 B1 P0 }; X1 M, }$ H授人以鱼,不如授人以渔
' E/ j% t, E. V7 V$ u# X
发表于 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 | 显示全部楼层
运行报错咋解决啊大佬  P5 ~9 y2 @! b) \" O7 J; o# W1 |
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-8-1 16:37 , Processed in 0.129349 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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