Eingabepalette


Smartparts sind parametrische Objekte, d.h. ein Smartpart kann seine Form in Abhängigkeit von einem oder mehreren Parametern ändern, diese Parameter können in einer Eingabepalette dargestellt und bearbeitet werden. Es gibt auch Eingabedialogfenster, diese sind aber umständlicher als die Palette zu erstellen, da die Elemente in einem Dialogfenster vom Programmierer platziert werden müssen, bei der Eingabepalette übernimmt diese Arbeit ein automatischer "Layoutmanager". Die Parameter können aber auch durch das Bewegen grafischer Handles modifiziert werden.

Die Nutzung der Eingabepalette durch Smartparts in Allplan ab der Version 2013 möglich. In der Palette wird das Platzieren der Eingabefelder von einem "Layoutmanager" übernommen, d.h. die Felder können nicht mehr willkürlich platziert werden, das hat aber auch den Vorteil, dass Dialoge viel einfacher und schneller gestaltet werden können. Jedes I_INFIELD wird in einer eigene Zeile der Palette angeordnet. Die erste Spalte zeigt die dem Parameter zugeordnete Beschreibung, die zweite Spalte enthält das Eingbefeld. Die angegebene Position und Breite wird dabei ignoriert.

I_PALETTE

Mit I_PALETTE wird die Eingabepalette initialisiert.

I_PALETTE title [, flag[, str1, str2, str3, str4, str5, str6]]

title: Bezeichnung der Palette
flags: j1 + j2 + j3
  • j1 = 0|1 Palette hat einen Infodialog
  • j2 = 0|2 zeige den Standard Nemetschek Infodialog, aber nur wenn j1=0 ist
  • j3 = 0|4 "OK" und "Abbrechen" Buttons anzeigen, hat aber keine Wirkung, beide Buttons werden immer angezeigt
str1 ... str6: Zeichenketten die in den "Zellen" des Infodialogs angezeigt werden. "pict=..." referenziertes Bild anzeigen; mit "link=http://www.tzbm.at TZBM" wird ein Button, der mit "TZBM" beschriftet ist und beim Anklicken den Link "http://www.tzbm.at" im Webbrowser öffnet, erzeugt. Der Dialog zeigt 3 Zeilen mit jeweils 2 Spalten, str1 + str2 bilden dabei die 1. Zeile usw., auch mehrzeiliger Text ist möglich:

I_PALETTE "Titel" , 1, "Feld 1 mit
einer 2. Zeile", "Feld 2"

I_PAGE

I_PAGE name erstellt eine neu Unterseite, anwählbar durch die seitlich angebrachten Karteireiter, das erste I_PAGE vor der ersten Eingabefelddefinition, bestimmt den Namen der ersten Unterseite. I_CURRENT_PAGE index funktioniert in der Palette anscheinend nicht, damit kann in Dialogen die aktuell anzuzeigende Unterseite bestimmt werden.

I_SECTION

I_SECTION name erstellt eine ein- und ausklappbaren Abschnitt innerhalb einer Palettenseite. Ein Abschnitt wird durch I_SECTION_END oder I_SECTION "" abgeschlossen.

I_ROW

I_ROW name, flags definiert eine Zeile innerhalb der Palette. Alle nachfolgenden Eingabefelder werden innerhalb dieser Zeile platziert, bis die Zeile mit I_ROW_END oder I_ROW "" geschlossen wird. Wenn mehr als ein Eingabefeld angegeben wird, wird der Platz proportional zu den Eingabefeldbreiten aufgeteilt. Die Standard Zeilenhöhe in Allplan 2013 beträgt "geschätzt" 22 Pixel.

name: Name der Zeile, wird als erstes Feld angezeigt
flags: 0 = [Name | Feld1, Feld2,...] 1 = [Feld1, Feld2, ...]

I_INFIELD

I_INFIELD definiert eine Eingabefeld.

I_INFIELD "name", x, y, width, height [I_TOOLTIP "text"]

name: ist der zugehörige Parametername in Anführungszeichen, also als String, als Feldname wird die Parameterbeschreibung verwendet.
x, y: haben in der Palette keine Funktion, da das Layout automatisch erstellt wird.
width: Feldbreite, funktioniert aber nur innerhalb von I_ROW
height: Feldhöhe, funktioniert aber nur innerhalb von I_ROW
[I_TOOLTIP "text"] wird angezeigt, wenn sich der Mauszeiger über dem Eingabefeld befindet.

