2012-01-03 56 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的類型
  • 管理選擇集
  • 用戶界面訪問與託管類
  • 使用託管應用程序初始化和加載時優化
相關問題