如何解决迟绑定(Late Binding)中激活Main Body的报错问题?
CATIA迟绑定激活Main Body报错的解决方法
早绑定模式下激活Main Body的代码可正常运行:
Dim partDocument1 As PartDocument partDocument1 = CATIA.ActiveDocument Dim part1 As Part part1 = partDocument1.Part Dim bodies1 As Bodies = part1.Bodies Dim body1 As Body = bodies1.Item("Main Body") part1.InWorkObject = body1
但迟绑定模式下执行类似代码时,会返回错误:Exception de HRESULT : 0x80020003 (DISP_E_MEMBERNOTFOUND),迟绑定代码如下:
Dim partDocument1 As Object partDocument1 = CATIA.ActiveDocument Dim part1 As Object part1 = partDocument1.Part Dim bodies1 As Object bodies1 = part1.Bodies Dim body1 As Object body1 = bodies1.Item("Main Body") part1.InWorkObject = body1
解决方法
针对迟绑定的报错问题,可尝试以下几种方案:
修正VBA环境的对象赋值语法:
如果是在VBA中使用迟绑定,对象变量赋值必须添加Set关键字,否则会触发成员找不到的错误。修改后的代码如下:Dim partDocument1 As Object Set partDocument1 = CATIA.ActiveDocument Dim part1 As Object Set part1 = partDocument1.Part Dim bodies1 As Object Set bodies1 = part1.Bodies Dim body1 As Object Set body1 = bodies1.Item("Main Body") Set part1.InWorkObject = body1用
SetInWorkObject方法替代属性直接赋值:
部分CATIA COM对象的属性在迟绑定时直接赋值会失效,可改用官方提供的SetInWorkObject方法设置工作对象:Dim partDocument1 As Object partDocument1 = CATIA.ActiveDocument Dim part1 As Object part1 = partDocument1.Part Dim bodies1 As Object bodies1 = part1.Bodies Dim body1 As Object body1 = bodies1.Item("Main Body") ' 替换属性赋值为方法调用 part1.SetInWorkObject(body1)通过反射显式调用COM成员(.NET环境):
若在VB.NET等.NET环境中使用迟绑定,可通过反射的InvokeMember方法显式访问属性和方法,确保正确解析COM成员:Imports System.Reflection Dim partDocument1 As Object = CATIA.ActiveDocument Dim part1 As Object = partDocument1.GetType().InvokeMember("Part", BindingFlags.GetProperty, Nothing, partDocument1, Nothing) Dim bodies1 As Object = part1.GetType().InvokeMember("Bodies", BindingFlags.GetProperty, Nothing, part1, Nothing) Dim body1 As Object = bodies1.GetType().InvokeMember("Item", BindingFlags.InvokeMethod, Nothing, bodies1, New Object() {"Main Body"}) ' 显式设置InWorkObject属性 part1.GetType().InvokeMember("InWorkObject", BindingFlags.SetProperty, Nothing, part1, New Object() {body1})
内容的提问来源于stack exchange,提问作者El doctor Sertato
相关产品推荐
相关产品推荐

