
Inventor と Web との間の切り替えを容易にするために、モデル内の各コンポーネントには標準の Mixin 構造が使用されています。各コンポーネントは 3 つの主要 Mixin (UI Mixin、ルール Mixin、グラフィックス Mixin)に分けられます。これにより、ビジネス ロジック(ルール Mixin)をユーザ インタフェース(UI Mixin)およびグラフィックス(グラフィックス Mixin)から分離することができます。また、最小限の労力で Inventor ベースのグラフィックスと Web ベースのグラフィックスを入れ替えることができます。UI は通常、ルール Mixin で指定された一部の既定値をオーバーライドするため、Mixin の順序はここでは重要になります。また、グラフィックスは Inventor と Web の間で入れ替えられるため、グラフィックスに関連するルールはビジネス ロジックとユーザ インタフェースから完全に分離する必要があります。テーブル、テーブル トップ、および脚は次のように定義されます。
Design Table : TableDesigns TableUI TableRules TableGraphics Design TableTop : TableTopDesigns TableTopUI TableTopRules TableTopGraphics Design Leg : LegDesigns LegUI LegRules LegGraphics
TableDesigns、TableTopDesigns、LegDesigns は単なる組織 Mixin です。この中には実際のルールはありません。複数のグラフィックス ホストをサポートする必要があるかどうかにかかわらず、デザインを上記の構造に分けるのが優れた Intent プログラミング法であることに留意してください。この構造を使用すると、Intent で利用できる複数の強力な継承機能の使用が促進されるだけでなく、構造化された方法によってユーザがより簡単にデザイン構造にオブジェクトの構成を実装することができます。
通常、ルールの既定値はルール自体の値でしかありませんが、変更した値はルールの動的な値に格納されます。ただし、UI ツールの UI プロパティは、Intent モデルの別個の UIProperty パーツによってコントロールされます。このパーツは、既定値と Intent モデルで使用される実際の値の仲介役として機能します。これは、プロパティ(値、選択項目、テキストの PaintColor など)のすべての UI ロジックを UIProperty デザインでカプセル化できるようにするために行われます。実際の動的な値は、ビジネス ルールではなく UI プロパティ パーツに格納され、ビジネス ルールは単に UI プロパティの Value ルールを参照します。開発者は、単に値を UIProperty パーツの DefaultValue パラメータに渡すことができます。
また、ルールの既定値を定義するための簡易的な方法もあります。この方法では、既定値のルールの先頭に "dv" を付け、関連する UI プロパティ パーツには "ui" を付ける必要があります。たとえば、テーブルのデザインには Length ルールがあり、既定値は dvLength ルールに格納されます。uiLength という名前の子の UI プロパティをテーブルに追加すると、uiLength では、DefaultValue ルールの値に dvLength ルールの値を使用するようになります。この方法を使用する際の注意点として、UI プロパティは UIProperty デザインの拡張機能である BasicUIProperty から派生している必要があります。
通常、ルール Mixin には既定値の定義が格納されており、これらの既定値を使用するビジネス ロジック ルールは単にルール Mixin のパス スルーになります。前の例では、Length では単にルール Mixin の dvLength の値が返されます。
Parameter Rule dvLength As Number = 60.0 Rule Length As Number = dvLength
ただし、UI Mixin では、ビジネス ロジック ルールは UI プロパティの Value ルールを参照します。このルールは UI ツールによってユーザが指定する値であるためです。
Rule Length As Number = uiLength.Value
既定値とパス スルー ルールをルール Mixin に入れ、UI Mixin の UI プロパティにつなぐと、各種 UI Mixin を空のデザインでオーバーライドするだけで、UI ツールを使用せずに必要に応じて UI を無効化したり、モデルを実行することができるようになります。これは、実際の UI が必要ない場合のバッチ処理や、UI ロジックを完全に切断する必要がある場合のデバッグで役立ちます。
テーブル トップのデザインは、長さ、幅、厚さ、ペイント カラーを持つ単純な長方形のブロックです。これらはすべてデザイン上のパラメータで、上記の標準構造を使用します。
Parameter Rule dvLength As Number = 60.0 Rule Length As Number = dvLength Parameter Rule dvWidth As Number = 24.0 Rule Width As Number = dvWidth Parameter Rule dvThickness As Number = 1.0 Rule Thickness As Number = dvThickness Parameter Rule dvPaintColor As String = "Brown" Rule PaintColor As String = dvPaintColor
TableTopGraphics デザインはブロックで混合され、テーブル トップの厚さになるようにブロックの高さのルールをオーバーライドします。
Rule Height As Number = Thickness
脚のデザインも単純な長方形のブロックです。ただし、幅、高さ、ペイント カラーのみを持ちます。
Parameter Rule dvWidth As Number = 1.0 Rule Width As Number = dvWidth Parameter Rule dvHeight As Number = 24.0 Rule Height As Number = dvHeight Parameter Rule dvPaintColor As String = "Brown" Rule PaintColor As String = dvPaintColor
LegGraphics デザインもブロックで混合されますが、脚の幅になるようにブロックの脚のルールをオーバーライドします。これは脚を正方形にするためです。
Rule Length As Number = Width
テーブル アセンブリには、テーブル トップと 4 つの脚が含まれています。テーブルの全高、長さ、幅、ペイント カラーなど、モデル全体の最上位パラメータも格納されています。
Parameter Rule dvHeight As Number = 24 Rule Height As Number = dvHeight Parameter Rule dvLength As Number = 60 Rule Length As Number = dvLength Parameter Rule dvWidth As Number = 24 Rule Width As Number = dvWidth Parameter Rule dvPaintColor As String = "Brown" Rule PaintColor As String = dvPaintColor
テーブル トップでは、テーブル アセンブリから渡された長さ、幅、ペイント カラーの既定値を取得します。同様に、各脚では高さとペイント カラーの既定値をテーブル アセンブリから取得します。
Child TableTop As :TableTop
dvLength = length
dvWidth = Width
dvPaintColor = PaintColor
End Child
Child Leg As :Leg, Quantity = 4
dvHeight = LegHeight
dvPaintColor = PaintColor
End Child
テーブルはルート パーツであり、アセンブリである必要があるため、Inventor バージョンの TableGraphics デザインは ivAssemblyDocument で混合されます。Silverlight ホストに移植されると、TableGraphics は ivAssemblyDocument ではなく BasePart で混合されます。
Inventor:
Design TableGraphics : TableDesigns IvAssemblyDocument
Web:
Design TableGraphics : TableDesigns BasePart