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
179-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
156-mal heruntergeladen
Größe: 1,78 KiB

Zitiert von: bmarciniec
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

Hallo Bart,

ich habe mich mal dran gesetzt und es will leider nicht wirklich funktinieren, zumindest, mit der MinMax Box. Ich habe sehr viel aus deinem Code übernommen, leider wird bei mir keine Box erzeugt. Zudem bekomme ich keine Fehlermeldung. Also vermute ich, dass er versucht einen Polygon aus einer leeren Polygonliste zu erstellen.

Ich habe mal im Anhang meine .py file angehängt und hoffe, du kannst mir sagen, warum keine MinMax Box kreiert wird. Ich bekomme es leider nicht raus.

Gruss Sebastian

Anhänge (1)

Typ: application/zip
36-mal heruntergeladen
Größe: 2,42 KiB