CATIAマクロで長さや角度を測定する[Measurableオブジェクト]|CATIAマクロの作成方法

CATIAマクロを作成していると長さや角度、面積や半径などを取得したい場合がでてきます。
こういった、いわゆる[測定]コマンドでの測定結果をマクロで取得するには『Measurableオブジェクト』を使います。今回はそんなMeasurableオブジェクトについて詳しく見ていきましょう。

今回学べる内容は以下のとおりです。

Measurableオブジェクトとは
Measurableオブジェクトのプロパティの使い方
Measurableオブジェクトのメソッドの使い方

 

Measurableオブジェクトとは

『Measurableオブジェクト』とは簡単にいうと[要素を測定]コマンドや[2要素間の距離]コマンドで測定した結果(寸法や角度など)を取得することのできるオブジェクトです。

Measurableオブジェクトを使用するには、先に『SPAWorkbench』(Space Analysis Workbench)というワークベンチを定義しておく必要があります

以下の構文を書くことで、『SPA』という変数に『Space Analysis Workbench』を定義することができます。(変数名は好きに変えてもらって構いません)

icon-code SPAWorkbenchを定義 

Dim SPA As Workbench

Set SPA = CATIA.ActiveDocument.GetWorkbench(“SPAWorkbench”)

 
次にこの『SPA』を使って以下のように書いてMeasurableオブジェクトを定義します。

icon-code Measurableオブジェクトを定義 

Dim MyMeasure As Measurable
Set MyMeasure = SPA.GetMeasurable(Ref1)

上記の構文により変数『Ref1』に入っているオブジェクトを、Measurableオブジェクト内に入れることができます。この状態でMeasurableオブジェクトのプロパティやメソッドを使うことで長さや角度などを取得することができます。

Measurableオブジェクトは以下のプロパティ/メソッドが用意されています。
※以下は代表的なものを抜粋したものであり、すべてではありません

プロパティ名 プロパティ内容
Angle 円/円弧の角度を取得
Area 面積を取得
Length 長さを取得
Radius 円弧/シリンダ/球の半径を取得
Volume ソリッドの体積を取得
   
メソッド名 メソッド内容
GetAngleBetween 2要素間の角度を取得
GetMinimumDistance 2要素間の最短距離を取得

たとえば、表の中のLengthプロパティを使って「MyMeasure.Length」と書くと、変数『Ref1』に入っているオブジェクトの長さを取得することができます。

 

プロパティ

Measurableオブジェクトのプロパティは、主に[要素を測定]コマンドで測定できる値を取得することができます。コードの書き方自体はどれも同じで、以下では変数『GetValue』に取得した値が代入されるようになっています。
 

Angleプロパティ

Angleプロパティは「Ref1」に入っている円/円弧の角度を取得することができます。
Ref1」の中身が正円の場合は「360」、半円の円弧の場合は「180」を取得することができます。
Angleプロパティで角度を取得するには以下のように書きます。

 icon-code Angleプロパティ

Dim GetValue As Double
GetValue = MyMeasure.Angle

 

Areaプロパティ

Areaプロパティは「Ref1」に入っているサーフェス形状/ソリッド形状の面積を取得することができます。「Ref1」の中身がソリッド形状の場合は表面積を取得することができます。
Areaプロパティで面積を取得するには以下のように書きます。

 icon-code Areaプロパティ

Dim GetValue As Double
GetValue = MyMeasure.Area

 

Lengthプロパティ

Lengthプロパティは「Ref1」に入っている曲線/直線の長さを取得することができます。
Lengthプロパティで長さを取得するには以下のように書きます。

 icon-code Lengthプロパティ

Dim GetValue As Double
GetValue = MyMeasure.Length

 

Radiusプロパティ

Radiusプロパティは「Ref1」に入っている円弧/シリンダ/球の半径を取得することができます。
Radiusプロパティで半径を取得するには以下のように書きます。

 icon-code Radiusプロパティ

Dim GetValue As Double
GetValue = MyMeasure.Radius

 

Volumeプロパティ

