abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Programmierung
Alles über Programmierung in GDL und Python

Symbol-Etiketten

andreaszeike
Newcomer
den ersten Beitrag habe ich gelöscht...

az

[ 09. Januar 2004, 18:42: Beitrag editiert von: Andreas Zeike ]
42 ANTWORTEN 42
andreaszeike
Newcomer
Hi Ove,

bei mir funzt es nicht...

ich habe es mal mit beidem versucht, sowohl mit "gs_list_firerating", alsauch mit "gs_frame_mat" - eingesetzt in ein neues Objekt mit SubType "Fenster/Türmarker"

folgendes 2D-Script:


</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">re_fire=REQUEST("ASSOCLP_PARVALUE", "gs_list_firerating", nameind_fr, type_fr, flag_fr, dim1_fr, dim2_fr, val_fr)

define style "testStyle" AC_TextFont_1, AC_TextSize_1, 7, 0
style testStyle
ADD2 -0.5,-2


text2 0,1,"nameind_fr" : text2 2,1, nameind_fr
text2 0,0.5,"val_fr" : text2 2,0.5, val_fr
text2 0,0,"Test_FM_ASSOCLP_PARVALUE"

endich bekomme nur 0-Werte zurück...
Anonymous
Nicht anwendbar
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif"> Ein Etikett lässt sich über den Werkzeuginfo-Dialog nicht mehr ändern, wenn es bereits eingesetzt wurde! Das habe ich auch bemerkt. Das ist doch in Verbindung mit der 'Einbahnstraße' ein bug, oder? Arbeitest Du mit 8.1 mit Patch? Ich kann es leider nur mit 8.0v3 testen.


</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif"> Allerdings sind Marker AFAIK nur für Fenster und Türen verfügbar.... und für Details.


</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif"> Gibt es evtl. eine Möglichkeit, anderen Objekten Marker zuzuweisen? Woran denkst Du? Ich bin ja schon über die Zweigleisigkeit irritiert. Denn als freies Etikett kann ich es ja beliebigen Bauteilen anheften und dessen globale Einstellungen 'saugen'. Wie ich es oben beschrieben habe, ist es bisher ein Problem der Skriptabarbeitung gewesen. Das scheinen sie durch die zwangsweise/integrale Anbindung 'gelöst' zu haben, doch sollten die Etiketten wie bei den Markern editierbar sein.

