[Pregunta] Elemente aus Allplan per Python-API kopieren?

Etiquetas:
  • Python
  • BaseElementAdapter

ich würde gerne mittel Python-API Elemente analog dem Befehl «Kopieren und Einfügen» kopieren.
Jedoch möchte ich die Elemente gleichzeitig an mehrere Einfügepunkte kopieren.

Eine Selektion in Allplan liefert eine Liste mit Objekten vom Typ «BaseElementAdapter», welche aber nur Zugriff auf die «Geometry» sowie «CommonProperties» bieten. Auf die Farbe einer Füllfläche oder Nummer einer Schraffur/Muster/Stilfläche hat man jedoch keinen Zugriff. Somit ist es auch nicht möglich von diesen Elementen eine «genaue Kopie» zu erstellen.

Gibt es die Möglichkeit den «BaseElementAdapter» selbst, also das Element mit allen Eigenschaften, zu kopieren und in Allplan einzufügen?

Gruss und Dank
Hansruedi

Cita de: hrsommer
ich würde gerne mittel Python-API Elemente analog dem Befehl «Kopieren und Einfügen» kopieren.

Jedoch möchte ich die Elemente gleichzeitig an mehrere Einfügepunkte kopieren.
Eine Selektion in Allplan liefert eine Liste mit Objekten vom Typ «BaseElementAdapter», welche aber nur Zugriff auf die «Geometry» sowie «CommonProperties» bieten. Auf die Farbe einer Füllfläche oder Nummer einer Schraffur/Muster/Stilfläche hat man jedoch keinen Zugriff. Somit ist es auch nicht möglich von diesen Elementen eine «genaue Kopie» zu erstellen.
Gibt es die Möglichkeit den «BaseElementAdapter» selbst, also das Element mit allen Eigenschaften, zu kopieren und in Allplan einzufügen?
Gruss und Dank

Hansruedi


Ich glaube, dass Die Funktion, nach der Sie suchen heißt
NemAll_Python_BaseElements.GetElements(element_list: BaseElementAdapterList) -> list[NemAll_Python_BasisElements.AllplanElement] 

Wenn Sie 3D-Körper kopieren möchten, bekommen Sie als Ergebnis das ModelElement3D. Von dem können Sie dann die Geometrie entnehmen (AllplanElement.GetGeometryObject), die Translation vornehmen und wieder an das AllplanElement zurückgeben (AllplanElement.SetGeometryObject). Wenn Sie kopieren möchten, erstellen sie davor eine neue Instanz des Objekts ModelElement3D über den copy constructor und weisen sie die Geometrie an diese zu. So müssten alle Eigenschaften des Objekts, außer Geometrie, kopiert werden und somit erhalten bleiben.

Hallo

leider erhalte ich mit der Funktion «NemAll_Python_BaseElements.GetElements» nur Objekte der Klassen «ModelElement2D» und «ModelElement3D».
Somit keine Füllflächen, Muster, Schraffuren, Texte, Masslinien oder Symbolpunkte.

Das zweite Problem ist, dass die mit dem Copy constructor kopierten Objekt der Klassen ModelElement2D/ModelElement3D immer noch auf das Original-Element in Allplan verweisen.
Beim Erzeugen der Elemente in Allplan mittels «NemAll_Python_BaseElements.CreateElements» werden die Original-Elemente an die letzten Einfügepunkt verschoben. Neue Elemente bzw. Kopien werden nicht erzeugt. Obwohl diese in der übergebenen «model_ele_list» vorhanden sind.
Wie kann mann eine unabhängige Kopie erzeugen?

Hallo,

die Kopier-Funktionalität wird spätestens in Allplan 2023-0-7 vorhanden sein (evtl. schon in 2023-0-6).

Viele Grüße
Horst

Hallo,

2023-0-7 ist raus, gibt es Dokumentation zur Kopierfunktion?

Hallo,

die Kopier-Funktionalität kommt erst mit dem nächsten Update Allplan 2023-1-0, was zum Zeitpunkt meiner Mitteilung die 2023-0-7 war.

Die Versionsnummern für unsere Entwicklung haben sich leider um eine Versionsnummer nach hinten verschoben, da wir eine Zwischenversion veröffentlichen mussten.

Viele Grüße
Horst

Ok das wäre Super!