找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 23653|回复: 18

重命名零件宏

[复制链接]
发表于 2023-8-21 21:07:44 | 显示全部楼层 |阅读模式
Solidworks 虽功能强大,但有些地方做得不尽如人意,比如三维带工程图重命名,就显得十分鸡肋。论坛网友steve_suich发过一个改零件同时改工程图的宏(http://www.cmiw.cn/thread-1058539-1-2.html),虽然有所改进,但不是十分完美。
1 i1 R( O: R" J6 N, O5 @( @我在此代码的基础上作些优化,希望能给大家带来帮助!1 v4 ?3 @4 B0 `( h0 ?: [* s+ }
  q& q7 P" k: f  \: n  g1 F
Ps:1.前置条件:打开装配体并选择零件
+ s) ?( Z* A7 o! y: c5 [    2.使用方法:运行宏后输入名称
1 G# w! v8 v9 a    3.运行结果:同文件夹下生成新零件及附属工程图并保留原工程图* g2 @& f: f  n$ @

& E- o9 e4 ^2 BDim swApp As Object. c0 B  u, N) d. R0 X1 O
  Dim Part As Object# X' L  ^5 h* \* w
  Dim Error As Long
; |9 L9 a) _/ g6 |. N: k( ^Dim Warning As Long
- L: _5 A7 T) ^. cDim mip As String2 ~. |" H3 t% @4 `" t4 t; J8 D
Dim Status As Boolean
+ I- l, e+ ]4 Z- s% VDim Newpath As String
! `* Q5 @9 p# Y+ G9 gDim mipname As String
7 o; F* U6 N+ i" Y5 y0 y1 FDim vDepend() As String
$ A0 g+ V; d; ^/ S8 f    Sub main()
7 d# o4 n" P7 C5 I1 C    Set swApp = Application.SldWorks
+ u/ {; y2 p, X# V( a* X    Set Part = swApp.ActiveDoc
9 g$ Y# o# E- C) t6 i/ v7 {    Set swSelMgr = Part.SelectionManager
$ \) i! }* R0 `& r$ Q4 D    Set swComp= swSelMgr.GetSelectedObjectsComponent4(1,0)6 m5 n% p' t7 ?; p
        swComp.SetSuppression2 (3)   
! D8 B* K1 J' W1 t    Set swSelModel = swComp.GetModelDoc2
7 z, ^9 s( u! ?2 I" F    Set swSelModelext = swSelModel.Extension
! H  ^) X2 v1 Y, j
) C  l0 P! S9 }. n5 A8 P, S7 Z    oldpathname = swComp.GetPathName9 `6 k+ E( @; n& ?( x( l4 ~' S
    0 N8 m0 H. G* E) N
    Path = Left(oldpathname, InStrRev(oldpathname, "\")) '路径$ R' O/ s( s8 ?
    Debug.Print Path
7 f- N$ \. F% c    ntype = Mid(oldpathname, InStrRev(oldpathname, ".")) '后缀) j* `. s  n, z* e8 p$ c! Z6 c
    Debug.Print ntype# d- B: w6 e& O6 o8 w$ n2 P+ A
    oldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1) '旧文件名+ S) T2 G3 ~6 s" D- F; _  I
    Debug.Print oldfi! O: `" b& x8 \: G" u3 H# ?+ c
    oldname = Left(oldfi, InStrRev(oldfi, ".") - 1): F; H9 m6 S- B, c
         mipname = InputBox("changename", "name", oldname) '新文件名
7 ~) `8 h4 }: p) R" R" P/ a4 k         4 Z$ g+ l4 S9 b
         mip = Path & mipname & ntype '新文件名带路径
/ l3 x7 Z! U0 n8 }& o: ?         Debug.Print mip; I& y0 u7 ^2 o+ X/ b+ w

" ^9 y9 m9 o; O9 M* m, w/ M$ h, }    If mip <> "" Then
+ _: b5 C0 r/ ^6 W& g         Status = swSelModelext.SaveAs3(mip, 0, 512, Nothing, Nothing, Error, Warning) '更改零件文件名(替换装配体中的原文件)
' ?" B# T' Z0 c- C& k; h: u% p& m      Debug.Print Status
1 l* E6 J/ w8 h      '========================* r1 R3 t! X5 n1 [( [
      '更改工程图文件名- s5 y" j8 y4 E% X+ D' b% D. x
      Debug.Print Path
# o, _& Y, w, F      tmpfi = Dir(Path & "*.SLDDRW") '遍历原文件夹中的工程图文件
7 i, R/ l) u: e6 S9 r      Debug.Print tmpfi
7 o' Z6 \  C4 n( ^( ?      Do Until tmpfi =Null 4 D2 p, m! W) Y& s
        tmpfiname = Mid(tmpfi, InStrRev(tmpfi, "\") + 1)1 v" i9 U* ?2 s, R8 e- g6 u) t
        Debug.Print tmpfiname
. _5 ]( M  v7 p. E( X9 P        tmpoldname=mid(oldfi,1,instr(1,oldfi,".")-1) & ".SLDDRW"
; ?; R! {  l* h! e3 _8 y# J        Debug.Print tmpoldname; N% |. c0 a# U
        If tmpfiname = tmpoldname Then '查找同名工程图
3 J$ y6 K3 X% x1 k        newdrwname = Path & mipname & ".SLDDRW"
, E2 \) l6 |; ~+ `        Debug.Print newdrwname
% U  w/ K% ^$ s5 T) C        olddrwname = Path & tmpfi
9 b. g3 v( E: p0 o5 \; i- y- ^         filecopy olddrwname,newdrwname '复制工程图到新文件夹- u4 w' p" T9 m6 A( e: C9 K1 G2 c
        vDepend = swApp.GetDocumentDependencies2(Path & tmpfi, False, False, False) '查找工程图依赖* a" d- Q0 t; S6 r- k) t! F+ ~
        Debug.Print vDepend(1)
. i6 i- N4 H6 Z/ F+ H' i        bl = swApp.ReplaceReferencedDocument(newdrwname, vDepend(1), mip) '替换工程图依赖
, c- h# S3 n& A; R, q' L' }4 i/ d: k# a
        Debug.Print bl
' V, T! A1 v5 |5 `1 u& l         Exit Do
7 w% g. E/ B. O: M% v& G* Z       End If
/ P6 ~% Z+ u) i; r0 V/ ^    tmpfi = Dir
7 d7 c! F+ f( V+ F3 H. Y    Debug.Print tmpfi1 K0 E' A3 X. \$ W) M' z
    Loop
5 O- a0 @. m. }# u: a# G    End If
( Y  D5 T1 D+ V0 P3 `4 x    End Sub
5 c2 N' q2 t' n
8 Q6 X# {, D6 |6 K8 J! V
; X; E1 x) M3 }& Q9 s- k# ?( J' c1 O3 u+ ]

) |6 v8 u# Y0 Y9 n" I3 S" x
! Y7 N8 g4 B" m1 A

评分

参与人数 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:144 i" J, ]6 M$ I* |/ n& T  Z( N! V
凯元工具也可以批量改名
9 T# B1 L7 y7 S" o& ]6 i
授人以鱼,不如授人以渔
' ]! x: K2 Y( I( ?+ W8 c' W" B* p
发表于 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 | 显示全部楼层
运行报错咋解决啊大佬
2 z- m4 a  T' j, D) t
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-6-16 23:47 , Processed in 0.143142 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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