Windowオブジェクト|CATIAマクロの作成方法

今回はウィンドウの切り替えやサイズの変更などの操作を行うことのできる「Windowオブジェクト」について解説していきます。

「Windowオブジェクト」と関係の深い「Windowsコレクション」を理解しておくと、本ページの内容がより理解でいると思うのであわせてご確認ください。

今回学べる内容は以下のとおりです。

Windowオブジェクトとは
 Windowオブジェクトのプロパティについて
Windowオブジェクトのメソッドについて

 icon-exclamation-triangle 注意 

CATIAのオブジェクトを理解するには前提として『Infrastructure Automation Objects』について理解している必要があります。
『Infrastructure Automation Objects』が何を意味しているのか分からない方は、まずオブジェクトとコレクション/プロパティとメソッドとは 』を先に読むことをオススメします。

 

Windowオブジェクトとは

Windowオブジェクトとは簡単にいうとウィンドウ単体の操作行うことのできるオブジェクトのことをいいます。たとえばウィンドウをアクティブにしたり、サイズを変更したり、新しいウィンドウで開いたりすることができます。

Windowオブジェクトは以下のとおり「Windowsコレクション」の子供です。

そのため、その親であるWindowsコレクションを使ってWindowオブジェクトを定義します。

ただ、Windowオブジェクトは2つ親のApplicationオブジェクトから直に定義することもできます。
以下では2つのオブジェクトからのWindowオブジェクトの定義方法を紹介します。

 
Windowsコレクションから定義

  Windowオブジェクトの定義①

Dim WINs As Windows
Set WINs = CATIA.Windows
 
Dim WIN As Window
Set WIN = WINs.Item(1)

上記のコードではWindowsコレクション内にある1つ目のウィンドウを定義しています。
これはWindowsコレクションの「Itemメソッド」を使用した定義方法です。
詳しくは「Windowsコレクション」ページを参照ください。

  
Applicationオブジェクトから定義

  Windowオブジェクトの定義②

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プロパティは任意のウィンドウの名前を取得/変更することができます。
任意のウィンドウの名前を取得するには以下のように書きます。

  Captionプロパティ

Dim WINCap As String
WINCap = WIN.Caption

ウィンドウ名(キャプション)とはメニューバーの[ウィンドウ]タブに表示されている文字列です。

基本的には「ウィンドウ名=ドキュメント名」となっています。

 
サンプルコード

このプロパティではウィンドウ名を取得するだけでなく変更することもできます。
アクティブウィンドウの名前を「NewName」に変更するには以下のコードを実行します。
※ドキュメント名の変更はされないので注意しましょう。

 
 

Heightプロパティ

Heightプロパティは任意のウィンドウの高さ(ピクセル)を取得/変更することができます。
任意のウィンドウの高さを取得するには以下のように書きます。

  Heightプロパティ

Dim WINHeight As Integer
WINHeight= WIN.Height

ウィンドウの高さは整数値として取得するので、取得した値を代入するための変数は「Integer型」もしくは「Long型」で宣言します。

取得するウィンドウの高さは、以下の画像でいう「Height」部分の値となります。

 
サンプルコード

このプロパティではウィンドウの高さを取得するだけでなく変更することもできます。
アクティブウィンドウの高さを「100pixel」に変更するには以下のコードを実行します。

 
 

Leftプロパティ

Leftプロパティは任意のウィンドウの左端からの位置(ピクセル)を取得/変更することができます。
任意のウィンドウの左端からの位置を取得するには以下のように書きます。

  Leftプロパティ

Dim WINLeft As Integer
WINLeft = WIN.Left

ウィンドウの左端からの位置は整数値として取得するので、取得した値を代入するための変数は「Integer型」もしくは「Long型」で宣言します。

取得するウィンドウの左端からの位置は、以下の画像でいう「Left」部分の値となります。

 
サンプルコード

このプロパティではウィンドウの左端からの位置を取得するだけでなく変更することもできます。
アクティブウィンドウの左端からの位置を「150pixel」に変更するには以下のコードを実行します。

 
 

Topプロパティ

Topプロパティは任意のウィンドウの上端からの位置(ピクセル)を取得/変更することができます。
任意のウィンドウの上端からの位置を取得するには以下のように書きます。

  Topプロパティ

Dim WINTop As Integer
WINTop = WIN.Top

ウィンドウの上端からの位置は整数値として取得するので、取得した値を代入するための変数は「Integer型」もしくは「Long型」で宣言します。

取得するウィンドウの上端からの位置は、以下の画像でいう「Top」部分の値となります。

 
サンプルコード

このプロパティではウィンドウの上端からの位置を取得するだけでなく変更することもできます。
アクティブウィンドウの上端からの位置を「80pixel」に変更するには以下のコードを実行します。

 
 

Widthプロパティ

