Support Forum

[Frage] Fenster Beschriftung mit Verschattung

Schlagworte:
  • Rollladen
  • Jalousie
  • Klappladen
  • Schiebeladen
  • Beschriftungsbild Formel
  • Beschriftungsbild

Morjeeen,

gibt es eine Möglichkeit über ein Beschriftungsbild von einem Fenster SmartPart, die Bezeichnung des Sonnenschutz-SmartParts zu erhalten, die in der gleichen Fensteröffnung eingebaut ist?

Siehe Bild 1, da wo "Verschattung=ja" steht, soll bitte die Bezeichnung des Sonnenschutz-SmartParts stehen...

Danke im voraus

Lg René
http://www.baucon.de

Anhänge (2)

Typ: image/jpeg
122-mal heruntergeladen
Größe: 174,54 KiB
Typ: application/octet-stream
1262-mal heruntergeladen
Größe: 2,75 MiB

Hilfreichste Antwort anzeigen Hilfreichste Antwort verbergen

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.

21 - 30 (49)

Die Script-Datei muss heissen: functions.vbs

Also genau so, wie die Datei, die in \STD\vbs schon vorhanden ist!

Damit funktioniert es bei mir mit der runtergeladenen sonnenschutz.ndw

Als Formel bitte folgendes eintragen:

_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@)))

get_sun_shade(""+MT_... ist dabei wichtig, damit Allplan als Funktionsparameter Strings in die Funktion reinreicht! Eigentlich auch ein Fehler, denn Allplan kennt doch den Typ des Atributes 498 und 507! Ohne ""+ wird aus dem String eine Zahl gemacht, und das geht schief!

Damit funktioniert es bei mir in 2020 auch mit einem neu definierten Beschriftungsbild.

Ja genau, also ich habe deine vbs datei genommen, und nur ".txt" entfernt... dann aus deiner NDW habe ich aus dem Beschriftungsbild die Formel kopiert und ein Beschriftungsbild erstellt, mit dem Format A254.
aber komischer Weise hat es dann doch noch nicht funktioniert, ich kann mir halt nicht erklären wieso...
Selbst mit "Beschriftung aktuallisieren"

Lg René
http://www.baucon.de

Die Script-Datei muss heissen: functions.vbs

Guten Morgen
funktioniert leider immer noch nicht.
ich weiss nicht woran es liegt

Lg René
http://www.baucon.de

ich denke nicht, dass hier ein Skript von nöten ist, aber das ganze funktioniert nur sehr eingeschränkt, wenn das verschattungsmakro/SMT direkt an das Fensterelement angrenzt. ist dem nicht so, wird es wahrscheinlich gar nicht gefunden!
Hier müsste ein neues Feature geschaffen werden, welches erlaubt die Gesamtöffnung mit auszuwerten.

in dem Fall könnte folgender Ansatz weiterhelfen:

MT_Fensterlement(CHILD(_IF_(@498@="Sonnenschutz")"cool, Sonne ist raus"_ELSE_"hier wird es warm"))

damit wird in den Kindern gesucht. Dies ist auf andere Art und weise in einem Standardbeschriftungsbild integriert, welches seit Version 2006 zum Standard gehört. (Beschriftung Raumgruppen) Dort wird nur von den Kindern die Summe der Wohnfläche gebildet, welche auch eine Wohnfläche habe (lt. Attributeinstellung) haben.

@René
Ich würde nicht so schnell aufgeben.
Anbei nochmals die Dateien mit der vbs-Funktion und der Formel.

Natürlich muss man erst noch ein Beschriftungsbild mit der Formel definieren,
und mit diesem ein Fenster-SmartPart beschriften.
Erst dann sieht man, ob es geklappt hat...

Anhänge (3)

Typ: text/plain
811-mal heruntergeladen
Größe: 638,00 B
Typ: text/plain
791-mal heruntergeladen
Größe: 214,00 B
Typ: application/octet-stream
737-mal heruntergeladen
Größe: 1,13 MiB

Morgen @Nemo

Ich wüsste bloß nicht wie ich es weiter Testen kann, denn ich habe ein neues Beschriftungsbild erstellt, die deine Formel enthält und habe sie mit A254 definiert und abgespeichert... dann habe ich das Fenster SmartPart beschriftet und das Beschriftungsbild abgesetzt. und auch mit Beschriftung Aktualisieren hat es nicht geklappt

Vorher habe ich natürlich deine functions.vbs Datei in ...\Std\Vbs eingefügt

Ich kanns mir nicht erklären... Ich weiß nicht was das problem sein könnte. Ich habe schon in den den Smartparts reingeguckt, ob da was komisches steht, oder halt in der Formel. Aber mir ist nichts aufgefallen. Aber komisch ist, das es bei dir Funktiioniert und bei mir leider nicht. Ich weiß auch nicht ob beim Installieren von Allplan, da etwas schief gelaufen ist, und somit die VBS Datei nicht "gesehen" wird.

Lg René
http://www.baucon.de

..kam beim Einfügen der functions.vbs eine Abfrage, ob die vorhandene Datei überschrieben werden soll?
Und hast Du es wirklich in das richtige Verzeichnis kopiert?

Anhänge (1)

Typ: image/png
17-mal heruntergeladen
Größe: 48,65 KiB

Ich habe nochmal nachgeschaut, aber das verzeichnis ist Richtig... und ich habe die andere VBS Datei überschrieben

Lg René
http://www.baucon.de

...was passiert, wenn Du in der functios.vbs mal die Funktion get_sun_shade wie folgt änderst:

Function get_sun_shade(nam_lst,bez_lst)

   get_sun_shade = nam_lst

End Function

Wird dann bei Beschriftungsbild aktualisieren etwas angezeigt?

21 - 30 (49)