SolidWorks API Formの追加と編集
Formの追加と編集
フォームを追加してコントロールを貼り付けてアプリケーション風なものを作成します。
前回保存したコードを開いてフォームにコントロールを貼り付けるところまで。
- 図面テンプレートを開きます。
- 「マクロの編集」を選択します。
- 前回保存したファイルを開きます。
- しばらくすると前回保存したコードが表示されます。
- 後は「Visual Studio」と同じ操作でForm1を追加します。但し残念ながら英語の表記です。
- 「NumericUpDown」コントロールと「Label」「Button」を貼り付けます。
- 「プロパティ画面」でコントロールのサイズやフォントはお好みのサイズに変更します。
コードでプロパティを変更しても構いません。
データ処理用のクラスの作成
一度フォームのことから離れて、データ処理用のコードを作成します。フォームの追加と
同じ手順でクラスを追加してください。名前は「Class calc」としました。
簡単なアプリですが基本編ですのでデータ処理用のクラスを作成しました。
本格的なアプリケーションを作成するときは必ず必要ですので、皆さんがアプリケーション
を作成するときは、今回の説明を参考にしてください。
- 「検査表」の記号のリストとキャプション(見出し)のリストを作成します。「Visual Studio」
を使い慣れている方は「あれ!」と思いますね、「Collections.Generic」の名前空間を入れないと
リストが作成されません。少し不便です。
- NumericUpDown1で入力された値を変数に格納します。
- 「記号」「規格値」「実測値」「誤差」をConstで定数にします。
- Class Form1から値を受け取るメソッドを作成します。以下はメソッドの中に記入します。
- リストや変数をShared(C#ならStatic)で宣言してますのでメソッドの最初で一度クリアしておきます。クリアしないと
再度クラスをNewするとリストに追加されたり変数が初期化されたりします。
- 記号(アルファベット)をリストにaddするには For分で_rw.Add(Chr(i).ToString().ToUpper())のようにします。
- 見出しの項目をaddするのはFor分を使うよりそのままaddした方が簡単ですので
_hding.Add(shnbr)を4つ書きます。
- Class Form1から渡された値を変数に格納します。
ここまでの「Class calc」のコードです。
Shared _rw
As New
Collections.Generic.List(
Of String)
'記号のリスト
Shared _hding
As New
Collections.Generic.List(
Of String)
'見出しのリスト
Shared _rownum
As Integer '行数
Const
shnbr As String
= "記号"
Const stndrd
As String = "規格値"
Const
msr As String
= "実測値"
Const err
As String = "誤差"
'Class Form1から値を受け取るメソッド
Public Sub
adrow(ByVal
rint As Integer
)
_rw.Clear()
'リストのクリア
_hding.Clear() 'リストのクリア
'記号(アルファベット)をリストにadd
For
i As Integer
= 97 To
122
'アルファベットを大文字に変換
_rw.Add(Chr(i).ToString().ToUpper())
Next
'見出しの項目をadd
_hding.Add(shnbr)
_hding.Add(stndrd)
_hding.Add(msr)
_hding.Add(err)
_rownum = rint
'Class Form1から渡された値
End Sub
「Visual Studio」のようにasのインテリセンスも表示されません。かなり不便です。
「Class SolidWorksMacro」に値を渡す準備
データ処理用のクラス「Class calc」から処理をした値を「Class SolidWorksMacro」に渡す準備をします。
クラス間のデータのやり取りで基本になるのは、
- コンストラクタの引数を使う。
- イベントを利用する。
- プロパティを利用する。
- メソッドの引数で対応する。など
幸いにもNET.VBとC#にはプロパティという非常に便利なものが用意されていますので、
今回は読み取り専用のプロパティを使います。またまた残念なことに「Public ReadOnly Property」
はインテリセンスでは表示されません。「Visual Studio」の場合は「Public」の後に「r」と打ち込んだ瞬間に
変換候補として「ReadOnly」が表示されますがマクロの編集では表示されません。
「Get End Get」の表示もありません。
見出しのリストを読み取り専用のプロパティに記録する例です。
Public ReadOnly Property
hding() As
Collections.Generic.List(Of String
)
Get
Return
_hding '見出しのリスト
End Get
End Property