

名古屋にあるレーザー加工会社(超ブラック)で仕事をしたときに買った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 大文字
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

ActiveDocument.CurrentDrawing.Shapes.AddCircle(point2,i*30)
文末の「;」を忘れている
point=Point2d(160,100) XY座標を変える
point.X=300;
point.Y=500;
XYは大文字

コメント