机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

重命名零件宏

[复制链接]
跳转到指定楼层
1#
发表于 2023-8-21 21:07:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Solidworks 虽功能强大,但有些地方做得不尽如人意,比如三维带工程图重命名,就显得十分鸡肋。必威APP精装版下载网友steve_suich发过一个改零件同时改工程图的宏(//www.szfco.com/thread-1058539-1-2.html),虽然有所改进,但不是十分完美。* {8 c: \9 ~* C8 g1 p2 q: Q
我在此代码的基础上作些优化,希望能给大家带来帮助!  l6 R0 O1 S/ V
, r) {. v! q% t* @: t
Ps:1.前置条件:打开装配体并选择零件, q4 T! j# f; V
    2.使用方法:运行宏后输入名称  A+ I$ ?' r. R8 d
    3.运行结果:同文件夹下生成新零件及附属工程图并保留原工程图9 K: g) T7 N2 G

) ^  f! R. y2 X7 {2 m- q& v5 UDim swApp As Object- F9 ^3 z( ?7 M
  Dim Part As Object6 Z' @. R- E4 Y0 n
  Dim Error As Long4 x0 W1 W& |' ~+ o
Dim Warning As Long
& K! d4 o$ v; S3 G  KDim mip As String
" r# O. O: ?9 e/ U, L' G' GDim Status As Boolean
$ m+ u9 R1 Y4 T  ?- t& kDim Newpath As String
2 J5 A' q, U& E1 C( vDim mipname As String
8 R" j! x$ e# ]* c/ @Dim vDepend() As String
; {( l5 y1 C# p/ g, I8 f9 E    Sub main()& k8 N: @( m  H3 m: }+ h  o
    Set swApp = Application.SldWorks
3 D+ t. V" ]( Z, l% Y8 N  l    Set Part = swApp.ActiveDoc! e/ ?4 a: J& c1 P
    Set swSelMgr = Part.SelectionManager. r, c" x& G$ |3 x
    Set swComp= swSelMgr.GetSelectedObjectsComponent4(1,0)3 J: Z: h8 }: \' E5 h. \$ {0 d, X
        swComp.SetSuppression2 (3)    % U# R7 I, t2 X  w
    Set swSelModel = swComp.GetModelDoc2
* y0 n8 W- V6 B1 \6 \7 G8 w    Set swSelModelext = swSelModel.Extension
7 _( P7 s: b- I: V5 ~& |
9 z2 }- d8 `. K  u6 }( Y2 A    oldpathname = swComp.GetPathName
1 w2 C$ `1 r( a. ]# |9 r    # i  a' l/ f- b  H) I6 I
    Path = Left(oldpathname, InStrRev(oldpathname, "\")) '路径
% X) K% M6 ]. D" V3 y# t$ i- M    Debug.Print Path
6 d% O' R; o8 }6 r3 \    ntype = Mid(oldpathname, InStrRev(oldpathname, ".")) '后缀$ i' e: {" Y, [4 N0 [
    Debug.Print ntype( H5 C! o% X2 ?0 W& ]
    oldfi = Mid(oldpathname, InStrRev(oldpathname, "\") + 1) '旧文件名  [& E  ]0 y7 I7 u
    Debug.Print oldfi
$ F& C- n' E% v( J, o5 Y    oldname = Left(oldfi, InStrRev(oldfi, ".") - 1)
5 m6 {% W' r+ L- }7 ^  V" Y         mipname = InputBox("changename", "name", oldname) '新文件名
! L4 T! r2 Y0 P* N" ]) C         
: V* |/ Z* e. |3 ~; @" X/ g6 r         mip = Path & mipname & ntype '新文件名带路径
1 n9 i# D- d5 J( X         Debug.Print mip. e2 d& }7 B2 p3 m

$ |$ \% [+ {4 }9 _    If mip <> "" Then
$ D$ ?; R; Q5 _6 n         Status = swSelModelext.SaveAs3(mip, 0, 512, Nothing, Nothing, Error, Warning) '更改零件文件名(替换装配体中的原文件)
, a2 ~+ F9 a$ c6 O  S! ]5 C      Debug.Print Status9 d, i# `# h/ C/ S; h) D
      '========================$ K4 k5 d2 u" s' |7 b# s' }' _
      '更改工程图文件名
& @  B2 ~, m* _      Debug.Print Path, ^* l% ~/ z+ U5 L: ~$ P; A
      tmpfi = Dir(Path & "*.SLDDRW") '遍历原文件夹中的工程图文件. {$ @; w5 a" Z( O
      Debug.Print tmpfi5 x7 s4 f! c4 n7 l
      Do Until tmpfi =Null , v8 o( t' b8 L
        tmpfiname = Mid(tmpfi, InStrRev(tmpfi, "\") + 1)
6 q6 l, k- Y' f$ p        Debug.Print tmpfiname5 r; j/ e. {. v1 e9 `) i7 p
        tmpoldname=mid(oldfi,1,instr(1,oldfi,".")-1) & ".SLDDRW"
$ z$ s( \& a. z9 }9 j* H* @  @        Debug.Print tmpoldname
' O/ u# m, M+ t5 \( a        If tmpfiname = tmpoldname Then '查找同名工程图
7 ^# i" M- n% M) s1 e# B        newdrwname = Path & mipname & ".SLDDRW"
9 ^: X% r# `5 X3 K  |9 j        Debug.Print newdrwname
& N+ v# L0 b9 W6 e# c3 |. m        olddrwname = Path & tmpfi( i. w( t: H( `  u# z  ^/ T
         filecopy olddrwname,newdrwname '复制工程图到新文件夹
9 L: g4 C( O3 q2 i/ b. u        vDepend = swApp.GetDocumentDependencies2(Path & tmpfi, False, False, False) '查找工程图依赖  R' _3 [0 W( a3 B( ]1 C
        Debug.Print vDepend(1)" T  \4 t) ^) Q" I
        bl = swApp.ReplaceReferencedDocument(newdrwname, vDepend(1), mip) '替换工程图依赖. u' h0 M. F! h# B2 x

) A4 N! r0 j! c3 [$ N        Debug.Print bl( U4 m# X) Z  n2 |" C( K: [
         Exit Do
$ W6 J6 V9 ?% k8 O" D' l( D       End If; u; `  I- X' l! D$ T( O8 F
    tmpfi = Dir- e9 `' }" K) x+ w8 @; A& k3 Z
    Debug.Print tmpfi( h1 X3 I( C8 C& Q
    Loop6 x& I7 w7 X# a
    End If/ C# s( S8 M; F1 F4 y
    End Sub* Y/ v  X/ r! D
& U' S$ p  r7 B9 T2 ]/ j7 a! V
# @3 Q# e2 X7 S  m  g: c
( g( w4 E- B# o" `- A; R
. z! d6 J/ h. Y
% {& ?5 ^) z+ E' u9 H* }

评分

参与人数 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
" o1 m7 L5 O. S/ b% h9 N/ p, j: c凯元工具也可以批量改名
" N9 _! l5 c5 q. W& V
授人以鱼,不如授人以渔: V$ U/ ^* F% D! @5 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 | 只看该作者
运行报错咋解决啊大佬
. v0 C. z  `; {+ K' C0 ~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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