2023-10-16 09:17 AM - bearbeitet 2023-10-16 09:18 AM
Hallo zusammen,
ich bin mal wieder dabei, die Höhenangabe in einem Etikett, für Maße (gemäß DIN 1356 -1) < 1,00 m in 'cm' angezeigt haben zu wollen...
...und gehe davon aus, dass ich eine neue 'Eigenschaft' dazu brauche.
Dabei habe ich diese mit der Bezeichnung 'Einheit' gefunden... und frage mich, ob mir diese in diesem Fall nützlich sein könnte.
Was meint ihr?
Gelöst! Gehe zu Lösung.
am 2023-11-10 02:56 PM
Ja, nee, die Berechnung war auch falsch.
Jetzt noch mal 'richtig', aber mit ziemlich plödem Code:
IFS (
AND (
{Property:Allgemeine Parameter/Oberkante zu Projektursprung} > -0,0025 m;
{Property:Allgemeine Parameter/Oberkante zu Projektursprung} < 0,0025 m
); "±0,00";
{Property:Allgemeine Parameter/Oberkante zu Projektursprung} / 1 m > 0,9975;
CONCAT (
"+";
STR (
LEFT (STR (MROUND ({Property:Allgemeine Parameter/Oberkante zu Projektursprung} / 1 m; 0,005); 4);
(LEN (STR (MROUND ({Property:Allgemeine Parameter/Oberkante zu Projektursprung} / 1 m; 0,005); 4))) - 2
); 2
);
IF (MID (SPLIT (STR (MROUND ({Property:Allgemeine Parameter/Oberkante zu Projektursprung} / 1 m; 0,005); 4); ","; 2); 3; 1) = "5"; "⁵"; "")
);
{Property:Allgemeine Parameter/Oberkante zu Projektursprung} / 1 m > 0;
SUBSTITUTE (
SUBSTITUTE (
CONCAT (
STR (
LEFT (STR (MROUND ({Property:Allgemeine Parameter/Oberkante zu Projektursprung} / 1 m; 0,005); 4);
(LEN (STR (MROUND ({Property:Allgemeine Parameter/Oberkante zu Projektursprung} / 1 m; 0,005); 4))) - 2
); 2
);
IF (MID (SPLIT (STR (MROUND ({Property:Allgemeine Parameter/Oberkante zu Projektursprung} / 1 m; 0,005); 4); ","; 2); 3; 1) = "5"; "⁵"; "")
);
"0,"; "+") ;
"+0"; "+") ;
{Property:Allgemeine Parameter/Oberkante zu Projektursprung} / 1 m < 0;
SUBSTITUTE (
SUBSTITUTE (
CONCAT (
STR (
LEFT (STR (MROUND ({Property:Allgemeine Parameter/Oberkante zu Projektursprung} / 1 m; 0,005); 4);
(LEN (STR (MROUND ({Property:Allgemeine Parameter/Oberkante zu Projektursprung} / 1 m; 0,005); 4))) - 2
); 2
);
IF (MID (SPLIT (STR (MROUND ({Property:Allgemeine Parameter/Oberkante zu Projektursprung} / 1 m; 0,005); 4); ","; 2); 3; 1) = "5"; "⁵"; "")
);
"-0,"; "-") ;
"-0"; "-")
)
Wofür ich mich besonders schäme:
- das geschachtelte SUBSTITUTE; für die vorangestellte Nullen bei Zentimetern
- die aus der AC-Durchbruchsbeschriftung geklauten Zeilen, an die ich mich nicht rangetraut habe
Ergebnis (oben Rohwert, unten formatiert):
am 2023-10-16 11:29 AM
Soweit ich weiß wird diese 'Einheit' nur von den Berechnungen ('Öffnungsbreite'...) unter 'Schlitze und Durchbrüche' genutzt.
Diese Berechnungen könnten Dir aber als Vorlage für hochgestellte Fünfen dienen. Die sind in ihrer Schachtelungsvielfalt allerdings starker Tobak... 😉
am 2023-10-16 12:42 PM
Ja, inzwischen hab' ich eine E. gefunden, in der 'Einheit' eingebaut ist...
... tatsächlich mit einer Unmenge Code: Rundung, Hochstellung...
Vielleicht mach' da doch lieber was einfaches... auch wenn das dann nicht so viel kann... dann wird halt nur in ganzen Zentimetern gebaut...
am 2023-10-16 01:18 PM
Aber die Kommastellen müssen noch weg... weiß schon wieder nicht mehr, ob das nur mit hin-und-her-Datenkonvertierungen geht...
am 2023-10-16 03:13 PM
Ich bin mir nicht sicher, ob das mit 'IF' (<1,00 m) zusammengehen kann ??
am 2023-10-16 03:54 PM
Dein Ergebnis ist ein STRing, also muss der Datentyp "Zeichenfolge" sein.
2023-10-18 03:41 PM - bearbeitet 2023-10-18 03:42 PM
Der Strick gibt einfach ("neutrale") Zeichen aus. Ja.💡
Nur mit der Umstellung war es hier aber nicht getan (hatte ich zuvor auch schon probiert)...
... sondern 'IF' funktioniert nur mit einheitlichen Argumenten. (... im Etikett... in der "Vorschau" kommt trotzdem der richtige Wert... wenn auch mit Fehlermeldung in rot...)
Einfacher als so, hab' ich das nicht hinbekommen:
(Jetzt bin ich mal gespannt, ob ich früher ein Buch mit dem Titel 'Eigenschaftsdefinition in Archicad für Hausfrauen' geschrieben hab' oder ob solcherlei Dinge irgendwann mal einfacher zu handhaben sind 😅)
am 2023-10-18 05:57 PM
Check this out:
IF ( {Property:Allgemeine Parameter/Oberkante zu Projektursprung} < 1 m;
STR (( {Property:Allgemeine Parameter/Oberkante zu Projektursprung}/1m * 100 ); 0);
STR (( {Property:Allgemeine Parameter/Oberkante zu Projektursprung}/1m ) ;2)
)
(Den Code kannst Du rauskopieren und in den Berechnungs-"Editor" einfügen, dann wird '{Proper...' wieder proper.)
Das "Teil durch einen Meter" spart den Pilgerschritt. In hübsch:
am 2023-10-19 09:49 AM
Ja, mit dem 'geteilt durch 1 Meter' hatte ich zuvor schon probiert... dabei aber offenbar irgendetwas verwurschtelt.
... geht dann aber doch so... etwas eleganter.
(Nehm' ich dann in mein Buch, unter Nennung des Verfassernamen auf 😃)
am 2023-10-20 09:34 AM
Sehr gut, dass eine Lösung für das Problem gefunden wurde und die hilft auch gut weiter, trotzdem ist es ein eigentlich schrecklicher Workaround wegen einer fehlenden Archicad Funktion.
Ich möchte anmerken, dass ich es persönlich für vollkommen verkehrt halte, wenn Anwender gezwungen werden über Eigenschaften Einheiten zu berechnen/definieren/umzuwandeln. Eine Einheit sollte niemals eine Eigenschaft eines Elements sein. Ein Element sollte nur den Wert beinhalten. Also bitte nicht falsch verstehen: natürlich muss der Wert in einer definierten Einheit hinterlegt werden, aber die Darstellung sollte dort nicht hinterlegt werden.
Archicad braucht dringend für Autotext-Etiketten Format-Strings, wo ich einfach festlegen kann, ob ein Wert wie in den Bemaßungseinheiten dargestellt werden soll, oder auch selbst definiert werden kann. Das fehlt im Moment ist aber extrem notwendig.