dynamic acadApp;
try
{
// /Получение запущенного экземпляра AutoCAD (или вертикального решения)
acadApp = Marshal.GetActiveObject("AutoCAD.Application");
}
catch
{
// Нет запущенного AutoCAD
return;
}
// Получение номера версии AutoCAD
string acVer = acadApp.Version.Substring(0, 4);
// Получение номера версии Aecc библиотек
string aeccVer;
if (acVer == "19.0")
aeccVer = "10.0";
else if (acVer == "19.1")
aeccVer = "10.3";
else if (acVer == "20.0")
aeccVer = "10.4";
else if (acVer == "20.1")
aeccVer = "10.5";
else aeccVer = null;
if (string.IsNullOrEmpty(aeccVer))
{
// Неизвестная версия AutoCAD
return;
}
// это Civil 3D? Попробуем!
dynamic civilLandApp;
try
{
civilLandApp = acadApp.GetInterfaceObject
("AeccXUiLand.AeccApplication." + aeccVer);
}
catch
{
// не Civil 3D
return;
}
// теперь мы знаем – это Civil 3D
// что-то делаем, например, выведем сообщение:
System.Windows.Forms.MessageBox.Show
(string.Format("Это {0}!", civilLandApp.Name));