机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 21527|回复: 17
打印 上一主题 下一主题

重命名零件宏

[复制链接]
跳转到指定楼层
1#
发表于 2023-8-21 21:07:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Solidworks 虽功能强大,但有些地方做得不尽如人意,比如三维带工程图重命名,就显得十分鸡肋。论坛网友steve_suich发过一个改零件同时改工程图的宏(http://www.cmiw.cn/thread-1058539-1-2.html),虽然有所改进,但不是十分完美。5 }" ]) X$ @* ]; Y6 ^
我在此代码的基础上作些优化,希望能给大家带来帮助!
, C$ S! W  W. {0 x" \' e6 ]& L/ v$ Q9 b. e1 B; \! S1 `
Ps:1.前置条件:打开装配体并选择零件
# M. r( N/ u; y8 ^- Z- M2 C+ ^    2.使用方法:运行宏后输入名称
, v: w- I% W9 w    3.运行结果:同文件夹下生成新零件及附属工程图并保留原工程图8 D/ C+ d# _9 w6 w- Y
% ]2 c; d2 |. R# E  b8 a6 G# b9 }
Dim swApp As Object
: n5 j: y4 H4 x& o1 U$ a) J3 h) q  Dim Part As Object
1 @6 C$ b9 D+ Q) Y9 ~  Dim Error As Long
+ e# O: A# W+ ~+ ?+ lDim Warning As Long
0 i3 }0 l) q7 e' q' yDim mip As String+ m' t+ b, N! J: T0 M
Dim Status As Boolean
% K6 B/ s) s- r0 c; O- ?6 z0 `2 @Dim Newpath As String
" A0 q- ]2 F3 _2 [, mDim mipname As String
# G' Y0 Z. j8 b: P' a8 aDim vDepend() As String. x% t" `  L3 o1 _6 _  |3 k
    Sub main()
- b6 H6 ~' V  a; w/ x    Set swApp = Application.SldWorks
* a; R! J1 ^- L6 u" I" i# x# M8 P5 S    Set Part = swApp.ActiveDoc  \" V1 i# f' y/ c8 `
    Set swSelMgr = Part.SelectionManager2 q: e# G! H: q4 i
    Set swComp= swSelMgr.GetSelectedObjectsComponent4(1,0)
2 m& u; M9 b2 Z. z. y        swComp.SetSuppression2 (3)   
- l' |- K7 `1 Z    Set swSelModel = swComp.GetModelDoc2
5 l; C3 ?. t+ @- _" \4 G2 H    Set swSelModelext = swSelModel.Extension+ F( i7 q8 j# A# d! ]; B

! v& j: c* {, C! ]( @    oldpathname = swComp.GetPathName4 E$ k8 D* t: e2 e+ n. Z
   
# a- P: c' P$ A( h- P# Q    Path = Left(oldpathname, InStrRev(oldpathname, "\")) '路径" Y; d5 K/ C. F# S
    Debug.Print Path
* x! j5 W; `8 Z    ntype = Mid(oldpathname, InStrRev(oldpathname, ".")) '后缀
6 R# a8 g$ \9 ?8 e& n; ^- o    Debug.Print ntype
  k; L& G0 m0 O2 D4 A    oldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1) '旧文件名8 e% h, M8 l) s: a, }  l1 `7 s# j
    Debug.Print oldfi
2 S5 V+ \+ W0 [0 ^8 g    oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)  h4 y6 D' g$ Z% G( q  R
         mipname = InputBox("changename", "name", oldname) '新文件名
4 }" |6 B, u" k2 W         & ^' C/ G6 v0 F
         mip = Path & mipname & ntype '新文件名带路径1 Q4 W, g+ f+ k
         Debug.Print mip' X* ?7 q- H: n) C

