abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Projektdaten & BIM
BIM-basierte Verwaltung von Attributen, Zeitplänen, Vorlagen, Favoriten, Hotlinks, Projekten im Allgemeinen, Qualitätssicherung, usw.
GELÖST!

Problem bei der Reihenfolge berechneter Eigenschaften

snoopy1088
Contributor

Hallo zusammen,

ich bräuchte eure Hilfe zu den berechneten Eigenschaften in ArchiCAD. Aktuell bekomme ich es nicht hin, dass ArchiCAD die verschiedenen Formeln nacheinander durchläuft und entsprechend Werte vergibt. Beide im Screenshot aufgeführten Formeln funktionieren für sich genommen, allerdings werden nur für die oberste Berechnungsregel Werte für die Eigenschaft „DIN276“ vergeben. Was mache ich falsch? Nach meiner Logik müsste, wenn die Bedingung der ersten Berechnung nicht erfüllt ist, kein Wert vergeben werden – und somit doch eigentlich die zweite Berechnungsregel greifen, oder?

Viele Grüße & danke vorab für euer Feedback!

 

 

1.png

1 AKZEPTIERTE LÖSUNG

Akzeptierte Lösungen
Lösung
jonasm
Booster

Nein, nicht ganz. Die Regeln laufen solange durch, bis eine Berechnung auftaucht, die Berechnet werden kann, nicht bis ein "positiver Wert" vergeben werden.

Da jede Wand die durch deine Regel durchläuft sowohl die "Klassifizierung_Bauteilgruppe" und die "Tragend" und "Lage" Eigenschaften haben muss die Prüfung in einer Regel stattfinden, da jedes Bauteil das alle diese Eigenschaften hat in der ersten Berechnung geprüft wird.

 

Also im Prinzip:

IFS(AND(Bedingung für 341);"341 Tragende Innenwände";AND(Bedingung für 331);"331 Tragende Außenwände"; ...)

 

Da wo jetzt "..." steht müssen dann auch alle Bedingungen für andere Kostengruppen hin. Wird eine ziemlich lange Liste, aber geht an sich schon. Tipp die Berechneten Eigenschaften können auch in einen Texteditor kopiert, da geändert und zurück kopiert werden, das hilft bei der Formatierung beim Bearbeiten von so langen Regeln 😉 Das Problem sind dann eher die Bekleidungskostengruppen die du aktuell schlecht Brauchbar aus den Archicad Wänden rausbekommst (z.B. 336 Außenwandbekleidung,  Außen und 337 Außenwandbekleidung, Innen). Die sind in der Struktur die ich bei uns fürs Büro gebaut habe in den 331/332 bzw. 341/342 miteinbegriffen, da die sowieso im mehrschichtigen Bauteil drin sind.

 

Ansonsten kannst du es steuern, indem du in die Regeln Bausteine einbaust, die nicht von allen Bauteilen gelesen werden können. Dadurch kannst du ein überspringen einer Berechnung erzwingen. Anbei mal ein Beispiel mit dem ich z.B. die Unterelemente von Fassaden, Geländern, etc. rausfiltere. Je spezifischer die Regel, desto weiter oben sollte Sie stehen. Z.B. den Listenelementparameter "Profil-Klasse" kann nur ein Fassadenprofil haben. Jedes Element, dass kein Fassadenprofil ist wird diese Regel überspringen und jedes Fassadenprofil wird in diesem Beispiel den Wert "vgl. Hauptelement" bekommen.

 

jonasm_1-1750079439408.png

 

Hoffentlich hilft dir das weiter

Jonas Mattes
currently AC 27/28 on Win
“Essentially, all models are wrong, but some models are useful.”

Lösung in ursprünglichem Beitrag anzeigen

8 ANTWORTEN 8
Lösung
jonasm
Booster

Nein, nicht ganz. Die Regeln laufen solange durch, bis eine Berechnung auftaucht, die Berechnet werden kann, nicht bis ein "positiver Wert" vergeben werden.

Da jede Wand die durch deine Regel durchläuft sowohl die "Klassifizierung_Bauteilgruppe" und die "Tragend" und "Lage" Eigenschaften haben muss die Prüfung in einer Regel stattfinden, da jedes Bauteil das alle diese Eigenschaften hat in der ersten Berechnung geprüft wird.

 

Also im Prinzip:

IFS(AND(Bedingung für 341);"341 Tragende Innenwände";AND(Bedingung für 331);"331 Tragende Außenwände"; ...)

 

