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

wie sag ich's dem text?

Anonymous
Nicht anwendbar
Ich möchte gerne in vorhandene Objekte eine Möglichkeit einbauen, die Objekt-ID anzuzeigen. soweit kein Problem, denk' ich mir, es gibt ja globale Variablen für alles mögliche, und mit

DEFINE STYLE "arial_m_o_2" "Arial Westlich", 2.0, 2, 0
SET STYLE "arial_m_o_2"
TEXT2 0,0, GLOB_ID

ist flugs die ID im Symbol. Nur wenn das Symbol jetzt gedreht ist, dann dreht sich natürlich mein Text mit, und über 180° steht der dann Kopf 😞
20 ANTWORTEN 20
Anonymous
Nicht anwendbar
Tut mir leid, das ist nicht mit 2 Sätzen gesagt. Schaut Euch die Parameter (groß geschriebene sind globale) an und schaut im Handbuch nach, was sie machen. Es geht auch alles mit IF THEN, aber da kann man sich auch gepflegt verzetteln. Ich habe gestern eine dreiviertel Stunde diesen Algorithmus getestet,damit ich Dir nichts falsches erzähle. Mehr Zeit habe ich dafür im Moment leider nicht.

@zzyzx
poste mal, Dein Skript. Ich glaube nicht, daß es da einen bug gibt.
Wenn der Text sich NICHT drehen soll, ist die Qual der Wahl folgende:
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">mul2 1, 1-2*SYMB_MIRRORED
rot2 180*SYMB_MIRRORED - SYMB_ROTANGLE

[ 10-12-2002, 13:56: Beitrag editiert von: Lars ]
Anonymous
Nicht anwendbar
😎
Ooops. So war's nicht gemeint - ich wollte eben vermeiden, Deine Hilfsbereitschaft überzustrapazieren. Tatsache ist, dass das Skript schon jetzt wunderbar funktioniert; ich muß das halt noch in alle Türen basteln. Aber dann steht unserer Türliste nicht mehr im Weg.

Und wird noch um Symbole für behindertengerecht, überwacht, kraftbetätigt, mit Türschließer und selbstschließend erweitert; das ganze sollte sich dann über eine türliste und die ID (die jetzt auch im Plan angezeigt wird) sehr übersichtlich präsentieren.

Also nochmal vielen Dank, Lars!
Bernhard Binder
Graphisoft Partner
Graphisoft Partner
Der Algorithmus lässt sich ein bisschen vereinfachen, und dann ist er auch verständlicher:
statt: </font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">var=1-abs(int(abs((SYMB_ROTANGLE<360)*int(SYMB_ROTANGLE/90)-1.5)))kann man auch </font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">var=1-(SYMB_ROTANGLE<=90 or SYMB_ROTANGLE>=270)schreiben.

