メインコンテンツに移動

レイヤを複製するスクリプト

レイヤツリーウィンドウで選択しているレイヤを複製するスクリプトのサンプルコードです。 [ユーザー設定] ダイアログボックスで、レイヤツリーウィンドウの右クリックメニューにスクリプトを追加することができます。

■ スクリプトのインストール方法 (Ver9 以降)
  1. RootPro CAD の [スクリプト] メニューの [スクリプトの管理] をクリックする
    [アドイン/スクリプトの管理] ダイアログボックスが表示されます。
  2. 左側のメニューで [スクリプト] - [すべて] または各カテゴリーを選択する
    公開されているスクリプトが表示されます。
  3. インストールしたいスクリプトを選択して、[インストール] をクリックする
  4. [閉じる] をクリックする

 

■ スクリプトのインストール方法 (Ver9 以降の手動インストール)
  1. 以下のリンクからスクリプトファイル(拡張子 .zip)をダウンロードする
  2. RootPro CAD の [スクリプト] メニューの [スクリプトのフォルダーを開く] をクリックして、スクリプトのフォルダーを表示する
  3. ダウンロードした圧縮ファイル(拡張子 .zip)を解凍して、RootPro.Script.DuplicateLayer フォルダーをスクリプトのフォルダーへコピーする

 

■ スクリプトのインストール方法 (Ver8)
  1. 以下のリンクからスクリプトファイル(拡張子 .zip)をダウンロードする
  2. RootPro CAD の [スクリプト] メニューの [スクリプトのフォルダーを開く] をクリックして、スクリプトのフォルダーを表示する
  3. ダウンロードした圧縮ファイル(拡張子 .zip)を解凍して、レイヤの複製.csx ファイルをスクリプトのフォルダーへコピーする

 

■ スクリプトの動作を確認する
  1. RootPro CAD を起動する
  2. レイヤツリーウィンドウで、複製したいレイヤを選択する
  3. [スクリプト] メニューの [レイヤの複製] を実行する 選択したレイヤが複製されます。

 

#r "System.Windows.Forms"
using System.Windows.Forms;
using System.Linq;
var node = Application.LayerBar.SelectedNode;
if(node == null || node.Layer == null)
{
MessageBox.Show("レイヤツリーウィンドウで複製するレイヤを選択してください。");
return;
}
if(node.Layer.IsGroup)
{
MessageBox.Show("レイヤグループは複製できません。");
return;
}
// レイヤツリーウィンドウで選択されているレイヤを取得します。
var selectedLayer = node.Layer;
// 追加するレイヤの名前は、元のレイヤ名の後ろに (2) を付けます。
int n = 2;
while(selectedLayer.ParetLayer.ChildLayers.Any(layer => layer.Name == n.ToString(selectedLayer.Name + " (0)")))
n++;
// UNDO 処理を開始します。
Application.ActiveDocument.UndoManager.BeginUndoUnit();
// 新しいレイヤを追加します。
var newLayer = selectedLayer.ParetLayer.ChildLayers.AddLayer(n.ToString(selectedLayer.Name + " (0)"));
// レイヤの属性をコピーします。
newLayer.Color = selectedLayer.Color;
newLayer.Linetype = selectedLayer.Linetype;
newLayer.Linewidth = selectedLayer.Linewidth;
newLayer.State = selectedLayer.State;
newLayer.Printable = selectedLayer.Printable;
newLayer.Hide = selectedLayer.Hide;
// UNDO 処理を終了します。
Application.ActiveDocument.UndoManager.EndUndoUnit();