2016-07-20 13 views
-1

私は現在、AutoCADを開く必要があるWindowsフォームアプリケーションを作成しています。私はこのタスクをAutoCAD 2014で行っています。これに加えて、これに加えて、dmg を2014年に作成しました。参照acmgd.dllとacdbmgd.dllを変更することで、2007年も動作しました。これ以外にdllを作成する方法はありませんすべてのバージョン。事前にありがとうございます。Windowsフォームアプリケーションから任意のバージョンのAutoCADを開く

+0

あなたは* AutoCADを起動したいのですか、それとも*制御したいですか? –

+0

一度私は制御に問題を起こすことはできません。 –

答えて

0

潜在的にこれを達成する1つの方法は、どのプログラムがAutocadファイルに関連付けられているかを調べることです。これは、 FindExecutableに、autocadファイル拡張子を持つファイル名を渡すことで確認できます。

あなたが使用する実行可能ファイルを持っていたら、あなたは次のようにProcess.Start

インポートを使用して、それを起動することができます:あなたの最初の質問については

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

を、ここではいくつかの提案は以下のとおりです。

  1. AutoCADの経由COM APIを使用して、アプリケーションを起動して制御することができます。 Here is a nice tutorial、バージョン文字列は実行時に変更できますが、複数のバージョンをサポートするには、レイトバインディング(dynamic on C#)が必要です。
  2. AutoCAD Console(別名AutoCADコマンドライン経由)(2013年以降使用可能)は、別のアプリケーションからAutoCADを自動化する最適な方法です。
  3. Forge Design Automation APIは、AutoCADを「クラウド上に」表示します。あなたやあなたのマシンにAutoCADがインストールされていない場合に最適です。

あなたは#1で行く場合は、最良の方法は、遅延バインディング、経由でアプリ上の任意の参照を持っていないので(のみAutodesk.AutoCADを使用し、AcMgd、AcDbMgdまたはAcCoreMgdを使用していません.Interopライブラリ)。 #2の場合、3つの参照がすべて必要になります(コンソールは2013年以降使用可能です)。 #3の場合は、Webサービスを呼び出すだけでよいので、オートデスクのリファレンスは一切(クリーン)は必要ありません。

2番目の質問では、アプリケーションを少なくとも2回はコンパイルする必要があります。少なくともAutoCAD 2012およびそれ以前、さらにはAutoCAD 2013以降です。最初はAcMgdとAcDbMgd、2番目はAcCoreMgdを追加するだけです。

関連する問題