R値別にフィレットに色付けするマクロ|CATIAマクロの作成方法

今回の記事は「お問い合わせ」でいただいた内容です。

送って頂いた内容は以下のようなマクロです。

R値別にフィレットに色を付けるマクロ
たとえばフィレットがR2のときは赤色、R3のときは青色、R4のときはピンク色を付ける

今回のマクロは「Selectionオブジェクト」と「VisPropertySetオブジェクト」を使用しています。
どちらも上記リンク先のページで詳しく解説しているので、あわせてご確認ください。

 

作成するマクロの内容

今回作成するマクロは先にも述べているとおり「R値別にフィレットに色を付けるマクロです。
マクロの機能としては要望どおりの「フィレットがR2のときは赤色、R3のときは青色、R4のときはピンク色を付ける」というものになっています。
※ページ後方では[R値]と[色]を変更することのできるマクロも紹介しています

マクロの完成イメージとしては以下のような感じです。

 icon-wrench マクロの機能まとめ ・フィレットのR2は赤色R3は青色R4はピンク(マゼンタ)に色付け
 ※パートデザインワークベンチで作成されたフィレットにのみ有効
・徐変フィレット、フィレット以外で作成されたR形状には非対応
基本的にはパート・デザインワークベンチの
エッジフィレットにのみ対応していると思ってもらえれば大丈夫です!

 

完成コード

マクロの完成コードは以下のとおりです。

※CATIAの操作環境が日本語のもののみに対応しています

 

コード解説

上記のマクロコードでは以下のような流れで処理が行われています。

一言でまとめると「ツリーの上にあるフィレットから順にR値を確認していき、R2のときは赤色、R3のときは青色、R4のときはピンク色にそれぞれ色付けする」という処理を行っています。

以下では今回のマクロの特に重要なコードを解説していきます。

このマクロの大まかな流れは本サイトで解説している
他のマクロと同じなのでそれらのページもぜひ見てみて下さいね!

 

ツリーの上から i 番目のフィレットとそのR値を変数にする

以下のコードをFor~Nextループ内(カウント変数 i )に入れることで、ツリーの上にあるフィレットから順にSELFilletに代入していきます。

icon-code 上から i 番目のフィレットを変数に入れる

Dim SELFillet
Set SELFillet = SEL.Item(i).Value  ‘上から i 番目のフィレットをSELFilletに代入

次に以下のコードでSELFilletに入っているフィレットのR値をFilletRに代入しています。

icon-code 上から i 番目のフィレットのR値を変数に入れる

Dim FilletR As Single
FilletR = SELFillet.Radius.Value  ‘SELFilletのR値をFilletRに代入

この「SELFillet」と「FilletR」、2つの変数を使ってフィレットに色付けしていきます。
 

R値別にフィレットに色を付ける

任意のオブジェクトに色を付けるには「VisPropertySetオブジェクト」を利用します。
VisPropertySetオブジェクトは選択状態になっているオブジェクトの色を変更することができます。

VisPropertySetオブジェクトを使うにはまず以下のように書いて定義しておく必要があります。
(今回のマクロのコードでは初めの方で定義しています)

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

Dim SEL As Selection
Set SEL = CATIA.ActiveDocument.Selection
 
Dim VPS As VisPropertySet
Set VPS = SEL.VisProperties 

ここで定義したVPSという変数を使って以下のように書くことで、選択状態のオブジェクトの色を変更することができます。(詳しくは「VisPropertySetオブジェクト」参照)

icon-code 色変更

VPS.SetRealColor R, G, B, 1 ‘RGB値を入力

 
今回のマクロのコードでは以下のように使っています。
以下のコードをFilletRを使ってR値別に条件分岐させることで、各フィレットに色付けをしています。

icon-code 色付け処理

If FilletR = 2 Then            ‘R値が「2」の場合、以下の処理を行う
 SEL
.Clear               ‘選択状態のものをすべて解除
 SEL.Add SELFillet          ‘SELFilletを選択状態にする
 VPS.SetRealColor 255, 0, 0, 1     ‘選択状態のオブジェクトの色をRGB(255,0,0)に変更
 SEL.Search (“パート・デザイン.フィレット,all”) ‘ドキュメント内のフィレットをすべて選択

 

より柔軟性のあるマクロにする

マクロの多くはユーザーが決めることのできるある程度の自由度が必要になってきます。
上記で紹介したマクロもいまのままでは、決められたR値のフィレットに決められた色を付けることしかできません。このままではマクロとしてあまり有効であるとはいえません。

たしかに実際に作業で使うには、まだまだ使い勝手が悪いですね

 
というわけで上記のコードを使った、よりフレキシブルに対応できるマクロも作成しました。
上記で紹介したマクロの機能に、R値を任意で指定することができるような機能を追加しました。
イメージとしては以下のような操作をすることができます。

 icon-wrench マクロの機能まとめ ・任意のR値のフィレットに任意の色を付ける
 ※パートデザインワークベンチで作成されたフィレットにのみ有効
・徐変フィレット、フィレット以外で作成されたR形状には非対応
・テキストボックスを空白にすることで対象のフィレットを減らすことができる

このマクロのコードは解説するとかなり長くなってしまうので割愛します。
以下でマクロファイルをダウンロードすることができるので、どのように作られているのか気になる方はダウンロードしてコードを確認してみて下さい。
 

icon-download マクロファイルをダウンロード

クリックで.catvba(zipファイル)をダウンロード

ダウンロードしたらzipを解凍し、その中にある「SetColorFillet.catvba」をCATIAに読み込みます。
[マクロライブラリー]ウィンドウの[既存ライブラリーの追加…]をクリックすることで読み込むことができます。

 
このファイルには「モジュール1」「Userform1」「Userform2」が入っています。
マクロを実行するには「モジュール1」を実行してください

※実行できるようにはなっていますが、あまりスマートなコードにはなっていません。
また、ある程度のエラーへの対応はしていますが、操作の仕方によっては予期せぬ動きをする可能性があります。あくまでもマクロ勉強の参考程度にご利用ください。

 

まとめ

今回のマクロの処理の内容は「フィレットを選択し、色を付ける」という手作業でも行うこともできる操作をループ文を使って行っているだけです。

ただ、本文中でも説明したとおりマクロの使用用途によってはある程度の自由度が必要になってきます。はじめのうちは思った通りの単純な操作ができるマクロを作成できればいいですが、最終的にはユーザーファーストなマクロの作成を目標に勉強をしていくといいです。

 
目次へ戻る
 

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

 

CATIA, CATIAマクロ

Posted by Lic