SolidWorks 使い方 入門

ソリッドワークス
メール

3Dプリンターのデータ作成、修正、造形 株式会社 サンエツ

SolidWorks 中点線
中点線のカスタマイズ
スケッチ編集で直線を選択すれば「中点線」を引くことが出来ますが、 それとは別に寸法を入力すると中心線が完成するようにサンプルを作成してみました。 簡単にできますのでソリッドワークスのAPIの練習にはもってこいのコードです。 しばらくのお時間お付き合いください。
サンプルの挙動を動画で確認しましょう。

class Form1

  1. 今回は単純にするためにデータ処理のためのクラスは作成しません。 いきなりForm1を追加しましょう。


  2. Form1を追加したらlabelを3個、textBoxを3個、buttonを1個Formに張り付けてください。 左側の画像はデザイナ画面です、右側の画像は実行時の画像です。 今回もセンスがないですけどご了承ください。


  3. 本来ならデザイナ画面で記入する部分ですがShownイベントの中に記入してあります。

         this .Text="中点線の作成"
        label1.Text=
    "X方向の中点線の長さ"
        label2.Text=
    "Y方向の中点線の長さ"
        label3.Text=
    "Z方向の中点線の長さ"
        button1.Text=
    "決定"
        textBox1.Text=
    "0"
        textBox2.Text=
    "0"
        textBox3.Text=
    "0";


  4. textBoxに数値を入力してもらい決定ボタンをクリックするとリストをクリアしておきます。 リストのクリアを忘れると前のデータがメモリーに残っていてダブってしまうことがあります、 リストを使う場合はクリアをしておきましょう。

    _ar.Clear();//リストをクリアしておく


  5. テキストボックスに入力してもらった値が文字列になっていますので、 ダブルに変換しながらリストにAddしていきます。 型変換はパースを使いましたが、トライパースの方がいいかもしれません。

        //textBoxの値をリストにAddします。          
       
    ar.Add(double .Parse(textBox1.Text)); 
       ar.Add(
    double.Parse(textBox2.Text)); 
       ar.Add(
    double.Parse(textBox3.Text));


  6. リストの値を「class SolidWorksMacro」に渡すために読み取り専用のプロパティに読み込んでおきます。 このようにすることでデータをそっくりそのまま別クラスに渡すことが出来ます。

        //リストごとclass SolidWorksMacroに渡す 
       
    public List <double > ar 
       { 
       
    get { return this._ar;} 
       }


  7. button1_ClickイベントでForm1が必要がなくなったらForm1を閉じましょう。

    this.Close();


ここまでで「class Form1」のコードは完成」です。 例外処理処理等は要れてありませんのでぜ~~~んぶトライ構文で括るぐらいにした方がいいかもしれませんね。

「class SolidWorksMacro」

  1. お決まりの文句を入れましょう。 ソリッドワークスのオブジェクトの大箱の作成です。 コチラはどこからでもアクセスできるようにフィールドに記入しましょう。

    //SldWorksソリッドワークスの大箱 
           
    public  SldWorks swApp;


  2. 「Main()」メソッドの始めの部分でclass Form1から値を受け取るリストを作成しておきます。

    //class Form1からリストごと値を受け取る 
               
    List <double> _dr= new List <double>();


  3. class Form1の作成をします。 Form1を開く場合は「ShowDialog」メソッドを使います。 不要になったオブジェクトはディスポーズしますが、今回は割愛します。

        //class Form1の作成 
        
    Form1  f1=new Form1 (); 
        f1.ShowDialog();


  4. class Form1のプロパティでせっかくリストを読み込みましたので、その値をそのまま頂きましょう。

        //class Form1からリストごと値を受け取る 
       
    _dr=f1.ar;


  5. 次の2行もおきまりの文句ですが掲載しておきます。

        //ドキュメントを入れる箱 
        
    ModelDoc2  swDoc ;         
        
    //現在のドキュメントを変数に格納 
        
    swDoc = (( ModelDoc2)(swApp.ActiveDoc));


  6. スケッチする面を選択状態にします。 選択状態とはデザインツリーの一部分がハイライトされている状態です。

      //正面を選択 
     
    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を入力します。


  7. 新しいスケッチを挿入します。

    引数; スケッチに行われたすべての変更とともに部品を再構築し、スケッチモードを終了するならばTRUE、そうでなければFALSE

      //スケッチを挿入します 
     
    swDoc.SketchManager.InsertSketch( true);


  8. スケッチの入れ物を用意します。

      //スケッチの大箱 
      
    SketchSegment skSegment;


  9. 線を引きます。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)));


  10. 選択を解除します。

      //選択を解除 
     
    swDoc.ClearSelection2( true);


  11. 現在のドキュメントに新しいスケッチを挿入します。 スケッチに行われたすべての変更とともに部品を再構築し、スケッチモードを終了するならばTRUE、そうでなければFALSE

      //スケッチを挿入します 
     
    swDoc.SketchManager.InsertSketch( true); 


今回は非常に簡単なサンプルを作成しました。 簡単なサンプルですが、ソリッドワークスならではのコードの書き方が理解できたと思います。

お疲れ様でした。

基本操作編INDEXに戻る場合はコチラ↓
LINEで送る
株式会社 サンエツ
〒252-1121 神奈川県綾瀬市小園883-1
TEL :0467-76-7228
FAX :0467-77-3448
E-mail :info@sanetu.main.jp
URL : http://sanetu.main.jp