作成日:2021.08.12更新日:2021.08.12
IJCAD でプラグインを開発する方法を紹介します。
プラグインを開発するにはいくつかの手段がありますが、ここでは .NET による開発の方法を紹介します。 その他の方法については、次のリンク先を参照してください。
.NET で IJCAD プラグインを開発する場合、プラグインで提供するコマンドをクラスライブラリとして作成します。
作成した .NET アセンブリを IJCAD の NETLOAD コマンドでロードすると、自作のコマンドを IJCAD で実行できるようになります。
ここから先は、IJCAD 2020 (STDまたはPRO) のプラグインをC#で開発することを想定して、開発の基本的な進め方を説明します。
IJCAD 2020 用のプラグインを開発するために必要なものは、以下の通りです。
Visual Studio を起動して、.NET Framework クラスライブラリ開発用の C# プロジェクトを作成します。
起動時の画面で新しいプロジェクトの作成を選ぶと、プロジェクトのテンプレートを選択する画面が表示されます。
画面の右側で、言語をC#、プラットフォームをWindows、プロジェクトの種類をライブラリとして、テンプレートを絞り込みます。
一覧の中からクラスライブラリ (.NET Framework) のテンプレートを見つけてクリックし、「次へ」ボタンをクリックします。
プロジェクトの設定画面が表示されるので、プロジェクト名とソリューション名に、HelloIJCADと入力します。
プロジェクトファイルを保存する場所を決め、フレームワークが**.NET Framework 4.8** になっていることを確認して、「作成」ボタンをクリックします。
これで、IJCAD プラグインを開発するための C# プロジェクトが作成されます。
次に、IJCAD の API を使えるようにするためのライブラリを、参照に追加します。
ソリューションエクスプローラーで、プロジェクトの中にある参照を右クリックし、コンテキストメニューから参照の追加を選びます。
参照マネージャーの画面が表示されたら、画面右下の「参照」ボタンをクリックします。
参照先のコンポーネントを選ぶ画面が表示されたら、IJCAD 2020 のインストール先フォルダーに移動します。
IJCAD のインストール先フォルダーは次の通りです。
C:\Program Files\ITJP\IJCAD 2020 Pro
C:\Program Files (x86)\ITJP\IJCAD 2020 PRO
IJCAD 2020 のインストール先フォルダーで、gmap.dllとgmdb.dll の2つのdllファイルを選択し、「追加」ボタンをクリックします。
参照マネージャーの画面に戻ると、一覧に gmap.dll, gmdb.dll の2つが追加されており、どちらもチェックボックスがオンになっています。
これで、プロジェクトから2つの dll ファイルを参照するよう設定できたので、「OK」ボタンをクリックします。
ソリューションエクスプローラーに戻ると、プロジェクトの参照先に「gmap」と「gmdb」が追加されています。
参照先のうちgmapをクリックすると、gmap.dll の情報がプロパティに表示されます。
プロパティの中でローカルにコピーが True
となっている場合は False
に変えて、gmap.dll を出力ディレクトリ (プログラムをビルドしてできるクラスライブラリの出力先フォルダー) へコピーしないようにします。
gmdb.dll についても、同じように設定します。
これで、プログラムを作成する準備ができました。
IJCAD のコマンドウィンドウに、Hello, IJCAD!
というメッセージを表示するコマンドを作ってみましょう。
プロジェクトの中にある Class1.cs というファイルに、以下のプログラムを入力します。
using GrxCAD.ApplicationServices; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HelloIJCAD { public class Class1 { public void Hello() { Application.DocumentManager.MdiActiveDocument .Editor.WriteMessage("\nHello, IJCAD!\n"); } } }
IJCAD のコンソールウィンドウにメッセージを表示するには、
Application.DocumentManager.MdiActiveDocument
の部分.Editor
の部分.WriteMessage("...")
の部分という手順をとります。
プログラムの内容についての補足説明を以下に示します。
Application
は、IJCAD アプリケーションを管理するためのプロパティやメソッドを持つクラスで、GrxCAD.ApplicationServices
名前空間で定義されています。DocumentManager
プロパティは、IJCAD アプリケーションで開かれている図面を管理するオブジェクトを参照します。MdiActiveDocument
プロパティは、IJCAD でアクティブになっている図面を参照します。プログラムから IJCAD にメッセージを表示させるためには、プログラムを IJCAD のコマンドと対応付ける必要があります。
.NET のプログラムでは、メソッドに属性を付けることで、コマンドとの対応付けができます。
上記のプログラムで、HELLO というコマンドが起動されたら Hello, IJCAD!
というメッセージを表示させるには、Helloメソッドに CommandMethod
という属性を付けます。
... [CommandMethod("HELLO")] public void Hello() ...
CommandMethod
は GrxCAD.Runtime
名前空間で定義されている属性で、using
ディレクティブがないと、下のようにエラーが検出されます。
このとき、プログラムの先頭に using GrxCAD.Runtime;
と入力すればエラーを解消できますが、Visual Studio のコード入力支援機能を使って、その手間を省くことができます。
赤い波線でエラーが指摘されている箇所にカーソルを移動させ、Ctrl + . キーを押すと、クイックアクションが表示されます(コンテキストメニューから「クイックアクションとリファクタリング」を選んでもよいです)。
修正内容の候補が表示されるので、最初の using GrxCAD.Runtime;
を選びます。
これで、プログラムの先頭に using ディレクティブが自動で追加され、エラーを示す赤い波線が消えます。
以上の要領でプログラムを作成すると、IJCAD で HELLO というコマンドを実行したときに、Class1 クラスの Hello メソッドを呼び出すことができます。
ここまでで書いたプログラムを、IJCAD で実行させてみましょう。
Visual Studio のメニューから「ビルド」→「ソリューションのビルド」を選び、プログラムをビルドして、.NET クラスライブラリを作成します。
プロジェクトの参照設定やプログラムに誤りがなければ、プログラムがビルドされ、出力先フォルダーに HelloIJCAD.dll という .NET アセンブリファイルができます。
このファイルができていない場合はビルドに失敗しているので、Visual Studio の「出力」と「エラー一覧」に表示されたメッセージを確認し、参照設定やプログラムを修正します。
IJCAD を起動して、NETLOAD コマンドを実行します。
.NET アセンブリを選択する画面が表示されたら、先ほどビルドしてできた HelloIJCAD.dll を選択し、「OK」ボタンをクリックします。
これで、.NET アセンブリがロードされ、HELLO コマンドが使えるようになりました。
HELLO コマンドを実行すると、コマンドウィンドウに「Hello, IJCAD!」というメッセージが表示されます。
おめでとうございます!
これで、自作のコマンドを IJCAD で使えるようになりました。
作成したプログラムのデバッグを行うとき、Visual Studio から IJCAD を起動するようにしておくと便利です。
また、NETLOAD コマンドで .NET アセンブリをロードする作業を自動化しておくと、デバッグの準備にかかる手間を省くことができます。
ソリューションエクスプローラーのプロジェクトの箇所で右クリックし、「プロパティ」を選ぶと、プロジェクトの設定画面が表示されます。
プロジェクトの設定項目から「デバッグ」を選ぶと、開始動作のセクションでスタートプロジェクトが選択されています。
これを外部プログラムの開始に変え、「参照」ボタンで IJCAD の実行ファイル (gcad.exe) を指定すると、デバッグ開始時に IJCAD が起動します。
IJCAD のスクリプト実行機能を利用すると、.NET アセンブリのロードを自動化できます。
まず、Visual Studio のプロジェクトに、次の内容のスクリプトファイル (netload.scr) を追加します。
NETLOAD ./HelloIJCAD.dll
スクリプトファイルを作成するときは、文字コードに注意が必要です。
文字コードが BOM 付き UTF-8 のスクリプトファイルは IJCAD で正しく実行できないため、 BOM 付きでない UTF-8 で、スクリプトファイルを保存しておく必要があります。
Visual Studio でファイルを作成した場合、デフォルトの設定では文字コードが BOM 付き UTF-8 になります。
このため、スクリプトファイルを作成するときにはメモ帳などのテキストエディタを使い、文字コードを BOM 無しの UTF-8 として保存してください。
スクリプトファイルをプロジェクトに追加したら、ソリューションエクスプローラーでそのファイルをクリックし、プロパティの出力ディレクトリにコピーを常にコピーするに設定します。
最後に、プロジェクトの設定を変更します。 デバッグの設定画面で、開始オプションのコマンドライン引数に /b netload.scr と入力します。
このように設定しておくと、デバッグ実行で IJCAD を起動したとき、netload.scr に書かれたスクリプトが自動的に実行されます。
NETLOAD コマンドが実行され、.NET アセンブリがロード済みの状態になっているので、HELLO コマンドを実行すると、コンソールウィンドウに Hello, IJCAD!
というメッセージが表示されます。
開発の基本的な進め方の説明は以上です。
IJCAD の API に関するドキュメントはこちらで公開されていますので、開発を進めるときの参考にしてください。