机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 15354|回复: 15
打印 上一主题 下一主题

重命名零件宏

[复制链接]
跳转到指定楼层
1#
发表于 2023-8-21 21:07:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Solidworks 虽功能强大,但有些地方做得不尽如人意,比如三维带工程图重命名,就显得十分鸡肋。必威APP精装版下载网友steve_suich发过一个改零件同时改工程图的宏(//www.szfco.com/thread-1058539-1-2.html),虽然有所改进,但不是十分完美。
0 a! M+ c4 B5 ?% r4 [我在此代码的基础上作些优化,希望能给大家带来帮助!8 Q5 i( ~7 ~4 g8 ~

$ f" s  ]& H, o% d. [Ps:1.前置条件:打开装配体并选择零件/ z$ T# L. |* e7 _3 _
    2.使用方法:运行宏后输入名称
+ ^9 g( d# c3 {    3.运行结果:同文件夹下生成新零件及附属工程图并保留原工程图+ M* B- Q9 V0 {3 _2 {
, m- V& o* I8 i  W
Dim swApp As Object
% W, ~5 E: [$ M' D9 G7 j2 h  Dim Part As Object
7 B0 F$ d# w, b, i1 u* Q" W  Dim Error As Long! A* U! d/ I0 `) V" h0 g4 O
Dim Warning As Long3 F! s: P# {( m; J. F
Dim mip As String
3 t* ?' V! q# XDim Status As Boolean
1 s, R) W$ o4 SDim Newpath As String" I2 D  O2 v' K7 u7 e
Dim mipname As String% G! K7 h) U4 U' s5 }
Dim vDepend() As String
) i" _, L9 a8 g' f$ K+ w. m7 M    Sub main()$ A7 F7 C1 f9 Y7 ^4 e
    Set swApp = Application.SldWorks* b% [! |& G1 v3 |
    Set Part = swApp.ActiveDoc
) C& Q; n6 x( B. _0 h: [+ _+ N- {9 M    Set swSelMgr = Part.SelectionManager
: }. S; ]5 `" z" \( p1 I* V    Set swComp= swSelMgr.GetSelectedObjectsComponent4(1,0)& ^+ G1 w( R$ Z% V
        swComp.SetSuppression2 (3)   
9 N6 |& n4 w. b% U" ]+ _    Set swSelModel = swComp.GetModelDoc2
* A0 I$ F& I( I) d; g# e    Set swSelModelext = swSelModel.Extension" @3 U' t, Z0 E: P
7 \9 T! p% ^! n2 b& B5 p
    oldpathname = swComp.GetPathName' k, Z+ ]/ i/ V
   
+ \2 X( o* [) X7 K9 @7 Y    Path = Left(oldpathname, InStrRev(oldpathname, "\")) '路径
! o$ M; ^) ^0 R- c4 L    Debug.Print Path* X1 R& X8 ]: C% U
    ntype = Mid(oldpathname, InStrRev(oldpathname, ".")) '后缀7 ]9 L1 U: G) b; t3 b" M
    Debug.Print ntype5 j+ [4 f+ ^: N" j
    oldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1) '旧文件名% B1 O; ~7 g2 t) W. H& v9 J
    Debug.Print oldfi$ c& l: E3 @$ c
    oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)1 \/ t1 \& R1 G+ b. Q
         mipname = InputBox("changename", "name", oldname) '新文件名
$ o. k- q! v8 x5 \5 q, b         
* {0 D3 v6 L) M( M+ Y         mip = Path & mipname & ntype '新文件名带路径/ L9 r: l: S$ A2 o5 q" K- s
         Debug.Print mip/ }) b% b1 L) L0 @5 N" L- e

7 J: s: I* g3 s) Z" @) |. j    If mip <> "" Then7 h2 C! d+ p. f; H
         Status = swSelModelext.SaveAs3(mip, 0, 512, Nothing, Nothing, Error, Warning) '更改零件文件名(替换装配体中的原文件)1 A1 S0 F  E( L( u# L: M; D
      Debug.Print Status9 \- o6 f$ b+ j% e3 [4 x5 |9 _
      '========================4 c# |# Q6 p9 X/ J& B; O' S0 {
      '更改工程图文件名% ^* S' U. R  f; t
      Debug.Print Path  l. G! L, M  R) L: `4 }) [0 o
      tmpfi = Dir(Path & "*.SLDDRW") '遍历原文件夹中的工程图文件# b6 R1 ?7 A+ e" {1 g  F" q4 A
      Debug.Print tmpfi: O) V& t7 [2 J; H. Q5 I
      Do Until tmpfi =Null * w3 q: ]' p4 s3 a% [9 \# X  o
        tmpfiname = Mid(tmpfi, InStrRev(tmpfi, "\") + 1)( i: R8 w3 U4 u2 ~" ^, b
        Debug.Print tmpfiname. W" _9 r6 G1 M
        tmpoldname=mid(oldfi,1,instr(1,oldfi,".")-1) & ".SLDDRW"+ _; d8 H% Z2 w* F
        Debug.Print tmpoldname
* y& `- q/ H- R- V- D: m        If tmpfiname = tmpoldname Then '查找同名工程图
/ I5 T6 e" n7 \4 e7 M$ b, \        newdrwname = Path & mipname & ".SLDDRW"
4 H) N" _6 C9 J; w        Debug.Print newdrwname9 v0 F  r8 C+ h4 R# N* l. P
        olddrwname = Path & tmpfi6 Z- Y5 H7 z1 K/ z9 t, x
         filecopy olddrwname,newdrwname '复制工程图到新文件夹5 i! W2 O8 `! ^" w+ ]3 V  o
        vDepend = swApp.GetDocumentDependencies2(Path & tmpfi, False, False, False) '查找工程图依赖+ m$ r5 Q# g3 o/ \9 `
        Debug.Print vDepend(1)$ [6 t5 {. |, o( B, c* a
        bl = swApp.ReplaceReferencedDocument(newdrwname, vDepend(1), mip) '替换工程图依赖
7 L+ t, ^" A  y$ R
% C) ]8 H3 w$ p        Debug.Print bl
0 l0 H) o! t1 _3 b2 r         Exit Do6 F$ ~, J' m) P5 N
       End If
" Y- Z9 M% N: C/ a1 O    tmpfi = Dir3 T* r  {* c4 y" s
    Debug.Print tmpfi/ I& j7 C/ b% g; u, U. w9 D
    Loop) u1 V, D4 |3 e
    End If2 n9 ?4 r! W* ^; ]6 ]4 {
    End Sub
+ A# g* M$ V, I7 i6 U
/ |1 i+ z$ ~# c& P6 N6 [6 b* d9 U
% m1 l4 e/ @8 }6 m! W' u6 G! I  ?5 o, d9 k- i

% z1 [0 C- u" P/ q! ?4 |# L% K% p/ T9 I$ g" Q3 a

评分

参与人数 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
1 F+ }. }1 P2 u凯元工具也可以批量改名
) _% ]) G, F( o
授人以鱼,不如授人以渔
0 e7 g* H% u8 T7 z2 Z
回复 支持 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 | 只看该作者
运行报错咋解决啊大佬
( e2 i, I' [. i- O! b( I3 a
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-9-22 03:50 , Processed in 0.097060 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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