REQUEST("ASSOCLP_PARVALUE", ... holt sich von dem 'Mutter'objekt den Parameterwert. Was ich weiter oben zu bedenken gab, war, daß das Etikett so programmiert sein muß, daß es den zu erwartenden Parameternamen kennt ober zumindest prüft. Bestenfalls 'sucht'. Du willst in Deinem Skript von dem Objekt den Parameter "gs_list_firerating" auslesen. Ist der denn in dem 'Mutter'objekt vorhanden? Wenn nein, ist das Ergebnis klar.

Wenn Du also mit einem Etikett aus einem Objekt immer den Brandschutztyp auslesen und darstellen willst, mußt Du im Etikett alle Parameternamen prüfen, die bei den relevanten Objekten verwendet werden. Die Standardparameters die es seit AC8 gibt machen es zwar leichter, doch wehe, es sind andere vom Programmierer ausgedachte Parameternamen. Oder gar ältere Objekte, die noch nicht die AC98/Zwangsnamen verwenden.
Mir stellt sich da so ein bißchen die Frage, warum man es dann nicht gleich in das Objekt reinprogrammiert und bei häufiger Wiederverwendung ein Makroobjekt daraus macht.
andreaszeike
Newcomer
Hi Ove,

...ja, es wird wirklich Zeit, dass GS mir die 8.1er edu zukommen lässt - aber sie haben gesagt, das kommt schon im Februar! Solange kann ich es auch nur auf 8.0 testen. Ich weiß was: ich werde mich als Beta-Tester bewerben!!

Stand der Dinge:
Bei meiner 8.0R2edu funzt das jetzt mit dem Etikett (!), allerdings nicht mit dem Marker (da gibt´s nur 0-Werte zurück...). Ersteres kommt aber schon echt gut, kann man gut gebrauchen.

Vorgehensweise: bei den Etiketteeinstellungen für Fenster als Standardetikett das Etikett mit dem ASSOCLP_PARVALUE angeben, und dann beim Einsetzen der Fenster (oder später) im WerkzeugInfo-Dialog "Elemente etikettieren" aktivieren.

Sollte beim Etikettieren eines Bauteils kein Pfeil angelegt werden, so liegt das an den Grundeinstellungen für die Etiketten der Bauteilgruppe.
Lösung: Deaktiviere bei der entsprechenden Bauteilgruppe unter "Symboletikett" die Kästchen "Farbe des Symbols verwenden" und "Zeiger des Symbols verwenden". Dann wiederhole die Akktion etikettieren am Objekt (WerkzeugInfo). Das kann ich bestimmt auch noch dem Etikett selbst beibringen - kommt Zeit...

Die FM und die Etikette, die ich mit den globalen Variablen getestet haben, funzen alle.

hier ein paar Scripte:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">!Etikett zur Anzeige des Dateinamens von Objekten

dummy= REQUEST("ASSOCLP_NAME", "", objektname)

ADD2 -0.5,-0.5
DEFINE STYLE stil_ "Arial", 2, 7, 0
STYLE stil_

TEXT2 0,0, objektname</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">!Etikett zur Anzeige von Listenparametern bei Fenstern

re_fire=REQUEST("ASSOCLP_PARVALUE", "gs_list_firerating", nameind_fr, type_fr, flag_fr, dim1_fr, dim2_fr, val_fr)
re_acou=REQUEST ("ASSOCLP_PARVALUE", "gs_list_acousticrating", nameind_ar, type_ar, flag_ar, dim1_ar, dim2_ar, val_ar)

define style "testStyle" AC_TextFont_1, AC_TextSize_1, 7, 0
style testStyle
ADD2 -0.5,-2.5
!text2 0,0,"(Etikett_ASSOCLP_PARVALUE)"
text2 0,1,"Schallschutzklasse" : text2 2.5,1, val_ar
text2 0,0.5,"Feuerfestigkeit" : text2 2.5,0.5, val_fr

end </font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">!Etikett zur anzeigen der Wandstärke (nur Wände!) oder der GlobID (z.Zt. inaktiv)

define style "testStyle" AC_TextFont_1, AC_TextSize_1, 7, 0
style testStyle
ADD2 -2,0

!text2 0,0, "Wand, interne ID=" : text2 2.3,0, GLOB_INTID
!text2 0,-0.3, "(Etikett_WALL_THICKNESS)"

text2 0,0, "Wandstärke=" : text2 1.7,0, WALL_THICKNESS </font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">!Fenster-Marker zur Anzeige von Listeninfos von Fenstern

re_fire=REQUEST("ASSOCLP_PARVALUE", "gs_list_firerating", nameind_fr, type_fr, flag_fr, dim1_fr, dim2_fr, val_fr)
re_acou=REQUEST ("ASSOCLP_PARVALUE", "gs_list_acousticrating", nameind_ar, type_ar, flag_ar, dim1_ar, dim2_ar, val_ar)

define style "testStyle" AC_TextFont_1, AC_TextSize_1, 7, 0
style testStyle
fragment2 all,1
add2 -0.5,0

!text2 0,-2.5,"(FM_ASSOCLP_PARVALUE)"
text2 0,-1.5,"Schallschutzklasse" : text2 2.5, -1.5, val_ar
text2 0,-2,"Feuerfestigkeit" : text2 2.5, -2, val_fr

end Wichtig ist es in der Tat, dass beim Marker/Etikett die Parameter des Objektes (von dem der Parameterwert übernommen werden soll) als Leer-Variable in der Parameterliste angelegt sind, sonst funzt es nicht!!!

Gruß, az

[ 09. Januar 2004, 09:22: Beitrag editiert von: Andreas Zeike ]
andreaszeike
Newcomer
...noch was:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif">Die Standardparameters die es seit AC8 gibt, machen es zwar leichter, doch wehe, es sind andere vom Programmierer ausgedachte Parameternamen. Oder gar ältere Objekte, die noch nicht die AC98/Zwangsnamen verwenden.
Mir stellt sich da so ein bißchen die Frage, warum man es dann nicht gleich in das Objekt reinprogrammiert und bei häufiger Wiederverwendung ein Makroobjekt daraus macht. ...da gebe ich Dir natürlich Recht! Ich kann mir aber auch vorstellen, die Standardparameter der neuen Objekte einfach auf die Alten Objekte zu übertragen, um diese übergabefähig zu machen.

Gruß, az
Anonymous
Nicht anwendbar
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif"> Ich weiß was: ich werde mich als Beta-Tester bewerben!! 🙂 Das wird Dir aber nicht helfen, denn da bekommst Du eine Extralizenz auf Deinen Dongle die nur während der Betazeit läuft und auch nur mit den vorgesehenen Versionen. Und AFAIK ist derzeit auch keine öffentliche Betazeit.

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif"> Wichtig ist es in der Tat, dass beim Marker/Etikett die Parameter des Objektes (von dem der Parameterwert übernommen werden soll) als Leer-Variable in der Parameterliste angelegt sind, sonst funzt es nicht!!! Das hat ja auch schon Piotr Dobrowolski in seinem Beitrag erkannt. Aber gerade das kann doch so nicht gedacht sein. Wieso kann man dann den Typ des Parameters auslesen? Denn wenn ich ihn schon als festen Parameter im Etikett/Marker anlegen muß, muß ich es doch schon vorher wissen, weil ich ihn ja identisch anlegen muß. Das ergibt doch keinen Sinn. Entweder gibt es da einen Trick, oder es ist ein bug/nicht fertig durchdacht.

Jetzt it mein Kampfgeist geweckt. Jetzt checke ich das doch mal mit 8.1.

Melde mich später nochmal.
andreaszeike
Newcomer
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif"> Wieso kann man dann den Typ des Parameters auslesen? Stimmt. Das ist wirklich merkwürdig...

Noch was: wenn der Wert des Parameters im Objekt leer ist (oder ein Fehler vorliegt), wird nach der Beschreibung im Handbuch 0 als Wert an das Etikett/den Marker übermittelt. Wieso aber kann ich meinen Text dann nicht zB mit

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">if val_fr=0 GOTO 50
text2 0,0,"Feuerfestigkeit" : text2 2.5,0, val_fr
ADD2 0,-0.5

50:ausbleden? Da haut´s mir das Etikett glatt auseinander...

[ 09. Januar 2004, 10:14: Beitrag editiert von: Andreas Zeike ]
Anonymous
Nicht anwendbar
Einfache Lösung: Ist ein Etikett mit einem Objekt verknüpft, bleibt diese Verbindung erhalten, aber Objekt und Etikett bleiben getrennte Zeichnungselemente. So läßt sich nach dem Einsetzen in die Zeichnung das Etikett einzeln aktivieren und die Einstellungen verändern. In den Einstellungen des Objektes läßt sich lediglich die Verbindung kappen, (was auch das Etikett im Plan löscht), die Einstellungen lassen sich nicht aus diesem Dialog heraus ändern. Dazu muß, wie gesagt das Etikett aktiviert werden.

Ein Fenster kann ja 2 Labels haben: Ein Etikett und einen Öffnungsmarker.
Ich habe mal mein Beispiel von oben modifiziert und das Etikett so geändert, daß es prüft, ob der Parameter gs_resol gefunden wurde. Wenn nicht, liest er den Parameter des Stockmaterials. Somit kann er am Hocker und an dem 2-Flügelfenster angeheftet werden:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"> re_fire=REQUEST ("ASSOCLP_PARVALUE", "gs_resol", nameind_fr, type_fr, flag_fr, dim1_fr, dim2_fr, val_fr)

if re_fire=0 then re_fire=REQUEST ("ASSOCLP_PARVALUE", "gs_frame_mat", nameind_fr, type_fr, flag_fr, dim1_fr, dim2_fr, val_fr)

text2 0,0.5,re_fire

text2 0,0,"expr" : text2 2.0,0,_expr
text2 0,-0.5,"nameind_fr" : text2 2.0,-0.50,nameind_fr
text2 0,-1,"type_fr" : text2 2.0,-1,type_fr
text2 0,-1.5,"flag_fr" : text2 2.0,-1.5,flag_fr
text2 0,-2,"dim1_fr" : text2 2.0,-2,dim1_fr

text2 0,-2.5,"dim2_fr" : text2 2.0,-2.5,dim2_fr
text2 0,-3,"val_fr" : text2 2.0,-3,val_fr
Getestet unter 8.1r1(1410).
andreaszeike
Newcomer
...das ist eine sehr gute Idee! Aber das bringt leider noch nicht die Lösung für mein o.g. Problem. Was tun, wenn ich einen im Marker einen Parameter abfrage, der im Objekt keinen Wert hat, aber vorhanden ist?

Zur Veranschaulichung meines Problems habe ich Deine Resol-Routine mal auf meinen Fenster-Marker angewendet:


</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">IF val_resol = 0 GOTO 150
text2 0,0,"resol" : text2 2.5,0,val_resol
ADD2 0,-0.5
150:
end
Das funktioniert! Da kein Parameter gs_resol im Fenster-Objekt vorhanden ist, wird der Wert als val_resol=0 übergeben und resol wird im Etikett nicht angezeigt.

Sobald jedoch ein Parameter für resol im Objekt vorhanden ist, der aber keinen Wert enthält, funzt das Objekt so nicht mehr!

:weinen: :weinen:

Übrigens:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif"> Wieso kann man dann den Typ des Parameters auslesen? Man muss die Parameter im FM/Etikett doch nicht wiederholen!! Es klappt auch ohne!


Gruß, az

[ 09. Januar 2004, 15:45: Beitrag editiert von: Andreas Zeike ]
andreaszeike
Newcomer
hmm - gerade hab ich gemerkt, das gs_resol sich gar nicht so gut als Beispiel macht: wird ja nicht als String veeinbart.

Das Problem tritt nur bei strings auf. val_fr zum Beispiel ist der Wert eines String-Parameters (type=4). Deshalb kann ich nicht sagen: if var_fr=0 then...

Wie kann man diese Hürde umgehen?
andreaszeike
Newcomer
...und es geht doch!

Ändern von Etiketten bei bereits eingesetzten Bauteilen mit Auswahlbox:

Wenn man in den Etiketten-Grundeinstellungen für die Bauteilgruppen in der Spalte "Symboletikett" die Checkbox "Zeiger des Symbols verwenden" deaktiviert, wird bei den Symbol-Etiketten im Grundriss nicht nur den Zeiger mitangezeigt (was ich sehr wichtig finde...), sondern noch viel besser:

Das Etikett lässt sich getrennt vom Bauteil auswählen und dann bekommt man im WerkzeugInfo-Dialog eine Auswahlbox: "Etiketteninhalt"

Hie werden alle mit den aktiven Bibs geladenen Symmbol-Etiketten angezeigt. Auf diese Weise lassen sich die Etiketten behandeln, wie wir es von den Fenstern-Markern gewöhnt sind!

Gruß, az

@ Holger: Hast du das schon in Deinen TIPPS?