找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 7985|回复: 6

[分享] 看完这个CATIA,你也能在1秒钟内给100个元素重命名

[复制链接]

624

主题

510

回帖

9263

积分

版主

积分
9263
发表于 2019-12-16 08:49:55 | 显示全部楼层 |阅读模式
对于某些有规范要求的设计,或者那些有强迫症的童鞋,给元素自动批量重命名是一件很爽的事!

  比如,你的几何体本来在很有规律地按顺序命名,但你中间有个几何体不想要删掉了,再插入时,自动的序号并不会接着用它。给我们的感觉就是:即使删除了它,也抹不掉它曾经存在过的这个事实
1.png
 那么,如果我们能实现下面动图演示的效果,岂不美哉!
2.gif

  事实上,本篇文章今天要介绍的,就是如何用宏代码实现上面的功能。并且,这个代码非常简单!

  首先,如果你连宏代码都不知道往哪写,或者写完不知道怎么运行,不知道怎么创建命令图标,不会查Automation手册等等,这些基础问题,请移步b站观看小编录制的《CATIAVBA/宏二次开发》的入门教学视频(扫描下面二维码即可观看)。

  接下来,我们来看代码。其实原理就是遍历当前Part下的每个Body。然后有个序号,从1开始,每遍历一次序号都自加1。再把固定的前缀字符串与序号连接起来,就是我们最终要的命名了!

  你去查Part下的自动化对象,它的子子孙孙一目了然,包括我们这次的目标Body。
3.png
因此,根据以上内容,我们不难写出以下代码:
4.png
 相信看到这里,各位小伙伴都已经跃跃欲试了吧!不过即使你的程序跑成功了,也不要得意忘形哦~学习讲究举一反三,所以请聪明的你们想一想,如何修改上面的程序,以实现下面动图演示的效果呢?
5.gif

0

主题

29

回帖

5457

积分

上尉

积分
5457
发表于 2021-10-22 03:18:36 | 显示全部楼层
我用的这个:

Sub CATMain()
        Dim StrPrefix As String
        StrPrefix = InputBox("请输入要替换的几何体名称中的字符" & vbCrLf & vbCrLf & "Replace < / > and < . > and <Space> and < \ > to < _ > !", "几何体改名", "")
        'If StrPrefix = "" Then Exit Sub

        Dim EndPrefix As String
        EndPrefix = InputBox("请输入替换后的几何体名称中的字符" & vbCrLf & vbCrLf & "Replace < / > and < . > and <Space> and < \ > to < _ > !", "几何体改名", "")
        'If EndPrefix = "" Then Exit Sub

        Set RootPart = CATIA.ActiveDocument.Part
        Set oBodies = RootPart.Bodies

        For Each oBody In oBodies
                oBody.Name = Replace(Replace(Replace(Replace(Replace(oBody.Name, StrPrefix, EndPrefix), "/", "_"), ".", "_"), " ", "_"), "\", "_") 'Replace "/" and "."  and Space and "\" to "_"
        Next
        MsgBox "几何体名称替换完成", vbInformation
End Sub

0

主题

3

回帖

66

积分

上等兵

积分
66
发表于 2020-3-1 17:20:20 | 显示全部楼层
小狼的软件技巧很厉害啊   真的学习了

3

主题

37

回帖

1076

积分

六级士官

积分
1076
发表于 2020-3-2 11:24:26 | 显示全部楼层
谢谢楼主分享,楼主好人好梦!

46

主题

347

回帖

9992

积分

少校

积分
9992
发表于 2020-3-5 12:20:16 | 显示全部楼层
好东西!

0

主题

1

回帖

16

积分

列兵

积分
16
发表于 2023-12-23 22:50:15 | 显示全部楼层
手选法
Sub CATMain()
Dim Doc, Prt, SF, Slct, BodyO, BodyN
Set Doc = CATIA.ActiveDocument
Set Prt = Doc.Part
Set SF = Prt.ShapeFactory
Set Slct = Doc.Selection

Dim Status, lType(1)
lType(0) = "HybridBody"
lType(1) = "Body"

Status = Slct.SelectElement2(lType, "选择改名的目录", True)
If Status = "Redo" Or Status = "Undo" Or Status = "Cancel" Then
    Exit Sub
End If
Set iPart =Slct.Item(1).Value

Dim iBodies
Set iBodies = iPart.HybridBodies

Prefix = InputBox("请输入要替换的几何体名称中的字符" , , "XXX")
If Prefix = "" Then Exit Sub

Dim iBody, iCount
iCount = 1
For Each iBody In iBodies
iBody.Name = Prefix & "-" & iCount
iCount = iCount + 1
Next

End Sub



Dim iBodies

Set iBodies = iPart.HybridBodies

Prefix = InputBox("请输入要替换的几何体名称中的字符" , , "XXX")
If Prefix = "" Then Exit Sub

Dim iBody, iCount
iCount = 1
For Each iBody In iBodies
iBody.Name = Prefix & "-" & iCount
iCount = iCount + 1
Next
End Sub

6

主题

2555

回帖

8436

积分

少校

积分
8436
发表于 2024-2-8 20:24:39 | 显示全部楼层
感谢大佬!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

咨询QQ:1359218528|发帖须知!|Archiver|手机版|小黑屋|UG爱好者论坛 ( 京ICP备10217105号-2 )

GMT+8, 2025-1-30 22:45

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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