Windowsコレクション|CATIAマクロの作成方法
このページでは「Windowsコレクション」について詳しく解説していきます。
Windowsコレクションはウィンドウについての操作や、仕様ツリーの表示方法などを変更するためのオブジェクトの親となるオブジェクトです。
Windowsコレクション自体でできる操作は少ないですが、このオブジェクトの子供でできる操作はかなり多くあるので「Windowsコレクションとは何なのか」は理解しておいた方がいいです。
今回学べる内容は以下のとおりです。
Windowsコレクションとは
Windowsコレクションのメソッドについて
CATIAのオブジェクトを理解するには前提として『Infrastructure Automation Objects』について理解している必要があります。
『Infrastructure Automation Objects』が何を意味しているのか分からない方は、まず『オブジェクトとコレクション/プロパティとメソッドとは 』を先に読むことをオススメします。
Windowsコレクションとは
Windowsコレクションとは簡単にいうと開いているドキュメントウィンドウ(Windowオブジェクト)をひとまとめにしたオブジェクトのことをいいます。(※WindowsコレクションとWindowオブジェクトはメニューバーの[ウィンドウ]タブを見ると以下のようになっているのでイメージしやすいです)
Windowsコレクションでは「コレクション内のウィンドウを並べて表示」「コレクション内にある任意のWindowオブジェクトを取り出す」というコレクションに関する操作を行うことができます。
※「ウィンドウのサイズを変更」「ウィンドウ名を取得」「ウィンドウを閉じる」というような、1つのウィンドウに対して操作を行いたい場合は「Windowオブジェクト」を使用します。
Windowsコレクションの定義
Windowsコレクションは以下のとおりApplicationオブジェクトの直下のオブジェクトです。
そのため「Applicationオブジェクト」の「Windowsプロパティ」を使って以下のよう書くことでWindowsコレクションを定義することができます。
Dim WINs As Windows
Set WINs = CATIA.Windows
この構文により、Windowsコレクションを操作することのできる変数『WINs』を定義することができます。(変数名は好きに変えてもらって構いません)
あとはこの変数WINsに対してメソッドを使って操作を行っていきます。
Windowsコレクションのメソッドは以下の2つです。
メソッド名 | メソッド内容 |
Arrange | ウィンドウを並べて表示する |
Item | 任意のWindowオブジェクトを取り出す |
メソッド
メソッドは基本的には先ほど定義した変数を使って「WINs.メソッド」のように書くことでメソッドを使うことができます。
以下ではそれぞれのメソッドの使い方を詳しく解説していきます。
サンプルコードも載せているので、コピペして実際に実行してどのような操作が行われるのかを確認してみましょう。
Arrangeメソッド
Arrangeメソッドはドキュメントウィンドウを並べて表示することができます。
簡単にいえばメニューバーの[ウィンドウ]タブにある「上下に並べて表示」「左右に並べて表示」「重ねて表示」のいずれかの操作を行うことができるメソッドです。
ドキュメントウィンドウを並べて表示するには以下のように書きます。
WINs.Arrange (CatArrangeStyle)
CatArrangeStyleには表示方法を表す、以下のいずれかのコードを入力します。
重ねて表示 → catArrangeCascade
上下に並べて表示 → catArrangeTiledHorizontal
左右に並べて表示 → catArrangeTiledVertical
サンプルコード
ドキュメントウィンドウを「左右に並べて表示」するには以下のコードを実行します。
1 2 3 4 |
Dim WINs As Windows Set WINs = CATIA.Windows WINs.Arrange (catArrangeTiledVertical) |
Itemメソッド
Itemメソッドはコレクション内にある任意のWindowオブジェクトを取り出すことができ、主に任意のウィンドウ単体に対して操作を行いたい場合に使用するメソッドです。
Windowsコレクション内にある任意のウィンドウを取り出すには以下のように書きます。
Dim WIN As Window
WIN = WINs.Item(index)
indexにはウィンドウのインデックス番号を入力します。
インデックス番号は自動で設定される番号で、Windowsコレクションの場合はメニューバーの[ウィンドウ]タブの上にあるものから順に1,2,3…と割り振られていきます。
たとえば上の画像の場合、「Product1」のウィンドウを取得したい場合には「WINs.Item(1)」
「Drawing1」のウィンドウを取得したい場合には「WINs.Item(2)」のように書きます。
また「WINs.Item(“Part1”)」のように表示されているウィンドウ名(Caption)をダブルクォーテーション[“]で囲んで直接入力することも可能です。
サンプルコード
1番初めに開いたドキュメントを取得する(取り出す)には以下のコードを実行します。
取得だけでは実行結果を目で確認することができないため、取得したドキュメントの名称をメッセージボックスで表示するコードになっています。
1 2 3 4 5 6 7 |
Dim WINs As Windows Set WINs = CATIA.Windows 'Windowsコレクションの定義 Dim WIN As Window Set WIN= WINs.Item(1) '1番初めに開いたドキュメントのウィンドウを取得 Msgbox WIN.Name '取得したドキュメントウィンドウの名称を表示 |
まとめ
今回はCATIAマクロでの「Windowsコレクション」についての内容でした。
「Windowsコレクション」は「Windowオブジェクト」と合わせて理解しておきましょう。
これらのオブジェクトは主にウィンドウを切り替えたいときや閉じたいとき、並べたいときのように、ウィンドウの表示を変えたい場合に使うオブジェクトです。
また、キャプチャを撮ったり背景の色を変更するなどの操作を行うことのできる「Viewerオブジェクト」を子にもつオブジェクトでもあるので、Viewerオブジェクトを使う場合にも「Windowsコレクション」と「Windowオブジェクト」は理解しておく必要があります。
CATIAマクロを本気で勉強するなら