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

Variablenübergabe über eine Auflistung am Programmanfang

wilderwullewatz
Contributor
Hallo,

als Newcomer in Sachen GDL habe ich eine vielleicht peinliche Frage. Ich möchte ein Objekt aus verschiedenen Dreiecken konstruieren. Die Werte der x,y,z - Koordinaten sollen in einer Liste am Anfang stehen und dann durch eine Schleife ausgelesen und abgearbeitet werden. Früher in BASIC-Zeiten ging das glaube ich mit READ UNTIL.... Jetzt habe ich folgenden Code zusammengestrickt der aber generell nicht funktioniert. Wo liegt da der Denkfehler??? Hier der Code:

PUT 1.6e-06,-0.0022953,-0.0009002,0.0005069,-0.0022964,0.0006551,0.0008193,-0.0022953,-0.0003062,
0.0004796,-0.0012617,0.0020085,0.0018026,-0.0012617,0.0010473,0.0009849,-0.0017927,0.001313


for i=1 to NSP

x1 = USE(1): y1 = USE(1): z1 = USE(1): x2 = USE(1): y2 = USE(1): z2 = USE(1): x3 = USE(1): y3 = USE(1): z3 = USE(1)

PLANE 3,
x1,y1,z1,
x2,y2,z2,
x3,y3,z3


HOTSPOT x1,y1,z1
HOTSPOT x2,y2,z2
HOTSPOT x3,y3,z3

next i

END
ARCHICAD 20 OS X Yosemite 10.10.5
14 ANTWORTEN 14
Anonymous
Nicht anwendbar
Mal abgesehen vom Sinn einer solchen Konstruktion solltest du GET verwenden. Wenn der Wert auf dem Stack erhalten bleiben soll ginge eas auch mit

x1=use(1) : put get(1)

Das legt den gelesenen Wert wieder auf den Stack oben drauf.

Ohne zu wissen, was du vorhast, würde ich es aber mit einem Array probieren. DIM und x1[1] etc. solltest du von Basic auch noch kennen.

[ 11. April 2005, 10:01: Beitrag editiert von: Ove Bodj ]
wilderwullewatz
Contributor
Hallo, jetzt hab ich das mal eingebaut, werd aber auch nicht schlauer:

DIM x1 [3]: DIM y1 [3]: DIM z1 [3]: DIM x2 [3]: DIM y2 [3]: DIM z2 [3]: DIM x3 [3]: DIM y3 [3]: DIM z3 [3]

PUT 1.6e-06,-0.0022953,-0.0009002,0.0005069,-0.0022964,0.0006551,0.0008193,-0.0022953,-0.0003062,
0.0004796,-0.0012617,0.0020085,0.0018026,-0.0012617,0.0010473,0.0009849,-0.0017927,0.001313


FOR I = 1 to 2

X1=USE(1) : PUT GET(1)

NEXT I

Ich bekomme als Fehlermeldung -inkompatible anforderungsbemaßungen

[ 11. April 2005, 08:59: Beitrag editiert von: wilderwullewatz ]
ARCHICAD 20 OS X Yosemite 10.10.5
wilderwullewatz
Contributor
Fehler liegt hier... jetzt geht es! Danke!!
ARCHICAD 20 OS X Yosemite 10.10.5
zzyzx
Newcomer
ohne ansatzmässig zu verstehen, worauf du raus willst, wäre auch das möglich:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">PUT 1.6e-06,-0.0022953,-0.0009002,0.0005069,-0.0022964,0.0006551,0.0008193,-0.0022953,-0.0003062,
0.0004796,-0.0012617,0.0020085,0.0018026,-0.0012617,0.0010473,0.0009849,-0.0017927,0.001313
PLANE 3,
use(9)

HOTSPOT get(3)
HOTSPOT get(3)
HOTSPOT get(3)das array von dem letzten posting hattest du zwar definiert, aber nicht gefüllt bzw. verwendet.

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif"> als Newcomer in Sachen GDL ... meinst du nicht, dass das ein etwas heftiger einstieg in gdl ist 😉
wilderwullewatz
Contributor
Also es funktioniert jetzt fast alles. Ich muß nämlich einen "Buckyball" - Fussball zusammensetzen. Nachdem jetzt alle Flächen über PUT und GET auslesbar sind ist das Ding fast fertig. Ein Problem bereitet jetzt nur noch die Fehlermeldung "Die Verwendung von realen Typen kann zu Präzisionsproblemen führen" - was heisst das und wie kann man das umgehen? Dann noch eine Frage: Wie kann ich meine Werte mir textlich anzeigen lassen? Bei dem Befehl PRINT, der ja angeblich eine Dialogbox auf dem Bildschirm öffnet passiert gar nichts.
ARCHICAD 20 OS X Yosemite 10.10.5
zzyzx
Newcomer
was diese "realen typen" mit deinem virtuellen fussball machen, kann ich dir nicht sagen 😉
aber das mit dem print ist relativ einfach, du musst nochg angeben, was es ausgeben soll.
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">PUT 1.6e-06,-0.0022953,-0.0009002,0.0005069,-0.0022964,0.0006551,0.0008193,-0.0022953,-0.0003062,
0.0004796,-0.0012617,0.0020085,0.0018026,-0.0012617,0.0010473,0.0009849,-0.0017927,0.001313
PLANE 3,
use(9)
print use(9)
HOTSPOT get(3)
HOTSPOT get(3)
HOTSPOT get(3) aber nochmal nachgehakt:
- woher bekommst du die 3d koordinaten der punkte, die du mittels put hineinsteckst? (selberrechnen kann ich mir nicht vorstellen, aus einem anderen programm vielleicht?)
- reicht eine reine flächenhülle überhaupt (da kannst du z.b. keine löcher reinschneiden ?
- beschreib mal genauer, was du genau brauchst, vielleicht hat ja jemand noch eine bessere idee.
:winken:
wilderwullewatz
Contributor
Das mit dem Print funktioniert nicht. Ich habe eine Variable von der ich gerne mir den wert anzeigen lassen würde. Ich bekomme die Meldung: Fehler sind im Laufe der letzten Operation aufgetreten. Der Abschnitt lautet:
e1 = SQR ( (z2-z1)^2 + (x2-x1)^2 + (y2-y1)^2 )
e2 = SQR ( (z3-z2)^2 + (x3-x2)^2 + (y3-y2)^2 )
e3 = SQR ( (z1-z3)^2 + (x1-x3)^2 + (y1-y3)^2 )

kantenlaenge = MIN (e1,e2,e3)
print kantenlaenge
ARCHICAD 20 OS X Yosemite 10.10.5
wilderwullewatz
Contributor
Es geht auch kein zusätzliches Fenster auf. Muss man noch ausserhalb von GDL irgendetwas einstellen?

Wie kriegt man hier in diese Beitragsbox mehr Text rein. Selbst in der Vorschau wird alles abgeschnitten!!

Im nächsten Fenster zeige ich was ich am Ende haben will.....
ARCHICAD 20 OS X Yosemite 10.10.5
Anonymous
Nicht anwendbar
Das hängt davon ab, wo der PRINT steht. Probiere mal Master/2D-Skript/3D-Skript durch.

Außerdem glaube ich hat es etwas mit den 3D-Protokolleinstellungen zu tun.

Keine Antwort gefunden?

Andere Beiträge
im Board ansehen

Zurück zum Board

Neueste Lösungen durchsuchen

Akzeptierte Lösungen zeigen

Eine neue Diskussion starten!

Neues Thema erstellen