机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

重命名零件宏

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

' [! L( m# Y/ [4 G+ q! q4 rPs:1.前置条件:打开装配体并选择零件
/ @6 G5 H% v8 t, U7 `2 L$ \/ _    2.使用方法:运行宏后输入名称& Q6 x; z4 ?5 S- n
    3.运行结果:同文件夹下生成新零件及附属工程图并保留原工程图
$ n6 n: C- i- {' E; P& H5 m
6 C! |: C% M, l1 uDim swApp As Object
5 @; Z( |0 g/ r1 i" t1 M  Dim Part As Object
4 T6 {6 S+ N9 y( W( [7 t  Dim Error As Long
0 x3 Y* T. f$ f# e2 x* c" BDim Warning As Long7 q! }0 R  E. S2 X2 F/ z3 ~  m
Dim mip As String& C# X) I: t1 ~: ]
Dim Status As Boolean, g( {: y3 m' `6 L* t0 _3 b
Dim Newpath As String+ {; p# G/ I4 U4 p' D- A
Dim mipname As String, Q7 ?- t/ f) M, y; A; }
Dim vDepend() As String: v# I" j+ T& ^- w7 ?: J  f
    Sub main()7 G; r& ~( U0 q9 Z1 m+ m8 [
    Set swApp = Application.SldWorks6 o9 }- [5 a) @  ~6 J
    Set Part = swApp.ActiveDoc
( Y8 f" r- a  F: `# ]- h$ p    Set swSelMgr = Part.SelectionManager+ D1 J) r3 U: e
    Set swComp= swSelMgr.GetSelectedObjectsComponent4(1,0): i+ Q. \! [$ u9 ~
        swComp.SetSuppression2 (3)   
  N: R" \; [  C9 m6 Y- w    Set swSelModel = swComp.GetModelDoc2
  Z% B& u& @* M1 W2 T7 H    Set swSelModelext = swSelModel.Extension" S& Y% \) Q3 k& T

" j0 B' O  V( w( u0 s$ Q    oldpathname = swComp.GetPathName: s2 Z/ J" L1 M* q4 P
   
3 Y/ k% y! V8 S, Q    Path = Left(oldpathname, InStrRev(oldpathname, "\")) '路径2 X9 V: Y+ Q7 M' g- _5 L
    Debug.Print Path
$ G1 Y* F. v. N9 [4 i    ntype = Mid(oldpathname, InStrRev(oldpathname, ".")) '后缀6 C" p1 R  B. s4 E
    Debug.Print ntype% G; h: m" r6 X0 \! @- `* d, m
    oldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1) '旧文件名
/ ]- C3 E& G, D" p# b    Debug.Print oldfi! J% Z  ]" x, P$ J. a' j, d
    oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)) h4 f' x( {+ }
         mipname = InputBox("changename", "name", oldname) '新文件名/ q' \& S3 Q, I7 _
         7 }+ F6 }* E/ o% r# s
         mip = Path & mipname & ntype '新文件名带路径5 r6 B- @  ^! l- z& y
         Debug.Print mip
7 o' t: w  k- x0 D, @! d7 \# a2 u+ S4 |! z6 Y2 Z. v
    If mip <> "" Then
$ B* O/ Z- x& i) n- ^7 m         Status = swSelModelext.SaveAs3(mip, 0, 512, Nothing, Nothing, Error, Warning) '更改零件文件名(替换装配体中的原文件)' I3 m/ c- i5 @0 I3 q& h
      Debug.Print Status% j& n" \9 k. ~# z& {8 U
      '========================
( h8 S! k& I% M: T, [      '更改工程图文件名
" L0 _7 n) j( b* G      Debug.Print Path
1 L) M$ o5 t$ R5 J' C* o$ n1 ?2 h      tmpfi = Dir(Path & "*.SLDDRW") '遍历原文件夹中的工程图文件
% O2 m, L% x* e: W3 v  O      Debug.Print tmpfi
* j% X/ O, W! c# @, F7 a) k      Do Until tmpfi =Null $ e2 b: m3 B9 X  K3 N
        tmpfiname = Mid(tmpfi, InStrRev(tmpfi, "\") + 1)
* V4 }+ k& P' P0 w- l2 }5 c        Debug.Print tmpfiname  S9 J9 N# |$ O3 t- x( i
        tmpoldname=mid(oldfi,1,instr(1,oldfi,".")-1) & ".SLDDRW"
" A( A% u  b! C$ ~: s' U        Debug.Print tmpoldname
$ V- N7 q& D  }4 k        If tmpfiname = tmpoldname Then '查找同名工程图
/ a' B, b8 `% Z3 d8 _5 _5 Y        newdrwname = Path & mipname & ".SLDDRW"; t0 [2 \6 u* N8 M. x
        Debug.Print newdrwname
2 s6 U; c+ T# a7 A4 ?( S        olddrwname = Path & tmpfi) o% b: F) D1 n" X; n
         filecopy olddrwname,newdrwname '复制工程图到新文件夹
' N) ?9 w' I( p        vDepend = swApp.GetDocumentDependencies2(Path & tmpfi, False, False, False) '查找工程图依赖
, ~3 K% [: h3 \; F- l9 t+ L) G        Debug.Print vDepend(1)5 Q* J6 |; u; [" U! `& Q& ~
        bl = swApp.ReplaceReferencedDocument(newdrwname, vDepend(1), mip) '替换工程图依赖
& W0 f  V! j# R
0 c5 H$ u- |/ X6 P: v( `- L        Debug.Print bl
; r) I* R. h3 M1 i* b5 ~         Exit Do
, q( N' L  N- _7 x1 n6 k+ X       End If
( L6 }6 Y$ _1 r2 x/ T    tmpfi = Dir3 y9 C$ |3 W% z+ ?
    Debug.Print tmpfi
! z0 b/ N" I5 I3 m. Y5 _4 _    Loop* X; p9 j0 _  H- e/ d2 t& Z4 `& [, ~5 M
    End If( S+ H% B& n8 J' A+ |; B
    End Sub
7 I9 Q- K# j8 T- b* e& h* s, d2 R' W7 M+ `; X
2 X$ p% J1 _5 L* |0 \* Z" t
/ w& Q& ?: C, ]; \% g6 g( Z$ O

# M8 |; c9 K) l7 Z; K% E8 ]2 X4 i) _& {4 b* \! o  h7 \8 \$ |$ o

评分

参与人数 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% R, N9 Z7 h5 H+ W7 u) b2 D8 p
凯元工具也可以批量改名

/ I1 }) z" ^1 O3 w& C授人以鱼,不如授人以渔
% r5 N  Q6 A# T$ W  d& q* j
回复 支持 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 | 只看该作者
运行报错咋解决啊大佬
3 ?; f4 a6 z6 T/ |; U+ }9 ], X) @# |
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 10:36 , Processed in 0.090275 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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