Heightプロパティは任意のウィンドウの幅(ピクセル)を取得/変更することができます。
任意のウィンドウの幅を取得するには以下のように書きます。

  Widthプロパティ

Dim WINWidth As Integer
WINWidth = WIN.Width

ウィンドウの幅は整数値として取得するので、取得した値を代入するための変数は「Integer型」もしくは「Long型」で宣言します。

取得するウィンドウの幅は、以下の画像でいう「Width」部分の値となります。

 
サンプルコード

このプロパティではウィンドウの幅を取得するだけでなく変更することもできます。
アクティブウィンドウの幅を「500pixel」に変更するには以下のコードを実行します。

 
 

WindowStateプロパティ

WindowStateプロパティは任意のウィンドウのサイズを変更することができます。
たとえばウィンドウの最小化、最大化に切り替えることができます。
任意のウィンドウサイズを変更するには以下のように書きます。

  WindowStateプロパティ

WIN.WidthStateCatWindowState

CatWindowStateにはウィンドウサイズを表す、以下のいずれかのコードを入力します。

最大化         → catWindowStateMaximized
最小化         →   catWindowStateMinimized
元に戻す(縮小)   →   catWindowStateNormal

  
サンプルコード

アクティブウィンドウを最小化するには以下のコードを実行します。

 

メソッド

Windowオブジェクトのメソッドはアクティブウィンドウを切り替えたり、閉じたりと、ある1つのウィンドウに対して行うことのできる操作がまとまっています。
  

Activateメソッド

Activateメソッドは任意のウィンドウをアクティブすることができます。
任意のウィンドウをアクティブ状態にするには以下のように書きます。

  Activateメソッド

WIN.Activate

 
サンプルコード

Windowsコレクション内に入っている1番目のドキュメントウィンドウをアクティブ状態にするには以下のコードを実行します。

 参照:Windowsコレクション(Itemメソッド)

 

ActivateNextメソッド

ActivateNextメソッドはアクティブウィンドウの次のウィンドウをアクティブすることができます。
アクティブウィンドウの次のウィンドウをアクティブ状態にするには以下のように書きます。

  ActivateNextメソッド

WIN.ActivateNext 

たとえば下の画像の場合(Product1がアクティブ状態)にこのメソッドを行うと、その次にあるDrawing1のウィンドウをアクティブにすることができます。

 
サンプルコード

アクティブウィンドウの次のウィンドウをアクティブ状態にするには以下のコードを実行します。

  
 

ActivatePreviousメソッド

ActivatePreviousメソッドはアクティブウィンドウの前のウィンドウをアクティブすることができます。アクティブウィンドウの前のウィンドウをアクティブ状態にするには以下のように書きます。

  ActivatePreviousメソッド

WIN.ActivatePrevious 

たとえば下の画像の場合(Product1がアクティブ状態)にこのメソッドを行うと、その前にあるPart1のウィンドウをアクティブにすることができます。


 

サンプルコード

アクティブウィンドウの前のウィンドウをアクティブ状態にするには以下のコードを実行します。

 
 

Closeメソッド

Closeメソッドは任意のウィンドウを閉じることができます。
任意のウィンドウを閉じるには以下のように書きます。

  Closeメソッド

WIN.Close

このメソッドでウィンドウを閉じるとき、もし保存がされていない場合はメッセージが表示されます。

※もしこのメソッドでウィンドウを閉じることができない場合は、ウィンドウを並べて表示、新規ウィンドウを開くなどWindowsコレクションの操作をしてみて下さい。また、このメソッドでなく「Documentオブジェクト」の「Closeメソッド」で閉じることもできるので最悪そちらを使いましょう。

 
サンプルコード

アクティブドキュメントを閉じるには以下のコードを実行します。

 
 

NewWindowメソッド

NewWindowメソッドは任意のドキュメントを新しいウィンドウで開くことができます。
任意のドキュメントを新しいウィンドウで開くには以下のように書きます。

  NewWindowメソッド

WIN.NewWindow

このメソッドではメニューバー [ウィンドウ]>[新規ウィンドウ]をクリックしたときと同じ操作が行われます。[新規ウィンドウ]コマンドはドラフティングワークベンチでは実行できないため、このメソッドもドラフティングワークベンチでは使用できません。(実行するとエラーが発生します)

※「Documentオブジェクト」の「NewWindowメソッド」でも同じ操作を行うことができます。

 
サンプルコード

アクティブドキュメントを新しいウィンドウで開くには以下のコードを実行します。

 

まとめ

今回はCATIAマクロでの「Windowオブジェクト」についての内容でした。
マクロでウィンドウに関する操作は行うことはあまりないため、使用する機会は少ないかもしれませんがマクロでもウィンドウの操作はできるということ自体は覚えておくといつか役に立つと思います。

目次へ戻る
 

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

 

 

2022年7月28日CATIA, CATIAマクロ

Posted by Lic