Forum de la communauté Allplan

[Question] Node CreateObject - Objekte mit VS erstellen

Balises:
  • Allplan 2021-1-9

Hallo Horst,

du hast in einem anderen Beitrag geschrieben, dass man mit dem Node "CreateObject" anstatt PythonParts, "Objekte" durch ein VS Script erstellen kann und hast auf das VS Beispiel "ColumnInput" verwiesen.
Funktioniert das nur mit bestimmten Elementen?

Ich würde gerne zusätzlich zu dem durch ein Script erstelltes PythonPart, eine einzelne 3D Linie, eben als 3D Linie im Teilbild, entkoppelt vom Python Part erstellen. (Das Ergebnis sollte also ein PythonPart und eine 3D-Linie als 3D-Linien-Objekt sein)
Lässt sich das irgendwie bewerkstelligen?
Mit "CreateObject" hat das bei mir nicht funktioniert.

(Mein Workaround ist aktuell das erstellte PP zu kopieren, mittels "Makro auflösen" zu zerlegen und anschließend alles bis auf die gewünschte 3D-Linie zu löschen...)

Grüße,
Mario

Show most helpful answer Hide most helpful answer

Obacht! Wenn das PythonPart ein neues Element erstellt, tut es das immer, auch wenn es nur "modifiziert" wird. D.h. jeder Doppelklick links zum Modifizieren erzeugt immer wieder neue Elemente!

Das kann nicht so gewollt sein, oder?

Besser wäre es, wenn das PythonPart nur der "Modifikator" der Elemente ist, und selbst nur eine Dummy-Darstellung produziert.
Der Pythonpart-Modifikator würde aber seine "Kinder" kennen (ob über Verknüpfung (OwendObjects) oder über UUID-Adresse), und diese auch modifizieren können.

Ein schönes, einfaches Beispiel wäre ein "Verteilen"-Modifikator. Dieser hätte eine 2D-Linie als Darstellung, und würde die zugeordneten Element (z.B. Stützen) in gleichem Abstand auf dieser Linie platzieren. Bei ersten Mal durch einfaches Kopieren der Ausgangsstütze, beim Modifizieren durch Verschieben der dann schon verhandenen Stützen!
Man könnte beim Modifikator dann Linielänge/ -lage und Anzahl ändern, und die Stützen würden entspr. neu ausgerichtet! Und das auch, wenn der Anwender z.B. die 3. Stütze schon in eine runde Stütze gewandelt hat und bei der 4. Stütze die Höhe geändert wurde. Noch besser kann man sich das sicher mit verschiedenen Fenster-Öffnungen vorstellen, die anhand eines bestimmtes "Rhythmus" in der Wand angeordnet werden sollen.

Wenn man diesen Workflow irgendwann mal mit PythonParts abbilden kann, wäre das eine sehr hilfreiche Ergänzung für die Allplan-Funktionen! Die Modifikationen müssen dabei nicht auf die Position beschränkt bleiben.

Leider kann man mit der NOI nicht alle Architektur-Elemente "updaten", sonst hätte ich dafür schon längst ein Plugin programmiert!
Mal sehen, ob das mit PythonParts irgendwann möglich wird...

Hallo Mario,

wir haben dieses Thema in unsere Planung aufgenommen und werden spätestens zur Version 2021-1-11 ein Lösung anbieten, mit der man dann in einem Skript gleichzeitig PythonParts und 3D-Objekte erzeugen kann.

Diese Möglichkeit hat aber den Nachteil, dass das PythonPart und die 3D-Objekte aktuell nicht verbunden sind und damit die 3D-Objekte bei einer Korrektur des PythonParts nicht modifiziert werden können.

Welchen Workflow möchtest Du abbilden? Wäre eine Kopplung für Dich sinnvoll?

Viele Grüße
Horst

Hallo Horst,
gut funktionierende Kopplungsmöglichkeiten von Pythonparts finde ich generell wichtig, zb an die Ebenen oder wie beim Smart-Parts an leibungselemente in Fenstern.
Eine Kopplung an durch Pythonparts generierte native Allplan Elemente stelle ich mir herausfordernd vor.
Wenn das nicht geht, fände ich es wünschenswert, wenn eine Lösung ausgearbeitet wird, bei der sich das Pythonpart merkt welche Objekte es erzeugt hat und diese vom Pythonpart aus kontrolliert wieder ausgetauscht, gelöscht oder aktualisert werden können.
Herzliche Grüße
marek

czyborra klingbeil architekturwerkstatt - http://www.cka.berlin

Obacht! Wenn das PythonPart ein neues Element erstellt, tut es das immer, auch wenn es nur "modifiziert" wird. D.h. jeder Doppelklick links zum Modifizieren erzeugt immer wieder neue Elemente!

Das kann nicht so gewollt sein, oder?

Besser wäre es, wenn das PythonPart nur der "Modifikator" der Elemente ist, und selbst nur eine Dummy-Darstellung produziert.
Der Pythonpart-Modifikator würde aber seine "Kinder" kennen (ob über Verknüpfung (OwendObjects) oder über UUID-Adresse), und diese auch modifizieren können.

Ein schönes, einfaches Beispiel wäre ein "Verteilen"-Modifikator. Dieser hätte eine 2D-Linie als Darstellung, und würde die zugeordneten Element (z.B. Stützen) in gleichem Abstand auf dieser Linie platzieren. Bei ersten Mal durch einfaches Kopieren der Ausgangsstütze, beim Modifizieren durch Verschieben der dann schon verhandenen Stützen!
Man könnte beim Modifikator dann Linielänge/ -lage und Anzahl ändern, und die Stützen würden entspr. neu ausgerichtet! Und das auch, wenn der Anwender z.B. die 3. Stütze schon in eine runde Stütze gewandelt hat und bei der 4. Stütze die Höhe geändert wurde. Noch besser kann man sich das sicher mit verschiedenen Fenster-Öffnungen vorstellen, die anhand eines bestimmtes "Rhythmus" in der Wand angeordnet werden sollen.

Wenn man diesen Workflow irgendwann mal mit PythonParts abbilden kann, wäre das eine sehr hilfreiche Ergänzung für die Allplan-Funktionen! Die Modifikationen müssen dabei nicht auf die Position beschränkt bleiben.

Leider kann man mit der NOI nicht alle Architektur-Elemente "updaten", sonst hätte ich dafür schon längst ein Plugin programmiert!
Mal sehen, ob das mit PythonParts irgendwann möglich wird...