找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 25504|回复: 24

重命名零件宏

  [复制链接]
发表于 2023-8-21 21:07:44 | 显示全部楼层 |阅读模式
Solidworks 虽功能强大,但有些地方做得不尽如人意,比如三维带工程图重命名,就显得十分鸡肋。论坛网友steve_suich发过一个改零件同时改工程图的宏(http://www.cmiw.cn/thread-1058539-1-2.html),虽然有所改进,但不是十分完美。
' h* L5 o6 D6 Q# Z我在此代码的基础上作些优化,希望能给大家带来帮助!. I2 s  X, x" K  l) N( n
/ S3 c# v& Q* ~
Ps:1.前置条件:打开装配体并选择零件
/ ^$ E6 E, t) J" r0 V    2.使用方法:运行宏后输入名称
( e( I: e* s  g6 L    3.运行结果:同文件夹下生成新零件及附属工程图并保留原工程图
# S& k; J* P+ }1 M7 O0 \
, h' C: p/ w, SDim swApp As Object! v0 A. |% V5 `8 z) E
  Dim Part As Object$ w8 ]* J$ l0 m
  Dim Error As Long
: t9 ?( |/ l- }) ]2 x. X$ zDim Warning As Long) T  v7 I' i8 e0 i/ d/ s7 m7 w8 m# L5 ?9 u
Dim mip As String
6 K* s' S* l2 g5 `- y/ QDim Status As Boolean
% S' c9 N4 Y1 ?7 X" M! _Dim Newpath As String1 b8 c& h2 t3 z! @
Dim mipname As String
3 A' A- E# A4 q6 w" yDim vDepend() As String' g: h# E; Z  K, E; I( a, M
    Sub main()" G9 S0 Q4 T% I/ p" I/ u
    Set swApp = Application.SldWorks6 B: ~" B6 M  k: N" K/ Q; C
    Set Part = swApp.ActiveDoc
$ M2 P& e; n3 ^# ?; f+ H    Set swSelMgr = Part.SelectionManager
% @7 H( U% X7 ~2 J' c- T    Set swComp= swSelMgr.GetSelectedObjectsComponent4(1,0)
+ q. r0 M6 m) D$ J  Z- x        swComp.SetSuppression2 (3)   
+ _7 @7 e4 v% v9 H+ q1 w    Set swSelModel = swComp.GetModelDoc22 \7 J4 G8 X$ N+ k2 m3 E( {5 W3 V
    Set swSelModelext = swSelModel.Extension
* C) E! V$ `$ k) {$ S
# \7 p6 |" o9 f2 H    oldpathname = swComp.GetPathName+ h8 m7 |! P& q4 X/ [- {8 k$ S5 K
   
& l) F2 D# Z/ F+ Q3 ~    Path = Left(oldpathname, InStrRev(oldpathname, "\")) '路径
5 N; W$ ^5 L/ ]! }. o4 t+ T    Debug.Print Path; c5 D' _- j6 N! X/ E
    ntype = Mid(oldpathname, InStrRev(oldpathname, ".")) '后缀+ i" \* L; l3 ^1 [  N) H
    Debug.Print ntype
9 L  y# a- |/ X+ T  f    oldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1) '旧文件名7 E7 S, _" c4 q) A
    Debug.Print oldfi
) i# r3 E+ }" V. R- f    oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)# r: {9 C' w5 {* E# @! Q' Q
         mipname = InputBox("changename", "name", oldname) '新文件名
2 b" h" \1 U, m) U8 T* T         5 n6 i9 R) m3 `/ ?" K
         mip = Path & mipname & ntype '新文件名带路径2 N; @/ B/ S# P9 ]6 L) N% f; g
         Debug.Print mip0 v7 }% w; M9 [* U8 q

/ h7 [5 [% N1 t/ c6 _# c    If mip <> "" Then; S2 P$ M& y$ F% U
         Status = swSelModelext.SaveAs3(mip, 0, 512, Nothing, Nothing, Error, Warning) '更改零件文件名(替换装配体中的原文件)
8 r; f. T9 [9 R      Debug.Print Status
$ X0 V/ @- K; C8 w% k4 a      '========================8 C% b: n5 n) z+ e- G' d
      '更改工程图文件名2 G# j/ D( c2 G8 t4 Z
      Debug.Print Path
- f: A! |; a( t3 }% x- G      tmpfi = Dir(Path & "*.SLDDRW") '遍历原文件夹中的工程图文件
4 E! |, e5 `0 [' f+ Y, d      Debug.Print tmpfi# t9 W& B% r. G
      Do Until tmpfi =Null . i9 A/ m% E+ }" H- a6 h! m
        tmpfiname = Mid(tmpfi, InStrRev(tmpfi, "\") + 1)9 m: X0 `* d4 j1 {3 h
        Debug.Print tmpfiname
' U" m% U/ Z2 P- I$ T! W- g# Z        tmpoldname=mid(oldfi,1,instr(1,oldfi,".")-1) & ".SLDDRW"
3 D: }. k2 Z! V* ]- X" g; [        Debug.Print tmpoldname
7 R) S0 s2 }+ Y        If tmpfiname = tmpoldname Then '查找同名工程图. T+ j* h3 a, V/ h
        newdrwname = Path & mipname & ".SLDDRW"' q# e- j: e, k1 _9 }
        Debug.Print newdrwname+ A' H. j. O5 p6 A
        olddrwname = Path & tmpfi
/ ]) a+ |  K8 V, x, y+ C: S2 ?         filecopy olddrwname,newdrwname '复制工程图到新文件夹4 U/ i$ {3 f2 X. `4 Y" Y5 V5 _( M
        vDepend = swApp.GetDocumentDependencies2(Path & tmpfi, False, False, False) '查找工程图依赖1 X/ ?, Z* N6 t; m. {3 K
        Debug.Print vDepend(1)
" \4 U. j( k1 n) w. Y; D, O% x        bl = swApp.ReplaceReferencedDocument(newdrwname, vDepend(1), mip) '替换工程图依赖, Z1 u# ~3 C# \; T# G0 g. u

, \/ v5 R7 O" z        Debug.Print bl/ N' b; t9 A# r9 a# q
         Exit Do5 @3 ^+ L% ?0 C% y& F% a' Q
       End If8 T8 l" |2 Z9 w* C+ ?1 m/ q  b- P
    tmpfi = Dir
* [7 |3 A( `" ]; [" R- }3 c/ l9 K    Debug.Print tmpfi2 B% f# J& l8 _$ j. y3 J' r
    Loop
# \' x3 i+ h( e$ R, t; v    End If
) O# l" i% M' ^6 u# z" A) b* M; t9 o    End Sub
  v7 `5 D& @$ M2 r+ T5 X
  \  d! t8 |( \) e7 m4 N) N  n8 D6 {5 @* L. s3 F/ o: K
5 R& u! {) n, K6 M( v1 |
& {/ H7 E$ |* y# W! i* D! `  ~

: ~) J* L6 I. b& v

评分

参与人数 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
# v3 R  t& I. y) z+ d5 Q凯元工具也可以批量改名
% L% d( }; ^; K8 `
授人以鱼,不如授人以渔
, }% l& b# I1 K' o
发表于 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 | 显示全部楼层
运行报错咋解决啊大佬, K9 w3 s' f* q
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-19 12:20 , Processed in 0.109105 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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