/ b; `* H7 \3 Z" n! w    If mip <> "" Then
4 I/ p; v: O* g8 T  [( j         Status = swSelModelext.SaveAs3(mip, 0, 512, Nothing, Nothing, Error, Warning) '更改零件文件名(替换装配体中的原文件)
4 |; y% I0 k. o- h      Debug.Print Status3 b) m+ p7 l  c* M" g4 [9 I1 c# u3 ^5 @
      '========================
) W6 o2 d9 H2 F0 ?+ ~$ e, _      '更改工程图文件名
# y- G! f* ^. s' h! f# G, Q      Debug.Print Path$ w5 b7 j6 D4 ^
      tmpfi = Dir(Path & "*.SLDDRW") '遍历原文件夹中的工程图文件
) Z  `1 Q. d" J& ^5 |      Debug.Print tmpfi% Y7 K" W8 @6 s
      Do Until tmpfi =Null : T$ K$ F7 ~# t$ A: Y: S
        tmpfiname = Mid(tmpfi, InStrRev(tmpfi, "\") + 1): G' E' W/ i) `) X% T
        Debug.Print tmpfiname+ J/ l3 M/ F: g/ w
        tmpoldname=mid(oldfi,1,instr(1,oldfi,".")-1) & ".SLDDRW"1 |4 O6 v" b5 l3 k% j% ~
        Debug.Print tmpoldname$ f4 H* `) c7 j- M8 V! k8 ~9 t
        If tmpfiname = tmpoldname Then '查找同名工程图: a! w! h6 t$ U1 x. F
        newdrwname = Path & mipname & ".SLDDRW"
, V; O& x! S+ l/ N  E9 H        Debug.Print newdrwname
. e2 u- T2 o6 b5 Y        olddrwname = Path & tmpfi
  ?- [, `3 R) |7 a0 l         filecopy olddrwname,newdrwname '复制工程图到新文件夹
+ y) ]! u" R6 w9 w$ f        vDepend = swApp.GetDocumentDependencies2(Path & tmpfi, False, False, False) '查找工程图依赖2 ?9 d2 P/ q( M& ]
        Debug.Print vDepend(1)
7 d0 b% P7 K/ _3 i$ Z  \        bl = swApp.ReplaceReferencedDocument(newdrwname, vDepend(1), mip) '替换工程图依赖
5 n! ]/ E7 u5 P% D* l% M( ?
; A5 \$ I5 j" z' j" p9 w, E        Debug.Print bl
- v* J! O  D% z- Y/ K  _2 v7 c         Exit Do
! p0 Q/ Z0 v/ W' ?- K& @4 j& g       End If
/ g1 W- }8 a5 ]7 S2 E% w) B    tmpfi = Dir
( B* t  r) g/ }* c    Debug.Print tmpfi9 e7 {1 k; q4 V+ x, d; T' \, X. v" P
    Loop5 b9 D* z* R) v' E' X
    End If
8 k' \4 `8 ]8 H, P3 P% g6 h% m    End Sub
8 n& b# A; L( z8 G9 e: p* ?4 I& p* c+ p9 t
/ G( r0 |7 q* `# v. \. e, }. e
# a: w; @* I5 W) Q2 r5 b

! r, F* O/ O. N6 N' x1 y9 X! c/ v

评分

参与人数 1威望 +1 收起 理由
陈进一 + 1

查看全部评分

回复

使用道具 举报

2#
发表于 2023-8-22 07:09:54 | 只看该作者
有版本限制吗?
回复 支持 反对

使用道具 举报

3#
发表于 2023-8-22 09:57:12 | 只看该作者
Solidworks自带命名,就是不能关联工程图一起改而已。从设计流程来说,改名在出图之前。其实就无所谓要不要插件了。
回复 支持 反对

使用道具 举报

4#
发表于 2023-8-22 10:14:22 | 只看该作者
凯元工具也可以批量改名

点评

授人以鱼,不如授人以渔  详情 回复 发表于 2023-8-22 21:14
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2023-8-22 21:14:08 | 只看该作者
trongtrongtrong 发表于 2023-8-22 10:14
5 Z% H! y$ G( a8 X1 F" F' \! b凯元工具也可以批量改名
6 A2 o. L$ L5 ~' q% T# q
授人以鱼,不如授人以渔* Q1 z' p) S" |
回复 支持 1 反对 0

使用道具 举报

6#
发表于 2023-8-24 16:19:18 | 只看该作者
谢谢版主 分享
回复 支持 反对

使用道具 举报

7#
发表于 2023-11-8 16:07:45 | 只看该作者
复制粘贴过去代码错误
回复 支持 反对

使用道具 举报

8#
发表于 2023-11-8 16:08:14 | 只看该作者
显示代码错误 一片红
回复 支持 反对

使用道具 举报

9#
发表于 2024-3-26 11:09:39 | 只看该作者
怎么拷贝好一些,复制都是乱码
回复 支持 反对

使用道具 举报

10#
发表于 2024-4-3 13:29:17 | 只看该作者
运行报错咋解决啊大佬- _0 K! x7 ]4 m7 \' ?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 11:19 , Processed in 0.082005 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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