Die Funktion CHILD in MT_...(CHILD(@498@)) gibt z.B. folgendes zurück: "Fenstermakro,-SmartPart+Sonnenschutz"
Wenn ein Leibungselement da ist, dann ist das Ergebnis dieses:"Brüstung+Fenstermakro,-SmartPart+Fenstermakro,-SmartPart+Sonnenschutz"
Man sieht, die Elemente werden durch "+" getrennt ausgegeben. Warum beim Vorhandensein eines Leibungselementes, das FensterSmartPart doppelt gezählt wird, kann wohl nur Allplan beantworten! Das ist ein Fehler!
Die Funktion CHILD in MT_...(CHILD(@507@)) gibt z.B. folgendes zurück: "Fenster/Rolladen"
Wenn ein Leibungselement da ist, dann ist das Ergebnis dieses:"bruestung3/Fenster/Jalousie"
Man sieht, die Elemente werden durch "/" getrennt ausgegeben.
Mit diesem wissen kann man das Problem nur in einer vbs-funktion lösen.
Dazu in der Datei functions.vbs im \STD folgendes einfügen:
Function get_sun_shade(nam_lst,bez_lst)
Dim strNames,strName,strBezs,strBez,strRes,strLast
strRes=""
strNames=Split(nam_lst,"+")
strBezs=Split(bez_lst,"/")
idx=-1
i = 0
strLast=""
For Each strName In strNames
If strName = "Sonnenschutz" Then
idx = i
End If
If strLast = strName Then
Else
i=i+1
End If
strLast = strName
Next
j = 0
For Each strBez In strBezs
If j = idx Then
strRes = strBez
End If
j=j+1
Next
get_sun_shade = strRes & " "
End Function
Die vorletzte Zeile der Funktion sieht etwas eigenartig aus:
Wenn man die Leerzeichen aber nicht anfügt, stürzt Allplan ab!
Warum das so ist, müßte Allplan mal herausfinden.
Das ist ebenfalls ein schwerer Fehler!
Die Formel im Beschriftungsbild für den Aufruf der Funktion lautet:
_IF_(MT_Fensterelement(CHILD(@498@))="")get_sun_shade(MT_Fensteröffnung(CHILD(@498@));MT_Fensteröffnung(CHILD(@507@)))_ELSE_get_sun_shade(MT_Fensterelement(CHILD(@498@));MT_Fensterelement(CHILD(@507@)))
Dafür sollte das Format A254 eingestellt sein.