Da wo jetzt "..." steht müssen dann auch alle Bedingungen für andere Kostengruppen hin. Wird eine ziemlich lange Liste, aber geht an sich schon. Tipp die Berechneten Eigenschaften können auch in einen Texteditor kopiert, da geändert und zurück kopiert werden, das hilft bei der Formatierung beim Bearbeiten von so langen Regeln 😉 Das Problem sind dann eher die Bekleidungskostengruppen die du aktuell schlecht Brauchbar aus den Archicad Wänden rausbekommst (z.B. 336 Außenwandbekleidung,  Außen und 337 Außenwandbekleidung, Innen). Die sind in der Struktur die ich bei uns fürs Büro gebaut habe in den 331/332 bzw. 341/342 miteinbegriffen, da die sowieso im mehrschichtigen Bauteil drin sind.

 

Ansonsten kannst du es steuern, indem du in die Regeln Bausteine einbaust, die nicht von allen Bauteilen gelesen werden können. Dadurch kannst du ein überspringen einer Berechnung erzwingen. Anbei mal ein Beispiel mit dem ich z.B. die Unterelemente von Fassaden, Geländern, etc. rausfiltere. Je spezifischer die Regel, desto weiter oben sollte Sie stehen. Z.B. den Listenelementparameter "Profil-Klasse" kann nur ein Fassadenprofil haben. Jedes Element, dass kein Fassadenprofil ist wird diese Regel überspringen und jedes Fassadenprofil wird in diesem Beispiel den Wert "vgl. Hauptelement" bekommen.

 

jonasm_1-1750079439408.png

 

Hoffentlich hilft dir das weiter

Jonas Mattes
currently AC 27/28 on Win
“Essentially, all models are wrong, but some models are useful.”
snoopy1088
Contributor

@jonasmDanke für dein schnelldes Feedback! Noch eine Frage zu dem von dir angehängten Screenshot... hab leider noch ein Verständnisproblem bzgl. der Formeln von dir :D.

 

IF ( 0 = 1;...) vielleicht kannst da mal kurz die Logik dahinter erklären? Das erste Argument sprich 0 = 1 funktioniert ja schon nicht?

 

VG & merci

Ja das 0=1 ist eigentlich nur ein Trick um den Parameter einzubauen, die nur den Zweck haben, das Archicad Sie für die Berechnungsreihenfolge entdeckt.

 

Der IF Befehl funktioniert ja so: IF(Bedingung, TRUE Condition, FALSE Condition).

0 Ist wie du entdeckt hast ja nie 1, daher wird die TRUE Condition, im Beispiel "Profil-Klasse" nie ausgegeben und immer die FALSE Condition, in dem Fall die Berechnung die wir eigentlich durchführen wollen.

Jonas Mattes
currently AC 27/28 on Win
“Essentially, all models are wrong, but some models are useful.”

@jonasm 

Das mit der Eigenschaft zur DIN276 bekomme ich aktuell ganz gut hin, nun hab ich aber bei einer von mir erstellten Eigenschaft „090_Bauteilcode“ ein Problem... das kostet mich jetzt schon 1,5 Tage. Entweder verstehe ich die Logik von Archicad doch nicht, wie das Programm die Argumente in der Formel abarbeitet und daraus die Werte vergibt, oder ich habe irgendwo einen Fehler und sehe ihn einfach nicht...

 

snoopy1088_1-1750939421121.png

 

 

Kurze Erklärung zum Screenshot: Das ist der aktuelle Stand der berechneten Eigenschaft bzw. der Formel. Die Idee dahinter ist eigentlich recht simpel: Es soll geprüft werden, ob in der Eigenschaft „020_Bauteilgruppe“ Fenster, Wand oder Boden vergeben wurde – abhängig davon soll dann ein jeweils anderer Bauteilcode gebildet werden.

 

Nun zum Problem, was passiert wenn ich die Formel speichere und mir die erhofften Ergebnisse ansehe:

  • Für "Fenster" wird kein Bauteilcode gebildet und vergeben
  • Für "Wand" wird der in der Formel definierte Bauteilcode gebildet und vergeben
  • Für "Boden" (steht ja aktuell nur eine Eigenschaft als Platzhalter drin, welche gemappt werden soll damit ich seh ob es funktioniert), passiert auch nichts.

 

Ich bin mir zu 100% sicher das der Bereich in der Formel für Fenster funktioniert, da ich diesen ohne den Rest eigenständig schon getestet habe und da werden anschließend Werte für den Bauteilcode vergeben... also muss es wohl ein Verständnisproblem meinerseits sein, wie ArchiCAD durch die Formel geht.

