Hallo Martin,
zunächst würd mich interessieren, welches Format das Beschriftungsbild hat.
Ich vermute mal numerisch mit Einheit "m²".
Deshalb mach es keinen Sinn, als Alternativ-Wert im _ELSE_-Zweig ein "-" zurückzugeben!
2. Problem:
CHILD() sollte immer nur direkt am Attribut gebraucht werden.
Statt
CHILD(_IF_(@504@="BÜRO")ROUND(@224@;2)_ELSE_"-")
sollte man besser
_IF_(CHILD(@504@)="BÜRO")ROUND(CHILD(@224@);2)_ELSE_0
schreiben.
Die Annahme, das CHILD(Formel) diese Formel für jedes einzelne Unterobjekt ausführt, ist ein Irrglaube.
Und damit sind wir beim eigentlichen Problem:
CHILD() liefert immer eine Summe aller "Kinder" (sollte also besser CHILDS() heissen)
Bei Text-Attributen sind das die einzelnen Texte mit "/" verbunden:
CHILD(@504@) würde also bei Dir z.B. "BÜRO/BÜRO/MITTELZONE" zurückliefern.
Bei Numerischen Attributen liefert es die Summe der Werte zurück.
In Deiner Abfrage _IF_(@504@="BÜRO") wird also immer nur der Text4 des ersten Raumes in der Gruppe verglichen. Schon wenn Du die Reihenfolge der Räume in Deiner Gruppe änderst, kommt etwas anderes raus!
Deswegen funktionieren die Abfragen
_IF_(@504@="BÜRO") und _IF_(@504@="MITTELZONE") nur alternativ, da an der ersten Stelle in der "Summenliste" (BÜRO/BÜRO/MITTELZONE) nur immer eines von beiden stehen kann.
Workaround:
Ich würde die Beschriftung mit einer Legende machen.
Dort kann man Räume nach beliebigen Kriterien (Attribute) aufsummieren lassen.
Aus Ausgangspunkt würde ich die Legende "Grundfläche Räume" nehmen, und diese ggf. entspr. anpassen.
@Allplan
Ein Zugriff auf einzelne "Kindelemente" (wie bei MT_BODEN auf die Schichten) wäre sinnvoll.
CHILD(@504@;1) liefert das Attribut 504 des ersten Kind-Elements usw.
CHILD(@504@;1;2) liefert die Attribute 504 des 1. und 2.Kind-Elements usw.
CHILD(@504@;-1) liefert die Attribute 504 des letzten Kind-Elements
CHILD(@504@;0) liefert die Attribute 504 aller Kind-Elemente
Zusätzlich wäre noch CHILD_COUNT() hilfreich.