从.Net进程启动AutoCAD 2015



我试图从.Net进程加载AutoCAD 2015,以便可以向文档发送创建/修改块的命令。

我尝试了这两种方法,但似乎都不起作用。

第一种方法:

AcadApplication app = new AcadApplication();
app.Visible = true;

第二种方法:

var t = Type.GetTypeFromProgID("AutoCAD.Application", true);
dynamic obj = Activator.CreateInstance(t, true);

在这两种情况下,我都会遇到COM异常。有什么帮助吗?

这不是评论中提到的重复,我已经尝试了这里提到的两种方法。

COM异常-

正在检索CLSID为的组件的COM类工厂{0B628DE4-07AD-4284-81CA-5B439F67C5E6}由于以下原因而失败错误:80080005服务器执行失败(HRESULT中出现异常:0x80080005(CO_E_SERVER_EXEC_FAILURE))。

我建议每次运行应用程序时,在创建新实例之前,先尝试获取AutoCAD的现有实例。

每次创建一个实例都非常昂贵。

try
{
  GetAutoCAD();
}
catch (COMException cx)
{
    try
    {
        StartAutoCad();
    }
    catch(Exception ex)
    {
      Log.Error(ex);
      throw;
    }
}
void GetAutoCAD()
{
    // try to Get an instance
    _application = Marshal.GetActiveObject(_autocadClassId);
}
void StartAutoCad()
{
    var t = Type.GetTypeFromProgID(_autocadClassId, true);
    var obj = Activator.CreateInstance(t, true);
    _application = obj;
}

终于我能让它为我运行了。(在这里发帖,所以不得不像我一样浪费时间)

但不确定到底是什么问题。奇怪的是,作为普通用户运行VS2013运行得很好,但如果我以管理员身份运行它,它总是会失败,并出现上述COM异常。

相关内容

  • 没有找到相关文章

最新更新