Zur Vereinfachung des Übergangs zwischen Inventor und dem Web wird für jede Komponente in dem Modell eine Mixin-Standardstruktur verwendet. Jede Komponente wird in drei primäre Mixins unterteilt: das Mixin UI, das Mixin Rules und das Mixin Graphics. Auf diese Weise kann die Geschäftslogik (Mixin Rules) von der Benutzeroberfläche (Mixin UI) und den Grafiken (Mixin Graphics) getrennt werden. Zudem können mit minimalem Aufwand die webbasierten Grafiken durch Inventor-basierte Grafiken ersetzt werden. Die Reihenfolge der Mixins ist in diesem Fall wichtig, da das Mixin UI typischerweise einige im Mixin Rules angegebene Vorgabewerte überschreibt. Außerdem müssen, da die Grafiken zwischen Inventor und dem Web ausgetauscht werden, für die Grafiken geltende Regeln vollständig von der Geschäftslogik und der Benutzeroberfläche getrennt sein. Die Designs für Tisch (Table), Tischplatte (TableTop) und Beine (Leg) sind wie folgt definiert:
Design Table : TableDesigns TableUI TableRules TableGraphics Design TableTop : TableTopDesigns TableTopUI TableTopRules TableTopGraphics Design Leg : LegDesigns LegUI LegRules LegGraphics
Die Mixins TableDesigns, TableTopDesigns und LegDesigns sind einfach organisatorischer Natur. Sie enthalten keine wirklichen Regeln. Beachten Sie, dass die Trennung der Designs in den oben genannten Strukturen unabhängig von der Erfordernis, mehrere Grafikhosts zu unterstützen, eine sinnvolle Intent-Programmiermethode darstellt. Die Verwendung der dargestellten Strukturen ermöglicht nicht nur den Einsatz der in Intent verfügbaren leistungsfähigen Mehrfachübernahme-Funktion, sondern bietet dem Benutzer zudem eine strukturierte Methode zur einfacheren Implementierung der Objektzusammensetzung in der Entwurfsarchitektur.
Normalerweise ist der Vorgabewert einer Regel einfach der Wert der Regel selbst, und jeder geänderte Wert wird in einem dynamischen Wert für diese Regel gespeichert. Allerdings werden die UI-Eigenschaften in den UI-Werkzeugen durch getrennte UIProperty-Teile im Intent-Modell gesteuert, die als "Vermittler" zwischen den Vorgabewerten und den vom Intent-Modell verwendeten tatsächlichen Werten fungieren. Dies erfolgt so, dass die gesamte UI-Logik für die Eigenschaft (Wert, Optionen, Text, Anstrichfarbe usw.) im UIProperty-Design verkapselt werden kann. Der tatsächliche dynamische Wert wird im UIProperty-Teil statt in der Geschäftsregel gespeichert, und die Geschäftsregel verweist einfach auf die Regel mit dem UIProperty-Wert. Der Entwickler kann einfach einen Wert an den Parameter DefaultValue eines UIProperty-Teils übergeben.
Es gibt zudem eine Schnellmethode zum Definieren des Vorgabewerts einer Regel. Bei dieser Schnellmethode erhalten Regeln mit Vorgabewerten das Präfix "dv" und ihre zugehörigen UIProperty-Teile das Präfix "ui". Beispielsweise gibt es in dem Tischdesign eine Regel Length, und deren Vorgabewert ist in der Regel dvLength gespeichert. Wenn dem Tisch eine untergeordnete UIProperty namens uiLength hinzugefügt wird, verwendet die Eigenschaft uiLength den Wert der Regel dvLength als Wert für seine Regel DefaultValue. Eine Einschränkung dieser Schnellmethode ist, dass die UI-Eigenschaften von BasicUIProperty abgeleitet sein müssen, einer Erweiterung des UIProperty-Designs.
Typischerweise enthält das Mixin Rules die Definition der Vorgabewerte. Die Geschäftslogik-Regeln, die diese Vorgabewerte verwenden, werden durch das Mixin Rules einfach nur durchgeleitet. Im vorherigen Beispiel gibt Length einfach den Wert von dvLength im Mixin Rules zurück.
Parameter Rule dvLength As Number = 60.0 Rule Length As Number = dvLength
Im Mixin UI jedoch verweisen die Geschäftslogik-Regeln auf die Regeln mit den Werten der UI-Eigenschaften, da dies die Werte sind, die vom Benutzer über die UI-Werkzeuge angegeben wurden.
Rule Length As Number = uiLength.Value
Durch die Festlegung des Vorgabewerts und die Durchleitung von Regeln im Mixin Rules und die anschließende Verknüpfung der UIProperty im Mixin UI kann die Benutzeroberfläche deaktiviert werden und das Modell erforderlichenfalls ohne die UI-Werkzeuge ausgeführt werden, indem einfach die verschiedenen UI-Mixins durch leere Designs überschrieben werden. Dies ist nützlich bei Stapelverarbeitungen, für die keine Benutzeroberfläche benötigt wird, und bei der Fehlerbehebung, wenn es erforderlich ist, die UI-Logik vollständig zu trennen.
Das Design Tischplatte (TableTop) ist ein einfacher Quader (Block) mit einer Länge, Breite, Dicke und Anstrichfarbe. Dies sind alles Parameter für das Design und verwenden die oben beschriebene Standardstruktur.
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
Das Design TableTopGraphics wird an Block beteiligt und überschreibt einfach die Regel für die Höhe des Quaders, um zur Dicke der Tischplatte zu werden.
Rule Height As Number = Thickness
Das Design Bein (Leg) ist ebenfalls ein einfacher Quader. Sie weist jedoch nur eine Breite, Höhe und Anstrichfarbe auf.
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
Das Design LegGraphics wird ebenfalls an Block beteiligt, überschreibt aber die Regel für die Länge des Quaders, um zur Breite des Beins zu werden. Dies erfolgt, damit die Beine viereckig werden.
Rule Length As Number = Width
Die Baugruppe Tisch (Table) enthält eine Tischplatte und vier Beine. Sie enthält außerdem die Parameter der obersten Ebene für das gesamte Modell, wie z. B. die Gesamthöhe des Tischs, seine Länge und Breite sowie die Anstrichfarbe.
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
Die Tischplatte erhält ihre Vorgabewerte für die Länge, Breite und Anstrichfarbe von der Baugruppe Table. Entsprechend erhalten auch die einzelnen Beine ihre Vorgabewerte für die Höhe und Anstrichfarbe von der Baugruppe Table.
Child TableTop As :TableTop dvLength = length dvWidth = Width dvPaintColor = PaintColor End Child Child Leg As :Leg, Quantity = 4 dvHeight = LegHeight dvPaintColor = PaintColor End Child
Die Inventor-Version des Designs TableGraphics wird an IvAssemblyDocument beteiligt, da der Tisch das Stammbauteil ist und daher eine Baugruppe sein muss. Wenn dies an den Silverlight-Host übertragen wird, wird die Konstruktion TableGraphics an BasePart statt an ivAssemblyDocument beteiligt.
Inventor:
Design TableGraphics : TableDesigns IvAssemblyDocument
Web:
Design TableGraphics : TableDesigns BasePart