Hallo zusammen.
Mein Ziel ist es mit einem PythonPart (PP) mehrere Attribute mit entsprechenden Attribut-Werten an bereits existierende Elemente (Stützen, Decken, Wände, 3D-Körper etc.) anzuhängen. Dafür benötigt man anscheinend einen Interactor. Einen solchen „TestInteractor“ habe ich aus dem PythonPart-Beispiel \LinesFromFileInteractor.py bzw. \...pyp abgeleitet. Die Allplan PythonParts Dokumentation verweist ebenfalls auf dieses Beispiel (die erste von zwei Methoden einen Interactor umzusetzen).
Zur Benutzung (siehe Bild 1 Anhang):
Mit Start des PP in Allplan soll zuerst der Attribut-Wert in ein Textfeld eingetragen werden (1 Expander). Anschließend kann das entsprechende Attribut ausgewählt werden (2 Expander). Beispielhaft habe ich das Attribut Langtext (Attribut- ID: 208) voreingestellt. Abschließend kann nach Auswahl eines Objektes/Elementes ein Button gedrückt werden der das Attribut + Attribut-Wert anhängt (3 Expander). Der Interactor startet mit dem PP und wird mit diesem beendet. Das PP soll so eine mehrmalige Ausführung ermöglichen, d.h. es sollen immer wieder Attribute an verschiedene Bauteile angehängt werden können.
Konkrete Problemstellung (siehe Bild 2 Anhang):
In meiner TestInteractor.py – Datei habe ich in der Klasse InteractorTest die Methoden (neben den notwendigen Standard-Methoden eines Interactors) „create_attibute_list“ welche das jeweilige Attribut einschließlich Wert (als Liste) zurückrück gibt und die Methode „on_control_event“ die bei der event-id des Buttons aktiv wird. Mein Ansatz ist mit der Attribut-Liste und eventuell mit der ElementUUID des Objektes die Attribute anzuhängen. Aber hier fehlen mir die notwendigen Befehle… bisher sind meine Versuche fehlgeschlagen.
Hat jemand ein ähnliches PythonPart schonmal erstellt und kann mir helfen oder auf ein Beispiel aus den PythonPartsExampleScripts verweisen welches ähnlich ist?
Das PP habe ich angehängt bzw. das .py-Skript im .txt-Format. Das PythonPart funktioniert aber nur in Allplan 2022. Mit dem Framework bzw. der API kenne ich mich nicht gut aus und Programmierer bin ich auch nicht also wäre ich über jede Hilfe und jeden Tipp sehr dankbar. Wenn mein Ansatz bzw. das gesamte Vorhaben zum scheitern verurteilt sind bitte auch kurz Bescheid geben.
Danke im Voraus.