机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 7454|回复: 11

重命名零件宏

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

* R/ }& |  p3 f; CPs:1.前置条件:打开装配体并选择零件
! n8 J# ?7 D% I" e2 {" {    2.使用方法:运行宏后输入名称
* z& K1 K2 q4 D7 ?  r1 P# H    3.运行结果:同文件夹下生成新零件及附属工程图并保留原工程图
- j6 P& [5 H. T5 ~! J+ R+ k  m2 N* A; q9 @3 r( U$ v2 W: ]
Dim swApp As Object
/ V& t5 x4 r4 `  Dim Part As Object
- m) f! V$ |6 j1 x6 o' M0 ?! m/ H  Dim Error As Long( g% G+ m9 j9 w% I" D# _8 i
Dim Warning As Long
2 s- Y* e# y! j; s1 M- t' e& k: C0 CDim mip As String/ W8 q4 r8 T9 Q) c8 c
Dim Status As Boolean
! e: k* S$ U/ c9 L6 ODim Newpath As String
6 i3 E# C  a- _: }8 o9 PDim mipname As String6 i1 S/ S. g4 ]; D1 y. t: I; N; z% T
Dim vDepend() As String- U) Q3 }2 }$ U6 `& A' d' w
    Sub main()8 @% G# c9 [4 D; {
    Set swApp = Application.SldWorks; f4 x! D2 Q* u6 H8 _$ _! u- z
    Set Part = swApp.ActiveDoc
/ y$ V" n8 o& l4 k% w# o    Set swSelMgr = Part.SelectionManager
( e$ q' {# ], ^  E2 B2 x    Set swComp= swSelMgr.GetSelectedObjectsComponent4(1,0)
1 q2 L1 e  b/ b; b        swComp.SetSuppression2 (3)   
% X  z6 F; @' l! H3 K    Set swSelModel = swComp.GetModelDoc2
. a$ g& V! G5 v# `8 _1 G$ q9 w    Set swSelModelext = swSelModel.Extension
% z" h4 \- p, h) E' p
# D* h, z. T4 G! C    oldpathname = swComp.GetPathName+ @4 D* i; u- }) l% D" P
    8 {( p; V5 v* w8 u8 g
    Path = Left(oldpathname, InStrRev(oldpathname, "\")) '路径" F6 U1 s) Z( d: {5 U
    Debug.Print Path6 z5 P% y  d) n9 c# |
    ntype = Mid(oldpathname, InStrRev(oldpathname, ".")) '后缀0 M0 ]) k% o* |; J1 k/ Z
    Debug.Print ntype
. Y8 x, Y2 V& J- m7 d    oldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1) '旧文件名) g  Y( G/ x, }' E* b% j
    Debug.Print oldfi  O8 z  ]* f+ h- X) h
    oldname = Left(oldfi, InStrRev(oldfi, ".") - 1). x& E! m; j" ^$ G* Z
         mipname = InputBox("changename", "name", oldname) '新文件名8 v, O5 b5 I; S4 a
         2 f1 k; A  V! b9 s
         mip = Path & mipname & ntype '新文件名带路径& v2 \- ~. c6 h& V' ]- D  w7 i
         Debug.Print mip
( I4 ^( u" z  ^, e6 Y0 b/ q& h6 {" Q1 u% j6 O
    If mip <> "" Then
+ @2 l/ T# o9 h$ z         Status = swSelModelext.SaveAs3(mip, 0, 512, Nothing, Nothing, Error, Warning) '更改零件文件名(替换装配体中的原文件)+ O- q# p5 m* D# |9 F
      Debug.Print Status8 Y! _. v; ?- Q; F+ C: y
      '========================, q& j6 k2 y; O+ x4 [! ~9 X
      '更改工程图文件名  D6 a6 g8 a  D$ y" I. {
      Debug.Print Path! Z" ^* A2 _5 B/ @! \) m
      tmpfi = Dir(Path & "*.SLDDRW") '遍历原文件夹中的工程图文件
7 w9 \$ t* o, ^" M      Debug.Print tmpfi) {3 H) R' z" k' M& O4 k$ k( M
      Do Until tmpfi =Null
4 q. n9 d+ Y6 Y. y( M$ }        tmpfiname = Mid(tmpfi, InStrRev(tmpfi, "\") + 1)) \& `. ^- R1 M( a( a+ L
        Debug.Print tmpfiname) C6 E: S; f! e7 X8 s
        tmpoldname=mid(oldfi,1,instr(1,oldfi,".")-1) & ".SLDDRW"5 A% ~5 E0 N$ `9 D4 O
        Debug.Print tmpoldname
1 ~* `6 r3 i9 ]' O% k/ p/ \0 O        If tmpfiname = tmpoldname Then '查找同名工程图* }  U0 ~; j+ Q5 T$ |2 A% n4 E
        newdrwname = Path & mipname & ".SLDDRW"
8 K# ^  \8 E% j        Debug.Print newdrwname& p) c' j- f8 K; T3 f
        olddrwname = Path & tmpfi/ Z6 z2 d( y. h4 l8 ^
         filecopy olddrwname,newdrwname '复制工程图到新文件夹
+ V! Z* b: g' `1 W2 C- x& P; U        vDepend = swApp.GetDocumentDependencies2(Path & tmpfi, False, False, False) '查找工程图依赖
) q+ O  |: N4 ~5 R0 m6 t, ]        Debug.Print vDepend(1)# N4 p9 m2 i& D* ^& t) F* `5 r
        bl = swApp.ReplaceReferencedDocument(newdrwname, vDepend(1), mip) '替换工程图依赖
/ r  _" i$ I0 T; S
! I0 W1 K4 X$ U6 G- p4 @: H        Debug.Print bl" F* d; c# V3 q* F) Z* A
         Exit Do7 S: e: y4 U2 z5 e  D
       End If
# w( B/ K5 w, W9 N& [' }  x    tmpfi = Dir
' w0 f% w2 ]. V% D, |! a    Debug.Print tmpfi) `! p) v! O$ A( _2 J5 N* Q
    Loop
1 Q+ {. i- K6 _" |- m. q: e* k    End If
3 t4 X2 |* N8 ?( k# U    End Sub! a* O6 K2 o0 i7 Z9 ^) _

7 S& p; W* |4 |3 o2 G
& i; x" A( ~* K: ^& U: b* K
$ Z3 r3 M4 H- f! y
! E3 P! P. l: P/ J9 G0 D0 Z3 j# z6 t* B; g) w* Y2 s0 o6 l

评分

参与人数 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* }& |% F0 F  f( [1 _. X% L. c: @! K
凯元工具也可以批量改名
/ F5 F4 Y, A2 P  I/ C
授人以鱼,不如授人以渔
+ s( N) ]6 ?" q- n% s& i3 n$ K
回复 支持 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 | 显示全部楼层
运行报错咋解决啊大佬
4 J4 T; x  I" N* o0 x$ _0 j
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 13:50 , Processed in 0.089612 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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