SolidWorks 使い方 入門
ソリッドワークス3Dプリンターのデータ作成、修正、造形 株式会社 サンエツ
class Form1
今回は単純にするためにデータ処理のためのクラスは作成しません。 いきなりForm1を追加しましょう。
Form1を追加したらlabelを3個、textBoxを3個、buttonを1個Formに張り付けてください。 左側の画像はデザイナ画面です、右側の画像は実行時の画像です。 今回もセンスがないですけどご了承ください。
本来ならデザイナ画面で記入する部分ですがShownイベントの中に記入してあります。
this
.Text="中点線の作成"
;
label1.Text=
"X方向の中点線の長さ";
label2.Text="Y方向の中点線の長さ"
;
label3.Text=
"Z方向の中点線の長さ";
button1.Text="決定"
;
textBox1.Text=
"0";
textBox2.Text="0"
;
textBox3.Text=
"0";
textBoxに数値を入力してもらい決定ボタンをクリックするとリストをクリアしておきます。 リストのクリアを忘れると前のデータがメモリーに残っていてダブってしまうことがあります、 リストを使う場合はクリアをしておきましょう。
_ar.Clear();//リストをクリアしておく
テキストボックスに入力してもらった値が文字列になっていますので、 ダブルに変換しながらリストにAddしていきます。 型変換はパースを使いましたが、トライパースの方がいいかもしれません。
//textBoxの値をリストにAddします。
ar.Add(double
.Parse(textBox1.Text));
ar.Add(
double.Parse(textBox2.Text));
ar.Add(
double.Parse(textBox3.Text));
リストの値を「class SolidWorksMacro」に渡すために読み取り専用のプロパティに読み込んでおきます。 このようにすることでデータをそっくりそのまま別クラスに渡すことが出来ます。
//リストごとclass SolidWorksMacroに渡す
public List
<double
> ar
{
get {
return this._ar;}
}
button1_ClickイベントでForm1が必要がなくなったらForm1を閉じましょう。
this.Close();
「class SolidWorksMacro」
//SldWorksソリッドワークスの大箱
public
SldWorks swApp;
「Main()」メソッドの始めの部分でclass Form1から値を受け取るリストを作成しておきます。
//class Form1からリストごと値を受け取る
List
<double> _dr=
new List
<double>();
class Form1の作成をします。 Form1を開く場合は「ShowDialog」メソッドを使います。 不要になったオブジェクトはディスポーズしますが、今回は割愛します。
//class Form1の作成
Form1
f1=new Form1
();
f1.ShowDialog();
class Form1のプロパティでせっかくリストを読み込みましたので、その値をそのまま頂きましょう。
//class Form1からリストごと値を受け取る
_dr=f1.ar;
次の2行もおきまりの文句ですが掲載しておきます。
//ドキュメントを入れる箱
ModelDoc2
swDoc ;
//現在のドキュメントを変数に格納
swDoc = ((
ModelDoc2)(swApp.ActiveDoc));
スケッチする面を選択状態にします。 選択状態とはデザインツリーの一部分がハイライトされている状態です。
//正面を選択
swDoc.Extension.SelectByID2("正面"
, "PLANE"
, 0, 0, 0, false
, 0, null
, 0);
SelectByID2メソッドの引数
1番目の引数; 選択するオブジェクト名
2番目の引数: swSelectType_eに登録されているオブジェクト名、全て大文字になります。
3番目の引数: X の選択位置、0でも可(double)
4番目の引数: Y の選択位置、0でも可(double)
5番目の引数: Z の選択位置、0でも可(double)
6番目の引数: エンティティの選択状況におおじて変化するため、 ややこしいのでfalseにしてください。
7番目の引数: ここも0を入力してください
8番目の引数: 関連した吹き出しへのポインタでなんのことかわかりませんので nullにしておきます。
9番目の引数: swSelectOption_eで定義された値(long)ですがよくわかりませんのでコチラも0を入力します。
新しいスケッチを挿入します。
引数; スケッチに行われたすべての変更とともに部品を再構築し、スケッチモードを終了するならばTRUE、そうでなければFALSE
//スケッチを挿入します
swDoc.SketchManager.InsertSketch(
true);
スケッチの入れ物を用意します。
//スケッチの大箱
SketchSegment skSegment;
線を引きます。CreateLineの引数は見ての通りの使い方です。double型になっています。 中心線を引きますので、 1番目のXと2番目の引数X、1番目のYと2番目のY、1番目のZと2番目のZ、はそれぞれ同じ変数にしてあります。
//線の作成
skSegment=((SketchSegment
)(swDoc.SketchManager.CreateLine(_dr[0]/1000, _dr[1]/1000, _dr[2]/1000, -_dr[0]/1000, -_dr[1]/1000, -_dr[2]/1000)));
選択を解除します。
//選択を解除
swDoc.ClearSelection2(
true);
現在のドキュメントに新しいスケッチを挿入します。 スケッチに行われたすべての変更とともに部品を再構築し、スケッチモードを終了するならばTRUE、そうでなければFALSE
//スケッチを挿入します
swDoc.SketchManager.InsertSketch(
true);
お疲れ様でした。