SolidWorks 使い方 入門
ソリッドワークス3Dプリンターのデータ作成、修正、造形 株式会社 サンエツ
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
);
}