Obwohl x, y, width, height praktisch keine Bedeutung haben, müssen aber alle 4 Werte angegeben werden z.B.: I_INFIELD "ref_x", 0, 0, 0, 0 I_TOOLTIP "Objektlänge in Metern eingeben"

I_INFIELD_2

I_INFIELD_2 funktioniert gleich wie I_INFIELD, nur das der Parameter nicht in Anführungszeichen angegeben wird, braucht man wenn einzelne Feldelemente als Parameter genutzt werden sollen z.B.:

I_INFIELD_2 A[1], 0, 0, 0, 0 I_TOOLTIP "Das 1. Element des Feldes A[]"

I_PICT

I_PICT fügt eine Grafik ein, entweder eine als Ressource angefügte Datei oder als "abhängige Datei", wobei ich eine Einbindung per "abhängiger Datei" nicht zusammengebracht habe. Eingefügte Ressource sind für die Weitergabe der Smartparts auch der sicherste und einfachste Weg, da alles in der *.smt Datei gespeichert wird. Man kann aber auf die Grafiken, die mit Allplan ausgeliefert werden zurückgreifen, zB. "param01.png" ... "param13.png" = Zahl im Kreis. I_PICT funktioniert nur innerhalb von I_ROW.

I_PICT expression, x, y [,width, height [,mask]] [I_TOOLTIP tooltiptext]

expression: Name oder Index der Bildressource
x, y: haben in der Palette keine Funktion, da das Layout automatisch erstellt wird, müssen aber angegeben werden.
width, height: Bildbreite, Bildhöhe skaliert das Bild, wenn width oder height größer als der original Wert ist, Werte kleiner als die original Werte haben kein Auswirkung, beide Werte können weggelassen werden.
mask: ist laut Dokumentation immer 0, original Bildgröße und Seitenverhältnis wird ignoriert? Egal hat sowieso keine Auswirkung.
[I_TOOLTIP "text"] wird angezeigt, wenn sich der Mauszeiger über dem Eingabefeld befindet.

Die einfachste Form lautet also I_PICT "name.png", 0, 0. Bilder können mit vorangestellten I_INFIELD verwendet werden, um zB. eine Hinweisgrafik wie in den Allplan Smartparts, eine Zahl im Kreis, darzustellen oder ohne I_INFIELD zB. um einfach nur erklärende Grafiken einzubinden.

Beispiel: Eingabefeld mit Hinweisgrafik (Zahl 1 im Kreis)

I_ROW "Bauteillänge", 0
I_INFIELD "ref_x", 0, 0, 50, 22
I_PICT "param01.png", 0, 0
I_ROW_END

Beispiel: ohne Eingabefeld, nur Grafik

I_ROW "Die große EINS", 1 ! flags = 1 : nur die Grafik wird angezeigt
I_PICT "param01.png", 0, 0, 100, 100 ! skaliert auf 100x100
I_ROW_END

I_RADIOBUTTON

Mit I_RADIOBUTTON kann man für einen Parameter mehrere Werte als auswählbare Punkte + Bescheibung anzeigen.

I_RADIOBUTTON name, value, text, x, y, width, height

name: Name des Parameters als Text, zB. "ref_x"
value: Werte der dem Parameter zugewiesen wird, wenn dieser Punkt ausgewählt wird
text: Beschreibung des Punktes
x, y: haben keine Auswikung in der Palette, müssen aber angegeben werden
width, heigth: Breite und Höhe, haben nur innerhalb von I_ROW einen Auswirkung

Normalerweise werden die einzelnen Punkte untereinander dargestellt, man kann mehrere Punkte aber auch in eine I_ROW packen, dort werden die Punkte nebeneinander angezeigt, dafür müssen die Argumente width und height zwingend mit gültigen Werten belegt werden.

I_BUTTON

Der Typ I_FUNCTION funktioniert, aber nur innerhalb von I_ROW...

I_PICT_BUTTON

Der Typ I_FUNCTION funktioniert, aber nur innerhalb von I_ROW...

Palette des Smartparts Spline2
Abbildung 1
Palette von  Spline2.smt