尝试使用Autodesk.AutoCAD.DatabaseService从DWG读取数据我需要引用哪些DLL?

时间:2015-06-18 14:54:15

标签: c# .net vb.net autocad

我有一个VB winform项目,我正在从DWG文件中的表中读取数据。 通过这种方法,AutoCad需要打开(使应用程序更慢)。

我发现下面的文章显示了你可以使用不同的方法来使用数据库对象(代表我们的内存中的绘图)但是我不知道我需要引用什么DLL能够使用这种方法。在这个appraoch上使用的方法是:

使用Autodesk.AutoCAD.DatabaseServices; - >需要能够导入

这篇文章也是从2006年开始的C#。现在有一个更好的方法吗?

提前致谢

Breaking it down-A closernLook at the C# code for importing blocks

2 个答案:

答案 0 :(得分:3)

如果您创建了在AutoCAD内部加载的.DLL(使用NETLOAD命令或使用PackageContents.xml / .bundle文件夹),则需要AutoCAD安装文件夹中的以下参考:

  1. AcMgd.dll
  2. AcDbMgd.dll
  3. AcCoreMgd.dll(这在AutoCAD 2013及更高版本中是必需的)
  4. 并确保所有引用都设置为Copy Local = false,请注意这很重要: - )

    您可能遇到.NET版本的问题,因此请确保您拥有:

    • .NET 3.5 for AutoCAD 2010 +
    • .NET 4.0 for AutoCAD 2012 +
    • .NET 4.5 for AutoCAD 2015 +

    如果您选择较旧版本的.NET,编译器可能会抛出错误,就像无法使用引用一样。如果您正在开始,请查看http://www.autodesk.com/myfirstautocadplugin

    现在,如果你有一个外部应用程序(.exe),那么你不能使用上面的,但 COM引用(也来自AutoCAD安装文件夹)

    1. Autodesk.AutoCAD.Interop.dll
    2. Autodesk.AutoCAD.Interop.Common.dll
    3. 但是对于这些COM互操作,您有不同的数据模型和不同的命名空间。此外,这已被弃用,这意味着没有新功能。

答案 1 :(得分:1)

  1. AcDbMgd.dll代表“AutoCAD Database Managed”,其内部是DWG(aka Database)操作的对象。
  2. AcMgd.dll代表“AutoCAD Managed”,其中包含用于获取当前活动DWG的Database对象的对象。
  3. 将“Copy Local”设置为False,因为AutoCAD带有相同DLL的副本。
  4. 您可以从DictCursor的ObjectArx库中获取DLLS。安装它们时,会有你需要的dll。

    查看最新“如何”的here示例和解释。