Windowオブジェクト|CATIAマクロの作成方法
今回はウィンドウの切り替えやサイズの変更などの操作を行うことのできる「Windowオブジェクト」について解説していきます。
「Windowオブジェクト」と関係の深い「Windowsコレクション」を理解しておくと、本ページの内容がより理解でいると思うのであわせてご確認ください。
今回学べる内容は以下のとおりです。
Windowオブジェクトとは
Windowオブジェクトのプロパティについて
Windowオブジェクトのメソッドについて
CATIAのオブジェクトを理解するには前提として『Infrastructure Automation Objects』について理解している必要があります。
『Infrastructure Automation Objects』が何を意味しているのか分からない方は、まず『オブジェクトとコレクション/プロパティとメソッドとは 』を先に読むことをオススメします。
Windowオブジェクトとは
Windowオブジェクトとは簡単にいうとウィンドウ単体の操作行うことのできるオブジェクトのことをいいます。たとえばウィンドウをアクティブにしたり、サイズを変更したり、新しいウィンドウで開いたりすることができます。
Windowオブジェクトは以下のとおり「Windowsコレクション」の子供です。
そのため、その親であるWindowsコレクションを使ってWindowオブジェクトを定義します。
ただ、Windowオブジェクトは2つ親のApplicationオブジェクトから直に定義することもできます。
以下では2つのオブジェクトからのWindowオブジェクトの定義方法を紹介します。
Windowsコレクションから定義
Dim WINs As Windows
Set WINs = CATIA.Windows
Dim WIN As Window
Set WIN = WINs.Item(1)
上記のコードではWindowsコレクション内にある1つ目のウィンドウを定義しています。
これはWindowsコレクションの「Itemメソッド」を使用した定義方法です。
詳しくは「Windowsコレクション」ページを参照ください。
Applicationオブジェクトから定義
Dim WIN As Window
Set WIN = CATIA.ActiveWindow
「Applicationオブジェクト」の「ActiveWindowプロパティ」を使うことで、Windowオブジェクトとしてアクティブウィンドウを定義することができます。
アクティブウィンドウに対して操作を行いたい場合は上記のコードでを定義します。
上記の2つの構文により、ドキュメント単体を操作することのできる変数『WIN』を定義することができます。(変数名は好きに変えてもらって構いません)
あとはこの変数WINに対してプロパティ/メソッドを使い、さまざまな操作を行っていきます。
Windowオブジェクトの代表的なプロパティとメソッドは以下のとおりです。
プロパティ名 | プロパティ内容 |
Caption | ウィンドウ名(キャプション)を取得/変更 |
Height | ウィンドウの高さを取得/変更 |
Left | ウィンドウの左端からの位置を取得/変更 |
Top | ウィンドウの上端からの位置を取得/変更 |
Width | ウィンドウの幅を取得/変更 |
WindowState | ウィンドウサイズを切り替え([最大化][最小化][元に戻す(縮小)]) |
メソッド名 | メソッド内容 |
Activate | ウィンドウをアクティブにする |
ActivateNext | アクティブウィンドウの次のウィンドウをアクティブにする |
ActivatePrevious | アクティブウィンドウの前のウィンドウをアクティブにする |
Close | ウィンドウを閉じる |
NewWindow | ドキュメントを新しいウィンドウで開く |
その他のプロパティ/メソッドに関しては『CAA V5 Visual Basic Help』で『Infrastructure Automation Objects』のページから確認ください。
プロパティ
Windowオブジェクトのプロパティでは任意のウィンドウの名前やサイズ、位置などの、ある1つのウィンドウのプロパティ情報を取得/変更することができます。
Captionプロパティ
Captionプロパティは任意のウィンドウの名前を取得/変更することができます。
任意のウィンドウの名前を取得するには以下のように書きます。
Dim WINCap As String
WINCap = WIN.Caption
ウィンドウ名(キャプション)とはメニューバーの[ウィンドウ]タブに表示されている文字列です。
基本的には「ウィンドウ名=ドキュメント名」となっています。
サンプルコード
このプロパティではウィンドウ名を取得するだけでなく変更することもできます。
アクティブウィンドウの名前を「NewName」に変更するには以下のコードを実行します。
※ドキュメント名の変更はされないので注意しましょう。
1 2 3 4 |
Dim WIN As Window Set WIN = CATIA.ActiveWindow WIN.Caption = "NewName" |
Heightプロパティ
Heightプロパティは任意のウィンドウの高さ(ピクセル)を取得/変更することができます。
任意のウィンドウの高さを取得するには以下のように書きます。
Dim WINHeight As Integer
WINHeight= WIN.Height
ウィンドウの高さは整数値として取得するので、取得した値を代入するための変数は「Integer型」もしくは「Long型」で宣言します。
取得するウィンドウの高さは、以下の画像でいう「Height」部分の値となります。
サンプルコード
このプロパティではウィンドウの高さを取得するだけでなく変更することもできます。
アクティブウィンドウの高さを「100pixel」に変更するには以下のコードを実行します。
1 2 3 4 |
Dim WIN As Window Set WIN= CATIA.ActiveWindow WIN.Height = 100 |
Leftプロパティ
Leftプロパティは任意のウィンドウの左端からの位置(ピクセル)を取得/変更することができます。
任意のウィンドウの左端からの位置を取得するには以下のように書きます。
Dim WINLeft As Integer
WINLeft = WIN.Left
ウィンドウの左端からの位置は整数値として取得するので、取得した値を代入するための変数は「Integer型」もしくは「Long型」で宣言します。
取得するウィンドウの左端からの位置は、以下の画像でいう「Left」部分の値となります。
サンプルコード
このプロパティではウィンドウの左端からの位置を取得するだけでなく変更することもできます。
アクティブウィンドウの左端からの位置を「150pixel」に変更するには以下のコードを実行します。
1 2 3 4 |
Dim WIN As Window Set WIN= CATIA.ActiveWindow WIN.Left = 150 |
Topプロパティ
Topプロパティは任意のウィンドウの上端からの位置(ピクセル)を取得/変更することができます。
任意のウィンドウの上端からの位置を取得するには以下のように書きます。
Dim WINTop As Integer
WINTop = WIN.Top
ウィンドウの上端からの位置は整数値として取得するので、取得した値を代入するための変数は「Integer型」もしくは「Long型」で宣言します。
取得するウィンドウの上端からの位置は、以下の画像でいう「Top」部分の値となります。
サンプルコード
このプロパティではウィンドウの上端からの位置を取得するだけでなく変更することもできます。
アクティブウィンドウの上端からの位置を「80pixel」に変更するには以下のコードを実行します。
1 2 3 4 |
Dim WIN As Window Set WIN= CATIA.ActiveWindow WIN.Top = 80 |
Widthプロパティ
Heightプロパティは任意のウィンドウの幅(ピクセル)を取得/変更することができます。
任意のウィンドウの幅を取得するには以下のように書きます。
Dim WINWidth As Integer
WINWidth = WIN.Width
ウィンドウの幅は整数値として取得するので、取得した値を代入するための変数は「Integer型」もしくは「Long型」で宣言します。
取得するウィンドウの幅は、以下の画像でいう「Width」部分の値となります。
サンプルコード
このプロパティではウィンドウの幅を取得するだけでなく変更することもできます。
アクティブウィンドウの幅を「500pixel」に変更するには以下のコードを実行します。
1 2 3 4 |
Dim WIN As Window Set WIN= CATIA.ActiveWindow WIN.Width = 500 |
WindowStateプロパティ
WindowStateプロパティは任意のウィンドウのサイズを変更することができます。
たとえばウィンドウの最小化、最大化に切り替えることができます。
任意のウィンドウサイズを変更するには以下のように書きます。
WIN.WidthState = CatWindowState
CatWindowStateにはウィンドウサイズを表す、以下のいずれかのコードを入力します。
最大化 → catWindowStateMaximized
最小化 → catWindowStateMinimized
元に戻す(縮小) → catWindowStateNormal
サンプルコード
アクティブウィンドウを最小化するには以下のコードを実行します。
1 2 3 4 |
Dim WIN As Window Set WIN= CATIA.ActiveWindow WIN.catWindowStateMinimized |
メソッド
Windowオブジェクトのメソッドはアクティブウィンドウを切り替えたり、閉じたりと、ある1つのウィンドウに対して行うことのできる操作がまとまっています。
Activateメソッド
Activateメソッドは任意のウィンドウをアクティブすることができます。
任意のウィンドウをアクティブ状態にするには以下のように書きます。
WIN.Activate
サンプルコード
Windowsコレクション内に入っている1番目のドキュメントウィンドウをアクティブ状態にするには以下のコードを実行します。
1 2 3 4 |
Dim WIN As Window Set WIN = CATIA.Windows.Item(1) WIN.Activate |
参照:Windowsコレクション(Itemメソッド)
ActivateNextメソッド
ActivateNextメソッドはアクティブウィンドウの次のウィンドウをアクティブすることができます。
アクティブウィンドウの次のウィンドウをアクティブ状態にするには以下のように書きます。
WIN.ActivateNext
たとえば下の画像の場合(Product1がアクティブ状態)にこのメソッドを行うと、その次にあるDrawing1のウィンドウをアクティブにすることができます。
サンプルコード
アクティブウィンドウの次のウィンドウをアクティブ状態にするには以下のコードを実行します。
1 2 3 4 |
Dim WIN As Window Set WIN = CATIA.ActiveWindow WIN.ActivateNext |
ActivatePreviousメソッド
ActivatePreviousメソッドはアクティブウィンドウの前のウィンドウをアクティブすることができます。アクティブウィンドウの前のウィンドウをアクティブ状態にするには以下のように書きます。
WIN.ActivatePrevious
たとえば下の画像の場合(Product1がアクティブ状態)にこのメソッドを行うと、その前にあるPart1のウィンドウをアクティブにすることができます。
サンプルコード
アクティブウィンドウの前のウィンドウをアクティブ状態にするには以下のコードを実行します。
1 2 3 4 |
Dim WIN As Window Set WIN = CATIA.ActiveWindow WIN.ActivatePrevious |
Closeメソッド
Closeメソッドは任意のウィンドウを閉じることができます。
任意のウィンドウを閉じるには以下のように書きます。
WIN.Close
このメソッドでウィンドウを閉じるとき、もし保存がされていない場合はメッセージが表示されます。
※もしこのメソッドでウィンドウを閉じることができない場合は、ウィンドウを並べて表示、新規ウィンドウを開くなどWindowsコレクションの操作をしてみて下さい。また、このメソッドでなく「Documentオブジェクト」の「Closeメソッド」で閉じることもできるので最悪そちらを使いましょう。
サンプルコード
アクティブドキュメントを閉じるには以下のコードを実行します。
1 2 3 4 |
Dim WIN As Window Set WIN = CATIA.ActiveWindow WIN.Close |
NewWindowメソッド
NewWindowメソッドは任意のドキュメントを新しいウィンドウで開くことができます。
任意のドキュメントを新しいウィンドウで開くには以下のように書きます。
WIN.NewWindow
このメソッドではメニューバー [ウィンドウ]>[新規ウィンドウ]をクリックしたときと同じ操作が行われます。[新規ウィンドウ]コマンドはドラフティングワークベンチでは実行できないため、このメソッドもドラフティングワークベンチでは使用できません。(実行するとエラーが発生します)
※「Documentオブジェクト」の「NewWindowメソッド」でも同じ操作を行うことができます。
サンプルコード
アクティブドキュメントを新しいウィンドウで開くには以下のコードを実行します。
1 2 3 4 |
Dim WIN As Window Set WIN = CATIA.ActiveWindow WIN.NewWindow |
まとめ
今回はCATIAマクロでの「Windowオブジェクト」についての内容でした。
マクロでウィンドウに関する操作は行うことはあまりないため、使用する機会は少ないかもしれませんがマクロでもウィンドウの操作はできるということ自体は覚えておくといつか役に立つと思います。
CATIAマクロを本気で勉強するなら