首页/文章/ 详情

腾讯元宝辅助CATIA二次开发编程太丝滑了吧?

6月前浏览572
现在的AI辅助设计编程已经这么强大了嘛?程序猿瑟瑟发抖进行中,当我问了元宝如下这个问题的时候:

给我写一个用catia vba语言实现给电脑某一个文件夹里的catpart零件批量转换成stp格式的程序,谢谢!

腾讯元宝在一分钟之内给出如下几近完美的回复.我把元宝给出的代码复 制到CATIA VBA的IDE中,仅仅注释掉了其中通过 COM创建CATIA 应用程序的代码,便可无痛顺利运行. 大家感兴趣可以复 制如下这段代码进行试用,使用的时候只需要替换CATIA零件文件所在的输入文件夹和导出的stp文件要存储的文件夹路径即可.使用的时候运行Sub SimpleBatchConvert()过程.






































































































































Option Explicit

' 转换单个文件Function ConvertSingleFile(inputFilePath As String, exportPath As String) As Boolean    On Error GoTo ErrorHandler
    'Dim catia As Object    Dim document As Object    Dim partDocument As Object    Dim fileName As String    Dim exportName As String
    ' 获取CATIA应用'    Set catia = GetObject("CATIA.Application")'    If catia Is Nothing Then'        Set catia = CreateObject("CATIA.Application")'    End If
    ' 设置CATIA可见性(可选)    catia.Visible = True
    ' 从完整路径中提取文件名    fileName = Right(inputFilePath, Len(inputFilePath) - InStrRev(inputFilePath, "\"))
    exportName = Left(fileName, InStrRev(fileName, ".") - 1) & ".stp"
    ' 打开CATPart文件    Set document = catia.Documents.Open(inputFilePath)    Set partDocument = document
    ' 导出为STP格式    partDocument.ExportData exportPath & "\" & exportName, "stp"
    ' 关闭文档(不保存)    document.Close
    ' 清理对象    Set partDocument = Nothing    Set document = Nothing
    ConvertSingleFile = True    Exit Function
ErrorHandler:    ConvertSingleFile = False    MsgBox "转换文件失败: " & fileName & vbCrLf & _           "错误: " & Err.Description, vbExclamationEnd Function
' 获取文件夹中 特定类型的文件Function GetFilesInFolder(folderPath As String, filePattern As String) As String()    Dim fso As Object    Dim folder As Object    Dim file As Object    Dim fileList() As String    Dim count As Integer
    Set fso = CreateObject("Scripting.FileSystemObject")
    If Not fso.FolderExists(folderPath) Then        ReDim fileList(-1 To -1)        GetFilesInFolder = fileList        Exit Function    End If
    Set folder = fso.GetFolder(folderPath)
    ' 初始化数组    ReDim fileList(0)    count = 0
    ' 遍历文件    For Each file In folder.Files
        If LCase(fso.GetExtensionName(file.Name)) = LCase(Replace(filePattern, "*", "")) Or _           LCase(file.Name) Like LCase(filePattern) Then            If count > 0 Then ReDim Preserve fileList(count)            fileList(count) = file.Path            count = count + 1        End If    Next
    ' 调整数组大小    If count = 0 Then        ReDim fileList(-1 To -1)    Else        ReDim Preserve fileList(count - 1)    End If
    GetFilesInFolder = fileListEnd Function

' 简单界面版本 - 直接指定路径Sub SimpleBatchConvert()    Dim inputFolder As String    Dim outputFolder As String
    ' 设置输入输出文件夹路径    inputFolder = "E:\新建文件夹\yourinputfolder"  ' 修改为你的输入文件夹路径    outputFolder = "E:\新建文件夹\youroutputfolder"  ' 修改为你的输出文件夹路径
    ' 确保文件夹存在    Dim fso As Object    Set fso = CreateObject("Scripting.FileSystemObject")
    If Not fso.FolderExists(inputFolder) Then        MsgBox "输入文件夹不存在!", vbExclamation        Exit Sub    End If
    If Not fso.FolderExists(outputFolder) Then        ' 创建输出文件夹        fso.CreateFolder outputFolder    End If
    ' 批量转换    Dim fileList() As String    Dim i As Integer    Dim successCount As Integer
    fileList = GetFilesInFolder(inputFolder, "*.CATPart")
    For i = 0 To UBound(fileList)        If ConvertSingleFile(fileList(i), outputFolder) Then            successCount = successCount + 1        End If    Next i
    MsgBox "转换完成!共处理 " & (UBound(fileList) + 1& " 个文件,成功 " & successCount & " 个。", vbInformationEnd Sub

◆  ◆  ◆  ◆  ◆  



元宝同时答复如下注意事项和高级选项:

注意事项:

  1. CATIA版本:此代码适用于CATIA V5,确保你安装了相应版本

  2. STP格式:导出的STP格式是AP203标准,如果需要其他标准(如AP214),可以修改导出代码

  3. 内存管理:处理大量文件时,可能需要定期清理内存

  4. 错误处理:程序包含基本错误处理,但复杂的CATPart文件可能会出现问题

  5. 权限:确保有读写目标文件夹的权限


高级选项:

如果你需要更多控制,可以修改导出部分:

' 如果需要设置STP导出选项
Dim exportSetting As String
exportSetting = "AP214"  ' 或 "AP203", "AP242"
partDocument.ExportData exportPath & "\" & exportName, "stp", exportSetting

这个程序会自动处理指定目录下的所有CATPart文件,并将它们转换为STP格式保存到指定输出文件夹。


元宝最后给出的高级选项中:如果要导出其他标准的STP格式,可以修改导出代码. 这种方案是错误的,automation中关于ExportData方法(如下是关于ExportData方法的说明)中仅有零件名称fileName和零件格式format两个选项,元宝这里臆想出第三个参数,呃呃…..










Sub ExportData(CATBSTR fileName,CATBSTR format)Exports the data contained in the document to another formatParameters: fileName :The name of the exported file format :The name of the format Example: This example writes the Doc document in the IGES format under the IGESDoc name. Doc.ExportData("IGESDoc""igs")
如果要导出其他应用协议的Stp格式文件,正确的方法是在如下CATIA选项页面进行应用协议选择后,再重启CATIA软件并运行程序.

人工智能还有比较长的路要走…...

So,既然人工智能尚不完美,我简单更新了下批量转格式的插件,可以批量将CATIA零件文件(.CATPart)转换成其他任意格式(如下图所列出的格式清单),解放双手利器,如果有需要

如果您对二次开发感兴趣,那么类似于deepseek,元宝,豆包之类的AI 软件对于我们来说是”如虎添翼”,只需要输入自己的需求,将AI给出的解法做一下简单的修改,就可以实现自己的目的,但是前提是我们需要会那么一点点编程.




来源:CATIA小蚂蚁
System二次开发CATIAUGUM控制人工智能曲面装配
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-02-12
最近编辑:6月前
CATIA专业培训讲师
日拱一卒无有进 功不唐捐终入海
获赞 65粉丝 182文章 113课程 4
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