Vielleicht hast du oder jemand anders eine Idee woran es liegen kann?

Das Problem sind die Parameter die in der Berechnung aufgerufen werden. Du verwendest "Breite", "Höhe" und "Dicke".

 

Ich habe mal zur Erläuterung eine Auswertung angelegt mit beispielhaften Wänden, Fenstern und Decken:

jonasm_0-1750943127269.png

 

Wände sind die einzigen Elemente, die auf alle drei Parameter zugrückgreifen können. Daher wird nur für die Wände die Berechnung ausgegeben. Für "Boden" und "Fenster" wird die Berechnung übersprungen, da Sie nicht ausgewertet werden kann. Tipp am Rande: Wenn du ein Bauteil auswählst und dann den Eigenschaften Manager aufrufst, bekommst du mit dem "Auswerten" Button rechts unter dem Berechnungsfeld eine Vorschau des Berechnungen. Das ist manchmal hilfreich um den Punkt zu finden, an dem die Berechnung ins Stocken kommt.

 

Das ist tatsächlich ein interessantes Beispiel, weil du in diesem Fall letztlich drei Berechnungsregeln in der Eigenschaft erstellen musst. Ich habe es bei uns so gruppiert, dass eigentlich für jeden Elementtyp eine eigene "Berechnung" angelegt ist.

Jonas Mattes
currently AC 27/28 on Win
“Essentially, all models are wrong, but some models are useful.”

Aber "Breite" sowie "Höhe" sind doch in einem eigenen Berechnungsansatz für die Fenster. Die "Dicke" steckt allein stehend im Berechnungsansatz für die "Wände". Versteh nicht ganz warum ArchiCAD bei allen drei Bauteilen prüft, ob diese drei Eigenschaften vorhanden sind???

Dein Lösungsansatz "drei Berechnungsregeln" in der Eigenschaft zu erstellen versteh ich so, dass ich drei eigenständige Berechnungen mit allein stehenden Formeln in der Eigenschaft anlege? Hab ich dann nicht wieder das Problem das ArchiCAD gar nicht bis zur letzten kommt, weil die erste schon ein Ergebnis liefert? Da wären wir ja wieder bei der ursprünglichen Problemstellung des Posts?

Derzeit können wir als Zuschauer gar nicht feststellen, welcher Element-Typ hier berechnet wird, also mit welchem Werkzeug das Element erzeugt wurde.

Man kann ja auch mit dem Stützen-Werkzeug einen Mittelpfosten malen und der 020_Bauteilgruppe "Fenster" zuweisen.

Oder hast Du Breite/Höhe/Dicke bereits werkzeug-neutral aufbereitet?

 

Um Berechnungen auf ein bestimmtes Werkzeug zu beschränken, damit sie eben kein Ergebnis liefert und AC auf die nächste springt, habe ich mal eingangs Eigenschaften abgefragt, die exlusiv für das Werkzeug sind. Da sollte für jeden was zu finden sein, hier schonmal vier:

IFS ( NOT ( ISUNDEFINED ( {Property:Wand/Anzahl der Fenster} ) );

IFS ( NOT ( ISUNDEFINED ( {Property:Decke/Lage der Referenzebene} ) );

IFS ( NOT ( ISUNDEFINED ( {Property:Dach/Dach-Stufe} ) );

IFS ( NOT ( ISUNDEFINED ( {Property:Balken \/ Träger/Anzahl Durchbruch} ) );

 

Die werden der Reihe nach durchgeackert, bis zum ersten Treffer. Und wenn alles nix war kommt am Ende ein "Fehlercode" 🙂

StefanL__0-1750945643588.png

(In der Beschreibung fehlt noch das Trägerwerkzeug)

 

--
Stefan
AC ...-28, WIN10

Bevor die Formel durchläuft (dein kompletter Screenshot) wird geprüft ob Archicad für ein Bauteil auf basis aller Bauteile das überhaupt berechnen kann.

Trenn es mal so in einzelne Berechnungen, wie in meinem Screenshot weiter oben.

 

jonasm_0-1750944124528.png

Wichtig ist dann die Reihenfolge der Regeln. Die Regel für Boden (Gelb) müsste als letzte kommen. Generell je Allgemeiner die Regel, desto später in der Liste sollte Sie auftauchen.

Jonas Mattes
currently AC 27/28 on Win
“Essentially, all models are wrong, but some models are useful.”