[Frage] Liste erstellen [Gelöst]

Schlagworte:
  • Allplan 2021-0-7

Hallo,

ich hätte gerne in der Palette des Scriptes eine Auswahlmöglichkeit zur Festlegung der Betongüte eines Objektes.
Die erforderliche Liste bzw. die Listeneinträge würde ich gerne selber erstellen.
Bezüglich Palette hätte ich den Note "TableRowSelection" gefunden, welcher mir die Anzeige eines Dropdown-Menüs in der Palette ermöglicht.
Welches Dateiformat benötigt das Listen-File welches unter dem Punkt "FileName" zu verlinken ist?
Benötigt das File eine spezielle Formatierung oder reicht ein Eintrag pro Zeile als Listenelement?

Gibt es evtl. auch die Möglichkeit eine Liste innerhalb des Scriptes zu erstellen, also ohne Referenz auf ein externes File?

Grüße,
Mario

Lösung anzeigen Lösung verbergen

Hallo Mario,

ich habe den Fehler beim Überschreiben der Listenwerte und beim Öffnen des PP durch einen Doppelklick behoben, die neuen Dateien habe ich angehängt (BuildingElementParameterPropertyUtil.py bitte nach ...\etc\PythonPartsFramework\GeneralScripts kopieren).

Falls Du das größere Skript, das sich aufhängt, noch hast, sende es mit bitte zur Fehleranalyse zu.

Vielen Grüße
Horst

Anhänge (2)

Typ: application/zip
1020-mal heruntergeladen
Größe: 726,00 B
Typ: application/zip
925-mal heruntergeladen
Größe: 2,95 KiB
1 - 10 (14)

Hallo Mario,

leider ist in VS momentan nicht einfach eine Liste zu erstellen. Wenn ich richtig verstehe, könnte der Node "RadioButtonGroup" hier eine Lösung sein. Er bietet eine Auswahlmöglichkeit aus einer Liste mit max. 6 Einträge und liefert den Index des Eintrags zurück.

Der Node "TableRowSelection" ist für Datei-Einlesen aus Tabelle gedacht, und ist nicht wie Sie vorgestellt haben.

Product Owner API, Allplan GmbH

Anhänge (1)

Typ: image/png
65-mal heruntergeladen
Größe: 23,50 KiB

Hallo Xinling,

danke für die Rückmeldung.
Da ich auch keinen Node finden konnte mit dem man eine Liste direkt im VS erstellen kann, habe ich es vorerst mal eben über "TableRowSelection" mit einer externen .csv Datei gelöst.
Da es aber auch keine Dokumentation darüber gibt wie die .csv Datei formatiert sein muss war dies auch eine längere "trial and error" Aufgabe...
Schöner wäre es natürlich das ganze Script-Intern zu lösen, gebe mich aber vorerst mal mit der Lösung über das externe .csv-File zufrieden.

Die "RadioButtonGroup" hatte ich mir auch angesehen, jedoch sind mir 6 Einträge zu wenig und auch das Handling in der Palette ist über das Drop-Down Menü im Node "TableRowSelection" benutzerfreundlicher gelöst.

Grüße,
Mario

Hallo Mario,

in Allplan 2021-1-1 wird es neue Nodes für ComboBox-Steuerelemente geben.

Die Listen dieser Elemente können über andere Nodes gefüllt werden. Ich habe die neuen Nodes und ein Beispiel für die Erstellung der Auswahllisten angehängt. Wenn Du Zeit und Lust hast, kannst Du sie ausprobieren. Die Nodes müssen in das Verzeichnis ...\etc\VisualScripts\InputControls\ComboBox kopiert werden.

Viele Grüße
Horst

Anhänge (2)

Typ: application/zip
866-mal heruntergeladen
Größe: 9,59 KiB
Typ: application/zip
954-mal heruntergeladen
Größe: 1,92 KiB

Hallo Horst,

danke für die neuen Nodes, werde ich gleich mal testen!

Grüße,
Mario

Hallo Horst,

da ich eine (Text-)Liste mit Betongüten erstellen wollte hab mir die StringComboBox angesehen.
Wenn ich es richtig verstanden habe wird die Liste über die Eingabefelder in der Palette befüllt, welche verschwinden wenn man die Sichtbarkeit von "ListLength" & "Strings" deaktiviert. Übrig bleibt dann das Drop-Down-Menü der "StringComboBox" in der Palette mit den definierten Listeneinträgen.
Durch die "IsVisible" und "IsEnabled" kann man dann das ganze auch noch verschachteln bzw. an Bedingungen knüpfen.
Gefällt mir schon mal sehr gut! Danke!

Aber noch eine Frage zum Node "ListStringInput" Input-Node "Strings":
Wie ist dieser zu verwenden?

Hab mal versucht hier den Node "StringInput" anzuhängen:
Wenn ich das mache wird jedoch für jedes Zeichen im Node "StingInput" ein neuer Listeneintrag erstellt.(siehe Anhang)

Alternativ zur Eingabe über die Palette fände ich es praktisch wenn eine Liste (wobei die Listeneinträge wie üblich durch ein Trennzeichen z.B.: Beistriche getrennt werden) auch einfach mit Strg+C und Strg+V in einen "StringInput" Node oder ein anderes Eingabefeld kopiert und an "Strings" oder auch direkt an "StringList" der "StringComboBox" angebunden werden kann.

Grüße,
Mario

Anhänge (2)

Typ: image/jpeg
66-mal heruntergeladen
Größe: 52,60 KiB
Typ: image/jpeg
42-mal heruntergeladen
Größe: 24,51 KiB

Hallo Horst,

bei der StringComboBox gibt der Outputport vom "String" leider keinen weiterverwendbaren String aus.
Somit lässt sich der in Drop Down Menü ausgewählte Listeneintrag zwar in der Palette anzeigen, jedoch kann ich diesen im Scrip nicht weiterverwenden/verbinden. (Prüfung durchführen, als Parameter aufs Python-Part schreiben...usw.)

Gruß,
Mario

Hallo Mario,

mit welchem Node möchtest Du "String" verbinden? Ich muss diese Verbindung noch zulassen.

Viele Grüße
Horst

Hallo Horst,

wie weiter oben beschrieben habe ich bisher den Node "TableRowSelection" für die Listenerstellung verwendet.
Dort konnte ich am Outputport von "SelectedEntry" die Nodes

- SetValueToAttribute
- OperatorEqual

anbinden.

Glaube wenn man am Outputport "String" der StringComboBox die gleichen Verbindungen wie bei "SelectedEntry" zulässt, sollte es passen.

Grüße,
Mario

Hallo Mario,

hier sind die angepassten Nodes als Anhang, bitte in die entsprechenden ...\etc\VisualScripts\... Verzeichnisse kopieren.

Die "StringList" von "StringComboBox" kann jetzt auch über "StringInput" gefüllt werden. Dabei können durch Einfügen von "|" in den Text mehrere Listeneinträge erzeugt werden (siehe Beispiel ComboBoxes.pyp).

Vielen Dank für Deine Hilfe beim Testen.

Viele Grüße
Horst

Anhänge (3)

Typ: application/zip
973-mal heruntergeladen
Größe: 2,25 KiB
Typ: application/zip
891-mal heruntergeladen
Größe: 9,67 KiB
Typ: application/zip
862-mal heruntergeladen
Größe: 1,31 KiB
1 - 10 (14)