SolidWorks 使い方 入門

ソリッドワークス
メール

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

SolidWorks 図面スケールのカスタマイズ
図面スケールのカスタマイズのコード全文

class Form1のコードです。

      //スケールの比率を登録したファイル名 
       
const string  DATAFILE = @"\datafile.txt"
       
//comboBox1で選択された文字列を変数に格納 
       
string  clt;               
       
//class datafileの作成 
       
datafile  df = new datafile (); 
       
private void Form1_Shown( object sender,  EventArgs e) 
       { 
           
//以下はデザイナー画面で設定してください。 
           
this .ControlBox = false; //フォームの×印を無くす。            
           
label1.Text = "シートスケールの変更"
           label2.Text = 
"スケールを選択するとココにボタンが表示されます。"
           
//後でボタンを表示するときにラベルの画面順番を早い順番にしておきます。 
           
label2.TabIndex = 1; 
           
//始めはbutton1を非表示にします。 
           
button1.Visible = false
           button1.Text = 
"スケールの変更" ;             
           button2.Text = 
"キャンセル"
           comboBox1.Text = 
"詳細スケール"
           
// class datafileにファイル名を渡す。 
           
df.dtfile(DATAFILE); 
           
//classからデータを受け取ってcomboBox1にAddする 
           
foreach  (string st  in df.comtxt) 
           { 
               comboBox1.Items.Add(st); 
           }       
       } 
       
//SelectedIndexChangedのイベントハンドラ 
       
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 + " に変更します。" ;    
       } 
       
//スケール変更ボタン 
       
private void  button1_Click(object  sender, EventArgs  e) 
       {             
           
//comboBox1で選択された文字列をclass datafileに渡す。 
           
df.comdata(clt); 
           
//button1をクリックした場合はフォームを閉じる 
           
this .Close(); 
       } 
       
//キャンセルボタン 
       
private void  button2_Click(object  sender, EventArgs  e) 
       {             
           
this .Close(); 
       }      

class datafileのコードです。

        //比率のリストの作成 
   
List <string> com1= new List< string>(); 
       
//スケールの比率を変数に入力 
       
static double _dtm1; 
       
static double  _dtm2; 
       
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); 
           } 
       } 
       
//リストをプロパティに読み込む 
       
public List< string> comtxt 
       { 
           
get  return com1; } 
       } 
       
//comboBox1で選択された値を受け取る 
       
public void comdata( string cmd) 
       {             
           
//配列を":"で区切る 
           
string [] itm = cmd.Split(':' ); 
           
//文字列からdoubleに変換 
           
_dtm1 =  double.Parse(itm[0]); 
           _dtm2 = 
double.Parse(itm[1]); 
       } 
       
//スケールの比率をプロパティに読み取る 
       
public double  dtm1 
       { 
           
get  return  _dtm1; } 
       } 
       
public double  dtm2 
       { 
           
get  return  _dtm2; } 
       }

class SolidWorksMacroのコード全文

   public SldWorks  swApp; 
           
public void Main() 
       { 
           
//class datafileの作成 
           
datafile dt =  new datafile (); 
           
//class Form1の作成 
           
Form1 f1 =  new Form1 (); 
           
//フォームの表示 
           
f1.ShowDialog(); 
           
//入れ物の削除 
           
f1.Dispose();             
           
ModelDoc2  swDoc;                                          
           
DrawingDoc swDrawing; 
           
//シートの作成 
           
Sheet swSheet; 
           
//図面スケールのサイズ変数にclass datafileから値を受け取る 
           
double s1 = dt.dtm1; 
           
double s2 = dt.dtm2; 
           
//s1,s2が0.0の場合の処理 
               
if((s1==0.0)&&(s2==0.0)) 
               { 
                   
return
               } 
           swDoc = ((
ModelDoc2 )(swApp.ActiveDoc));           
           swDrawing = (
DrawingDoc)(swDoc); 
           
//現在のシートを取得                
           
swSheet = (Sheet )swDrawing.GetCurrentSheet(); 
           
//スケールをセットします。                
           
swSheet.SetScale(s1, s2, true true); 
           
//再構築 
           
swDoc.ForceRebuild3(true ); 
           
//選択解除 
           
swDoc.ClearSelection2(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