全てのボディーをボリューム化しその和を作成するマクロ|CATIAマクロの作成方法

今回の記事は「マクロ案」よりいただいた内容です。
送って頂いた内容は以下のようなマクロです。

ワークベンチ:
ジェネレイティブシェイプデザイン

マクロ案:
不特定多数のパートボディを形状セット内で全て和をして一つにす
1. 不特定多数のパートボディをそれぞれ抽出(点連続)
2. ボリューム化(クロズサーフェス)(Optimizer)
3. 2をそれぞれ和をする

基本的には形状作成を行なっていくだけのマクロなのでコード自体は単純な内容となっています。
今回のような形状作成だけのマクロは「ShapeFactoryオブジェクト」「HybridShapeFactoryオブジェクト」の使い方さえ理解できれば大抵のものは作れるようになるので、CATIA V5 サンプルマクロ集にある他のマクロを参考にこれらオブジェクトの使い方を勉強してみて下さい。

 

マクロの機能

今回作成したマクロは
『すべてのボディーをボリューム化し、その”和”を作成するマクロ』です。

具体的な機能は以下のとおりです。

  マクロの機能まとめ ・CATPart内にある全てのボディーをボリューム化し、その和(Add)を作成する
・抽出(Extract)、クローズサーフェス(Close Surface)、和(Add)の順で作成
・作成した形状はツリー第一階層に新規作成される形状セット内に格納する

 

サンプルコード

マクロのサンプルコードは以下のとおりです。

 

コード解説

本マクロは基本的に形状を作成するだけのマクロなので、形状作成の部分のコード解説は割愛します。コード内のコメントを見ればどの部分で何を作成しているかは理解できると思うので参考にしてください。

大まかな処理の流れは以下のようになっています。

① CATPart内の[ボディー]を全て取得
② [ボディー]から[抽出]を作成
③ [抽出]から[クローズサーフェス]を作成
④ [クローズサーフェス]から[和]を作成

ただ、①で取得したボディーの中身が空の場合、②でエラーが発生してしまいます。
そこで以下ではボディーの中身が空だった場合の処理部分を解説していきます。

 

更新(Update)できない場合は抽出を削除[ErrUpdate]

先にもいった通りボディーの中身が空の場合、抽出作成時にエラーが発生します。
ただ厳密にいうとCATIA VBAでは、形状作成時にエラーが発生するのではなく、作成した形状に対して更新を行って初めてエラーが発生します。(つまりボディーが空だとしても抽出自体はツリーに作成されます)

そこで、本マクロでは形状作成後に「更新」を行い、そこでエラーが発生した場合に「エラーが発生した形状を削除する」という処理を行います。

「Pt.Update」の前に「On Error GoTo ErrUpdate」を入力することで、「Pt.Update」でエラーが発生した時に「ErrUpdate:」ラベルにジャンプするようにしています。

ジャンプ先では「エラーが発生した抽出」を削除して元の処理に戻るようにしているので、空のボディーは無視して抽出が作成できるボディーのみが使われるようになっています。

 

まとめ

今回は「すべてのボディーをボリューム化し、その”和”を作成するマクロ」についての内容でした。
コード解説でも出てきましたが本マクロの処理の流れは以下のとおりです。

① CATPart内の[ボディー]を全て取得
② [ボディー]から[抽出]を作成
③ [抽出]から[クローズサーフェス]を作成
④ [クローズサーフェス]から[和]を作成

これをループ文やIf文でうまいこと繋げているだけなのであまり難しいものではありません。

冒頭でもいった通りCATIA VBAでは「ShapeFactory」(パート・デザイン)、「HybridShapeFactory」(GSD)のいずれかを使って形状を作成することができます。

これらオブジェクトのメソッドをヘルプで確認すれば、それぞれの形状をどのように作成するか全て出てきます。使い方さえ理解できればどのような形状も作成することができるようになるのでぜひそちらも合わせて勉強してみてください。

 

目次へ戻る
 

icon-book CATIAマクロを本気で勉強するなら

CATIA, CATIAマクロ, VBA

Posted by Lic