Kurz zur Erklärung:
Relationale Operatoren wie =,<,>,<=,>=,<> vergleichen zwei Werte und ergeben 1 für wahr und 0 für falsch.
Solange also SYMB_ROTANGLE kleiner oder gleich 90 ist (oder größer/gleich 270) ist die Aussage wahr und dort steht statt SYMB_ROTANGLE<=90 or SYMB_ROTANGLE>=270 einfach nur 1
Wenn der Wert anders ist, steht dort 0.
Das (1-... hilft mir die 1 in eine 0 umzuwandeln und ungekehrt.
Wenn bei meiner vorigen "Berechnung" 0 herauskommt dann sieht die Rechnung eigentlich so aus:
1-0 und das ergibt 1. Also wurde aus der 0 eine 1.
Wenn bei meiner vorigen "Berechnung" 1 herauskommt dann sieht die Rechnung so aus:
1-1 und das ergibt 0.

Alles klar?
AC4.5-AC27 AUT, GER, INT
www.a-null.com
andreaszeike
Newcomer
Weder bei der einen noch bei der anderen Methode dreht sich bei einem Fenster der Terxt in die horizontale - was mache ich falsch?

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">!var=1-abs(sgn(SYMB_ROTANGLE)-int(abs((WALL_DIRECTION<360)*int(WALL_DIRECTION/90)-1.5)))

var=1-(SYMB_ROTANGLE<=90 or SYMB_ROTANGLE>=270)

define style "info" "Arial", 2.5, 5-(6*var-3),2
style "info"

add2 0,ABS(WIDO_SILL-WALL_THICKNESS*WIDO_REVEAL_SIDE)*WIDO_REVEAL_ON
rot2 180*var

text2 0,0, GLOB_ID

[ 10-12-2002, 18:45: Beitrag editiert von: Andreas Zeike ]
Bernhard Binder
Graphisoft Partner
Graphisoft Partner
@Andreas: Bei deiner Variante dreht sich Text überhaupt nicht! Bei der anderen Variante dreht er sich bis 90° normal mit und wenn er drüber ist, dann dreht er sich um. Bei 270° macht er das nochmal.
Das ist genauso wie beim Bemaßungswerkzeug.
AC4.5-AC27 AUT, GER, INT
www.a-null.com
Bernhard Binder
Graphisoft Partner
Graphisoft Partner
Achso: und das var ist nur eine Variable die entweder 0 oder 1 ist. Und im Zusammenhang mit rot2 180*var ergibt sich dann eine Drehung oder eban auch nicht - je nach Wert von var
AC4.5-AC27 AUT, GER, INT
www.a-null.com
andreaszeike
Newcomer
Hallo Bernhard -

ich hatte meinen Beitrag gerade nochmal im Editor...

...inzw. kann ich mir vorstellen, was das mit "var" soll, aber der TEXT von Glob_ID dreht sich mit den bisherigen Lösungen beim Fenster noch nicht in die Horizontale - und das soll er doch (egal, wie die Wand gedreht ist), oder?

[ 10-12-2002, 18:50: Beitrag editiert von: Andreas Zeike ]
andreaszeike
Newcomer
...ich habe das jetzt auch mal ausprobiert mit:
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">
var=1-(SYMB_ROTANGLE<=90 or SYMB_ROTANGLE>=270) das klappt aber nicht...

Ich hab´s deshalb mal mit WALL_DIRECTION versucht, und das hat gefunzt. Mein Code sieht jetzt so aus:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">!GLOB_ID einsetzen und drehen

!var=1, wenn Fenster (bzw. Wand) gedreht - sonst bleibt var=0
var=1-(WALL_DIRECTION>=90) or 1-(WALL_DIRECTION<=270) or 1-(SYMB_MIRRORED)

!verschiebt Text von der Wand weg
add2 0, 0.5 + ABS(WIDO_SILL - WALL_THICKNESS * WIDO_REVEAL_SIDE)* WIDO_REVEAL_ON

!dreht die ganze Chose um 180°, wenn var=1
rot2 180*var

!setzt Text ein
define style "info" "Arial", 2.5, 5-(6*var-3),2
style "info"
text2 0,0, GLOB_ID

DEL top!SCRIPT--------------------------------------------------------damit kann ich den Text auch noch mit Spiegeln richtig hindrehen...

[ 10-12-2002, 20:32: Beitrag editiert von: Andreas Zeike ]
Anonymous
Nicht anwendbar
@mml
Kein Grund für Ooops. Du hast gefragt, ich habe geantwortet, fertig. Keine Animositäten.

Nochmal, um die Konfusion hier zusammenzufassen:

Es stellten sich von allen möglichen Problemen mit dem Drehen von Objekten 3 Fragen:

1. (offens. von zzyzx und Andreas): Wie stelle ich sicher, daß ein Text in einem Objekt (*.GSM) immer horizontal, d.h. zum unteren Bildschirmrand (= X-Achse) parallel und lesbar bleibt:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"> mul2 1, 1-2*SYMB_MIRRORED
rot2 180*SYMB_MIRRORED - SYMB_ROTANGLE
text2 0,0,"dreh und spiegel mich!"
2. Wie stelle ich es an, daß ein Text in einem Objekt immer lesbar bleibt, d.h. von unten oder von rechts aus betrachtet 'richtig' herum, also nicht auf dem Kopf, steht:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"> var=1-abs(int(abs((SYMB_ROTANGLE<360)*int(SYMB_ROTANGLE/90)-1.5)))
define style "info" "Arial", 2.5, 5-(6*var-3),2
style "info"
rot2 180*var
text2 0,0, "ich dreh mich manchmal"
Dieser Algorithmus ist sicher noch zu vereinfachen, doch nicht einfach alles weglassen, ohne es zu testen. 😉

3. Selbes Problem wie bei 2. (mml - Problem), jedoch bei einer Tür (oder Fenster): Hier gibt es mehr Probleme, da das Objekt nicht auf das AC-Universum, sondern auf die assozierte Wand bezogen ist:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"> var=1-abs(sgn(SYMB_ROTANGLE)-int(abs((WALL_DIRECTION<360)*int(WALL_DIRECTION/90)-1.5)))
define style "info" "Arial", 2.5, 5-(6*var-3),2
style "info"
add2 0,ABS(WIDO_SILL-WALL_THICKNESS*WIDO_REVEAL_SIDE)*WIDO_REVEAL_ON
rot2 180*var
text2 0,0, "ich bleib bei meiner Wand auf der Öffnungseite."
Der Text steht nun, dank des ADD2-Befehls, immer lesbar auf der Außenwandkante (runde und konische Wände ausgenommen) und dreht sich ggf. um lesbar zu bleiben. Auch das kann man vereinfachen, man sollte aber nicht die REVEAL-Parameter löschen, auch wenn sie augenscheinlich keinen Sinn ergeben mögen. 🙂

Daß es evt. etwas unkonventionell ist, entspringt dem Umstand, daß es einer etwas noch komplexeren Aufgabenstellung entstammt.

Und warum nicht so lassen, wenn es funktiniert? 😉
Bernhard Binder
Graphisoft Partner
Graphisoft Partner
mein Beispiel hat sich nur auf ein normales Objekt bezogen und NICHT auf ein Fenster! 😉
AC4.5-AC27 AUT, GER, INT
www.a-null.com