iLogic ルールを、Inventor のモデルに格納するのではなく、外部ファイルに配置して、外部ルールをインポートまたはエクスポートすることができます。
この保存方法によって、同じルールをさまざまな場所で使用することができます。
iLogic のルールでは、他の .NET アセンブリのコードを使用できます。このような .NET アセンブリがあるフォルダを指定することができます。.NET アセンブリは、Visual Studio などのプログラミング ツールで開発できます。ルールで .NET アセンブリを使用する方法の詳細については、「高度なルール プログラミング」を参照してください。
iLogic の設定を XML ファイルとしてインポートまたはエクスポートして、異なるユーザおよびマシン間で共有できるようにします。設定が完了すると、外部にマッピングされたフォルダが[標準フォルダ]ツリーの下に表示され、内容(サブフォルダとルール)が変化すると即座に更新されます。
外部ルール環境設定は、配置の作成中に利用され、マッピングされます。
グローバル フォームを右クリック オプションで更新して、最新のフォームを反映します。
iLogic ではオートメーション インタフェースが提供されています。このインタフェースを使用して、Inventor から VBA、VB6、NET などのコードでパラメータやルールにアクセスすることができます。
この機能は、iLogicAutomation
クラスによって有効化されます。
このクラスは、VBA や VB プロジェクトでは参照を追加せず、遅延バインディング型(オブジェクトとして宣言)として使用します。完全な COM オブジェクトではないため、このクラスのメソッドを参照することはできません。
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
は、特殊な状況で、比較をゼロとして処理します。等価を評価する数値の 1 つが完全なゼロである場合、他の値の絶対値が 0.0000001 以下の場合に評価に成功します。
この比較によって、値がゼロに近い場合の丸め誤差を無視する方法が簡単になります。たとえば、次の比較では、x = 0 の判定が行われます。
angle = PI/2
x = cos(angle)
If (x = 0) Then
...
End If
DoubleForEquals
は、ルールで使用するすべての Inventor パラメータの既定の型です。この設定は次のような状況で無効にすることができます。
Double
型が必要なライブラリ関数またはカスタム コードを使用する場合。Double
への透過的な変換を可能にするあらゆる試行が実行されます。ただし、関数が Object
型の引数を予期している場合、変換は実行されません。DoubleForEquals
オブジェクトが渡された場合、その関数は可能な限り Double
型を予期します。CDbl
を使用するか、DoubleForEquals
を無効にすることができます。Double
を直接使用することで DoubleForEquals
のオーバーヘッドを回避する場合。Single
値の有効範囲(おおよそ 1.4e-45 ~ 3.4e38)から外れている場合。この状況が Inventor モデルで生じることはまれですが、長さ以外の単位では発生する可能性もあります。Web ブラウザから、VB チュートリアルおよび情報をオンラインで検索してください。