找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 4095|回复: 4
打印 上一主题 下一主题

[求助] 谁有CATIA批量改名的宏程序啊

[复制链接]
跳转到指定楼层
1
发表于 2017-7-28 20:45:05 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
谁有CATIA批量改名的宏程序啊?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2018-3-12 14:52:10 | 只看该作者
' -----------------------------------------------------------
'批量重命名后批量保存
'程序说明:
'程序实现在Product下,对第一层结构树内零件批量重命名,
'并将重命名后的零件以新零件名保存在当前路径下。
'程序运行前应先手动将不需要重命名的零部件隐藏(如外购件等)。
' -----------------------------------------------------------

Sub CATMain()

        On Error Resume Next
        Set rootDoc = CATIA.ActiveDocument
        On Error GoTo 0
   
        If TypeName(rootDoc) <> "ProductDocument" Then
                MsgBox "错误!" & vbLf & _
                        "本程序仅能在Product下运行!" & vbLf & vbLf & _
                        "程序将被关闭!", vbOKOnly + vbCritical, " "
                Exit Sub
        End If

                MsgBox "注意!" & vbLf & _
                        "运行前请先隐藏外购件!" & vbLf & vbLf & _
                        "  ", vbOKOnly + vbInformation, " "

        Set productDocument1 = CATIA.ActiveDocument
        Set selection = productDocument1.Selection
        Set visPropertySet = selection.VisProperties
        Set product1 = productDocument1.Product
        Set products1 = product1.Products

        DocPath = productDocument1.Path '获取当前文档保存路径

' -----------------------------------------------------------
'初始化
' -----------------------------------------------------------

        strName = Inputbox("输入组件名","请输入组件名","")

        If strName=False Then '取消命名则退出程序
        Exit Sub
        End If

        j=0
        k=0

' -----------------------------------------------------------
'寻找相同的part,并隐藏
' -----------------------------------------------------------

        For m=1 to products1.Count-1
                For n=m+1  to products1.Count
                str1 = products1.Item(m).PartNumber
                str2 = products1.Item(n).PartNumber
                if (Instr(str1,str2)) Then
                        Set producti = products1.Item(n)
                        Set products1 = producti.Parent
                        selection.Add producti
                        Set visPropertySet = visPropertySet.Parent
                        visPropertySet.SetShow 1
                        selection.Clear
                end if
                Next
        Next

' -----------------------------------------------------------
'重命名
' -----------------------------------------------------------

        For i=1 to products1.Count
                Set producti = products1.Item(i)
                Set products1 = producti.Parent
                selection.Add producti
                Set visPropertySet = visPropertySet.Parent
                visPropertySet.GetShow showstate
        selection.Clear

        If  showstate <> 1 Then  '隐藏为1
                If not(Instr(products1.Item(i).PartNumber,strName)) Then
                j=j+1
                        str = CStr(int(j))
                        if j<10 then
                        str = "0" & str  '零件号尾部
                end if
                        if 10<j<=100 then
                        str = "0" & str  '零件号尾部
                end if
        products1.Item(i).PartNumber= strName & "-" & str      '批量修改零件号
        strPartNumber = products1.Item(i).PartNumber
        products1.Item(i).name = strPartNumber & "." & 1

        SaveToFile products1.Item(i), DocPath '保存重命名的文件

        end if
        end if
Next
' -----------------------------------------------------------
'寻找相同的part,并编号
' -----------------------------------------------------------

        k2=1

        For m=1 to products1.Count-1

                Set producti = products1.Item(m)
                Set products1 = producti.Parent
                selection.Add producti
                Set visPropertySet = visPropertySet.Parent
                visPropertySet.GetShow showstate
                selection.Clear

        If showstate <> 1 Then

                For n=m+1  to products1.Count
                        str1 = products1.Item(m).PartNumber
                        str2 = products1.Item(n).PartNumber
                        If (Instr(str1,str2)) Then
                                k2=k2+1
                                products1.Item(n).name = str2  & "." & k2
                        End if
        Next
        k2=1
        End if
        Next
       
        Msgbox "文件已保存至该路径--->" & DocPath

End Sub

' -----------------------------------------------------------
' 文件保存路径
' -----------------------------------------------------------

Sub SaveToFile(oProduct, DocPath)
        'loop inside the product
        Dim i 'As Integer
        Dim intIncrement 'As Integer

        On Error Resume Next
        oProduct.ReferenceProduct.Parent.SaveAs DocPath & "\" & oProduct.PartNumber
        On Error GoTo 0

        For i = 1 To oProduct.Products.Count
                Set prdSubProduct = oProduct.Products.Item(i)
                If prdSubProduct.HasAMasterShapeRepresentation() Then
                        Set prdRefProduct = prdSubProduct.ReferenceProduct
                        Set docSubDocument = prdRefProduct.Parent
                        strSubFullPath = docSubDocument.FullName
                        'identification of the component (CATPart or CATProduct)
                        Dim extension 'As String
                        If InStr(strSubFullPath, ".CATPart") Then
                                extension = ".CATPart"
                        Else
                                extension = ".CATProduct"
                        End If
                        docSubDocument.SaveAs DocPath & "\" & prdRefProduct.Name & extension
                        CATIA.DisplayFileAlerts = False
                Else
                        Dim oSubSubProds 'As Products
                        Set oSubSubProds = prdSubProduct.Products
                        If oSubSubProds.Count > 0 Then
                                Call SaveToFile(prdSubProduct, DocPath)
                        End If
                End If
        Next

strSubFullPath =""
prdSubProduct =""
prdRefProduct =""
docSubDocument =""
oSubSubProds =""
folderpath =""

End Sub
3
发表于 2018-10-30 22:05:52 | 只看该作者
有否替换字符串 批量改名方法?
4
发表于 2018-11-12 11:49:46 | 只看该作者
这个好像是重新命名宏,没法替换其中摸一个字符
5
发表于 2018-11-13 00:04:23 | 只看该作者
正好是我需要的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-22 22:55 , Processed in 0.022621 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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