【问题标题】:Opening any version of Autocad from windows form application从 Windows 窗体应用程序打开任何版本的 Autocad
【发布时间】:2016-11-23 03:50:51
【问题描述】:

我目前正在创建一个需要打开 autocad 的 windows 窗体应用程序。我已经为 Autocad 2014 完成了它。有什么方法可以完成这项任务,不仅适用于单个版本,而且适用于任何版本。除此之外,我已创建 dll 对于 2014 年,它运行良好。通过更改引用 acmgd.dll 和 acdbmgd.dll,我得到它也在 2007 年运行。除此之外还有什么方法可以在所有版本中创建一个 dll。提前致谢。

【问题讨论】:

  • 您只是想启动 Autocad,还是想控制它?
  • 一旦我能够启动控制就没有问题了。

标签: c# autocad


【解决方案1】:

可能实现此目的的一种方法是找出与 Autocad 文件关联的程序。这可以通过调用找到 FindExecutable 传入带有 AutoCAD 文件扩展名的文件名。

一旦你有了可以使用的可执行文件,你就可以使用Process.Start启动它

导入如下:

[DllImport("shell32.dll", EntryPoint = "FindExecutable")]
private static extern long FindExecutable(string lpFile, string lpDirectory, StringBuilder lpResult);

【讨论】:

    【解决方案2】:

    对于您的第一个问题,以下是一些建议:

    1. AutoCAD 通过 COM API,您可以在其中启动和控制应用程序。 Here is a nice tutorial,请注意版本字符串可以在运行时更改,但要支持多个版本,您需要后期绑定 (dynamic on C#)。
    2. AutoCAD Console(又名 AutoCAD 通过命令行)自 2013 版起可用,是从其他应用程序自动化 AutoCAD 的最佳方式。
    3. Forge Design Automation API 是“云端”的 AutoCAD,如果您的计算机或客户的计算机上没有安装 AutoCAD,则最好。

    如果您选择 #1,最好的方法是通过后期绑定,因此您的应用程序没有任何参考(不要使用 AcMgd、AcDbMgd 或 AcCoreMgd,仅使用 Autodesk.AutoCAD.Interop 库)。对于#2,您将需要所有三个参考(因为控制台自 2013 版起可用)。对于 #3,您只需要调用 Web 服务,因此根本不需要 Autodesk 参考(最干净)。

    对于第二个问题,您需要至少编译两次应用程序:对于 AutoCAD 2012 及更早版本,以及对 AutoCAD 2013 及更高版本。第一个使用 AcMgd 和 AcDbMgd,第二个只是添加 AcCoreMgd。

    【讨论】:

      猜你喜欢
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      • 2010-10-18
      • 1970-01-01
      • 2015-07-13
      • 2020-02-29
      • 1970-01-01
      相关资源
      最近更新 更多