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

CATIAマクロでは任意のオブジェクトのグラフィックプロパティ(色や線種、透過度など)を取得および変更をすることができます。今回はそんなグラフィックプロパティを操作するための『VisPropertySetオブジェクト』について詳しく解説していきます。

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

VisPropertySetオブジェクトとは
VisPropertySetのメソッドの使い方

※本ページをより理解するためには、先に以下のページを理解しておくことをオススメします。
オブジェクトとコレクション/プロパティとメソッドとは 』
Selectionオブジェクト

 

VisPropertySetオブジェクト

『VisPropertySetオブジェクト』とは冒頭でもいったとおり「グラフィックプロパティに関する操作」を行うことのできるオブジェクトです。
このオブジェクトを使うことでオブジェクトのグラフィックプロパティを取得/変更したり、オブジェクトの表示/非表示を切り替えたりすることができます。

VisPropertySetオブジェクトは以下のとおり『Selection』の直下のオブジェクトです。
そのためVisPropertySetオブジェクトはSelectionオブジェクトを使って定義する必要があります。

VisPropertySetオブジェクトの定義のコードは以下のとおりです。

 icon-code VisPropertySetオブジェクトの定義

Dim SEL As Selection
Set SEL = CATIA.ActiveDocument.Selection ‘Selectionオブジェクトを定義

 
Dim VPS As VisPropertySet
Set VPSSEL.VisProperties         ‘VisPropertySetオブジェクトを定義

この構文により、「グラフィックプロパティに関する操作」を扱うことのできる変数『VPSを定義することができます。(変数名は好きに変えてもらって構いません)
あとはこの変数VPSに対してメソッドを使い、さまざまな操作を行っていきます。

VisPropertySetオブジェクトにはプロパティがない代わりに、非常に多くのメソッドがあります。
代表的なものを抜粋すると以下のようなものがあります。

メソッド名 メソッド内容
GetRealColor 現在選択しているオブジェクトの色を取得
GetRealWidth 現在選択しているオブジェクトの線幅を取得
GetRealLineType 現在選択しているオブジェクトの線種を取得
GetRealOpacity 現在選択しているオブジェクトの不透明度を取得
GetShow 現在選択しているオブジェクトの表示状態を取得
SetRealColor 現在選択しているオブジェクトの色を変更
SetRealWidth 現在選択しているオブジェクトの線幅を変更
SetRealLineType 現在選択しているオブジェクトの線種を変更
SetRealOpacity 現在選択しているオブジェクトの不透明度を変更
SetShow 現在選択しているオブジェクトの表示状態を変更

この他にも「シンボル」や「レイヤー」などを取得/変更することのできるメソッドが用意されています。上記以外のメソッドに関しては『CAA V5 Visual Basic Help』で『Infrastructure Automation Objects』のページから確認ください。

 

取得系メソッド

グラフィックプロパティを取得するタイプのメソッド名はすべて「Get」から始まっています。
そして、その後ろにつながっている英単語も「Color(色)」「Width(幅)」「LineType(線種)」「Opacity(不透明度)」「Show(表示)」とそのままの意味になっているため、各メソッドで何が行えるのかはすぐに理解できるようになっています。
 

GetRealColorメソッド

GetRealColorメソッドは現在選択しているオブジェクトのRGB値をそれぞれ取得することができます。GetRealColorメソッドを使うには以下のように書きます。

 icon-code GetRealColorメソッド

Dim R As CatVisPropertyStatus
Dim G As CatVisPropertyStatus ‘RGB値を受け取る変数を用意
Dim B As CatVisPropertyStatus ‘データ型は「CatVisPropertyStatus」
R = CLng(0)
G = CLng(0)
B = CLng(0)

VPS.GetRealColor R, G, B

これで現在選択しているオブジェクトのRGB値をそれぞれ取得することができます。
以下のコードを最後に追加し、オブジェクトを何か選択した状態でマクロを実行すると取得した数値を確認することができます。

 icon-code GetRealColorメソッド確認

