カスタマイズ‎ > ‎.NET API‎ > ‎

AutoCAD .NET API の移植

BricsCAD .NET API は AutoCAD .NET API のソースコードとの互換性が高く、多くの場合そのまま利用することができます。


移植時のポイント

■ .NET Framework について

BricsCAD V15 での 対応 .NET Framework は Version 4.0 となります。
移行される .NET API のプロジェクトが .NET Framework Ver3.5 を使っている場合、プロジェクトで使用する .NET Framework のバージョン変更を行なってください。
開発環境に .NET Framework Version 4.0 が入っていない場合は、
以下よりダウンロードすることができます。


■ 参照ファイルの変更

BricsCAD .NET API では、AutoCAD .NET API のプログラムプロジェクトをそのまま利用することができます。
ただし、.NETランタイムライブラリの参照モジュールは変更する必要があります。
AutoCAD .NET API では、 acmgd.dll,acdbmgd.dll または acmgd.dll,acdbmgd.dll,accoremgd.dll  
を参照しています。
BricsCAD .NET API では BrxMgd.dll, TD_Mgd.dll を参照します。
これらのファイルは BricsCAD のインストールフォルダにあります。
以下は Visual Studio 2010(Visual Basic) の画面になります。

参照ファイルのプロパティについて、BricsCADのライブラリおよびその他のファイルについても「ローカルにコピーする」設定を False としてください。また、「特定のバージョン」設定についても False にしておきましょう。


■ ソースコードの変更

Bricscad .NET API では、ライブラリに定義されている要素が異なるため、要素(クラスや型など)を変更する必要があります。
変更箇所は以下のとおりです。
  • 名前空間または要素のインポート宣言
  • 変数の型
名前空間および要素のインポート宣言について、Visual Basic では Import ステートメント、C# では using ディレクティブ と呼ばれる部分です。ここで宣言されている AutoCADの宣言は削除し、BricsCAD のものを宣言してください。
以下は Visual Basic での記述です。

削除
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.EditorInput

追加
Imports Teigha.Runtime
Imports Teigha.DatabaseServices
Imports Teigha.Geometry
Imports Bricscad.Runtime
Imports Bricscad.ApplicationServices
Imports Bricscad.EditorInput


変数の型について、以下のように先頭から型(クラス)名を含めて宣言しているものがあります。

Dim SS As Autodesk.AutoCAD.EditorInput.SelectionSet

取り込む要素を変更しているので、型(クラス)名を変更してください。

Dim SS As BricsCAD.EditorInput.SelectionSet

.NET対応ObjectARXと共通に使う場合は、親クラスなどの不要な宣言は削除してください。

Dim SS As SelectionSet


■ AutoCAD .NET API のソースを一本化して運用する場合

AutoCAD .NET API と BricsCAD .NET API のソースを一本化し、それぞれのCADでコマンドを作成する場合は、以下の手順となります。
  • AutoCAD .NET API のプロジェクトファイルを別名でコピーする。

    コピーしたプロジェクトはAutoCAD .NET APIと同じソリューションに取り込みましょう。

  • BricsCAD .NET API のプロジェクトについては、上記の「参照ファイルの変更」をする。また、必要に応じて、.NET Framework のバージョンも変更する。

  • BricsCAD .NET API のプロジェクトのビルド出力パスは AutoCAD .NET API のものと重複しないよう Release/Debug とも変更する。


  • BricsCAD .NET API のプロジェクトには以下のようなカスタム定数を追加しておく。


  • ソースについて、先の追加したカスタム定数にて以下のように条件コンパイルされるようヘッダー部分を修正する。


  • 変数などの宣言については、親クラスなど削除する。

■ コンパイルエラー、リンクエラー

BricsCAD .NET API では、 AutoCAD .NET API のManaged クラスや関数をサポートしていないものがあるため、ビルド時にコンパイルエラーやリンクエラーになったクラスや関数があります。この場合、同等の結果が得られる別の方法を考える必要があります。

■ システム変数

BricsCADでは、AutoCADの持つシステム変数の中でサポートしていないものがあります。
また、サポートはしているが、AutoCADでは読み書きできるが、BricsCADでは読み込み専用になっているものもあります。
Application.SetSystemVariable()関数やApplication.GetSystemVariable()関数などを使っている部分について、システム変数の有無などを確認してください。

例えば、
システム変数[DTextEd](AutoCAD2010以降)はサポートしていません。
システム変数[SDI]は、Bricscadでは読み込み専用のシステム変数となり、常に [0] を返します。

■ コマンド

BricsCADでは、AutoCADの持つコマンドの中でサポートしていないものがあります。
また、サポートはしているが、AutoCADとは引数やオプションが異なるものもあります。
DocumentクラスのSendStringToExecute()関数などを使っている部分について、コマンドの有無などを確認してください。

例えば、
コマンド[SaveAs]では、テンプレートとして保存するためのオプション[T]や標準仕様として保存するためのオプション[S]はサポートしていません。