abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

Wir schätzen Ihren Input!
Bitte nehmen Sie an der Umfrage zu Archicad 28 Startbildschirm und Lerninhalte/Schnell-Tutorials teil

Programmierung
Alles über Programmierung in GDL und Python

TIPP: Parameterliste im CODE

andreaszeike
Newcomer
wenn man das Script für sein Objekt als CODE ins Forum stellt, sollte man die Parameterliste als Script vorne an stellen, sonst gibt´s leicht Misverständnisse...

Dazu folgender TIPP:
Sehr gut geht das, indem man das Objekt einfach in AC bei x,y = 0,0 einsetzt, markiert, und noch einmal als Objekt abspeichert.

Dann bekommt man im Script des neuen Objektes nämlich einen Call-Befehl, der alle voreingestelten Parameter des Original-Objektes auflistet z.B.:

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

SET MATERIAL 0

ADD2 0.0, 0.0

CALL "Boundingbox Funktion" PARAMETERS A = 4.0, B = 0.5,

Stringtext = "STRINGTEXT", Textstil = "Arial Westlich", stift = 22,

Stiftlinie = 1, WoTextPunkt = 5

DEL 1Gut, was? Jetzt braucht man nur noch alles, was hinter PARAMETERS steht, vor das Script des orig.Objektes zu setzen, und schon kann man´s als CODE veröffentlichen - garantiert richtig und für jeden nachvollziehbar!!

:idee:
Gruß, az
4 ANTWORTEN 4
andreaszeike
Newcomer
... und David Nicolson-Cole sagt, es ist sinnvoll, sich Groß-und Kleinschreibung beim Programmieren anzugewöhnen, der Übersichtlichkeit halber. Er schreibt deshalb alle Befehle Groß und alle Variablen klein.

...ich finde, er hat Recht!!

hier das Script für die Bounding-Box von Heimo als Beispiel:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">
!!!!Parameter
A=10 ! Breite der Bounding-Box
B=2 ! Höhe der Bounding-Box
stringtext="abc..." ! gewünschter Text-String
stift=2 ! Stiftfarbe der Schrift
stiftlinie=1 ! Stiftfarbe der Linie


!!!!Funktion Text in Boundingbox - Heimo Mooslechner 7/2002


wotextpunkt=5 ! Code des Ankerpunktes define style
textstil="Arial Westlich" ! gewünschte Schrift (Textstil)

!!!!zeichne Bounding-Box
pen Stiftlinie
LINE2 0, 0, 0, b
LINE2 0, 0, a, 0
LINE2 a, b, 0, b
LINE2 a, 0, a, b

HOTSPOT2 0,0
HOTSPOT2 a, b

!!!!Zeichnungsmaßstabs-Abfrage
m=1/1000*GLOB_SCALE !!!!Zeichnungsmaßstabs-Abfrage

!!Parameter-Übergabe-Definition
aatxt=a
bbtxt=b

!!hole dir von 1234: den passenden Textstil
GOSUB 1234:

!! schreibe in Box
PEN stift
TEXT2 a/2, b/2, Stringtext

END !!!!!!!!!!!!!!!!!PROGRAMM ENDE!!!!!!!!!!!!!!!!

1234:
!!!!!Funktion: Teste Schriftgröße A+B und gib mir einen Stil retour, der in die Box paßt

!!!Dummystil definieren
DEFINE STYLE "Dummy" Textstil, aatxt*m, WoTextPunkt, 0
STYLE Dummy

!!Textbreite mit Dummystil ermitteln
TextbreiteA=STW(Stringtext)

!!Verhältnis von Dummy-Textbreite zu aa-Länge ermitteln
VerhaeltnisA = aatxt/TextbreiteA

!!!Dummystil für aa-Breite definieren
DEFINE STYLE "DummyA" Textstil, aatxt*VerhaeltnisA, WoTextPunkt, 0
STYLE DummyA

!!Texthöhe für diesen neuen aa-Stil ermitteln
x=REQUEST ("Height_of_style", "DummyA", Texthoch)

!!Zeichnungsmaßstab für Texthoch ausschalten
Texthoch=Texthoch*m

!!Falls Texthoch < b dann Breiten-Stil verwenden, sonst: Höhenstil verwenden
IF texthoch < bbtxt then
ELSE
hochverhalt=texthoch/bbtxt
DEFINE STYLE "DummyB" Textstil, aatxt*VerhaeltnisA/hochverhalt, WoTextPunkt, 0
STYLE DummyB
ENDIF
RETURN

Was meint ihr?

Gruß, az
Anonymous
Nicht anwendbar
Ich finde, man sollte die Parameterliste einfangen, wenn man das Objekt nicht selber mit dem [GDL]-Befehl zur Verfügung stellt,
z.B.:

<img src="http://www.download.b-prisma.de/objekte/paramset.gif" alt=" - " />

[ 03. Juli 2005, 12:11: Beitrag editiert von: Jochen Suehlo ]
andreaszeike
Newcomer
Was mich am CODE ärgert, ist, dass ich keine Absätze steuern kann.

Alles klebt aufeinander -

vielleicht sollte ich Script besser doch als Text eingeben? gehen natürlich die Einrückungen flöten...

Oder gibt es Steuerzeichen für CODE?

Beispiel:

!! TEXTEINPASSUNGSROUTINE

