指定した穴径別に色付けするマクロ|CATIAマクロの作成方法
今回の記事は「お問い合わせ」でいただいた内容です。
送って頂いた内容は以下のようなマクロです。
ボディ穴径やねじ切り呼び名別に色付け
ボディへの穴コマンドで作成した穴(ねじ切り含む)や、ねじ切り タップを
穴径やねじ呼び名別に色分け
(ボディにぶら下がる「穴」や「ねじ切り」へ色付け)「R値別にフィレットに色付けするマクロ」的なイメージ
デフォルトで14項目
Φ4,Φ5,Φ6,Φ7,Φ8,Φ9,Φ10
M3,M4,M5,M6,M8,M10,M12
今回のマクロはコードが非常に長く複数のユーザーフォームやクラスモジュールを使うので、ページ作成の関係上コードの解説は行っていません。その代わりにVBAファイルをダウンロードできるようにしているので、ダウンロードしてVBE上で確認してください。
マクロの機能
今回作成したマクロは「指定した穴径別に色付けするマクロ」です。
マクロの機能をまとめると以下のような感じです。
・指定した穴径別に色をリセットすることができる
・すべての穴の色をまとめてリセットすることができる
・設定した穴径や色は保存される
(前回の設定内容を引き継いだ状態で、再度ユーザーフォームを開くことができるということ)
・保存されている設定を初期化することも可能
穴径別に色付けを行うのですが「メートル細め」の場合、ネジの呼びが「M12x1.25」と「M12x1.5」のようにMの値が同じものの場合うまく実行できません。これは条件を追加し忘れているだけなので、必要な方は各自追加して下さい。
あくまでもβ(ベータ)版というイメージで使ってくださいね
マクロファイルをダウンロード
ダウンロードしたらzipを解凍し、その中にある「SetHoleColor.catvba」をCATIAに読み込みます。
[マクロライブラリー]ウィンドウの[既存ライブラリーの追加…]をクリックすることで読み込むことができます。
※実行できるようにはなっていますが、あまりスマートなコードにはなっていません。
また、ある程度のエラーへの対応はしていますが、操作の仕方によっては予期せぬ動きをする可能性があります。あくまでもマクロ勉強の参考程度にご利用ください。
このファイルには以下のものが入っています。
ユーザーフォーム:「UF_Main」「UF_SelectColor」
標準モジュール :「モジュール1」
クラスモジュール:「Class_Bottun」「Class_ComboBox」
「Class_SelectColor」「Class_TextBox」
マクロを実行するには「モジュール1」の「Sub CATMain」実行してください。
実行時の注意として「Sub CATMain」以外からは実行しないでください。
VBE上では直接ユーザーフォームを実行できますが、これは避けてください。
1度でも実行してしまうと2回目以降に正常に実行できなくなる可能性があります。
もし、このような状態に陥ってしまったら「C:¥Windows¥Temp」の中に「Hole_Colors_Temp.txt」というファイルが作成されているはずなのでそれを削除してください。
こうならないためにVBE上からの実行ではなく、マクロウィンドウ(ショートカット[Alt]+[F8])から実行することをオススメします。
マクロの使い方
以下では本マクロの簡単な使い方を紹介していきます。
説明がなくてもある程度わかるようにはなっていますが、裏で気づかないうちに行なっている機能などもあわせて紹介していきます。
左側で設定した通りに穴に色を付けます。
穴径部分を空白の場合、その項目は無視されます。
[指定してリセット]ボタン
右上で設定した穴径の色をリセットします。※1
[全てリセット]ボタン
CATPart内の全ての穴の色をリセットします。※1
[初期化]ボタン
設定した穴径や色はユーザーフォームを閉じた時に保存されます。※2
[初期化]ボタンを押すとこの保存した設定を破棄し初期の設定に戻します。
(上画像が初期設定の内容)
※1
色をリセットといっていますが実際はボディーと同じ色を上塗りしているだけです。
これはVBAではプロパティをリセットすることができないためです。
完全にリセットしたい場合は手動で「プロパティをリセット」コマンドを実行してください。
※2
ユーザーフォームを[×]ボタンで閉じると「C:¥Windows¥Temp」の中に「Hole_Colors_Temp.txt」というファイルを作成し、現在の設定内容を書き出します。以降ではこのテキストファイルを読み込むことで、ユーザーフォームを前回の設定で開くことができるようになっています。
テキストファイルの中身は上画像のようになっています。
上から順に[色]と[穴径]を並べて行っているだけの単純な構造です。
最下行はユーザーフォームの表示される位置を表しています。
これにより、ユーザーフォームを表示する位置を前回閉じた位置にすることができます。
テキストファイルは削除するとユーザーフォームが初期設定に戻るだけで他に影響はありません。
(再びユーザーフォームを閉じると自動で作成されます)
まとめ
今回のマクロはかなりガッツリしているのでコードを見て内容を理解していただければ幸いです。
本マクロではクラスモジュールを使ったり、外部ファイルの入出力も行なっているため初心者の方にはかなり難しめの内容となっています。「何をしているかよくわからないけど理解したい!」という方はお気軽に「お問い合わせ」よりご連絡ください。