1

我找到了使用 objectARX 命令在 autocad 中打开 dwg 文件的代码。当我在类库项目中编写此代码时,它可以成功运行,但是当我想将此代码放在我的 Windows 应用程序中时,就会出现问题。它给出了我这个错误信息:

'< Module >' 的类型初始化程序引发了异常。

内部异常:C++ 模块在进程初始化期间未能加载。

我的代码是:

String MyDWGFilePath = @"\\Server\SharedFolder\Projects\File1.dwg";
DocumentCollection dm = Application.DocumentManager;
Document doc = null;
 
if(File.Exists(MyDWGFilePath))
{
   doc = dm.Open(MyDWGFilePath, false);
   Application.DocumentManager.MdiActiveDocument = doc;
}

注意:我已经从 autocad 安装文件夹中添加了 acdbmgd.dll 和 acmgd.dll,还从 COM 参考中添加了 AutoCAD 和 AXDBLib。

请帮我...

4

3 回答 3

4

我的理解是,Autodesk 装配了一些(但不是全部*)的 AutoCAD 库,使其无法在 AutoCAD 地址空间之外运行。您可能会遇到此许可限制。(我正在爬取 Autodesk 的网站以获取支持此内容的参考)。

编辑: 如果您要在 AutoCAD 之外进行 .dwg 操作,RealDWG是 Autodesk 希望您购买的产品。(仍在寻找 AcDbMgd 仅在 acad 链接内部运行...)

(*) 我知道 AcGe 类/dll 组可以在 AutoCAD 之外使用——我曾经在一些单元测试中使用它们。我认为任何操作 .dwg 数据库的东西都必须在 AutoCAD 中运行。

于 2012-01-04T16:42:31.143 回答
0

RealDWG是您所需要的。

在 RealDWG 文档中:

无论您使用 Microsoft Visual C# .NET 还是 Visual Basic .NET,使用 Visual Studio 和 ObjectARX 托管包装器设置 .NET 解决方案的基本步骤都是相同的。

开始在 Microsoft Visual Studio 中使用 ObjectARX 托管包装器

  1. 在 Visual Studio .NET 中,创建一个类库解决方案和项目。
  2. 从项目菜单或解决方案资源管理器中选择添加引用。
  3. 浏览到 ObjectARX SDK 的 \inc 目录并选择 acdbmgd.dll 和 acmgd.dll。
  4. 在主类文件中,添加您将使用的命名空间。

例如,在 C# 中:

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;

在 VB .NET 中:

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.RuntimeThe

ObjectARX SDK 在 \samples\dotNet 目录中提供 .NET 示例。

本节中的主题

  • 在托管应用程序中定义 AutoCAD 命令
  • 定义可以从 AutoLISP 调用的方法
  • 使用实例和静态命令方法
  • 在 AutoCAD 中加载托管应用程序
  • 管理托管应用程序中的异常
  • 在托管应用程序中使用事务
  • 使用 ResultBuffer 类型
  • 管理选择集
  • 托管类的用户界面访问
  • 使用托管应用程序初始化和加载时优化
于 2012-01-16T21:29:21.827 回答
0

也许检查 windows 项目的目标框架,将其更改为 .Net Framework x,如果它设置为 .Net 框架客户端配置文件

于 2012-01-03T09:03:33.570 回答