SolidWorks 使い方 入門

ソリッドワークス
メール

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

SolidWorks 図面スケールのカスタマイズ
SolidWorks API 図面スケール変更の自由度アップ (その2)
「class Form1」は基本的に情報の窓口で情報を処理するクラスは「class datafile」の担当にします。 以下は「class Form1」の編集です。
  1. 「Form1_Shown」イベントを追加してください。 この中でコントロールの編集をします。プログラムの中にコメントを入れてありますので参考にしてください。 この部分はデザイナー画面でも編集できます。

               this.ControlBox =  false; //フォームの×印を無くす。            
              
    label1.Text =  "シートスケールの変更"
               label2.Text = 
    "スケールを選択するとココにボタンが表示されます。"
             
    //後でボタンを表示するためにラベルの画面順番を早い順番にしておきます。 
              
    label2.TabIndex = 1; 
              
    //始めはbutton1を非表示にします。 
              
    button1.Visible = false
               button1.Text = 
    "スケールの変更" ;             
               button2.Text = 
    "キャンセル"
               comboBox1.Text = 
    "詳細スケール";


  2. 「class Form1」にどこからでも参照できるようにフィールド部分にスケールを記述したテキストファイル名の定数と comboBox1で選択された文字列を格納する変数、 「class datafile」を作成するコードを記入します。

          //スケールの比率を登録したファイル名 
           
    const string  DATAFILE = @"\datafile.txt"
           
    //comboBox1で選択された文字列を変数に格納 
           
    string  clt; 
           
    //class datafileの作成 
           
    datafile  df =  new datafile();


  3. 「class datafile」にスケールの値のリストとスケールの比率の変数を記入します。

    /比率のリストの作成 
       
    List<string > com1=new List <string>(); 
           
    //スケールの比率を変数に入力 
           
    static double  _dtm1; 
           
    static double _dtm2;


  4. テキストファイルのファイル名を「class datafile」に渡す準備をします。「class datafile」に「dtfile」メソッドを作成します。 このメソッドは「class Form1」からファイル名の値を受け取ってスケールの記述されたテキストファイルを読み込み リストに追加します。

    テキストファイルは「Application.StartupPath」の場所に置いてあります。「Visual Studio」 の場合は「.exe」と同じ階層ですが「SolidWorks Visual Studio」の場合は 「C:\Program Files (x86)\Common Files\microsoft shared\VSTA\8.0\x64」 の階層になります。変ですね~~~

      public void dtfile( string pas) 
           {             
               
    //com1を一度クリアします。 
               
    com1.Clear(); 
               
    //SolidWorksMacroのApplication.StartupPathパス 
               //C:\Program Files (x86)\Common Files\microsoft shared\VSTA\8.0\x64 
               //登録されたスケールの比率の読み込み配列に格納 
               
    string [] line = System.IO.File .ReadAllLines    (Application .StartupPath + pas, Encoding .GetEncoding("shift-jis" )); 
               
    foreach ( string num  in line) 
               { 
                   
    //比率をリストにAdd 
                   
    com1.Add(num); 
               } 
           }


  5. 「class datafile」リストに登録された値を読み取り専用のプロパティに読み取ります。 このプロパティを「class Form1」で利用します。

      //リストをプロパティに読み込む 
           
    public  List<string > comtxt 
           { 
               
    get  return com1; } 
           }


  6. 先ほど作成した「dtfile」の引数にテキストファイルのファイル名を入れて「class datafile」にファイル名を渡します。 「Form1_Shown」イベントに以下のコードを記入してください。

      // class datafileにファイル名を渡す。 
               
    df.dtfile(DATAFILE);


  7. 「class datafile」から値を受け取る準備ができましたので comtxt プロパティの値を「class Form1」にリストごと渡して「foreach」でぐるぐる回して「comboBox1」にAddします。 「Form1_Shown」イベントに以下のコードを記入してください。

       //classからデータを受け取ってcomboBox1にAddする 
               
    foreach ( string st  in df.comtxt) 
               { 
                   comboBox1.Items.Add(st); 
               }


  8. ここまでの操作でコンボボックスに比率の表示がされれば成功です。


  9. 次は「class Form1」に「comboBox1_SelectedIndexChanged」のイベントハンドラを追加してください。 このイベントが発動したときにlabel2を非表示にしてbutton1を表示します。ついでに選択したスケールの値を button1に表示しましょう。

       private void comboBox1_SelectedIndexChanged( object sender,  EventArgs e) 
           { 
               
    //comboBox1で選択した文字 
               
    clt = comboBox1.SelectedItem.ToString(); 
               
    //label2を非表示にします。 
               
    label2.Visible = false
               
    //button1を表示 
               
    button1.Visible = true
               
    //button1の文字表示 
               
    button1.Text = "スケールを "  + clt + " に変更します。" ;    
           }


  10. comboBox1で選択された値を受け取ることが出来るように「class datafile」にcomdata()メソッドを 作成します。値は「~~~:~~~」の形で送られてきますので、「Split(':')」で区切って配列に格納します。 ついでに文字列をdouble型に変換して変数に格納しておきます。

    //comboBox1で選択された値を受け取る 
           
    public void  comdata(string  cmd) 
           {             
               
    //配列を":"で区切る 
               
    string[] itm = cmd.Split( ':'); 
               
    //文字列からdoubleに変換 
               
    _dtm1 = double .Parse(itm[0]); 
               _dtm2 = 
    double.Parse(itm[1]); 
           }


  11. 「class datafile」に読み取り専用のプロパティを作成していつでもスケールの比率を「class SolidWorksMacro」 に渡せるようにします。

    //スケールの比率をプロパティに読み取る 
           
    public double  dtm1 
           { 
               
    get  return _dtm1; } 
           } 
           
    public double dtm2 
           { 
               
    get  return _dtm2; } 
           }


  12. 「class Form1」に「button1_Click」イベントを追加してください。 このイベントでcomboBox1で選択された文字列を「class datafile」に渡します。 値を「class datafile」に渡したらForm1は不要ですのでCloseします。

       //スケール変更ボタン 
           
    private void  button1_Click(object  sender, EventArgs  e) 
           {             
               
    //comboBox1で選択された文字列をclass datafileに渡す。 
               
    df.comdata(clt); 
               
    //button1をクリックした場合はフォームを閉じる 
               
    this.Close(); 
           }


  13. 「button2_Click」を追加してください。このボタンはキャンセルボタンです。 ボタンをクリックしたら、直ちにForm1を閉じます。

    //キャンセルボタン 
           
    private void  button2_Click(object  sender, EventArgs  e) 
           {             
               
    this.Close(); 
           } 


今回は「class datafile」「class Form1」の編集をしました。 次回は「class SolidWorksMacro」を編集しましょう。
前のページに戻る場合はコチラ↓
class Form1のコード全文      class datafileのコード全文
基本操作編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