2012-01-03 55 views
1

我发现一个代码在AutoCAD中打开DWG文件与ObjectARX的commands.this代码工作顺利,当我在一个类库项目写的,但是当我想要把这个代码在问题发生我的Windows应用程序。它给我这个错误信息:错误:typeInitializationException

'<模块>'的类型初始值设定项引发异常。

内例外: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安装文件夹从COM引用添加acdbmgd.dll和acmgd.dll也AutoCAD和AXDBLib。

请帮我...

+0

没有你尝试添加类库作为参考Windows项目,然后调用打开DWG文件的类库中的函数? – 2012-01-03 09:16:31

+0

是的,但我再次收到该错误。 – 2012-01-03 10:25:02

回答

0

或许检查目标框架为Windows项目,将其更改为.Net框架的x,如果它被设置到.NET Framework Client Profile受

+0

不,我的项目使用.Net框架4. – 2012-01-03 09:11:44

+0

您是否使用AutoCAD 2012?这是迄今为止唯一一个针对.NET 4编译的程序 – 2012-01-14 10:35:50

4

我的理解是,欧特克里格斯一些(但不是全部*)AutoCAD库不能在AutoCAD地址空间之外运行。您可能会遇到此许可限制。 (我正在爬行Autodesk的网站以供参考)。

编辑:RealDWG是产品欧特克希望你买,如果你要做的.dwg操纵的AutoCAD之外。 (仍然在寻找AcDbMgd只能在acad链接中运行......)

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

+0

Hi @ rschuler,感谢您的回复。请问我,但我不明白“您必须在AutoCAD内运行”的含义?以及为什么我的代码在类库中运行成功,但在获胜中出错。应用程序?在另外我认为问题是与AcMgd.dll不AcDbMgd.dll。 – 2012-01-07 04:54:41

+1

AutoCAD应用程序加载托管的dll。它们不能在AutoCAD之外使用。它们只是内部函数的包装,它们不是AutoCAD本身。您无法编写使用AutoCAD DLL的.exe应用程序。 AcGe漏洞对我来说是新闻,有趣。 – 2012-01-14 10:38:39

+1

此链接(http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer%27s%20Guide/files/WS73099cc142f48755-5c83e7b1120018de8c0-2202.htm)解释了独立版与在制版AutoCAD扩展。它还提供了一种创建独立应用程序的方法,但您仍然需要在您的机器上安装AutoCAD,并且您需要创建一个实例。 RealDWG更灵活。 – JayP 2012-01-22 05:48:05

0

RealDWG是你所需要的。

在RealDWG文档:

的基本步骤使用Visual Studio和ObjectARX的托管的包装都是一样的,你是否使用Microsoft Visual C#.NET或Visual Basic .NET建立.NET解决方案。

要开始使用ObjectARX的管理与Microsoft Visual Studio

  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的类型
  • 管理选择集
  • 用户界面访问与托管类
  • 使用托管应用程序初始化和加载时优化
相关问题