Catia VBA如何读写选中Catia对象的Description等属性
VBA操作CATIA选中对象两项属性的实现方法
你要操作的两个属性都是CATIA Product对象的原生公开属性,不需要遍历自定义参数集即可直接读写,具体实现逻辑和代码如下:
核心实现逻辑
- 首先绑定当前运行的CATIA进程,获取活动文档的选择集,校验选中对象是否为合法的Product类型(这两个属性仅Product对象持有,Part、草图等其他对象无对应属性)
- Description(描述) 是Product对象的直接属性,可直接通过对象属性接口读写
- Visualize in the Bill of Material(在物料清单中显示) 对应Product对象的BOM配置属性,同样可通过原生属性接口直接调用,无需遍历参数集合
可直接复用的VBA代码
Sub ReadWriteCATIAProdProperties() ' 绑定CATIA应用 On Error Resume Next Dim catia As Object Set catia = GetObject(, "CATIA.Application") If Err.Number <> 0 Then MsgBox "检测不到运行中的CATIA进程,请先启动CATIA打开目标文档" Exit Sub End If On Error GoTo 0 ' 获取选择集校验 Dim sel As Selection Set sel = catia.ActiveDocument.Selection If sel.Count = 0 Then MsgBox "请先选中需要操作的CATIA对象" Exit Sub End If ' 校验选中对象为Product类型 Dim targetProd As Product On Error Resume Next Set targetProd = sel.Item(1).Value If Err.Number <> 0 Or TypeName(targetProd) <> "Product" Then MsgBox "选中对象不是产品(Product)类型,不支持这两项属性操作" Exit Sub End If On Error GoTo 0 ' -------------------------- ' Description属性读写示例 ' -------------------------- ' 读取属性值 Dim currentDesc As String currentDesc = targetProd.Description MsgBox "当前对象描述值:" & currentDesc ' 写入属性值,可替换为你需要的内容 targetProd.Description = "自定义描述内容" ' -------------------------- ' BOM显示属性读写示例 ' -------------------------- ' 读取属性值:True=在BOM中显示,False=不在BOM中显示 Dim currentBomVis As Boolean currentBomVis = targetProd.VisuInBOM MsgBox "当前对象BOM显示状态:" & currentBomVis ' 写入属性值,示例为设置为不在BOM中显示 targetProd.VisuInBOM = False MsgBox "属性操作完成" End Sub
注意事项
- 如果需要批量处理多个选中对象,只需加循环遍历选择集内的所有元素,逐个校验类型后执行属性读写即可
- 属性修改完成后需要保存对应文档,否则重启CATIA后修改会丢失
- 不要尝试通过Parameters集合遍历查找这两个属性,原生直接属性的调用效率远高于参数遍历,也不会出现属性名匹配错误的问题
对应标注的属性位置参考图:
内容的提问来源于stack exchange,提问作者Yume
相关产品推荐
相关产品推荐