MsgBox “R値=” & R & ” G値=” & G & ” B値=” & B

 

GetRealWidthメソッド

GetRealWidthメソッドは現在選択しているオブジェクトの線幅を取得することができます。
GetRealWidthメソッドを使うには以下のように書きます。

 icon-code GetRealColorメソッド

Dim WIDTH As CatVisPropertyStatus
WIDTH = CLng(0)
VPS.GetRealWidth WIDTH

先ほどと同様に以下のコードを最後に書き、メッセージボックスで取得の確認をしてみます。

 icon-code GetRealWidthメソッド確認

MsgBox “width = ” & WIDTH

すると以下のように表示され、「3」という数値が取得できました。

 

これは線の幅が「3mm」というように線幅を直接表している訳ではなく、線幅インデックスの番号を表しています。線幅インデックスとはグラフィックプロパティツールバーで、線幅のプルダウンメニューを開いた時に表示されている番号です。
つまり上記の場合、インデックス3番の「0.7mm」の線幅を取得したことになります。

 

GetRealLineTypeメソッド

GetRealLineTypeメソッドは現在選択しているオブジェクトの線種を取得することができます。GetRealLineTypeメソッドを使うには以下のように書きます。

 icon-code GetRealColorメソッド

Dim LINETYPE As CatVisPropertyStatus
LINETYPE = CLng(0)
VPS.GetRealLineType LINETYPE

LineTypeもさきほどのWidthと同様に線種インデックスの番号を取得することができます。

 

GetRealOpacityメソッド

GetRealOpacityメソッドは現在選択しているオブジェクトの不透明度を取得することができます。GetRealOpacityメソッドを使うには以下のように書きます。

 icon-code GetRealOpacityメソッド

Dim OPACITY As CatVisPropertyStatus
OPACITY = CLng(0)
VPS.GetRealOpacity OPACITY

不透明度は「0~255」の数値で取得することができます
不透明度が100%の場合は「255」、0%の場合は「0」が取得できます。

 

GetShowメソッド

GetShowメソッドは現在選択しているオブジェクトの表示状態を取得することができます。GetShowメソッドを使うには以下のように書きます。

 icon-code GetRealOpacityメソッド

Dim SHOWSTATE As CatVisPropertyStatus
SHOWSTATE = CLng(0)
VPS.GetShow SHOWSTATE

GetShowも他のメソッド同様、表示状態を数値で取得することができます。
選択しているオブジェクトが表示状態の場合は「0」、非表示の場合は「1」が取得できます。

 

変更系メソッド

グラフィックプロパティを変更するタイプのメソッド名はすべて「Set」から始まっています。
それ以外の部分は取得系のメソッドと全く同じなので、こちらの場合もメソッド名から操作内容が理解できるようになっています。
  

SetRealColorメソッド

SetRealColorメソッドは現在選択しているオブジェクトの色を変更することができます。GetRealColorメソッドを使うには以下のように書きます。

 icon-code GetRealColorメソッド

VPS.SetRealColor 255,255,255,1 ‘R値,G値,B値,継承値

色の変更は取得のときよりも簡単で VPS.SetRealColor の後ろに変更したい色のRGB値を入力するだけです。(参考:『CATIA V5 カラーパレット』)
上記のコードの場合、選択しているオブジェクトは白色(255,255,255)に変更されます。

RGB値を入力したら最後に継承の有無を指定します。
継承する場合は「1」、継承しない場合は「0」を入力します。(以下継承値と表記します)
継承値については主にPuroductドキュメントの使用時に有効なもののため、Partドキュメント使用時には気にしなくても問題ない内容です。

 icon-edit 継承とは 変更系メソッドの場合は継承という概念が含まれてきます。
たとえば以下のような構成で各プロダクトに色を指定していたとします。
 

 
この場合、Product1は赤色、Product2は黄色、Product3は青色が設定されています。
それぞれに色が設定されていますが、Product1だけでなくProduct2、3の中身も赤色で表示されます。これは親の色が子供にも継承されているためです。
 
