Hallo zusammen,

ich versuche das Verpositionieren von Bewehrung über die Python API zu automatisieren. Das Ziel: ein Visual Script, in dem ich pro Layer eine Startnummer definieren kann, z.B.:

- Lage 1 → Startnummer 101
- Lage 2 → Startnummer 201
- Zulagen → Startnummer 501
- usw.

Das Script soll die selektierte Bewehrung nach Layer gruppieren und dann innerhalb jeder Gruppe verpositionieren – gleiche Formen bekommen die gleiche Nummer, verschiedene Formen die nächste freie ab der Startnummer.

Als parameter für das Skript hätte ich pro gruppe ein Layer und eine startnummer angegeben.

Ich arbeite mit Allplan 2025 und Visual Scripting (ExecPythonScript Nodes oder custom nodes).

Was ich bisher versucht habe:

1) ModifyElements + SetPositionNumber
BarPlacement auslesen via GetElements(), SetPositionNumber() aufrufen, mit ModifyElements() zurückschreiben. Ergebnis: ModifyElements meldet Erfolg, aber die Positionsnummer in Allplan ändert sich nicht.

2) DeleteElements + CreateElements mit gewünschter PosNr
Bestehende Verlegung löschen, neue mit gleichen Daten und neuer Positionsnummer erstellen (appendReinfPosNr=False). Ergebnis: Funktioniert für einzelne Verlegungen. Aber wenn mehrere Verlegungen die gleiche Form haben und die gleiche Nummer bekommen sollen, vergibt CreateElements trotzdem unterschiedliche Nummern. (auch wenn die die Position der zwei verlegungen vor dem skript gleich sind)

3) CreateElements mit appendReinfPosNr=True
Allplan vergibt komplett eigene Nummern und ignoriert die gesetzte Positionsnummer.

4) ReinforcementRearrange
Funktioniert nur innerhalb von PythonPartTransaction.execute() – also nur beim Erstellen von PythonParts, nicht für bestehende normale Bewehrung.

Die Grundlagen funktionieren: BarPlacement lesen, Positionsnummer auslesen (ReinforcementPropertiesReader), Bewehrung löschen und neu erstellen an der richtigen Position. Nur das Zuweisen der gleichen Positionsnummer an mehrere Verlegungen mit gleicher Form scheitert.

das eigentliche ziel ist es die normale manuelle Verpositionieren Funktion zu automatisieren, mein jetztiger ablauf ist eigentlich immer gleich, alles auf 9001 verpositionieren und dann jeden layer einzeln einschalten und nochmals mit der richtigen startnummer verpositionieren

ich hätte kein problem damit zuerst normal alles zu verpositionieren, das heist das tool mus gleiche formen nicht umbedingt zusammenfassen aber verschiedene verlegungen mit der gleichen positionsnummer müssten nach dem skript immer noch die gleiche position haben.

Hat jemand eine Idee wie man das lösen könnte? Gibt es vielleicht eine API-Funktion die ich übersehen habe, oder einen anderen Ansatz?

Danke im Voraus!