从windows窗体应用程序打开任何版本的Autocad

本文关键字:任何 版本 Autocad windows 窗体 应用程序 | 更新日期: 2023-09-27 17:57:50

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

从windows窗体应用程序打开任何版本的Autocad

对于您的第一个问题,这里有一些建议:

  1. AutoCAD通过COM API,您可以在其中启动和控制应用程序。这里有一个很好的教程,请注意版本字符串可以在运行时更改,但要支持多个版本,您需要Late绑定(C#上的动态绑定)
  2. 自2013版起提供的AutoCAD控制台(也称为通过命令行的AutoCAD)是从其他应用程序自动化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。

实现这一目标的一种方法是找出哪个程序与Autocad文件关联。这可以通过调用FindExecutable传递一个带有autocad文件扩展名的文件名。

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

导入如下:

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