Rootpro : スクリプト、いろいろ実験してみる(有料版)

RootPro CAdスクリプト試す

名古屋にあるレーザー加工会社(超ブラック)で仕事をしたときに買ったRootproCAD有料版。せっかくなのでスクリプトを調べています。

C#素人なので、色々試して勉強中です。

スクリプトを入れるフォルダ  拡張子は「CSX」

フォルダー開く

赤枠クリックすれば、エクスプローラーが開きます。
作ったスクリプトを「xxx.csx」で保存します。

スクリプトを書いたら、リロードしないとだめ

スクリプトのフォルダーに書き込んだら、RootPro を一度閉じ再起動しないとスクリプト使えるようにならない。

messageboxの表示

// RootPro CAD 以外のアセンブリを参照する場合は「#r "アセンブリ名"」と記述します。
#r "System.Windows.Forms"
using System.Windows.Forms;
MessageBox.Show("RootProスクリプト");
メッセージの表示

System.Windows.Forms が必要, その時「#r」がいる

サンプル・ポリライン(連続線)

var point0=new Point2d(100,200);
var point1=new Point2d(200,200);
var point2=new Point2d(200,100);
var point3=new Point2d(100,100);

Point2d[] points = {point0,point1,point2,point3,point0};
ActiveDocument.CurrentDrawing.Shapes.AddPolyline(points);
for(int i=0;i<20;i++){
	for(int k=0;k<=3;k++){
		points[k].X=points[k].X+55; //X <strong>大文字</strong>
		points[k].Y=points[k].Y+55;
		
	}	
	points[4]=points[0];
	ActiveDocument.CurrentDrawing.Shapes.AddPolyline(points);
}

今描いた図の「コマンド名」(ユニーク)を取得するには

#r "System.Windows.Forms"
using System.Windows.Forms;

// 実行したコマンドを取得する
var currentCommand = Application.CommandManager.CurrentCommand;

//MessageBox.Show(currentCommand);  エラー 文字列でないので
//MessageBox.Show(currentCommand.Name); エラー Nameはない

MessageBox.Show(currentCommand.UniqueName);

「currentCommand.UniqueName」でコマンドの名前・文字列を取得

大文字・小文字間違えたら動きません

ステータスバーに文字を表示

StatusBar.SetInformation("Sam 日本へ戻ろう", 6000);

””文字列”, 秒数

四角形コマンドを実行する=CommandManager

//Command.Execute("RootPro.Shape.Rectangle");  これは違う
//(1,9): error CS1501: No overload for method 'Execute' takes 1 arguments

CommandManager.ExecuteCommand("RootPro.Shape.Rectangle");

四角形の入力画面になります。

図形を全選択する

ActiveDocument.SelectionManager.SelectAll();

エラー:いろいろ

(2,1) は行数、左から何語目か 表しているようです。

図面の名前を取得します

#r "System.Windows.Forms"
System.Windows.Forms.MessageBox.Show(ActiveDocument.Name);

#r “System.Windows.Forms” がないと「MessageBox」使えない。

エラー:One or more errors occured.  何で?

日本語だと
var point=new Point2d(160,100);

for(int i=0;i<3;i++){
	ActiveDocument.CurrentDrawing.Shapes.AddCircle(point,i*10);
}

いろいろ悩みましたが、理由がわかりました。i=0が悪さしています。
大きさ0の図形は無いということです。i=1にすればOKです。

i=1 ;1<5

error CS1002

C#エラー
ActiveDocument.CurrentDrawing.Shapes.AddCircle(point2,i*30)

文末の「;」を忘れている

point=Point2d(160,100)  XY座標を変える

point.X=300;
point.Y=500;

XYは大文字

コメント

タイトルとURLをコピーしました