たとえばこの構成のProduct1を継承なしにした場合、次の親であるProduct2の色が継承されProduct2、3の中身は全て黄色で表示されます。

 

SetRealWidthメソッド

SetRealWidthメソッドは現在選択しているオブジェクトの線幅を変更することができます。SetRealWidthメソッドを使うには以下のように書きます。

 icon-code GetRealColorメソッド

VPS.SetRealWidth 3,1 ‘線幅インデックス,継承値

線幅の変更コードはVPS.SetRealWidth の後ろに線幅インデックスと継承値を入力します。

上記のコードの場合、選択したオブジェクトの線幅が「0.7mm」に変更されます。
選択しているオブジェクトが線ではなくサーフェスの場合は、サーフェスのエッジ幅を変更することができます。

 

SetRealLineTypeメソッド

SetRealLineTypeメソッドは現在選択しているオブジェクトの線種を変更することができます。SetRealLineTypeメソッドを使うには以下のように書きます。

 icon-code GetRealColorメソッド

VPS.SetRealLineType 4,1 ‘線種インデックス,継承値

線種の変更コードはVPS.SetRealLineType の後ろに線種インデックスと継承値を入力します。

上記のコードの場合、選択したオブジェクトの線種が「一点鎖線」に変更されます。
線幅の変更と同様に選択しているオブジェクトが線ではなくサーフェスの場合は、サーフェスのエッジの線種を変更することができます。

 

SetRealOpacityメソッド

SetRealOpacityメソッドは現在選択しているオブジェクトの不透明度を変更することができます。SetRealOpacityメソッドを使うには以下のように書きます。

 icon-code GetRealColorメソッド

VPS.SetRealOpacity 127,1 ‘不透明度,継承値

不当明度の変更コードはVPS.SetRealWidth の後ろに不透明度と継承値を入力します。

 透明度が100%の場合は「255」、0%の場合は「0」を入力します。
上記のコードの場合、選択したオブジェクトの不透明度が「50%」に変更されます。

 

SetShowメソッド

SetShowメソッドは現在選択しているオブジェクトの表示状態を変更することができます。SetShowメソッドを使うには以下のように書きます。

 icon-code GetRealColorメソッド

VPS.SetShow catVisPropertyShowAttr     ‘表示状態にする
VPS.SetShow catVisPropertyNoShowAttr ‘非表示状態にする

VPS.SetShow の後ろに以下のどちらかを入力します。

表示状態にしたい場合 → catVisPropertyShowAttr
非表示状態にしたい場合 → catVisPropertyNoShowAttr 

表示状態のオブジェクトに対して「catVisPropertyShowAttr」を使った場合、非表示状態に切り替わったりエラーが発生したりすることはなく何も変化が起こりません。非表示の場合も然りです。

 

まとめ

今回の内容をまとめると以下のとおりです。

VisPropertySetオブジェクトを使うことでグラフィックプロパティを変更できる
VisPropertySetオブジェクトを使うにはSelectionオブジェクトが必要

Selectionオブジェクトはマウスを使わずに仕様ツリー上のオブジェクトを選択することができます。
そしてVisPropertySetオブジェクトは選択されているオブジェクトのグラフィックプロパティを変更することができます。

つまりこの2つのオブジェクトを組み合わせることで、マウスやキーボードの操作を行わずプログラムのみで任意のオブジェクトの見た目を切り替えることができます
何かを新しく作成したりするものではないためこのオブジェクトを知らなくてもある程度のマクロは作成できます。
しかし、CATIAマクロを作成するうえで見た目を変更した場面がちょくちょく出てくるのでこのオブジェクトの存在は覚えておくことをオススメします。

関連:Selectionオブジェクト
目次へ戻る
 

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

 

2020年1月31日CATIA, CATIAマクロ

Posted by Lic