CATIAマクロのヘルプ『CAA V5 Visual Basic help』の使い方|CATIAマクロの作成方法
CATIAマクロの作成には、『CAA V5 Visual Basic help ( V5Automation.chm)』の存在が欠かせません。しかしながらこのCATIAマクロヘルプ、すべて英語なうえに情報量が多すぎてどうしても敬遠してしまいがちです。
というわけで今回はCATIAマクロのヘルプである『CAA V5 Visual Basic help』の使い方を詳しく解説していきます。今回学べる内容は以下のとおりです。
CATIAマクロのヘルプ『CAA V5 Visual Basic help』の使い方
オブジェクト(Object)ページの構成
プロパティ(Properties)/メソッド(Methods)項目の見方
前提としてこのヘルプは関数、引数、プロパティ/メソッドなどVBAの基本を理解していないと使いこなすのが難しい内容になっています。VBAの使い方ではなくCATIAマクロで使えるオブジェクトの情報がまとまっているだけなので、VBA完全初心者の方はまずはVBAの基本的な内容を理解することを優先してください。
▼▽▼ CATIAマクロを独学するなら ▼▽▼
ただ、CATIA VBAに関する情報はすべてここに詰め込まれているので、使い方さえ理解できればこのヘルプでマクロ化したい操作をするためのオブジェクトやプロパティ/メソッドなどを探すことができるようになります。
本ページの画像は説明のため一部加工しているものがあります CATIAのバージョンによってヘルプに記載されている内容が違う場合があります
かなりガバガバなので100%は信用しないようにしておきましょう CATIAヘルプは
・例文のコードに別のプロパティ/メソッドのものが書かれている
・例文のコードに使えないコードが記載されている
・クリックできる部分をクリックしてもリンク先に飛ばない
・ページ構成が統一されているようでされていない …etc
CATIAマクロヘルプ『CAA V5 Visual Basic help』とは
そもそもCATIAマクロのヘルプである『CAA V5 Visual Basic help』とは何かを理解しておきましょう。『CAA V5 Visual Basic help』とはCATIAマクロで使えるオブジェクトやコレクション、それらに対するプロパティとメソッドがすべて載ったCATIAマクロのヘルプのことです。
上画像のような『Infrastructure Automation Objects』がこのヘルプのメインページです。
このメインページからオブジェクトやそのプロパティ/メソッドなどを調べていきます。
ちなみにヘルプのファイルは「 V5Automation.chm」となっており、保存場所としては[C:\Program Files(x86)\Dassault Systemes\XXX\intel_a\code\bin]内にあります。binフォルダ内はファイルがかなりあるので、フォルダ内で「.chm」と検索すればすぐに見つけられます。
VBEから直接開くこともできるので、覚えておくと便利です。
『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』のページが開きます。
AnyObjectページが開いたら、ウィンドウ上部の[オプション]>[ホーム]をクリックします。
これで『Infrastructure Automation Objects』のページが開きます。もし開かない場合は『Infrastructure Automation Objects』で検索すればすぐに見つかります。検索する場所が見つからない場合は、ウィンドウ上部の[表示]をクリックすれば検索ウィンドウが表示されます。
『CAA V5 Visual Basic help』の内容はすべて英語で書かれているので理解するには多少の英語知識は必要です。ただこのご時世、翻訳ツールの力も格段に上がっているので英語知識が全くなくてもある程度は使いこなせるものになっています。
CATIAのバージョンによって機能の追加や変更などがあり、それに伴ってVBAのコードも変化していくのでバージョンによってはヘルプ内容も変化します。
ただ、基本的にコードとしてはオブジェクトやプロパティ/メソッドが増えるだけで、減ることはありません。これは様々な企業などで、もともと使っていたマクロが機能しなくなるのを防ぐためです。
たとえば「Selectionオブジェクト」の「Countプロパティ」でいうと、一部ドキュメントで不具合があることがわかり、のちに「Countプロパティ」は残したまま、新たに「Count2プロパティ」という不具合を直したプロパティが追加されました。「Countプロパティ」をそのまま残したのは、もともと「Countプロパティ」でコードを書いていたマクロに影響を与えないためというわけです。
オブジェクトの調べ方
『Infrastructure Automation Objects』はツリー状でオブジェクトの構造が表されています。
ここに表示されているオブジェクト名をクリックすることで、そのオブジェクトのプロパティ/メソッドなどの詳細情報がまとまった「オブジェクトページ」に移動することができます。
基本的にはこのオブジェクトページに書かれている内容が理解できれば、VBAで操作したいコード(プロパティ/メソッド)を見つけることができます。
クリックするオブジェクトによっては下画像のようにオブジェクトページとは違うページに行く場合がります。このページはクリックしたオブジェクトとその子供のオブジェクトの関係性などが書かれたページです。(興味のある人は読んでもいいですが、基本特に読まなくても大丈夫な内容です)
このページに来てしまった場合は、ツリー構成のオブジェクト名部分をクリックすることで、そのオブジェクトのオブジェクトページに移動することができます。
CATIA VBAのオブジェクトはかなりの量あり、1つのツリーにすべてのオブジェクト情報を載せると非常に見づらくなります。そのためこのヘルプはオブジェクトの種類ごとに分類分けして、深層部のオブジェクトは別ページにまとめられています。
より深層部(子供)のオブジェクトを見るには、オブジェクト名の横にある をクリックします。
たとえば「PartDocument」の横の をクリックすると、CATPart内で使用可能なVBAオブジェクトがまとまっている『Part Document Automation Objects』というページに移動します。
一見量が多く難しそうに見えますが、基本的にVBAオブジェクトの親子関係はCATIA画面と同じです。
CATIAの画面構成の下画像と上画像を見比べてみると親子関係が同じということがよくわかります。
そのため、ある程度どのオブジェクトを使うかのあたり付けはできるようになっています。
たとえば「形状セットを追加」という操作はどのオブジェクトを使うのかを調べたい場合は、
「Application>Documents>Document(PartDocument)>Part」よりは下にあることが予想できますし、オブジェクト名からある程度どのオブジェクトかの目星は付けることができます。
ここまできたら、あとはそれらしいオブジェクトページをいくつか見ながら、形状セットを追加するためのプロパティ/メソッドを探すといった感じで調べていきます。
このように、未知のオブジェクトはヘルプのツリー構成から予測しながら探すのが基本です。
もしくは、ヘルプ左側にある「検索」機能を使って直接オブジェクトを調べるという手もあります。だだ、検索ワードは英語である必要があるのである程度CATIA内の英単語は知っておく必要があります。
オブジェクトページの構成
オブジェクトページは全てのオブジェクトで同じ構成になっています。
このオブジェクトページのどこに何が書かれているかさえ理解できるようになれば、基本的にはどのオブジェクトも使いこなせることができるようになります。
構成としては下画像のようになっています。
オブジェクトページはオブジェクト名の横に(Object)とかかれています。
※画像の大きさの関係で端折っていますが、メソッド一覧の下には「Properties」「Methods」という項目があり、「プロパティ一覧」「メソッド一覧」に書かれているすべてのプロパティとメソッドそれぞれの詳細な内容が書かれています。
オブジェクト名
オブジェクトの名称が書かれています。
ページにはここに書かれているオブジェクトのプロパティ/メソッド等の情報がまとまっています。
たとえば上画像の場合でいうと、このページは「AnyObject」というオブジェクトについて書かれているということがわかります。
オブジェクトの役割
オブジェクトの役割やできることなどが端的に書かれています。
オブジェクトによっては非常に長文で書かれているものもありますが構成は同じです。
たとえば上画像の場合、翻訳ツールで訳すと下記のようになっています。
Represents the base object for all other objects except collection and reference objects.
As a base object, it provides properties shared by any other object.コレクションと参照オブジェクトを除く他のすべてのオブジェクトの基本オブジェクトを表します。
ベースオブジェクトとして、他のオブジェクトが共有するプロパティを提供する。
「他のオブジェクトが共有するプロパティを提供」というところから、AnyObjectオブジェクトは他のオブジェクトで共有することのできるプロパティを持っているオブジェクトということがわかります。要は、DocumentオブジェクトやWindowオブジェクトなどの別オブジェクトでもAnyObjectのプロパティ/メソッドを使うことができるということです。
プロパティ一覧 (Property Index)
オブジェクトで利用可能なすべてのプロパティ名がアルファベット順に表示されています。
プロパティ名をクリックすることで「プロパティ」項目内の詳細内容へジャンプします。
また、プロパティ名の下にはそのプロパティの内容が端的に書かれています。
たとえば上画像の「Nameプロパティ」の場合、「Returns or sets the name of the object.」という内容から、オブジェクトの名前を取得もしくは設定できるプロパティということがわかります。
メソッド一覧 (Method Index)
オブジェクトで利用可能なすべてのメソッド名がアルファベット順に表示されています。
メソッド名をクリックすることで「メソッド」項目内の詳細内容へジャンプします。
また、メソッド名の下にはそのメソッドの内容が端的に書かれています。
たとえば上画像の「GetItemメソッド」の場合、「Returns an object from its name.」という内容から、オブジェクトの名前からそのオブジェクトが取得できるメソッドということがわかります。
ある程度は目的の操作をするためのプロパティ/メソッドがみつかりそうですね
プロパティ(Properties)とメソッド(Methods)の構成
オブジェクトページのメソッド一覧の下には「Properties」「Methods」という項目があり、「プロパティ一覧」「メソッド一覧」に書かれているすべてのプロパティとメソッドの詳細内容がまとめられています。
「Properties」「Methods」の内容もオブジェクトページと同様に構成は全て同じなので、構成さえ覚えておけばどのオブジェクトのプロパティ/メソッドでも使い方がわかるようになっています。
ただ、冒頭の注意でも書いている通り、必ずしもすべて同じ構成であるとはいえません。
基本的には下記の通りですが、オブジェクトによっては多少の差異があることは知っておいて下さい。
プロパティ(Properties)の見方
プロパティの構成は基本的には下画像のような構成になっています。(画像はWindowオブジェクト)
プロパティ名
プロパティの名称です。
プロパティタイプ
プロパティのタイプです。
プロパティタイプはLong型やDouble型のようなデータ型、DocumentやWindowのようなオブジェクトなどプロパティによってさまざまです。このプロパティを取得し変数に入れる場合、宣言時にここに書かれているタイプと同じにしないとタイプ不一致のエラーが発生するので注意しましょう。
プロパティタイプの横に(Read Only)と書かれているプロパティは取得専用のものです。
変数に入れる入れない関わらず、値は変更することが出来ないので注意しましょう。
プロパティ内容
このプロパティでできることが詳しく書かれています。
基本的にはプロパティ一覧(Property Index)で書かれた内容よりも詳しい内容が書かれていますが、ものによっては同じような内容になっています。
例文
このプロパティを使用するための例文とその説明が書かれています。
例文では該当のプロパティ部分が赤く表示されています。
ものによっては例文が無ないものもあります。
メソッド(Methods)の見方① 戻り値あり
メソッドは戻り値があるものと戻り値ないものの大きく分けて2種類あります。
そのうち戻り値があるものは下画像のような構成になっています。(画像はApplicationオブジェクト)
見分け方としては、メソッド名の前に「Func」とついている、もしくは「As XXX」と戻り値タイプがかかれているものが戻り値のあるメソッドです。
メソッド名
メソッドの名称です。
引数
メソッドを使うために必要な材料となる引数の内容が書かれています。
引数ごとにカンマ[,]で区切られており、上から順に第一引数、第二引数…となっています。
引数のうち左側が引数のタイプで右側がパラメータ名を表しています。
たとえば上画像の第一引数「(CATBSTR iTitle, 」部分を見ると、第一引数はiTitleというパラメータ名で、そのパラメータのタイプはCATBSTR(※String型のこと)といった見方です。
何に使う文字列(String)なのかは以降の「パラメータ(引数)内容」項目にまとまっています。
戻り値タイプ
このメソッドの戻り値タイプです。
戻り値がない場合はこの項目はありません。
たとえば上画像の場合、戻り値のタイプはCATBSTR(※String型のこと)です。
つまり、このメソッドの結果を受け取る変数を宣言する際はString型の必要があるということです。
戻り値を受け取る変数を宣言する際はここに書かれているタイプと同じにしないとタイプ不一致のエラーが発生するので注意しましょう。
メソッド内容
このメソッドでできることが詳しく書かれています。
基本的にはメソッド一覧(Method Index)で書かれた内容よりも詳しい内容が書かれていますが、ものによっては同じような内容になっています。
パラメータ(引数)内容
引数がある場合、その引数がそれぞれ何に使われるのかが書かれています。
(※ページによっては「メソッド内容」部分でまとめて説明されている場合もあります)
たとえば上画像の場合、第一引数のiTitleは「The title of the dialog box.」、つまりは「ダイアログボックスのタイトル」で表示するための文字列を表していることがわかります。
また、ここには戻り値の内容もあわせて表記されている場合があります。
上画像の場合、「oFilePath」というパラメータは引数には存在しません。
基本的に引数の場合はパラメータ名はInputの頭文字をとって「iTitle」「iExtension」と「i」始まり、戻り値はOutputの頭文字をとって「oFilePath」のように「o」始まりとなっています。
パラメータ内容を確認すると、「oFilePath」は実行結果として「選択されたファイルのフルパス(the full path) 、選択されなかった場合は空の文字列””(zero-length string)を返すメソッド」ということがわかります。
例文
このメソッドを使用するための例文とその説明が書かれています。
例文では該当のメソッド部分が引数も含めて赤く表示されています。
ものによっては例文が無ないものもあります。
メソッド(Methods)の見方② 戻り値なし
戻り値がないメソッドは下画像のような構成になっています。(画像はWindowオブジェクト)
見分け方としては、メソッド名の前に「Sub」とついている、もしくは前項とは違い戻り値タイプがかかれていないものが戻り値のないメソッドです。
構成として、戻り値あり構成の戻り値タイプなしverなので各内容は前項を参照してください。
戻り値なしの場合、コードとしては下記のいずれかになります。
上画像の場合、例文はそのままコピペしてもエラーが出るので注意しましょう。
‘引数を括弧()で囲む場合は先頭に「Call」を付ける
Call CATIA.Windows.Arrange (catArrangeCascade)
‘引数を括弧()で囲まない場合は「Call」は不要
CATIA.Windows.Arrange catArrangeCascade
また、メソッドの実行により戻り値以外で何かしらの結果が返ってくるものもあります。
たとえば、「IndicateOrSelectElement2Dメソッド」は第6引数と第7引数のパラメータ名が「o」始まりとなっています。つまりこのメソッドの実行後に、引数として渡したBoolean型の変数とCATSafeArrayVariant型(※配列のこと)の変数に結果が格納されることを表しています。
このように戻り値以外にも結果が返ってくるメソッドもあるので注意しましょう。
Tips
CAT始まりのよくわからないオブジェクトたち
これまでの説明にCATBSTR(※String型のこと)やCATSafeArrayVariant(※配列のこと)というように、CAT始まりのよくわからないオブジェクトの型が出てきて疑問を持った方も多くいると思います。これらはCATIA内で事前に定義されているものたちです。
これらの厄介なのがヘルプに「CATBSTR」と書かれているからといって「Dim catstr As CATBSTR」とそのまま使おうとしても使えないという点です。こういったものは対応する別のオブジェクト型を調べて書き換えてあげる必要があります。
幸いにも、よくわからないオブジェクトの型のほとんどはリンクがついていて詳細ページにジャンプすることができます。ちなみにCATBSTRページに移動すると下画像のような内容がかかれています。
Defines the string type to be used by Automation interfaces.
オートメーションインターフェースで使用される文字列の型を定義する。
内容を翻訳ツールに入れると上記のような内容が書かれていることがわかります。
つまりCATBSTRは文字列型(String型)を表していることがわかります。
よって「CATBSTR」と書かれているものは「Dim catstr As String」のようにString型として扱う必要があるということがわかります。
このようによくわからないオブジェクトが出てきたら、ひとまずリンク先のページへ移動して軽く目を通すことで見れば何か解決の糸口が見つかるかもしれません。また、調べてどうしてもわからない場合は型を指定しないでVariant型として扱うのも1つの手です。
列挙型変数(Enumeration)について
オブジェクト型として列挙型変数(Enumeration)ページに移動する場合があります。
その場合、下画像のようなページに移動します。
最上部に(Enumeration)と書かれているのですぐに判別できるようになっています。
列挙型変数とは複数の異なった定数を一つの集合として定義したものです。
プログラミングの多くで使用されているものなので検索すれば多くの情報が見つかるので、列挙型変数について詳しく知りいたい方はそれらを参照してください。
上画像の場合、CATIAのウィンドウのスタイルを表した定数がまとまった列挙型変数です。
この列挙型変数の場合は3つの値が用意されており、それぞれ下記を表しています。
catArrangeCascade :重ねて表示
catArrangeTiledHorizontal :上下に並べて表示
catArrangeTiledVertical :左右に並べて表示
これら3つの値は定数なので、使用する場合はいずれかを選んで使用するようなかたちとなります。
たとえば引数のパラメータのタイプとして「CatArrangeStyle」と書かれている場合は、上記の3つの値のいずれかを引数として入力すればいいという訳です。
各値の詳細の内容は同ページの「Values:」の項目に書かれているのでそこを見れば、それぞれが何を表しているかを調べることができます。
まとめ
今回はCATIAマクロを作るうえでは欠かせない『CAA V5 Visual Basic help』についての内容でした。すべて英語ということで敬遠しがちですが、どこに何が書かれているかが理解できていれば案外読みやすく、使い勝手の良いものだとわかります。
今回の内容でときに大事なのがオブジェクトページのどこに何が書かれていてるかとプロパティ/メソッド項目の見方です。これさえ理解できていれば、初めて見るオブジェクトでもそのオブジェクトを使いこなすことができます。
ただ、結局のところは経験が大事で、実際にコードを書いて出てきたエラーを自ら解決することで、それが知識としてたまっていきます。おそらくヘルプを見ながらやってもエラーが出ることは多々ありますが、数をこなすうちにヘルプも一緒に使いこなせるようになっていきます。
重要なのは手を動かすことなので、ヘルプを見つつ様々なマクロの作成に挑戦していきましょう。
CATIAサンプルマクロ集
CATIAマクロメインページへ戻る