CATIA V5中用VB.NET代码向子Product添加部件后无法正确重命名的原因
CATIA V5 嵌套Product中部件重命名失败的原因与解决方法
问题原因
在嵌套Product结构里,子Product(比如Product2.1)属于独立的文档上下文。直接在根Product的上下文里修改子Product中部件的Name,只会更新部件在子Product中的实例引用名称,无法同步修改底层Part文档的真实名称;同时因为子Product未处于激活状态,CATIA的文档上下文不会处理这次改名操作,最终导致显示的名称未按预期更新。
另外,AddNewComponent返回的是部件在当前Product中的实例对象,而非底层Part文档对象,直接修改实例Name在非激活的子Product上下文中无法生效到文档层面。
解决方法
方法1:通过ReferenceProduct修改真实名称
直接获取部件对应的参考产品(关联底层Part文档),修改其名称以同步所有引用:
Dim CATIA = GetObject(, "CATIA.Application") Dim productDocument1 = CATIA.ActiveDocument Dim product1 = productDocument1.Product Dim products1 = product1.Products Dim product2 = products1.Item("Product2.1") Dim products2 = product2.Products ' 向子Product添加新部件 Dim product3 = products2.AddNewComponent("Part", "") ' 获取部件对应的参考产品(底层Part文档的引用) Dim refPartProduct = product3.ReferenceProduct ' 修改参考产品名称,同步更新实例与文档名称 refPartProduct.Name = "PART_NAME_2"
方法2:激活子Product文档后修改
先切换操作上下文到子Product,再修改实例名称:
Dim CATIA = GetObject(, "CATIA.Application") Dim productDocument1 = CATIA.ActiveDocument Dim product1 = productDocument1.Product Dim products1 = product1.Products Dim product2 = products1.Item("Product2.1") ' 激活子Product对应的文档,切换操作上下文 product2.Activate() Dim products2 = product2.Products ' 添加部件并修改名称 Dim product3 = products2.AddNewComponent("Part", "") product3.Name = "PART_NAME_2"
内容的提问来源于stack exchange,提问作者Guigui
相关产品推荐
相关产品推荐

