5 Minuten
iLogic: User Interaktion
In den vorherigen Posts iLogic: Logging und iLogic: Progressbar wurden zwei Methoden vorgestellt, um dem Anwender Ausgaben zu präsentieren. Mit dem User in Interaktion treten kann man über Logger und Progressbars jedoch nicht. Für interaktive Abfragen stehen weitere grafische Elemente zur Verfügung. Basierend auf einer User-Auswahl, kann somit auch Einfluss auf die Ausführung des Codes einer iLogic genommen werden.
MessageBox
Eine Messagebox kann mit dem Befehl MessageBox.Show()
aufgerufen werden. Die Methode erwartet nur einen Pflichtparameter und zwar den Message Body. Alle anderen Parameter sind optional.
MessageBox.Show("Message Body", "Title", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2)
Die einzelnen Parameter, in Reihenfolge der Klammeranweisung, erläutert:
Parameter | Erläuterung |
---|---|
Message Body | Der Text, der in der Messagebox ausgegeben werden soll. |
Title | Der Titel, der in der Statusbar der Messagebox dargestellt wird. |
MessageBoxButtons | Die Auswahl, welche Buttons in der Messagebox angezeigt werden sollen. |
MessageBoxIcon | Die Auswahl, welches Icon in der Messagebox angezeigt werden soll. |
MessageBoxDefaultButton | Die Auswahl, welcher Button als Default aktiviert sein soll, abhängig von der Auswahl MessageBoxButtons . |
Icons
Es stehen folgende vier Icons zur Auswahl. Einige haben doppelte und dreifache Bezeichnungen. Die fettgedruckten Werte werden für alle Beispiele in folgenden Posts verwendet:
Icon Grafik | Bezeichnung |
---|---|
Asterisk, Information | |
Error, Hand, Stop | |
Exclamation, Warning | |
Question |
Buttons
Es stehen folgende sechs Button-Darstellungen zur Verfügung:
Button Darstellung | Bezeichnung |
---|---|
AbortRetryIgnore | |
OK | |
OKCancel | |
RetryCancel | |
YesNo | |
YesNoCancel |
Es stehen folgende Rückgabewerte für das Klicken auf einen Button zur Verfügung. Diese Rückgabewerte können genutzt werden um Entscheidungslogiken im iLogic Code zu steuern:
Rückgabe | Beschreibung |
---|---|
vbOK | OK wurde geklickt |
vbCancel | Abbrechen wurde geklickt |
vbAbort | Beenden wurde geklickt |
vbRetry | Wiederholen wurde geklickt |
vbIgnore | Ignorieren wurde geklickt |
vbYes | Ja wurde geklickt |
vbNo | Nein wurde geklickt |
Interaktion mit Button-Press
Erzeugt man eine Messagebox und fordert den User damit zu einer interaktiven Eingabe auf, kann in iLogic ausgelesen welcher Button geklickt wurde (Rückgabewerte) und daraufhin Code ausführen.
Im folgenden fiktiven Beispiel wird eine Situation aus dem Post iLogic: Stücklisten aufgegriffen:
- Der User bearbeitet eine Baugruppe und vergisst die Strukturstückliste zu aktivieren.
- Die ilogic prüft, ob die Strukturstückliste aktiviert ist. Wenn dies nicht der Fall ist, wird eine Messagebox erzeugt.
- Klickt der User auf den Button
OK
wird die Strukturstückliste aktiviert.
Dim oDoc As Document = ThisDoc.Document
Dim bStrucutredViewEnabled As Boolean = oDoc.ComponentDefinition.BOM.StructuredViewEnabled
If bStrucutredViewEnabled = False Then
question = MessageBox.Show("Die Strukturstuecklistenansicht ist nicht aktiviert. Soll sie aktiviert werden?", "StructuredView aktivieren?", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
If question = vbOK Then
oDoc.ComponentDefinition.BOM.StructuredViewEnabled = True
End If
End If
InputBox
Eine Inputbox erwarten, wie auch die Messagebox, Eingangsparameter. Diese sind analog ein Message Body, ein Titel und ein Parameter für einen Default-Wert:
InputBox("Message Body", "Title", "Default Entry")
Beispiel für die Verwendung einer InputBox:
- Als Basismodell dient ein einfacher Zylinder mit einer modellierten Fase. Die Fase hat eine Größe von 5mm und den Modellparameternamen d3.
- Eine InputBox soll erscheinen und den User interaktiv nach der Größe der Fase fragen.
- Nach der Eingabe eines Größenwerts, wird die Eingabe an den Parameter d3 übergeben.
- Das Modell wird anschließend neu aufgebaut, um die Änderung der Fasengröße darzustellen.
Parameter("d3") = InputBox("Wähle die Dimension der Fase.", "Fase", 5)
ThisDoc.Document.Rebuild()
InputListBox
InputListBox ist quasi gleichzusetzen mit der InputBox, jedoch bietet sie eine vordefinierte Liste aus auswählbaren Einträgen an.
Beispiel für die Verwendung einer InputListBox:
Ein liebevoll modelliertes Toastbrot erhält ein Prägungs-Feature, das stellvertretend für den Aufschnitt steht. Eine Prägung (Emboss) erfordert eine Skizze - in diesem Fall der Textblock - und eine Fläche auf dem diese platziert wird. Der Textwert des Aufschnitts ist in der API unter ComponentDefinition.Sketches
zu finden. In meinem Fall war der Endpunkt unter ComponentDefinition.Sketches.Item(2).TextBoxes.Item(1).Text
zu erreichen. Es wird eine Liste mit verfügbaren Aufschnitten erzeugt. Anschließend wird die InputListBox aufgerufen und die Auswahl in einen String gewandelt, da sonst nur ein Index zurückgegeben würde. Die Auswahl wird anschließend an die Prägungsskizze übergeben. Da es sich, wie schon im Beispiel zuvor, um eine Änderung der Modellgeometrie handelt muss als letzter Befehl ThisDoc.Document.Rebuild()
gesendet werden, um das Modell neu aufzubauen.
Dim oDoc As Document = ThisDoc.Document
Dim oSketches As PlanarSketches = oDoc.ComponentDefinition.Sketches
Dim listAufschnitt = New String(){"Wurst", "Käse", "Mett"}
aufschnitt = InputListBox("Wählen Sie!", listAufschnitt)
oSketches.Item(2).TextBoxes.Item(1).Text = aufschnitt.ToString
ThisDoc.Document.Rebuild()
InputRadioBox
Eine InputRadioBox bietet die Möglichkeit aus zwei gelisteten Werten zu entscheiden. Die Grundstruktur ist einfach beschrieben. Geliefert wird ein boolscher Rückgabewert. Der Parameter True
besagt, ob gegen die erste (True
) oder zweite (False
) Auswahlmöglichkeit geprüft wird.
bResult = InputRadioBox("Prompt", "Button1 Label", "Button2 Label", True, Title :="Title")
Ein Beispiel für die Verwendung einer InputRadioBox:
Ein modellierter Donut hat zwei Modellparameter: Donutgrösse:, also der Durchmesser des Donuts und Teigquerschnitt:, also Durchmesser der Teigfläche.
Es wird eine InputRadioBox ausgegeben, die erfragt wie groß der Hunger ist. Es besteht die Auswahl zwischen einem kleinen und einem großen Donut. Basierend auf der Wahl werden die Parameter Donutgröße und Teigquerschnitt angepasst und das Modell neu aufgebaut:
bResult = InputRadioBox("Wie groß ist der Hunger?", "Kleiner Donut!", "Großer Donut!", True, Title :="Wähle einen Donut")
If bResult = True Then
Parameter("Donutgrösse") = "50mm"
Parameter("Teigquerschnitt") = "30mm"
Else
Parameter("Donutgrösse") = "80mm"
Parameter("Teigquerschnitt") = "50mm"
End If
ThisDoc.Document.Rebuild()