!! by Laurent Godel, "gdlguru", GDLa
!! ***Programmierer des GDL Calculator ***
!! zum freien Download auf:
!! http://personal.ibernet.com/personal/gdl/

!! angepasst von Andreas Zeike, 07/2002 (Masstabsunabhängig)

!VARIABLE

!EINGABETEXT (String)
stringval="Manchmal funktionieren numerische Werte wie 5’-0’’und 10’-0’’nicht in der alten Version."

!ANZAHL ERLAUBTER ZEICHEN PER ZEILE
charwrap=50

!TEXTHÖHE IN MM
fonth=2

!SCRIPT
!MASSSTABS-ANPASSUNG
scale=100/A_
scaleA=A_/10

!ZEILENABSTAND
linespace=(fonth/scale)/scaleA

!STYLE-ANWEISUNG
PEN 2
DEFINE STYLE "TEXT" "ARIAL",fonth*scale,1,0
SET STYLE "TEXT"
word=" "
Stringtemp=""

GOSUB 100:
Stringtemp=word
WHILE spacepos>0 AND doublespace=0 DO
IF cumulen< charwrap THEN
GOSUB 100
IF spacepos>0 THEN
oldstringtemp=Stringtemp
Stringtemp=Stringtemp+" "+word
ENDIF
ELSE
TEXT2 0,0,oldstringtemp
cumulen=STRLEN(word)
Stringtemp=word
ADD2 0,-2*linespace
ENDIF
ENDWHILE

!TEXTAUSGABE
TEXT2 0,0,stringtemp+" "+word

END!-----------------------------------

!SUBROUTINE----------------------------
100:
spacepos=STRSTR(stringval," ")
doublespace=STRSTR(stringval," ")
IF spacepos > 1 THEN
word=STRSUB(stringval,1,spacepos-1)
wordlen=STRLEN(word)
IF wordlen > charwrap THEN
PRINT "Zu kleiner Wert für Buchstabeneinpassung - bitte vergrößern!"
END
ENDIF
cumulen=cumulen+wordlen+1
stringval= STRSUB(stringval,STRLEN(word)+2,STRLEN(stringval)-STRLEN(word)-1)
ELSE
word=stringval
ENDIF
RETURN

!******Ende der Texteinpassungsroutine

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


!! TEXTEINPASSUNGSROUTINE

!! by Laurent Godel, "gdlguru", GDLa
!! ***Programmierer des GDL Calculator ***
!! zum freien Download auf:
!! http://personal.ibernet.com/personal/gdl/

!! angepasst von Andreas Zeike, 07/2002 (Masstabsunabhängig)


!VARIABLE

!EINGABETEXT (String)
stringval="Manchmal funktionieren numerische Werte wie 5’-0’’und 10’-0’’nicht in der alten Version."

!ANZAHL ERLAUBTER ZEICHEN PER ZEILE
charwrap=50

!TEXTHÖHE IN MM
fonth=2

!SCRIPT
!MASSSTABS-ANPASSUNG
scale=100/A_
scaleA=A_/10

!ZEILENABSTAND
linespace=(fonth/scale)/scaleA

!STYLE-ANWEISUNG
PEN 2
DEFINE STYLE "TEXT" "ARIAL",fonth*scale,1,0
SET STYLE "TEXT"
word=" "
Stringtemp=""

GOSUB 100:
Stringtemp=word
WHILE spacepos>0 AND doublespace=0 DO
IF cumulen< charwrap THEN
GOSUB 100
IF spacepos>0 THEN
oldstringtemp=Stringtemp
Stringtemp=Stringtemp+" "+word
ENDIF
ELSE
TEXT2 0,0,oldstringtemp
cumulen=STRLEN(word)
Stringtemp=word
ADD2 0,-2*linespace
ENDIF
ENDWHILE

!TEXTAUSGABE
TEXT2 0,0,stringtemp+" "+word

END!-----------------------------------



!SUBROUTINE----------------------------
100:
spacepos=STRSTR(stringval," ")
doublespace=STRSTR(stringval," ")
IF spacepos > 1 THEN
word=STRSUB(stringval,1,spacepos-1)
wordlen=STRLEN(word)
IF wordlen > charwrap THEN
PRINT "Zu kleiner Wert für Buchstabeneinpassung - bitte vergrößern!"
END
ENDIF
cumulen=cumulen+wordlen+1
stringval= STRSUB(stringval,STRLEN(word)+2,STRLEN(stringval)-STRLEN(word)-1)
ELSE
word=stringval
ENDIF
RETURN

!******Ende der Texteinpassungsroutine


Hmooslechner
Moderator
Ich finde die Methode von Andreas besser, weil man da zumeindest die Namen mit STRG+C rauskopieren kann (=fehlervermeidender), aber optisch besser ist Jochens Methode, weil da die Art der Parameter klar ersichtlich ist.
Am Besten aber finde ich einfach das GDL uploaden zu können, denn da hat man alles.
Da tu ich dann aber nicht, wenn ich will, daß sich "irgendwer" mit den Funktionen genau auseinandersetzten sollte, damit mans richtig versteht. Dann ists mit den Parametern auch nicht das riesen-Problem - oder?
AC5.5-AC27EduAut, PC-Win10, MacbookAirM1, MacbookM1Max, Win-I7+Nvidia