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

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

 

■ スクリプトのインストール方法

  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();
ダウンロードサイズ
レイヤの複製.zip759 byte