Support Forum

[Frage] Arbeit mit Bewehrungseisen - Positionsnummern und Geometrie

Schlagworte:
  • Python
  • ElementAdapter

Hallo zusammen,

ich arbeite gerade daran, aus eine verlegten Bewehrung verschiede Informationen rauszuziehen.
Ich nutze die Version 25 und selektiere über die MultiElementSelectInteractor mehrere Eisen.

Das funktioniert auch soweit, nun möchte ich verschiede Funktionen mit meinem selektierten Eisen in einer Schleife machen.

1. Ich möchte die Funktion GetPosition nutzen.
Hier scheitere ich allerdings daran, das Element als richtigen ElementAdapter einzugeben.

Ich habe erst naiv versucht das Element mit AllplanRebar.BarPositionData.GetPosition(ele) auszuwerten, was aber eben eine Fehlermeldung ausgibt. Daher habe ich nach dem passendem ElementAdapter gesucht und auch den Elementadapter BarsRepresentation_TypeUUID und BarsDefinition_TypeUUID genutzt. Daher meine Frage, wie arbeite ich mit der Bewehrung weiter, um daraus die Positionsnummer ziehen zu können.

2. Nun möchte ich eine MinMaxBox um das selektierte Eisen setzten um dann wiederum ein Polygon um das Eisen zu setzten.
Auch hier bekomme ich leider ein ElementAdapter Fehler.

Ich hoffe ich konnte mein Problem verständlich erklären, und würde mich über Hilfe freuen. Im Anhang ist die .py File.

Die Grundlage des Scripts ist von Bart basierend auf diesem Post von mir

Gruss Sebastian

Anhänge (1)

Typ: application/zip
100-mal heruntergeladen
Größe: 1,83 KiB

Hallo Sebastian,

ich würde an deiner Stelle beim MultiSelectInteractor den Filter setzen, dass nur BarsRepresentationLine_TypeUUID selektiert wird. Diese dann im Nachhinein inspizieren, indem du rekursiv die Parent-Elemente holst, bis du den BarsDefinition_TypeUUID erreichst. Diesen dann in eine separate BaseElementAdapterList packen - das ist die Liste aller von dir markierten Bewehrungspositionen. Dann kannst du die Positionsnummer, Anzahl, usw. mit BarPositionData auslesen.

Zu der anderen Frage: Ein Adapter des Typs BarsRepresentationLine_TypeUUID hat immer eine Geometrie von Polyline2D. Du kannst also von jedem Adapter die Polylinie holen, deren Punkte du in deine MinMax-Box addierst. Am Ende kannst du das Polygon aus der MinMax-Box holen, worum es dir vermutlich geht.

Im Anhang findest du ein Beispiel. Markiere ein paar Eisen im Grundriss oder in einem Schnitt. In Trace werden die Positionen ausgegeben und im Viewport wird ein Rechteck um sie gezeichnet.

Viele Grüße, Bart

Anhänge (1)

Typ: application/zip
78-mal heruntergeladen
Größe: 1,78 KiB