[Question] Fenster Beschriftung mit Verschattung


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

Pièces-jointes (2)

Type: image/jpeg
Téléchargé 114 fois
Size: 174,54 KiB
Type: application/octet-stream
Téléchargé 891 fois
Size: 2,75 MiB

Show most helpful answer Hide most helpful answer

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.

1 - 10 (49)

Hallo,

eine ziemlich ähnliche Frage hab ich letzte Woche dem Support geschrieben. Für mich sollte da auch Rollo oder Raffstore beschriftet werden können. Zudem sollte eingestellt werden können ob manuell oder elektronisch. Bei manuell muss ja ein Gurtwicklerkasten verbaut werden welchen es beim elektrischen nicht braucht. Wäre schön wenn das über die Reports dann entsprechend ausgwertet werden kann.

Steht wohl auf der Wunschliste mehrerer ....

Mein Problem ist nur,
ich möchte das Fenster SmartPart beschriften, und er soll von da aus in den Sonnenschutz-SmartPart schauen und mir die Bezeichnung ausgeben. Diese Formel suche ich.

momentan nutze ich die Formel:

_IF_(MT_Fensterelement(CHILD(@498@))="")(_IF_(MT_Fensteröffnung(CHILD(@498@))="*Verschattung*")"Verschattung=ja"_ELSE_"Verschattung=nein")_ELSE_ (_IF_(MT_Fensterelement(CHILD(@498@))="*Verschattung*")"Verschattung=ja"_ELSE_"Verschattung=nein")

sprich statt "Verschattung=ja" oder "Verschattung=nein" soll er mir die Bezeichnung des Sonnenschutz-SmartParts ausgeben, oder wenn es kein Rollladen gibt dann halt nichts.

EDIT: Bloss wenn ich das "Verschattung=ja" durch @507@ tausche, gibt er mir zwar die Bezeichnung wieder... aber nicht vom Sonnenschutz-SmartParts sondern vom Fenster SmartPart

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

Zur Verdeutlichung meiner Intension, Siehe Anhang

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

Pièces-jointes (1)

Type: image/png
Téléchargé 68 fois
Size: 112,59 KiB

Ungetestet:
so wie du bei deiner IF Bedingung mit MT_Wand und Child auf das Verschattungselement schaust, musst du auch beim Ergebnis aud das Element schauen, also nicht nur @507@ schreiben (hier geht er auf das FensterSmartPart) sondern MT_Fensterelement(CHILD(@507@))

Edit:
mit dem zweiten Gedanken kann das so nicht funktionieren.
Wenn MT_Fensterelement(CHILD(@507@)) funktionieren würde, bräuchte es die IF Bedingung nicht.
Ich lasse das aber trotzdem mal so stehen

Viele Grüße
Florian

LinkedIn-Profil

www.vollack.de

_IF_(MT_Fensterelement(CHILD(@498@))="")(_IF_(MT_Fensteröffnung(CHILD(@498@))="*Verschat*")MT_Fensterelement(CHILD(@507@))_ELSE_"")_ELSE_ (_IF_(MT_Fensterelement(CHILD(@498@))="*Verschat*")MT_Fensterelement(CHILD(@507@))_ELSE_"")

Diese Formel funktioniert zwar, das er die Bezeichnung hin schreibt. Nachteil aber, das er das von allen Smartparts die in der Öffnung sind, die Bezeichnung hin schreibt...

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

Pièces-jointes (1)

Type: image/jpeg
Téléchargé 28 fois
Size: 33,31 KiB

ich glaube, dass das Beschriftungsbild nicht Filtern kann.
Du versuchst ja mit der IF Bedingung ein bestimmtes Element zu Filtern.
Das gelingt zwar bei der Abfrage, ob in diesem Elemnent in einem Bestimmten Attribtu ein Wert steht.
Aber sobald die IF Bedingung geschlossen wird, ist die Filterung weg.
Ich kann schon förmlich Nemo hören wie er hier sagt: "das wird nur mit einem VB-Script funktionieren".

Viele Grüße
Florian

LinkedIn-Profil

www.vollack.de

könnte man es nicht irgendwie anders Filtern? ich meine es sind Sonnenschutz-SmartParts... Das man mit @OBJ@=1013 es irgendwie versucht?

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

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.

Danke für deine Antwort!
ich probiere es gleich aus...
nur mal so zum Verständnis, was ist denn überhaupt eine VBS-Funktion? was ist da anders? Muss man dabei was beachten?
würde mich gerne auf eine Antwort bezüglich des Themas freuen

bzw. gibt es dazu irgendwelche "FAQ's" oder "Tipps & Tricks"?

Dankeeee

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

1 - 10 (49)

https://campus.allplan.com/ utilise des cookies  -  Plus d'informations

Accepter