メインコンテンツに移動

スクリプトの作成方法

メモ帳などのテキストエディタを使用して、スクリプトを作成することができます。

  1. メモ帳などのテキストエディタで新規ファイルを作成する
  2. 実行したい処理をプログラミング言語 C# で記述する
  3. スクリプトのフォルダーに、拡張子 .csx でファイルを保存する スクリプトのフォルダーは、RootPro CAD の [スクリプト] メニューの [スクリプトのフォルダーを開く] をクリックして表示されるフォルダーです。 保存するファイル名が、[スクリプト] メニューに表示されるメニュー名になります。

    補足 ファイルの文字コードは「Unicode(UTF-8)」で保存する必要があります。メモ帳の場合は、[名前を付けて保存] ダイアログボックスの [保存] ボタンの左側にある [文字コード] ボックスを「UTF-8」に変更して保存してください。

  4. RootPro CAD を再起動する [スクリプト] メニューに、追加したスクリプトファイル名のメニューが表示されます。
  5. スクリプトのメニューをクリックする スクリプトに記述した処理が実行されます。
  6. スクリプトに誤りがある場合は、その行番号、エラー内容が表示されます テキストエディタでスクリプトファイルを開いて修正後、再度スクリプトを実行して動作を確認します。

    補足 スクリプトのコードを変更した場合は、RootPro CAD を再起動しないでも変更内容が即時に反映されます。

 

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

選択した図形の色を変更するスクリプトのサンプルコードです。 「線色の変更.csx」というファイル名でスクリプトのフォルダーに保存すると、スクリプト] メニューに [線色の変更] というメニューが表示されます。 先頭が // の行はコメントなので、入力する必要はありません。 あらかじめ、RootPro CAD のグループ選択モードをオフにしておいてください。

// RootPro CAD 以外のアセンブリを参照する場合は「#r "アセンブリ名"」と記述します。
#r "System.Windows.Forms"
 
// 他のスクリプトファイルを読み込む場合は「#load "ファイルパス名"」と記述します。
// ファイルパス名は、絶対パスまたは相対パスで指定します。
//#load "samplescript.csx"
 
// 名前空間を指定しないで特定の型を使用したい場合は「using 名前空間名」と記述します。
using System.Windows.Forms;
 
// RootPro CAD の各プロパティやメソッドを呼び出すためには、グローバルオブジェクトの Application を使用します。
// 現在の図面を取得する場合は、以下のように記述します。
var doc = Application.ActiveDocument;
 
// 選択されている図形を取得します。
var selectedShapes = doc.SelectionManager.SelectedShapes;
 
// .NET Framework の統合言語クエリ LINQ を使用して、コレクション内から特定の条件のオブジェクトを簡単に取得できます。
// 選択されている図形から基本図形(線、円など)だけを取得します。
var basicShapes = from selectShape in selectedShapes
				where selectShape.Shape is BasicShape
				select (BasicShape)selectShape.Shape;
 
if(basicShapes.Count() == 0)
{
    // メッセージボックスを表示します。
    // MessageBox クラスは、.Net Framework に標準で用意されている System.Windows.Forms 名前空間のクラスです。
    MessageBox.Show("線、円などの基本図形を選択してください。");
    return;
}
 
// UNDO 処理を開始します。
doc.UndoManager.BeginUndoUnit();
 
// 選択図形内の基本図形(線、円など)の色を赤に変更します。
foreach(var shape in basicShapes)
{
    shape.ColorNumber = 2;
}
 
// UNDO 処理を終了します。
doc.UndoManager.EndUndoUnit();
 
// メッセージボックスを表示します。
MessageBox.Show(string.Format("{0}個の図形の色を変更しました。", basicShapes.Count()));