VisPropertySetオブジェクト|CATIAマクロの作成方法
CATIAマクロでは任意のオブジェクトのグラフィックプロパティ(色や線種、透過度など)を取得および変更をすることができます。今回はそんなグラフィックプロパティを操作するための『VisPropertySetオブジェクト』について詳しく解説していきます。
今回学べる内容は以下のとおりです。
VisPropertySetオブジェクトとは
VisPropertySetのメソッドの使い方
※本ページをより理解するためには、先に以下のページを理解しておくことをオススメします。
『オブジェクトとコレクション/プロパティとメソッドとは 』
『Selectionオブジェクト』
VisPropertySetオブジェクト
『VisPropertySetオブジェクト』とは冒頭でもいったとおり「グラフィックプロパティに関する操作」を行うことのできるオブジェクトです。
このオブジェクトを使うことでオブジェクトのグラフィックプロパティを取得/変更したり、オブジェクトの表示/非表示を切り替えたりすることができます。
VisPropertySetオブジェクトは以下のとおり『Selection』の直下のオブジェクトです。
そのためVisPropertySetオブジェクトはSelectionオブジェクトを使って定義する必要があります。
VisPropertySetオブジェクトの定義のコードは以下のとおりです。
Dim SEL As Selection
Set SEL = CATIA.ActiveDocument.Selection ‘Selectionオブジェクトを定義
Dim VPS As VisPropertySet
Set VPS = SEL.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メソッドを使うには以下のように書きます。
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値をそれぞれ取得することができます。
以下のコードを最後に追加し、オブジェクトを何か選択した状態でマクロを実行すると取得した数値を確認することができます。
MsgBox “R値=” & R & ” G値=” & G & ” B値=” & B
GetRealWidthメソッド
GetRealWidthメソッドは現在選択しているオブジェクトの線幅を取得することができます。
GetRealWidthメソッドを使うには以下のように書きます。
Dim WIDTH As CatVisPropertyStatus
WIDTH = CLng(0)
VPS.GetRealWidth WIDTH
先ほどと同様に以下のコードを最後に書き、メッセージボックスで取得の確認をしてみます。
MsgBox “width = ” & WIDTH
すると以下のように表示され、「3」という数値が取得できました。
これは線の幅が「3mm」というように線幅を直接表している訳ではなく、線幅インデックスの番号を表しています。線幅インデックスとはグラフィックプロパティツールバーで、線幅のプルダウンメニューを開いた時に表示されている番号です。
つまり上記の場合、インデックス3番の「0.7mm」の線幅を取得したことになります。
GetRealLineTypeメソッド
GetRealLineTypeメソッドは現在選択しているオブジェクトの線種を取得することができます。GetRealLineTypeメソッドを使うには以下のように書きます。
Dim LINETYPE As CatVisPropertyStatus
LINETYPE = CLng(0)
VPS.GetRealLineType LINETYPE
LineTypeもさきほどのWidthと同様に線種インデックスの番号を取得することができます。
GetRealOpacityメソッド
GetRealOpacityメソッドは現在選択しているオブジェクトの不透明度を取得することができます。GetRealOpacityメソッドを使うには以下のように書きます。
Dim OPACITY As CatVisPropertyStatus
OPACITY = CLng(0)
VPS.GetRealOpacity OPACITY
不透明度は「0~255」の数値で取得することができます。
不透明度が100%の場合は「255」、0%の場合は「0」が取得できます。
GetShowメソッド
GetShowメソッドは現在選択しているオブジェクトの表示状態を取得することができます。GetShowメソッドを使うには以下のように書きます。
Dim SHOWSTATE As CatVisPropertyStatus
SHOWSTATE = CLng(0)
VPS.GetShow SHOWSTATE
GetShowも他のメソッド同様、表示状態を数値で取得することができます。
選択しているオブジェクトが表示状態の場合は「0」、非表示の場合は「1」が取得できます。
変更系メソッド
グラフィックプロパティを変更するタイプのメソッド名はすべて「Set」から始まっています。
それ以外の部分は取得系のメソッドと全く同じなので、こちらの場合もメソッド名から操作内容が理解できるようになっています。
SetRealColorメソッド
SetRealColorメソッドは現在選択しているオブジェクトの色を変更することができます。GetRealColorメソッドを使うには以下のように書きます。
VPS.SetRealColor 255,255,255,1 ‘R値,G値,B値,継承値
色の変更は取得のときよりも簡単で VPS.SetRealColor の後ろに変更したい色のRGB値を入力するだけです。(参考:『CATIA V5 カラーパレット』)
上記のコードの場合、選択しているオブジェクトは白色(255,255,255)に変更されます。
RGB値を入力したら最後に継承の有無を指定します。
継承する場合は「1」、継承しない場合は「0」を入力します。(以下継承値と表記します)
継承値については主にPuroductドキュメントの使用時に有効なもののため、Partドキュメント使用時には気にしなくても問題ない内容です。
たとえば以下のような構成で各プロダクトに色を指定していたとします。
この場合、Product1は赤色、Product2は黄色、Product3は青色が設定されています。
それぞれに色が設定されていますが、Product1だけでなくProduct2、3の中身も赤色で表示されます。これは親の色が子供にも継承されているためです。
たとえばこの構成のProduct1を継承なしにした場合、次の親であるProduct2の色が継承されProduct2、3の中身は全て黄色で表示されます。
SetRealWidthメソッド
SetRealWidthメソッドは現在選択しているオブジェクトの線幅を変更することができます。SetRealWidthメソッドを使うには以下のように書きます。
VPS.SetRealWidth 3,1 ‘線幅インデックス,継承値
線幅の変更コードはVPS.SetRealWidth の後ろに線幅インデックスと継承値を入力します。
上記のコードの場合、選択したオブジェクトの線幅が「0.7mm」に変更されます。
選択しているオブジェクトが線ではなくサーフェスの場合は、サーフェスのエッジ幅を変更することができます。
SetRealLineTypeメソッド
SetRealLineTypeメソッドは現在選択しているオブジェクトの線種を変更することができます。SetRealLineTypeメソッドを使うには以下のように書きます。
VPS.SetRealLineType 4,1 ‘線種インデックス,継承値
線種の変更コードはVPS.SetRealLineType の後ろに線種インデックスと継承値を入力します。
上記のコードの場合、選択したオブジェクトの線種が「一点鎖線」に変更されます。
線幅の変更と同様に選択しているオブジェクトが線ではなくサーフェスの場合は、サーフェスのエッジの線種を変更することができます。
SetRealOpacityメソッド
SetRealOpacityメソッドは現在選択しているオブジェクトの不透明度を変更することができます。SetRealOpacityメソッドを使うには以下のように書きます。
VPS.SetRealOpacity 127,1 ‘不透明度,継承値
不当明度の変更コードはVPS.SetRealWidth の後ろに不透明度と継承値を入力します。
不透明度が100%の場合は「255」、0%の場合は「0」を入力します。
上記のコードの場合、選択したオブジェクトの不透明度が「50%」に変更されます。
SetShowメソッド
SetShowメソッドは現在選択しているオブジェクトの表示状態を変更することができます。SetShowメソッドを使うには以下のように書きます。
VPS.SetShow catVisPropertyShowAttr ‘表示状態にする
VPS.SetShow catVisPropertyNoShowAttr ‘非表示状態にする
VPS.SetShow の後ろに以下のどちらかを入力します。
表示状態にしたい場合 → catVisPropertyShowAttr
非表示状態にしたい場合 → catVisPropertyNoShowAttr
表示状態のオブジェクトに対して「catVisPropertyShowAttr」を使った場合、非表示状態に切り替わったりエラーが発生したりすることはなく何も変化が起こりません。非表示の場合も然りです。
まとめ
今回の内容をまとめると以下のとおりです。
VisPropertySetオブジェクトを使うことでグラフィックプロパティを変更できる
VisPropertySetオブジェクトを使うにはSelectionオブジェクトが必要
Selectionオブジェクトはマウスを使わずに仕様ツリー上のオブジェクトを選択することができます。
そしてVisPropertySetオブジェクトは選択されているオブジェクトのグラフィックプロパティを変更することができます。
つまりこの2つのオブジェクトを組み合わせることで、マウスやキーボードの操作を行わずプログラムのみで任意のオブジェクトの見た目を切り替えることができます。
何かを新しく作成したりするものではないためこのオブジェクトを知らなくてもある程度のマクロは作成できます。
しかし、CATIAマクロを作成するうえで見た目を変更した場面がちょくちょく出てくるのでこのオブジェクトの存在は覚えておくことをオススメします。
CATIAマクロを本気で勉強するなら