メインコンテンツに移動

用紙を複製するスクリプト

部分図ツリーで選択している用紙のプロパティをコピーして用紙を新規作成するスクリプトのサンプルコードです。
[ユーザー設定] ダイアログボックスで、部分図ツリーウィンドウの右クリックメニューにスクリプトを追加することができます。

 

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

 

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

 

■ スクリプトのインストール方法 (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.DrawingBar.SelectedNode;
if(node == null || node.Drawing == null || !(node.Drawing is Paper))
{
MessageBox.Show("部分図ツリーウィンドウで複製する用紙を選択してください。");
return;
}
// 部分図ツリーウィンドウで選択されている用紙を取得します。
Paper selectedPaper = (Paper)node.Drawing;
// 追加する用紙の名前は、元の用紙名の後ろに (2) を付けます。
int n = 2;
while(ActiveDocument.Drawings.Any(drawing => drawing.Name == n.ToString(selectedPaper.Name + " (0)")))
n++;
// UNDO 処理を開始します。
ActiveDocument.UndoManager.BeginUndoUnit();
// 新しい用紙を追加します。
Paper newPaper = ActiveDocument.Drawings.AddPaper(n.ToString(selectedPaper.Name + " (0)"));
// 用紙のプロパティをコピーします。
newPaper.State = selectedPaper.State;
newPaper.Landscape = selectedPaper.Landscape;
newPaper.PaperType = selectedPaper.PaperType;
if(selectedPaper.PaperType == PaperType.Custom)
{
newPaper.PaperWidth = selectedPaper.PaperWidth;
newPaper.PaperHeight = selectedPaper.PaperHeight;
}
newPaper.Printable = selectedPaper.Printable;
newPaper.PrintScale = selectedPaper.PrintScale;
newPaper.UserOrigin = selectedPaper.UserOrigin;
// グリッド設定をコピー
newPaper.GridSettings.AngleX = selectedPaper.GridSettings.AngleX;
newPaper.GridSettings.AngleY = selectedPaper.GridSettings.AngleY;
newPaper.GridSettings.Color = selectedPaper.GridSettings.Color;
newPaper.GridSettings.Enabled = selectedPaper.GridSettings.Enabled;
newPaper.GridSettings.EnableGridBounds = selectedPaper.GridSettings.EnableGridBounds;
newPaper.GridSettings.GridType = selectedPaper.GridSettings.GridType;
newPaper.GridSettings.Origin = selectedPaper.GridSettings.Origin;
newPaper.GridSettings.SpaceX = selectedPaper.GridSettings.SpaceX;
newPaper.GridSettings.SpaceY = selectedPaper.GridSettings.SpaceY;
newPaper.GridSettings.Unit = selectedPaper.GridSettings.Unit;
newPaper.GridSettings.UnitColor = selectedPaper.GridSettings.UnitColor;
if(selectedPaper.GridSettings.EnableGridBounds)
{
newPaper.GridSettings.SetGridBounds(
selectedPaper.GridSettings.GridBoundsBottomLeft,
selectedPaper.GridSettings.GridBoundsTopRight);
}
// UNDO 処理を終了します。
ActiveDocument.UndoManager.EndUndoUnit();
ファイル