選択したボディー内の履歴をすべて表示するマクロ|CATIAマクロの作成方法

今回はお問い合わせより頂いた内容です。

複数のボディを選択して、ボディにぶら下がっているパッド等の履歴自体の非表示を表示に出来るマクロ。
ボディにぶら下がっている履歴(パッド等)の表示非表示判定せずに、
選択したボディはすべて表示にさせるイメージです。

処理の内容はかなりシンプルなのでマクロ初心者の方でも理解しやすい内容となっています。

 

マクロの機能

今回作成したマクロは「選択したボディー内の履歴をすべて表示するマクロ」です。

具体的な機能は以下のとおりです。

  マクロの機能まとめ ・選択したボディー内の履歴コマンドをすべて表示化する
・ボディーはマクロ実行前に選択しておく必要あり
・選択するボディーは1個以上であれば何個でも可
・ボディー以外のオブジェクトが選択されている場合はマクロを中断

 

サンプルコード

マクロのコードは以下のとおりです。
ボディーを選択した状態でコードを実行すると、選択したボディー内の履歴がすべて表示されます。

 

コード解説

アクティブドキュメント確認

まず、はじめにアクティブドキュメントの定義をします。
今回のマクロはCATPartでのみ有効なものなので、アクティブドキュメントがCATPart以外の場合はTypeName関数を使った条件分岐でマクロを終了するようにしています。
 

SelectionとVisPropertySetの定義

SelectionオブジェクトVisPropertySetオブジェクトの定義を行います。

はじめにSelectionオブジェクトを定義します。
今回は事前にボディーが選択されていることが前提のマクロなので、ここで選択されているオブジェクトの数を調べ、0個の場合はマクロを終了するようにしています。

マクロ実行後にユーザーにボディーを選択させたい場合は、SelectionオブジェクトのSelectElement2メソッドもしくはSelectElement3メソッドを使うことで、ユーザー選択のフェーズが設けられます。

つぎにVisPropertySetオブジェクトの定義をします。
VisPropertySetオブジェクトはオブジェクトの色や透明度などのグラフィックプロパティを取り扱うためのオブジェクトです。今回は選択したオブジェクトを”表示化”するために利用します。
  

選択されたボディーをCollectionに格納

選択されたボディーを1つのCollectionにまとめて格納します。
(Collectionに格納する理由は選択しているオブジェクトを一時保管する方法を参照下さい)

このときTypeName関数を使って、選択されているオブジェクトに”Body”以外があった場合にはマクロを中断するようにしています。(今回は中断させていますが、TypeNameの結果が”Body”だった場合のみCollectionに入れるという処理にすれば、Body以外のオブジェクトを選択されていたとしてもエラー無く実行することができます)
 

ボディー内のShapeをすべて表示

最後にCollectionに格納されているボディーの履歴をすべて表示させます。

ボディー内の履歴はVBAでは「Shapeオブジェクト」にまとまっていします。(Sketchは除く)
つまりボディー内の「Shapesオブジェクト」の数だけループを回し、「Shapeオブジェクト」を1つずつ「選択→表示」としていけばすべての履歴(Shape)を表示化することができます

 

まとめ

今回は「選択したボディー内の履歴をすべて表示するマクロ」についての内容でした。

処理自体はかなり単純で、重要なのは「空のシートをどのようにして判定するか」の部分だけです。

今回のマクロではオブジェクトの数で空のシートを判定しましたが、その他の方法もいくつかあると思うのでサンプルコードはあくまでも参考程度にご利用下さい。
 

サンプルマクロ集に戻る
目次へ戻る
 

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

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

Posted by Lic