我正在开发的程序将在 AutoCAD 2013 和 2002 上使用。所以,我正在做的是检查用户是否有 2013 以及是否不存在尝试 2002。当代码将AcadApplication
对象链接到2002年打开的实例。
代码:
_progID_2002 = "AutoCAD.Application.15";
_progID_2013 = "AutoCAD.Application.19";
try
{
Type acType = Type.GetTypeFromProgID(_progID_2002);
_acadApp = (AcadApplication)Activator.CreateInstance(acType, true);
}
catch
{
// Try other version, or exit
}
所以当我使用_progID_2013
. 它会打开 AutoCAD 2013 并_acadApp
进行链接。当我尝试使用它时,_progID_2002
它会打开 AutoCAD 2002,但是当我设置_acadApp
为打开的实例时,它会引发异常:
InvalidCastException
Unable to cast COM object of the type 'System._ComObject' to interface type
'AutoCAD.AcadApplication'. This operation failed because the QueryInterface
call on the COM component for the interface with IID '{070AA05D-DFC1-4E64-
8379-432269B48B07}' failed due to the following error: No such interface
supported (Exception from HRESULT:0x80004002 (E_NOINTERFACE)).
我尝试使用 2000 和 2013 互操作库,但没有成功。