オブジェクトレゾリューションでオブジェクトのVBAコードを調べる|CATIAマクロの作成方法

CATIAでマクロを作成していると
「このオブジェクトのタイプって何だっけ?」
「このオブジェクトを定義するには、どのオブジェクトから順に定義していけばいいんだっけ?」
といった、ちょっとした疑問によくぶつかります。

これらはもちろんVBAのヘルプCAA V5 Visual Basic Helpマクロの記録で調べることもできますが、どちらにしても少しの“手間“がかかります。

そんなCATIAマクロですが、もっと簡単にこれらを調べることのできる
『オブジェクトレゾリューション』という機能が用意されています。

今回はそんな「オブジェクトレゾリューション」について解説していきます。

 

オブジェクトレゾリューションとは

CATIA VBAには『オブジェクトレゾリューション』という機能が搭載されています。

『オブジェクトレゾリューション』を使うことで、
CATIA上で選択したオブジェクトをVBAコードとして取得することが出来ます。

文字だけではわかりづらいので実際に、オブジェクトのコードを取得してみましょう。
VBEの[Insert]タブ>[オブジェクトレゾリューション…]を選択します。

選択後するとCATIAウィンドウが最前面にくるので何かしらのオブジェクトをクリックします。
(※選択するオブジェクトのタイプによってはVBAコードを取得できないものもあります)
ここでは、「XY平面」を選択してみましょう。

XY平面をクリックするとVBEのモジュール内に下記のようなコードが挿入されます。

これはXY平面をVBAで書いた場合のスクリプトです。
上記のコードをみるとXY平面は「OriginalElementsオブジェクト」の「PlaneXYプロパティ(もしくはメソッド)」で取得でいることがわかります。また、同様に「OriginalElementsオブジェクト」は「Partオブジェクト」から定義することができるということもわかります。

このように『オブジェクトレゾリューション』を使うことで選択したオブジェクトのタイプや定義方法、親オブジェクト/子オブジェクトの関係などが一気に読み取ることができます

ただ注意しないといけない点もあります。
『オブジェクトレゾリューション』で出力されるコードはほとんどの場合、下記コードのように「Itemメソッド」と「名称」によってオブジェクトが取得されます。つまり、オブジェクトの名称が変わったり、ツリー構成が少し変わるだけで取得することのできなくなる融通が利かないコードであるともいえます。

このように『オブジェクトレゾリューション』では簡単にオブジェクトをVBAコードとして取得することができまが、使い勝手としてはかなり悪いコードなのでいろいろと書き直す必要があるということは頭に入れておきましょう。

 

オブジェクトレゾリューションとマクロの記録の違い

CATIA VBAにはコードを調べる方法として『マクロの記録』という機能も用意されています。
(これはExcel VBAにもある機能なので存在を知っている人は多いと思います)

たとえば「形状セット.1」内に座標をX=10,Y=20,Z=30と指定して点を作成した場合、マクロの記録により出力されるコードは下記のようになります。

座標をX=10,Y=20,Z=30としていることから、上記コードの
「hybridShapeFactory1.AddNewPointCoord(10#, 20#, 30#)」
の部分で座標を指定していることがわかります。

このことから『マクロの記録』はオブジェクト作成、オブジェクト選択などの「開発者(あなた)の操作」をコード化し取得していることがわかります。

対して『オブジェクトレゾリューション』は現在すでに存在しているオブジェクトを単純に定義した場合のコードを取得しています。そのため選択したオブジェクトが「どのように作られたものか」や「オブジェクトの選択やウィンドウの操作方法」などはオブジェクトレゾリューションでは取得することが出来ません。

どちらも一長一短なのでマクロ開発時にはうまいこと使い分けましょう。

[マクロの記録] 
 → オブジェクトの作成履歴を調べる場合
 → オブジェクトのプロパティやメソッドを調べる場合
 

[オブジェクトレゾリューション]
 → オブジェクトのタイプを調べる場合
 → VBAオブジェクトの親子関係を調べる場合

 

まとめ

今回は『オブジェクトレゾリューション』について解説してきました。
オブジェクトレゾリューションはあまり知られていない機能ですが、使いようによっては『マクロの記録』より優秀にもなります。機会があれば、ぜひ今後のマクロ開発に取り入れてみて下さい。

今回の内容をまとめると下記の通りです。

・CATIA VBAには『オブジェクトレゾリューション』という機能がある
・VBEの[Insert]タブ>[オブジェクトレゾリューション…]より実行可能
・オブジェクトのタイプや親子関係を調べたい場合に非常に有効
・『マクロの記録』と組み合わせることで

 

CATIA VBA サンプルマクロ集
目次へ戻る
 

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

 

CATIA, CATIAマクロ, VBA

Posted by Lic