Volumeプロパティは「Ref1」に入っているソリッド形状の体積を取得することができます。
Volumeプロパティで体積を取得するには以下のように書きます。

 icon-code Volumeプロパティ

Dim GetValue As Double
GetValue = MyMeasure.Volume

 

プロパティ取得確認用コード

プロパティのコードだけをみてもイメージが付きづらいので、実際に取得したことを目で確認できるようにしてみましょう。

下記のコードをコピペし、コード内の「’ここにプロパティのコードを入力」の部分に上記のプロパティのいずれかのコードを入力します。

 
入力後、ツリー上のオブジェクトを1つ選択した状態でコードを実行すると、入力したプロパティのコードで取得した値をメッセージボックスで表示することができます。

― エラーが発生する原因 ―

エラーが発生してしまう場合は、選択しているオブジェクトに問題がある可能性があります。
「Lengthプロパティを使うのに、選択しているものがサーフェス」のようにタイプが不一致の可能性があります。選択しているオブジェクトの種類があっているか確認してみましょう。
 

また、オブジェクトの種類があっているのにエラーが発生する場合は、おそらくデータ上の種類が違うという可能性が考えられます。たとえばシリンダ(円柱)を選択しているつもりでも、データ上シリンダと認識されずただの曲面として認識されている場合があります。
 

こういったときは[要素を測定]コマンドを使ってデータ上の形状の種類が何かを調べる必要があります。詳しくは『CATIAの形状の種類と性質』ページを参照ください。

 

メソッド

Measurableオブジェクトのメソッドは、主に[2要素間の距離]コマンドで測定できる値を取得することができます。ここで紹介するコードの書き方はどちらも同じで、以下では変数『GetValue』に取得した値が代入されるようになっています。

メソッドは他にも方向や中心点なども取得することができますが、その場合は配列を使って取得します。詳しくは『CAA V5 Visual Basic Help』で「SpaceAnalysisInterfaces Measurable(Object)」と検索して出てくる「Measurable」ページで確認してみましょう
 

GetAngleBetweenメソッド

GetAngleBetweenメソッドは「Ref1」と「Ref2」に入っている2つのエレメントの角度を取得することができます。
GetAngleBetweenメソッドで角度を取得するには以下のように書きます。

 icon-code GetAngleBetweenメソッド

Dim GetValue As Double
GetValue = MyMeasure.GetAngleBetween(Ref2)

 

GetMinimumDistanceメソッド

GetMinimumDistanceメソッドは「Ref1」と「Ref2」に入っている2つのエレメントの最短距離を取得することができます。
GetMinimumDistanceメソッドで最短距離を取得するには以下のように書きます。

 icon-code GetMinimumDistanceメソッド

Dim GetValue As Double
GetValue = MyMeasure.GetMinimumDistance(Ref2)

 

メソッド取得確認用コード

プロパティ同様、メソッドも取得した値を目で確認できるようにしてみましょう。

下記のコードをコピペし、コード内の「’ここにメソッドのコードを入力」の部分に上記のメソッドのいずれかのコードを入力します。

 
入力後、ツリー上のオブジェクトを2つ選択した状態でコードを実行すると、入力したメソッドのコードで取得した値をメッセージボックスで表示することができます。

このコードでエラーする場合もプロパティ確認用コードのところで説明したものと同じ原因の可能性が高いので、エラーが発生してしまうという場合はそちらを確認ください。

 

まとめ

今回はMeasurableオブジェクトを使った要素の測定方法についての解説でした。
このオブジェクトで取得した数値は条件分岐させるために利用する場合が多いです。

また、このオブジェクトを使って取得する数値はどれも非常に細かくなります
デフォルトでは最小0.001mmまでしか測定しないようになっているため、取得した数値も少数点以下第4位までの表示になるように四捨五入してあげるたほうが使い勝手はよくなります

四捨五入の方法は「VBA 四捨五入」で検索すればたくさん情報が出てきます。
ほとんどExcelのものですがCATIAでも使えるので、それらを参照ください。

 
目次へ戻る
 

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

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

Posted by Lic