am 2023-11-28 12:15 PM
Die ISUNDEFINED Funktion ist nicht vollständig, fehlerhaft oder ihr fehlt ein pendant oder es fehlt eine ISDEFINED Funktion:
IF ( ISUNDEFINED ( {Property:Allgemeine Parameter/Baustoff} ); "-"; {Property:Allgemeine Parameter/Baustoff} )
Funktioniert nur bei einschichtigen Bauteilen. Bei mehrschichtigen ist "Baustoff" anscheinend nicht definiert und erzeugt eine Fehlermeldung. (Obwohl sich AC offensichtlich auch bei mehrschichtigen Bauteilen einen einschichtigen Baustoff intern merkt.) Die Eigenschaft "Baustoff(Alle)" gibt es bei der Berechnung nicht. Die gleiche Formel-Konstruktion mit einer individuell definierten Eigenschaft funktioniert problemlos.
Hat da jemand eine Lösung? Lukas vielleicht? 😏
Gelöst! Gehe zu Lösung.
2023-11-28 04:42 PM - bearbeitet 2023-11-28 04:42 PM
@Frank Beister schrieb:
IF ( ISUNDEFINED ( {Property:OTTO WULFF Eigenschaften/Material ID} ); {Property:Allgemeine Parameter/Baustoff}; {Property:OTTO WULFF Eigenschaften/Material ID} )
Das erzeugt aber ein undefiniertes Attribut bei mehrschichtigen Bauteilen, weil mehrschichtige eben "Baustoff" nicht kennen.
Erzeuge doch eine Kopie von der gleichen Formel direkt dadrunter und schreibe statt Baustoff → "-"
IF ( ISUNDEFINED ( {Property:OTTO WULFF Eigenschaften/Material ID} ); "-"; {Property:OTTO WULFF Eigenschaften/Material ID} )
Wenn er die erste Berechnung nicht durchführen kann, versucht er die zweite Berechnung. Ist ein Else If über Umwege
2023-11-28 02:08 PM - bearbeitet 2023-11-28 02:08 PM
Bin mir nicht ganz sicher, was du erreichen magst.
In beiden Beispielen sind je eine Einschicht-, Mehrschicht- und Profilwand ausgewählt.
Option 1: lehnt sich an deine Formel an. Du möchtest den Baustoff als Eigenschaft ausgeworfen haben, wenn es eine einschichtige Wand ist, ansonsten ein "-".
IFS ( {Property:Allgemeine Parameter/Struktur-Typ} = "Einfach"; {Property:Allgemeine Parameter/Baustoff} )
IFS ( {Property:Allgemeine Parameter/Struktur-Typ} <> "Einfach"; "-" )
Option 2: Du möchtest je nach Strukturtyp entweder den Baustoffnamen, den mehrschichtigen Bauteilnamen oder den Profilnamen ausgeben.
Von dort aus könntest du umständlich einen Übersetzer für die verschiedenen Mehrschichtigen Bauteil- und Profil-Namen schreiben, damit im Ergebnis dann das steht, was du brauchst.
IFS ( {Property:Allgemeine Parameter/Struktur-Typ} = "Einfach"; {Property:Allgemeine Parameter/Baustoff} )
IFS ( {Property:Allgemeine Parameter/Struktur-Typ} = "Profil"; {Property:Allgemeine Parameter/Profil} )
IFS ( {Property:Allgemeine Parameter/Struktur-Typ} = "Mehrschicht"; {Property:Allgemeine Parameter/Mehrschichtige Bauteile} )
@Frank Beister schrieb:
Bei mehrschichtigen ist "Baustoff" anscheinend nicht definiert und erzeugt eine Fehlermeldung. (Obwohl sich AC offensichtlich auch bei mehrschichtigen Bauteilen einen einschichtigen Baustoff intern merkt.)
Wie du sagst, intern merkt er sich das - u.a. schön beim Suchen & Aktivieren zu beobachten.
Bei der Interaktiven Auswertung wirft er mir bei Baustoff allerdings auch "---" für mehrschichtige und Profilwände aus.
am 2023-11-28 02:14 PM
Was ist das Ziel?
2023-11-28 04:08 PM - bearbeitet 2023-11-28 04:10 PM
Ich möchte in einem eigenen IFC-Parameter unsere Material-ID stehen haben:
ow_material
(Lassen wir mal das Problem weg, dass ich bei mehrschichtigen Bauteilen nicht in jeder Schicht den richtigen Baustoff einzeln stehen haben kann.)
Dieses Attribut gibt es auch als Archichad-Eigenschaft, die der Planer ausfüllen soll. Tut er dies nicht, hätte ich im IFC gerne den Baustoff in ow_material stehen. Eine schlechte Information ist manchmal besser als gar keine.
Da ich im IFC beim Mapping bei den Regeln aber keine Konditionen einstellen kann, (wieso eigentlich nicht), muss es vor dem Mapping bereits zusammengebastelt sein. Die Idee war eine weitere berechnete Eigenschaft anzulegen, die das per IF zusammenbaut:
IF ( ISUNDEFINED ( {Property:OTTO WULFF Eigenschaften/Material ID} ); {Property:Allgemeine Parameter/Baustoff}; {Property:OTTO WULFF Eigenschaften/Material ID} )
Das erzeugt aber ein undefiniertes Attribut bei mehrschichtigen Bauteilen, weil mehrschichtige eben "Baustoff" nicht kennen. Nun war die Idee zusätzlich zu prüfen, ob der Baustoff verfügbar ist und nur dann wird er ausgegeben. Jetzt gefällt AC aber bei der Formelprüfung generell nicht, dass im Ausgabefeld etwas steht, was nicht definiert ist. Auch wenn es per Kondition nicht ausgegebene wird. Und setzt dann lieber die Eigenschaft auf undefiniert.
2023-11-28 04:42 PM - bearbeitet 2023-11-28 04:42 PM
@Frank Beister schrieb:
IF ( ISUNDEFINED ( {Property:OTTO WULFF Eigenschaften/Material ID} ); {Property:Allgemeine Parameter/Baustoff}; {Property:OTTO WULFF Eigenschaften/Material ID} )
Das erzeugt aber ein undefiniertes Attribut bei mehrschichtigen Bauteilen, weil mehrschichtige eben "Baustoff" nicht kennen.
Erzeuge doch eine Kopie von der gleichen Formel direkt dadrunter und schreibe statt Baustoff → "-"
IF ( ISUNDEFINED ( {Property:OTTO WULFF Eigenschaften/Material ID} ); "-"; {Property:OTTO WULFF Eigenschaften/Material ID} )
Wenn er die erste Berechnung nicht durchführen kann, versucht er die zweite Berechnung. Ist ein Else If über Umwege
am 2023-11-29 09:13 AM
Super, Danke, so funktioniert es. Ich hatte das mit 2 Regeln und verschiedenen Konstellationen auch probiert, aber offensichtlich nicht die richtige durchgeprüft.
Es bleibt aber, dass ich mehrschichtige Bauteile, die nicht unser Attribut bekommen haben nicht mit einem (kumulierten) "Baustoff (alle)" versehen kann. Eine der vielen nickeligen Inkonsistenzen.
Ich habe den dummy "-" rausgenommen, dann kommt es im IFC wenigstens korrekt als "undefiniert" gemäß unserer AIA an.
Danke!
am 2023-12-02 05:17 PM
Es ist tatsächlich so, dass der Parameter „Baustoff, alle“ nur im IFC Übersetzer verfügbar ist und mit diesem nicht weiter operiert werden kann.
man kann als normal Sterblicher also höchstens eine Auswertungs/Excel Krücke bauen.
Oder man listet im Namen der Mahrschichtigen Bauteile einen Hinweis den man berechnen kann.