<CATIA V5 BBS TIPS & USAGE TOP_PAGE > 記事閲覧
マクロの記録で、ソリッドの球を作る
日時: 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 の球が出来ます。

メンテ(修正・削除)

Page: 1 |

題名 スレッドをトップへソート
名前  
E-Mail   ※URLとの併記不可
URL   ※Eメールとの併記不可
パスワード 記事メンテ時に使用(英数字で8文字以内)
投稿キー (投稿時 投稿キー を入力してください)
コメント
添付データ 添付可能ファイル GIF, JPEG, PNG, LHA, ZIP 最大投稿データ量 1000 KB (1.0 MB)
データ1
データ2

   クッキー保存