ビューの角度とスケールを取得するマクロ|CATIAマクロの作成方法

今回の記事はお問い合わせよりいただいた内容です。
送って頂いた内容は以下のようなマクロです。

CATDrawingでマクロで図の“角度”と”スケール”を取得することは可能でしょうか? (クリックで画像拡大)

 

マクロの機能

今回作成したマクロは選択した寸法線を有するビューの角度とスケールを取得するマクロです。
取得確認として上画像のようにメッセージでそれぞれの値を表示するようになっています。

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

  マクロの機能まとめ ・選択した寸法線を有するビューの角度とスケールを取得する(表示する)
・角度とスケールは小数点以下第3位までの値を取得

 

サンプルコード

マクロのコードは以下のとおりです。
マクロを実行したら寸法線をクリックするだけです。

コード解説

アクティブドキュメントの定義

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

条件分岐の先、つまりはアクティブドキュメントがCATDrawingの場合は変数「doc」にアクティブドキュメントを代入します。
  

ユーザー選択/ビュー定義

つぎにSelectElement2メソッドを使い、ユーザーに寸法線を選択させます。
フィルターには「DrawingDimensionオブジェクト」を指定し寸法線のみの選択としています。

ユーザー選択のDrawingDimensionを取得したら、その寸法線を有するビューを定義します。
「DrawingDimensionオブジェクト」の親は「DrawingDimensionsオブジェクト」、そしてそのさらに親が「DrawingViewオブジェクト」となっています。つまり取得したDrawingDimension(上記コードでいう「Txt」)の親の親のオブジェクトを取得すればビューを定義することができます。
 

ビューの角度とスケールを取得

ビュー(DrawingView)が取得できれば、あとはそのプロパティから情報を取得するだけです。
角度の場合は「Angleプロパティ」、スケールの場合は「Scale2プロパティ」で取得可能です。

ここで注意しないといけないのは角度の取得時です。
「Angleプロパティ」で取得した角度は「度(deg)」ではなく「ラジアン(rad)」です。
そこでサンプルコードでは「rad2deg」という関数を用意して、ラジアンを角度に変換しています。
※ 名前の由来は「rad to deg」(ラジアンから角度へ)です。(「to」を「2(two)」と置き換える)
  Python等でよく見られる名前の付け方なので、知識としては知っておいて損はないと思います。

また、取得した角度とスケールの値はDouble型なのでかなり細かい値まで取得されてしまいます。
そこで「Format関数」を使って値を少数以下第3位までに変換しています。
(有効数字を変更したい場合「0.000」の「0」の数を変更してください)

 icon-edit 「2」と付いているプロパティ/メソッド CATIA VBAには「Scale2プロパティ」や「Count2プロパティ」「Item2メソッド」のように「2」のついたプロパティ/メソッドが用意されています。これとは別に「Scaleプロパティ」「Countプロパティ」「Itemメソッド」というような無印のものも存在しています。
  
「2」のついたプロパティ/メソッドはCATIAのバージョンアップ等の原因から、無印のプロパティ/メソッドを使ったときに何かしらの問題が発生したものに対して用意された新規のプロパティ/メソッドです。機能を一新してしまうと、これまで使われてい他ツールなどにも影響が出てしまうため、新たなプロパティ/メソッドとして搭載されているのです。
 
そのため基本的には「2」の付いているプロパティ/メソッドが用意されている場合はそちらを使うことが推奨されています
※本サイトでは2はほとんど無視してやっているので、気になる方は各自で修正して下さい。
 

まとめ

今回はちどり溶接指示を作成するマクロについての内容でした。

今回は寸法線を有するビューとしましたが、ビューさえ取得できてしまえば、角度とスケールを取得する方法は同じです。(ビューの取得方法が違うだけ)

つまりサンプルコードの「SelectElement2メソッド」のフィルターをそもそも「DrawingView」として、直接ビューを取得して調べるということも可能になります。

またDrawingViewのその他プロパティ/メソッドを使えばそのほかの情報も取得することができるのでいろいろ試してみてください。
 

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

 

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

2021年2月2日CATIA, CATIAマクロ, VBA

Posted by Lic