Программа, над которой я работаю, будет использоваться в 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 годов.