iLogic 機能の拡張とカスタマイズ

外部ファイル内のルールの保存

iLogic のルールは、Inventor のモデルではなく、外部ファイル内に配置することができます。この保存方法によって、同じルールをさまざまな場所で使用することができます。

ルールを外部ファイルに保存するには、まず新規ファイルの既定のファイル拡張子を設定します。選択する既定の拡張子は、ファイルを編集する方法によって異なります。たとえば、ファイルを Visual Studio で編集する場合は、既定の拡張子を .vb に設定します。拡張子を .txt にすれば、Microsoft メモ帳などのテキスト エディタでルールを編集できます。また、ファイルが標準の iLogic ルール コードを含み、iLogic で前処理を行う場合は、既定の拡張子を .iLogicVB に設定します。

iLogic のルールでは、他の .NET アセンブリのコードを使用できます。このような .NET アセンブリがあるフォルダを指定することができます。.NET アセンブリは、Visual Studio 2008 などのプログラミング ツールで開発できます。ルールで .NET アセンブリを使用する方法の詳細については、「高度なルール プログラミング」を参照してください。

パラメータとルールにアクセスするためのオートメーション インタフェース

iLogic ではオートメーション インタフェースが提供されています。このインタフェースは、Inventor から VBA、VB6、.NET などのコードでパラメータやルールにアクセスするために使用することができます。

この機能は、iLogicAutomation クラスによって有効化されます。

このクラスは、VBA や VB プロジェクトでは参照を追加せず、遅延バインディング型(オブジェクトとして宣言)として使用します。完全な .COM オブジェクトではないため、このクラスのメソッドを参照することはできません。

DoubleForEquals のデータ タイプ

iLogic では、パラメータ値の格納に DoubleForEquals というカスタム データ型を使用します。DoubleForEquals では、簡単な数値の比較ができます。このパラメータは、VB.NET の標準の Double 型と似ています。ただし、DoubleForEquals の値が単精度値として比較される点が異なります(15 桁ではなく 7 桁)。既定では、ルール内のパラメータは DoubleForEquals として宣言されます。

DoubleForEquals では、比較で簡単に丸め誤差を無視できます。たとえば、パーツのドキュメントの単位にインチが使用され、13/16 インチの値を持つパラメータがあるとします。ルールでは、パラメータ値がモデルにセンチメートルで格納されるため、このパーツは正確に 13/16 インチになりません。次に、この値は、ルールでの使用のためにインチに変換されます。次の比較について検討します。

if d0 = 13/16 then ... 

この例では、d0 が Double 型の場合、比較に失敗します。ただし、d0 が DoubleForEquals 型の場合は、正常に比較が行われます。

DoubleForEquals は、値を Double 型で格納し、すべての計算を倍精度値として実行します。比較のみ単精度で実行されます。

パラメータ値は、必要に応じて CDbl 関数を使用して倍精度値に変換できます。

DoubleForEquals は、VB.NET では構造体です(数値型)。

値がゼロになる DoubleForEquals の比較

DoubleForEquals は、特殊な状況で、比較をゼロとして処理します。等価を評価する数値の 1 つが完全なゼロである場合、他の値の絶対値が 0.0000001 以下の場合に評価に成功します。

この比較によって、値がゼロに近い場合の丸め誤差を無視する方法が簡単になります。たとえば、次の比較では、x = 0 の判定が行われます。

angle = PI/2
x = cos(angle)
If (x = 0) Then
...
End If

DoubleForEquals を無効にする状況

DoubleForEquals は、ルールで使用するすべての Inventor パラメータの既定の型です。この設定は次のような状況で無効にすることができます。