マクロの記録で、ソリッドの球を作る |
- 日時: 2004/06/17 12:44
- 名前: mmy
| まず最初にマクロを格納するフォルダを作成しておきます。 catiaV5を立ち上げて、「ツール」→「マクロ」→「マクロ」で、マクロのダイアログを開きます。 「マクロライブラリー」ボタンをクリックして、マクロライブラリーダイアログを開きます。 ライブラリータイプからディレクトリを選択して、「新しいライブラリーの作成」をクリックして、 最初に作成したフォルダのパスを入力してOKボタンを押します。 現行ライブラリーに、入力したフォルダのパスが表示されていることを確認して下さい。 ここで指定したフォルダが、これから作成するマクロの格納先になります。 ここまでの作業が済んだら、開いているダイアログをすべて閉じます。 これでマクロを作成する準備ができました。 マクロの格納先の変更などをしなければ、次回からはこの作業は必要ありません。
ここから実際にマクロを作成する作業に入ります。 パートデザインに入って、「ツール」→「マクロ」→「記録を開始」をクリックします。 「マクロを記録」ダイアログで、「現行マクロ ライブラリーまたはドキュメント」の欄に最初に作成したマクロ格納先フォルダを指定します。 「使用言語」には、MS VBScript を選択して、「マクロ名」の欄に適当な名前の .catvbs を指定します。(この例では、デフォルトの[マクロ1.catvbs]を指定しました。) 「開始」ボタンを押します。(ここからの作業がマクロに記録されます。)
ジェネレーティブ・シェイプ・デザインに入って、「球」のアイコンをクリック 「球のサーフェスを定義」ダイアログで、中心を X=0 Y=0 Z=0 、球半径に 20、全周のアイコンをクリックして、OK。オープンボディに球ができたことを確認して下さい。
パートデザインに戻って、サーフェスを閉じるアイコンをクリックして、先ほどの球をクリックして、OK。 オープンボディの球を非表示にして、パーツボディに球(閉じるサーフェス)が出来ていることを確認して下さい。 ここまでできたら、「ツール」→「マクロ」→「記録を停止」(または、記録を停止アイコン)をクリックします。これでマクロが出来上がっています。
マクロの内容を確認します。「ツール」→「マクロ」→「マクロ」で、マクロのダイアログを開き、先ほど名前を付けた(デフォルトは[マクロ1.catvbs])マクロをクリックして、「編集」ボタンを押して内容を確認してみて下さい。
常に同じ位置で同じ半径の球を作る場合は、このままこのマクロを使用できますが、それでは脳がないので、中心点と半径を入力できるようにしたものを以下に表示します。
=============== マクロここから ===================
Language="VBSCRIPT"
Sub CATMain()
' ### 変数宣言 ### Dim inputstr, msg, inp_array, intstr, inpstr ' Dim varname [ subscripts ]
msg = "(球中心座標)X, Y, Z,(半径)R を順に" & Chr(13) &" , (カンマ)で区切って入力して下さい。" & Chr(13) & Chr(10) & " 入力例: 0,0,0,100" & Chr(13) & Chr(10) & " ( X Y Z の 0 は省略可)"
intstr = "球の中心座標と 半径を入力して下さい。"
' ### 球の中心座標 X, Y, Z と 半径 R の入力 ### Do
inputstr = InputBox (msg, "球の中心 X,Y,Z 座標と 半径 R の入力", intstr) ' InputBox( prompt, title, default, xpos, ypos, helpfile, context )
' ### [キャンセル] を押した場合 ### If inputstr = "" Then ' If ① Exit Do
' ### 入力があった時 Else
' ### 入力項目のチェック ### inp_array = Split(inputstr, ",", -1, 1) ' Split( expression, delimiter, count, compare )
If inputstr = intstr Then ' デフォルト表示のままなら何もしない。
ElseIf UBound( inp_array ) > 3 Then ' 入力項目過剰 ' If ② MsgBox "球中心座標と半径 (X, Y, Z, R の4項目)を入力して下さい。" & Chr(13) & Chr(13) & " 入力項目が多すぎます。", , "パラメータ過剰です。"
ElseIf UBound( inp_array ) < 3 Then ' 入力項目過少 MsgBox "球中心座標と半径 (X, Y, Z, R の4項目)をすべてを入力して下さい。" & Chr(13) & Chr(13) & " 入力項目が不足しています。", , "パラメータ不足です。"
Else ' ### 無入力は 0 に置き換え ### For i = 0 To 3 If Len(inp_array(i)) = 0 Then inp_array(i) = 0 End If Next
' ### 半径が 0 ならば ### inp_array(3) = Abs( inp_array(3) ) ' 半径の - (マイナス)入力を許可 If inp_array(3) = 0 Then ' If ③ MsgBox "半径が 0 (ゼロ)か、入力されていません。" , , "不正半径入力"
Else Exit Do
End If ' End If ③
End If ' End If ②
End If ' End If ①
Loop
' ### [キャンセル] を押した場合 ### If inputstr = "" Then Exit Sub End If
' -------------------------------------- Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Add()
Set hybridShapeFactory1 = part1.HybridShapeFactory
' 球中心 X Y Z 座標 inp_array(0), inp_array(1), inp_array(2) Set hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(inp_array(0), inp_array(1), inp_array(2))
hybridBody1.AppendHybridShape hybridShapePointCoord1
part1.InWorkObject = hybridShapePointCoord1
part1.Update
Set reference1 = part1.CreateReferenceFromObject(hybridShapePointCoord1)
' 半径 inp_array(3) Set hybridShapeSphere1 = hybridShapeFactory1.AddNewSphere(reference1, Nothing, inp_array(3), -90.000000, 90.000000, 0.000000, 360.000000)
hybridShapeSphere1.Limitation = 1
hybridBody1.AppendHybridShape hybridShapeSphere1
part1.InWorkObject = hybridShapeSphere1
part1.Update
Set bodies1 = part1.Bodies
Set body1 = bodies1.Item("パーツ ボディー")
part1.InWorkObject = body1
Set shapeFactory1 = part1.ShapeFactory
Set hybridShapes1 = hybridBody1.HybridShapes
Set hybridShapeSurfaceExplicit1 = hybridShapes1.Item("球.1")
Set reference2 = part1.CreateReferenceFromObject(hybridShapeSurfaceExplicit1)
Set closeSurface1 = shapeFactory1.AddNewCloseSurface(reference2)
part1.Update
End Sub
=============== マクロここまで ===================
VBスクリプトに関しては、WEBにもいろいろ掲載されていますので、参考にして下さい。
それでは、作成したマクロを実際に実行してみましょう。 「スタート」→「パートデザイン」で新規にパートデザインを立ち上げます。 「ツール」→「マクロ」→「マクロ」で、マクロのダイアログを開きます。 ここで先ほど作成したマクロを選択して「実行」ボタンをクリックします。 「VBScript」のダイアログが開きましたか? 開いていればここで、中心X,中心Y,中心Z,半径R を , (カンマ)で区切って入力して下さい。 例えば 10,5,0,100 と入力して「OK」ボタンを押してみて下さい。 中心(10,5,0)半径100 の球が出来れば大成功です。 ちなみに X,Y,Z の 0(ゼロ)は省略できるようにしてあります。(,,,100)と入力した場合、中心(0,0,0)半径100 の球が出来ます。 |
|
|