オブジェクトとコレクション/プロパティとメソッドとは|CATIAマクロの作成方法
今回はVBAで非常に重要となる『オブジェクト』『コレクション』『プロパティ』『メソッド』についての内容です。
これからマクロを作るうえで必須の内容なので、今回の内容は必ず押さえておきましょう。
今回学べる内容は以下のとおりです。
コレクションとは何か
プロパティ(Property)とメソッド(Method)とは何か
オブジェクトの調べ方(CAA V5 Visual Basic Helpの使い方)
このページでは「オブジェクト」「コレクション」「プロパティ」「メソッド」がどのようなものなのかさえ理解できれば大丈夫です。途中でいくつかのVBAコードがでてきますが今はまだ詳しく理解できなくても問題ありません。
またページ後半ではこれらを調べるための『CAA V5 Visual Basic Help』の使い方も解説していきます。CATIAマクロを作成するうえでほぼ必須の内容なのでコチラもあわせておさえておきましょう。
オブジェクトとコレクション
オブジェクト
VBAにはCATIAと同様に『オブジェクト』というものが存在します。
オブジェクトとはCATIAでは作成した形状やパラメータなどのことをいいますが、VBAではVBAで操作する時の対象となるもののことをいいます。
本ページではこれらの違いを表すため、それぞれ以下のように書いていきます。
・VBA → 『オブジェクト』
・CATIA → 『CATIAオブジェクト』
コレクション
『コレクション』とは複数のオブジェクトを1つにまとめたオブジェクトのことをいいます。
たとえば「Document」というCATIAのドキュメントを扱うためのオブジェクトがあります。
この「Document」を1つにまとめたものを「Documentsコレクション」といいます。
(※オブジェクトが単数形に対してコレクションは複数形で表記します)
オブジェクトの中にはコレクションが有るものと無いものがあります。
どのオブジェクトにコレクションがあるのかは後述している『Infrastructure Automation Objects』で確認することができます。
プロパティとメソッド
オブジェクト(コレクション)にはそれぞれに特有の『プロパティ(Property)』と『メソッド(Method)』というものが用意されています。
基本的にマクロはこのプロパティとメソッドを使ってオブジェクトを操作することで動かしています。そのためこのプロパティとメソッドというものが理解できれば、簡単なマクロであればすぐに作れるようになります。
プロパティ(Property)
『プロパティ』とはそのオブジェクトの属性を意味しています。
属性とはオブジェクトの名前やエレメント(要素)などのオブジェクトが個々で持っている情報、性質のことです。
このプロパティを使うことでオブジェクトの名前やエレメント(要素)を取得したり、変更したりすることができます。
オブジェクトのプロパティを表すにはピリオド[.]を使って以下のように書きます。
オブジェクト.プロパティ
たとえば点を扱うことのできる「Point」というオブジェクトがあったとします。
この点の名前を取得するには「Name」プロパティを使って以下のように書きます。
Dim PointName As String
PointName = Point.Name
この場合、点の名前が文字列型(String)として取得できます。
つまりメッセージボックスで変数「PointName」を表示させれば、オジェクト名や変数名ではなく「点.1」「点.2」のように取得した点の名前を表示することができます。
このようにプロパティはオブジェクトの属性を取得したり書き換えたりしたい場合に使用します。
(使用例:形状セットの名前を一括で変更するマクロなど)
メソッド(Method)
マクロはVBAで書かれたコードを順に処理していくことでCATIAを操作していますが、このときの操作内容のことを『メソッド』といいます。
たとえば「仕様ツリー上にあるサーフェス.1を削除」という操作の場合でいうと、「削除」というのがメソッドになります。
メソッドの書き方もプロパティと同じでピリオド[.]を使って以下のように書きます。
オブジェクト.メソッド
たとえば ボディーを追加する場合は「Bodies」コレクションの「Add」メソッドを使って以下のように書きます。
Dim rootPart As Part
Set rootPart = CATIA.ActiveDocument.Part
Dim NewBody As Body
Set NewBody = rootPart.Bodies.Add
いろいろ書かれていますがここで重要なのは最後の1行です。
「rootPart.Bodies.Add」を文字で表すと「rootPartのBodiesコレクションに新規ボディーを追加」という意味になっています。つまりこの行とループ文をうまく組み合わせれば、大量の新規ボディーを一括で作ったりすることできます。
このほかにも選択したものをコピーするための「Copy」メソッドや、貼り付けるための「Paste」メソッド、削除するための「Delete」メソッドなど様々なものがあります。
このようにメソッドはそのオブジェクトに対して何か操作を行いたい場合に使用します。
(使用例:複数の形状セットを一括で作成するマクロなど)
ゲームで例えるとキャラクターが「オブジェクト」
そのキャラクターの「攻撃力」や「守備力」などのステータス情報が「プロパティ」
「たたかう」「にげる」などそのキャラクターを操作するコマンドが「メソッド」のイメージです。
プロパティとメソッドの内容はオブジェクトごとに違います。
どのオブジェクトにどのようなプロパティやメソッドがあるのかは次項の『Infrastructure Automation Objects』で確認することができます。
オブジェクトの調べ方
VBAのCATIA専用のオブジェクトは非常に多くあり、それぞれに多くのプロパティとやメソッドが用意されています。
どれくらい多いのかというと以下のサイトをチラ見してみてください。
古いものではありますがCATIAマクロで使えるオブジェクトがすべて書かれています。
『CATIA Programming reference – CATIADOC』
オブジェクトでこの量あり、それぞれに5~10種類くらいのプロパティとメソッドがあるのでその数の膨大さが理解できると思います。
こういった質問もよく聞きますが、答えはノーです。
これらすべてのコードは『CAA V5 Visual Basic Help』というヘルプにまとまられているためすべてを覚える必要はありません。(よく使うものは覚えておいた方が楽ですが)
『CAA V5 Visual Basic Help』の中にはCATIAで使えるすべてのオブジェクトをツリー状にまとめた『Infrastructure Automation Objects』というページがあります。このページでオブジェクトやコレクションをはじめ、それらのプロパティやメソッドを簡単に調べることができます。
Infrastructure Automation Objects
では実際に『CAA V5 Visual Basic Help』で『Infrastructure Automation Objects』のページを開いてCATIA専用のオブジェクトを詳しく見ていきましょう。
『CAA V5 Visual Basic Help』とはCATIA専用のVBAコードをまとめたヘルプです。
VBE上で[F1]を押すと『Visual Basic Reference』という、VBAの構文をまとめたヘルプが開きます。この2つのヘルプは別物なので注意しておきましょう。
『CAA V5 Visual Basic Help』を開くにはまずモジュールのどこにでもいいので『AnyObject』と入力します。入力したら『AnyObject』を選択状態にして[F1]を押下します。(後々理解できると思いますが、ここは『AnyObjec』ではなくてもCATIA専用のオブジェクトの名前であれば何でも可能です)
すると『AnyObject』に関する『CAA V5 Visual Basic Help』のページが開きます。
『CAA V5 Visual Basic Help』が開いたら、ウィンドウ上部の[オプション]>[ホーム]をクリックします。
これで『Infrastructure Automation Objects』のページが開きます。
もし開かない場合は『Infrastructure Automation Objects』で検索すればすぐに見つかります。検索する場所が見つからない場合は、ウィンドウ上部の[表示]をクリックすれば検索ウィンドウが表示されます。
ここにはVBAで使えるCATIA専用のオブジェクトやコレクション、それらに対するプロパティとメソッドがすべて載っています。
※オブジェクトとコレクションは色で判断することができます。
ページ左下の「Legend」を参照ください。
Infrastructure Automation Objectsの使い方
『Infrastructure Automation Objects』ページの赤い三角形をクリックすると、そのオブジェクトのより下の階層を見ることができます。
たとえば『Infrastructure Automation Objects』ページの「PartDocument」の横にある三角形をクリックすると、PartDocumentの中にあるオブジェクトに特化した『Part Document Automation Objects』ページへ移動することができます。
オブジェクト名をクリックすることでそのオブジェクトの専用ページに飛ぶこともできます。
オブジェクトページにはそのオブジェクトのプロパティとメソッドがすべて書かれています。
たとえば「HybridBody」というオブジェクトを見ると「Bodies」「GeometricElements」「HybridBodies」「HybridShapes」「HybridSketches」の5種類のプロパティと「AppendHybridShape」という1種類のメソッドがあることがわかります。
プロパティ名やメソッド名をクリックするとそれらの具体的な書き方の例を見ることもできます。
より詳しい使い方は下記ページを参照下さい。
もしヘルプを見れる環境にない場合は以下のサイトを参考にしてください。
①『Infrastructure Automation Objects – maruf.ca』
②『CATIA Programming reference – CATIADOC』
※①のページはオブジェクトの詳細ページがほとんどないためプロパティ/メソッドを確認することができません。そのためプロパティ/メソッドは②のオブジェクトがまとまったページと併用して調べる必要があります。
まとめ
今回の内容をまとめると以下のとおりです。
コレクションとは、複数のオブジェクトを1つにまとめたもの
プロパティとは、オブジェクトの属性
メソッドとは、オブジェクトの操作内容
CATIA専用のオブジェクトは『CAA V5 Visual Basic Help』から調べることができる
今回は主に用語についての解説でした。
プロパティとメソッドの具体的な使い方は別ページで解説していくため、ここでは「オブジェクト」「コレクション」「プロパティ」「メソッド」のそれぞれが何を表しているのかをしっかりと押さえておきましょう。
また、CATIAマクロを自作するにあたり『Infrastructure Automation Objects』はほぼ必須になるので、ある程度の使い方は理解しておきましょう。
CATIAマクロを本気で勉強するなら