[Frage] Verschachtelte IF Bedingung im Beschriftungsbild als Problem [Gelöst]


Hallo zusammen,

auf unseren Plänen wollen wir in einem Raumgruppenstempel u.a. unterschiedliche Flächenangaben zu den Räumen der Raumgruppe ausgeben.
Die Formel soll zwei errechnete Werte miteinander vergleichen und dann entweder die eine oder die andere Summe bilden. Zum besseren Verständnis versuche ich das mal aufzugliedern:

(A) Fläche der Freisitze als 50%-Angabe:
CHILD(_IF_(@506@="FS*")((ROUND(@224@;2))*0.5)_ELSE_(0))

(B) Fläche der Räume ohne Freisitze
CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2)))_ELSE_(0))

(C) Fläche der Räume ohne Freisitze als 10%-Angabe:
CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2))*0.1)_ELSE_(0))

Was die Formel machen soll ist folgendes:
Wenn (A)<(C) dann (B)+(A) ansonsten (B)+(C)

Da die Formel für das Beschriftungsbild mit dem Runden zu lang war (offenbar max. 254 Zeichen!!) hab ich das rausgekürzt und sieht jetzt so aus:

CHILD
(_IF_
(
(_IF_(@506@="FS*")(@224@*0.5)_ELSE_0)
<
(_IF_(@506@<>"FS*")(@224@*0.1)_ELSE_0)
)

(
(_IF_(@506@<>"FS*")(@224@)_ELSE_0)
+
(_IF_(@506@="FS*")(@224@*0.5)_ELSE_0)
)
_ELSE_
(
(_IF_(@506@<>"FS*")(@224@)_ELSE_0)
+
(_IF_(@506@<>"FS*")(@224@*0.1)_ELSE_0)
)
)

Das Problem ist: die Einzelteile funktionieren wunderbar, alles zusammen gibt mir nur (B) als Ergebnis aus und ist damit falsch. Ich hab irgendwie das Gefühl daß Allplan bei einer verschachtelten IF Bedingung streikt.
Woran kann das liegen? Habt ihr vielleicht eine Idee.

Großes Danke schonmal im Voraus!

Lösung anzeigen Lösung verbergen

verschachtelte formeln sind nicht das problem für allplan. die länge ist bei 254 zeichen begrenzt, das ist korrekt.

hier ist eher die umklammerung mit dem child() falsch angesetzt. so wie ich den ansatz kapiere sollen die ergebnisse der summen verglichen werden und anhand der ergebnisse eine summe gebildet werden.

damit müsste es vom system eher so sein:

_IF_( Formel A < Formel C) B+A_ELSE_B+C

_IF_(CHILD(_IF_(@506@="FS*")((ROUND(@224@;2))*0.5)_ELSE_(0))<CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2))*0.1)_ELSE_(0)))CHILD(_IF_(@506@="FS*")((ROUND(@224@;2))*0.5)_ELSE_(0))+CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2)))_ELSE_(0))_ELSE_
CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2)))_ELSE_(0))+CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2))*0.1)_ELSE_(0))

Allerdings hat diese formel dann 342 zeichen und geht nicht.

damit müsste man das auf zwei aufteilen...
_IF_(CHILD(_IF_(@506@="FS*")((ROUND(@224@;2))*0.5)_ELSE_(0))<CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2))*0.1)_ELSE_(0)))CHILD(_IF_(@506@="FS*")((ROUND(@224@;2))*0.5)_ELSE_(0))+CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2)))_ELSE_(0))_ELSE_0
und
_IF_(CHILD(_IF_(@506@="FS*")((ROUND(@224@;2))*0.5)_ELSE_(0))<CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2))*0.1)_ELSE_(0)))0_ELSE_
CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2)))_ELSE_(0))+CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2))*0.1)_ELSE_(0))

jeweils kommt für den einen fall dann null raus. die beiden formeln jeweils im textbild abgesetzt und mit der funktion zum null ausblenden versehen und übereinandergeschoben müsste ein ergebnis bringen.

Namenlos gezeichnet in vollem Bewusstsein - ignorant, in eigen Augen vermutlich höflich, dennoch unhöflichst, unfreundlichst wer einen/viele vermutete - sich von alters erschließende Namen nennt.
08.01.2024 - Gegen Bauernsperren! -> Boykott der direktverkaufenden Bauern - kauft nicht mehr direkt bei Bauern!

verschachtelte formeln sind nicht das problem für allplan. die länge ist bei 254 zeichen begrenzt, das ist korrekt.

hier ist eher die umklammerung mit dem child() falsch angesetzt. so wie ich den ansatz kapiere sollen die ergebnisse der summen verglichen werden und anhand der ergebnisse eine summe gebildet werden.

damit müsste es vom system eher so sein:

_IF_( Formel A < Formel C) B+A_ELSE_B+C

_IF_(CHILD(_IF_(@506@="FS*")((ROUND(@224@;2))*0.5)_ELSE_(0))<CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2))*0.1)_ELSE_(0)))CHILD(_IF_(@506@="FS*")((ROUND(@224@;2))*0.5)_ELSE_(0))+CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2)))_ELSE_(0))_ELSE_
CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2)))_ELSE_(0))+CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2))*0.1)_ELSE_(0))

Allerdings hat diese formel dann 342 zeichen und geht nicht.

damit müsste man das auf zwei aufteilen...
_IF_(CHILD(_IF_(@506@="FS*")((ROUND(@224@;2))*0.5)_ELSE_(0))<CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2))*0.1)_ELSE_(0)))CHILD(_IF_(@506@="FS*")((ROUND(@224@;2))*0.5)_ELSE_(0))+CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2)))_ELSE_(0))_ELSE_0
und
_IF_(CHILD(_IF_(@506@="FS*")((ROUND(@224@;2))*0.5)_ELSE_(0))<CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2))*0.1)_ELSE_(0)))0_ELSE_
CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2)))_ELSE_(0))+CHILD(_IF_(@506@<>"FS*")((ROUND(@224@;2))*0.1)_ELSE_(0))

jeweils kommt für den einen fall dann null raus. die beiden formeln jeweils im textbild abgesetzt und mit der funktion zum null ausblenden versehen und übereinandergeschoben müsste ein ergebnis bringen.

Namenlos gezeichnet in vollem Bewusstsein - ignorant, in eigen Augen vermutlich höflich, dennoch unhöflichst, unfreundlichst wer einen/viele vermutete - sich von alters erschließende Namen nennt.
08.01.2024 - Gegen Bauernsperren! -> Boykott der direktverkaufenden Bauern - kauft nicht mehr direkt bei Bauern!

Prima, dank Dir.
Ich hatte die einzelnen "Childs" rausgekürzt um den Code kürzer zu bekommen. Das hat aber offensichtlich noch mehr verändert. Jetzt mit der Aufteilung auf 2 Fomreln hat's geklappt!


Verwendung von Cookies:
Um die Webseite optimal gestalten und fortlaufend verbessern zu können, verwendet Allplan Cookies.
Durch die weitere Nutzung der Webseite erklären Sie sich mit der Verwendung von Cookies einverstanden.  -  Mehr Informationen

Schließen