特定のイベントで動作するスクリプトの作成方法

図面ファイルが保存されたときや、コマンドが実行されたときなどのイベントで、スクリプトを実行することができます。

  1. 通常のスクリプトと同じように、テキストファイルに作成したい処理をプログラミング言語 C# で記述する
  2. スクリプトのフォルダーにイベント名のフォルダーを作成して、そのフォルダー内に拡張子 .csx でファイルを保存する
    スクリプトのフォルダーは、RootPro CAD の [スクリプト] メニューの [スクリプトのフォルダーを開く] をクリックして表示されるフォルダーです。
    スクリプトのファイル名は、任意の名前を指定できます。

    補足

    • Application クラスの LayerAdded イベントのスクリプトを保存する場合は、Application.LayerAdded という名前のフォルダを作成して、そのフォルダ内にスクリプトファイルを保存します。
      各クラスのイベント名については、RootPro CAD SDK ヘルプを参照してください。
    • イベント名のフォルダーには複数のスクリプトファイルを保存しておくことができます。イベントが発生すると、フォルダーにあるスクリプトファイルが順番に実行されます。
    • ファイルの文字コードは「Unicode(UTF-8)」で保存する必要があります。メモ帳の場合は、[名前を付けて保存] ダイアログボックスの [保存] ボタンの左側にある [文字コード] ボックスを「UTF-8」に変更して保存してください。
  3. RootPro CAD を再起動する
    イベントが発生したときにスクリプトが実行されます。

 

【イベントスクリプトのサンプル】

レイヤを追加したときにメッセージボックスを表示するスクリプトのサンプルコードです。
スクリプトのフォルダーに「Application.LayerAdded」という名前のフォルダーを作成し、そのフォルダー内に任意のファイル名で保存すると、レイヤが追加されたときにスクリプトが実行されます。
先頭が // の行はコメントなので、入力する必要はありません。

// RootPro CAD 以外のアセンブリを参照する場合は「#r "アセンブリ名"」と記述します。
#r "System.Windows.Forms"
 
// 他のスクリプトファイルを読み込む場合は「#load "ファイルパス名"」と記述します。
// ファイルパス名は、絶対パスまたは相対パスで指定します。
//#load "samplescript.csx"
 
// 名前空間を指定しないで特定の型を使用したい場合は「using 名前空間名」と記述します。
using System.Windows.Forms;
 
// RootPro CAD の各プロパティやメソッドを呼び出すためには、グローバルオブジェクトの Application を使用します。
// 現在の図面を取得する場合は、以下のように記述します。
var doc = Application.ActiveDocument;
 
// イベントのパラメータを取得するには、グローバルオブジェクトの EventSender、EventArgs を使用します。
// EventSender は System.Object 型、EventArgs は System.EventArgs 型のオブジェクトです。
// Application クラスの LayerAdded イベントでイベントのパラメータを取得する場合は、以下のように記述します。
var e = (LayerEventArgs)EventArgs;
 
// メッセージボックスを表示します。
// MessageBox クラスは、.Net Framework に標準で用意されている System.Windows.Forms 名前空間のクラスです。
MessageBox.Show(string.Format("レイヤ「{0}」を追加しました。", e.Layer.Name));

補足
RootPro CAD を起動後に既存のスクリプトファイルのコードを変更した場合は、RootPro CAD を再起動しないでも即時に反映されます。