マクロの編集
- 詳細
- カテゴリ: マクロの編集(基礎)
- 参照数: 14147
それでは、マクロの記録で作成されたコードを編集してみましょう。
前項で述べた、CreateCornerRectangle
とFeatureExtrusion2
の一部を修正して、ユーザー入力が可能な形に変更します。
CreateCornerRectangle
の引数は、矩形の始点X座標, 始点Y座標, 始点Z座標, 終点X座標, 終点Y座標, 終点Z座標の6つとなっているので、始点は原点(0, 0, 0)とし、終点をswWidth, swHeight, 0
として幅と高さをユーザーが入力した値を受け取れるようにします。
FeatureExtrusion2
は、6つ目の引数が押し出し量になっているので、swDepth
とし、奥行きをユーザーが入力した値を受け取れるようにします。
実際にはこんな感じです。
vSkLines = Part.SketchManager.CreateCornerRectangle(0, 0, 0, swWidth, swHeight, 0)
Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, swDepth, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, True, True, True, 0, 0, False)
ユーザー入力の手段としては、比較的簡単なInputBox
を使用してみます。
例えば、以下のような感じです。
Dim swWidth, swHeight, swDepth As Double Do Until swWidth > 0 sInput = InputBox("幅を入力して下さい。") If sInput = "" Then Exit Sub End If swWidth = Val(sInput) If swWidth > 0 And swWidth <= 500000 Then swWidth = swWidth / 1000 Else MsgBox "0を超える500000までの数値を入力して下さい。" End If Loop Do Until swHeight > 0 sInput = InputBox("高さを入力して下さい。") If sInput = "" Then Exit Sub End If swHeight = Val(sInput) If swHeight > 0 And swHeight <= 500000 Then swHeight = swHeight / 1000 Else MsgBox "0を超える500000までの数値を入力して下さい。" End If Loop Do Until swDepth > 0 sInput = InputBox("奥行きを入力して下さい。") If sInput = "" Then Exit Sub End If swDepth = Val(sInput) If swDepth > 0 And swDepth <= 500000 Then swDepth = swDepth / 1000 Else MsgBox "0を超える500000までの数値を入力して下さい。" End If Loop
これを、Set swApp = Application.SldWorks
の前に入れておけば、押し出し作成の前にユーザーからの入力を促すことが出来ます。
簡単に説明すると、InputBox
にてユーザーが入力した値から幅・高さ・奥行きをそれぞれ受け取り、swWidth, swHeight, swDepth
に代入するといった感じです。
値は、500000mmまでとしています。
ちなみに、値を代入する際に入力した値を1000で割っているのですが、これは入力した単位がmmに対して、引数の単位はmとなっているためです。
すべての入力が正常に行われれば、swWidth, swHeight, swDepth
をCreateCornerRectangle
とFeatureExtrusion2
の引数に渡すことで、任意サイズの直方体が作成出来るようになりました。
次に、完成したプログラムの動作確認をしてみましょう。