首页/文章/ 详情

用Deepseek写CATIA插件太丝滑了!

1天前浏览22

我凌晨五点迫不及待的起床写了这个帖子,只为把这个好消息及时分享给大家,当我问了Deepseek一个问题:请帮我写一个可以导出catia零件几何图形集下所有点坐标的宏程序。

▼ 与Deepseek的聊天记录

以上是与Deepseek聊天的界面,经过40秒的思考时间,Deepseek会给出下文中所示思考过程与代码,我们可以很轻松的将此段代码CV到CATIA VBA的环境编辑器中(最丝滑的是无需任何更改,并运行代码,便可以在电脑桌面上得到一个如下的表格文件[下一图],打开此文件之后,所有坐标点信息一览无余[下二图]。需要说明的是,AI给出了非常详细的分析过程,分析过程也有几分道理,但是并不是完美到极致,例如此代码只能对采用坐标类型创建的点进行导出[下三图],将其他的点类型进行了过滤,无法导出(令人欣慰的是,后面我又重新问了一遍,Deepseek居然猜到了我的心思,虽然后来给出的代码也有缺陷,但是这一举动属实有点贴心了[下四图]),另外还有Deepseek自作主张的对零件文件中所有的几何图形集进行了遍历,这样并不符合我们的操作习惯,我们更倾向于在执行程序之后,通过交互由用户来选择一个几何图形集,对这个特定几何图形集下的所有点坐标进行导出,这个过程用到的是selection对象的selectelement2 方法。然而国产AI能够做到这种程度已经足够让我们支棱起来了,也期待[国产]更出色的表现。

我们之前也分享过一款导出点坐标的小插件,如果需要的话,可以公众 号回复【点坐标】获取使用即可。

通过测量(SPAWorkbench)模块Getpoint方法导出点坐标的方法。

CATIA小蚂蚁,公众 号:CATIA小蚂蚁[CATIA批量导出点坐标插件分享]批量导出点坐标的方法五-二次开发程序

▼ Deepseek自动导出点坐标表格

▼ AI导出的点坐标效果展示

▼ 使用坐标类型创建的点

▼二次提问 Deepseek贴心回答


***以下橙色文字回答全部为Deepseek AI生成***

嗯,用户需要写一个能够导出CATIA零件几何图形集下所有点坐标的宏程序。首先,我得回忆一下CATIA的API结构。CATIA使用VBA宏,所以需要用VBScript来编写。首先,我应该找到当前打开的零件文档,然后遍历几何图形集中的几何元素。

用户提到的是“几何图形集”,所以可能需要访问Part的HybridBodies集合。每个几何图形集都是一个HybridBody,里面可能包含点元素。接下来,我需要确定点的类型,在CATIA中,点可能是HybridShapePointCoord类型,或者是其他类型的点,比如通过参考或其他方式创建的。可能需要检查每个元素的类型,并提取坐标。

接下来,需要考虑如何导出坐标。用户可能希望将结果保存为文本文件,比如CSV格式,这样方便用Excel或其他工具处理。所以宏需要创建一个文件,写入标题行,比如“几何图形集名称,点名称,X,Y,Z”,然后循环每个点,获取坐标并写入文件。

需要注意错误处理,比如几何图形集中可能包含非点元素,或者点可能没有坐标属性。这时候需要用On Error Resume Next或者在循环中检查类型,避免宏崩溃。

可能还需要让用户选择保存文件的位置,可以使用输入框或者文件对话框,但为了简化,可能直接指定路径,或者使用默认路径,比如桌面。或者弹出一个保存对话框让用户选择位置。

另外,可能需要处理多个几何图形集的情况,所以需要遍历每个HybridBody,然后遍历其中的每个元素,检查是否是点,然后处理。

测试时需要注意,是否有权限写入文件,是否所有点都能正确获取坐标。可能有些点是通过其他方式创建的,比如参考其他几何元素,这时候可能需要不同的方法获取坐标,但根据用户需求,可能只处理简单的坐标点。

现在,具体步骤可能是:

1. 获取当前CATIA的ActiveDocument,确保是Part文档。

2. 获取Part的HybridBodies(几何图形集)。

3. 遍历每个HybridBody。

4. 遍历HybridBody中的每个HybridShape。

5. 检查每个HybridShape是否是HybridShapePointCoord类型。

6. 如果是,获取其坐标X、Y、Z。

7. 将结果写入文本文件。

8. 处理异常,例如无法获取坐标的情况。

9. 最后提示用户导出完成。

在代码中,可能需要用到Part的HybridBodies,然后每个HybridBody的HybridShapes集合。然后循环每个元素,检查TypeName是否为HybridShapePointCoord。然后使用其X、Y、Z属性。

关于文件路径,可能需要让用户选择路径,或者使用默认路径,比如桌面。例如使用环境变量获取桌面路径,然后拼接文件名。

另外,需要确保在写入文件时,正确释放对象,避免CATIA崩溃。可能需要使用GetObject和CreateObject来操作文件系统对象。

可能的错误点:未处理非Part文档的情况,比如在装配或工程图中运行宏,此时需要提示用户。还有可能用户没有打开任何文档,需要处理这种情况。

另外,导出的坐标是相对于零件的坐标系,还是其他坐标系?假设用户需要的是绝对坐标或者相对于零件原点的坐标。HybridShapePointCoord的坐标通常是相对于局部坐标系的,但需要确认是否正确。

综上,代码的大致结构应该是:

- 检查活动文档是否为Part

- 获取HybridBodies

- 遍历每个几何图形集

- 遍历每个元素,检查是否为点

- 收集坐标

- 写入文件

- 处理错误

现在开始编写代码,可能需要包括:

声明变量,获取文档,检查类型,循环结构,写入文件,错误处理等。

测试时,如果遇到某些点无法获取坐标,可能需要跳过,或者给出提示。同时,要确保文件写入正确,不会因为权限问题失败。

以下是一个用于导出CATIA零件几何图形集下所有点坐标的VBA宏程序。它会将结果保存为CSV文件,并支持多几何图形集遍历:
















































































Sub ExportPointsFromGeometricalSets()    On Error Resume Next
   Dim partDoc As PartDocument    Set partDoc = CATIA.ActiveDocument
   If Not TypeName(partDoc) = "PartDocument" Then        MsgBox "请打开零件文档!"        Exit Sub    End If
   Dim part As Part    Set part = partDoc.Part
   Dim hybridBodies As HybridBodies    Set hybridBodies = part.HybridBodies
   Dim fso As Object    Set fso = CreateObject("Scripting.FileSystemObject")
   Dim desktopPath As String    desktopPath = Environ("USERPROFILE") & "\Desktop\"
   Dim filePath As String    filePath = desktopPath & "Points_Export.csv"
   Dim ts As Object    Set ts = fso.CreateTextFile(filePath, True)
   ' 写入CSV表头    ts.WriteLine "几何图形集名称,点名称,X坐标,Y坐标,Z坐标"
   Dim totalPoints As Integer    totalPoints = 0
   ' 遍历所有几何图形集    Dim i As Integer    For i = 1 To hybridBodies.Count        Dim currentBody As HybridBody        Set currentBody = hybridBodies.Item(i)
       Dim hybridShapes As HybridShapes        Set hybridShapes = currentBody.HybridShapes
       ' 遍历当前几何图形集中的所有元素        Dim j As Integer        For j = 1 To hybridShapes.Count            Dim currentShape As HybridShape            Set currentShape = hybridShapes.Item(j)
           If TypeName(currentShape) = "HybridShapePointCoord" Then                Dim point As HybridShapePointCoord                Set point = currentShape
               ' 获取坐标值                Dim xVal As Double                Dim yVal As Double                Dim zVal As Double                xVal = point.X.Value                yVal = point.Y.Value                zVal = point.Z.Value
               ' 写入CSV行                ts.WriteLine currentBody.Name & "," & _                            point.Name & "," & _                            Format(xVal, "0.000") & "," & _                            Format(yVal, "0.000") & "," & _                            Format(zVal, "0.000")
               totalPoints = totalPoints + 1            End If        Next j    Next i
   ts.Close    Set fso = Nothing
   MsgBox "成功导出 " & totalPoints & " 个点坐标到:" & vbCrLf & filePath, vbInformationEnd Sub

功能说明:

  1. 自动检测当前活动文档是否为零件文档

  2. 遍历零件中所有几何图形集(包括子级)

  3. 识别几何图形集中的所有坐标点(HybridShapePointCoord类型)

  4. 生成CSV文件并保存到桌面

  5. 输出包含以下信息的CSV文件:

    • 几何图形集名称

    • 点名称

    • X/Y/Z坐标值(保留3位小数)

使用方法:

  1. 打开包含几何图形集的CATIA零件文档

  2. 进入"工具" → "宏" → "宏..."

  3. 选择或创建宏并粘贴此代码

  4. 运行宏,导出的CSV文件将自动保存到桌面

注意事项:

  • 导出的坐标值为零件设计坐标系中的绝对坐标

  • 仅识别使用"点坐标"命令创建的点

  • 需要启用CATIA的宏安全性设置

  • 导出的CSV文件可以使用Excel直接打开

如果需要处理更复杂的点类型(如投影点、极坐标点等),需要根据具体类型添加相应的坐标提取逻辑。

***以上橙色文字全部为Deepseek AI生成***


Deepseek给出了比较完美的代码,并且也给出了使用方法,我们可以直接复 制上文中的代码粘贴到CATIA的开发编辑器中执行,AI给出的使用方法描述比较简单

学过二次开发的盆友可以拷贝Deepseek给出的代码,研究分析一下自己的开发水平对比AI如何,会不会产生失业焦虑呢。另外我们之前分享过批量导出点坐标的六种方法,如果大家感兴趣,可以点击如下链接学习查看:


[CATIA技巧]CATIA中批量导出点坐标的方法一

[CATIA技巧]CATIA中批量导出点坐标的方法二

[CATIA技巧]CATIA中批量导出点坐标的方法三

[CATIA技巧]CATIA中批量导出点坐标的方法四-知识工程EKL

[CATIA批量导出点坐标插件分享]批量导出点坐标的方法五-二次开发程序

【工程图表格导出到EXCEL插件共享】CATIA批量导出点坐标的方法六------


来源:CATIA小蚂蚁
ACTWorkbenchSystem二次开发通用CATIAUM知识工程曲面装配工程图
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-02-19
最近编辑:1天前
CATIA专业培训讲师
日拱一卒无有进 功不唐捐终入海
获赞 56粉丝 141文章 73课程 4
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