我凌晨五点迫不及待的起床写了这个帖子,只为把这个好消息及时分享给大家,当我问了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, vbInformation
End Sub
功能说明:
自动检测当前活动文档是否为零件文档
遍历零件中所有几何图形集(包括子级)
识别几何图形集中的所有坐标点(HybridShapePointCoord类型)
生成CSV文件并保存到桌面
输出包含以下信息的CSV文件:
几何图形集名称
点名称
X/Y/Z坐标值(保留3位小数)
使用方法:
打开包含几何图形集的CATIA零件文档
进入"工具" → "宏" → "宏..."
选择或创建宏并粘贴此代码
运行宏,导出的CSV文件将自动保存到桌面
注意事项:
导出的坐标值为零件设计坐标系中的绝对坐标
仅识别使用"点坐标"命令创建的点
需要启用CATIA的宏安全性设置
导出的CSV文件可以使用Excel直接打开
如果需要处理更复杂的点类型(如投影点、极坐标点等),需要根据具体类型添加相应的坐标提取逻辑。
***以上橙色文字全部为Deepseek AI生成***
Deepseek给出了比较完美的代码,并且也给出了使用方法,我们可以直接复 制上文中的代码粘贴到CATIA的开发编辑器中执行,AI给出的使用方法描述比较简单
学过二次开发的盆友可以拷贝Deepseek给出的代码,研究分析一下自己的开发水平对比AI如何,会不会产生失业焦虑呢。另外我们之前分享过批量导出点坐标的六种方法,如果大家感兴趣,可以点击如下链接学习查看:
[CATIA技巧]CATIA中批量导出点坐标的方法四-知识工程EKL