The parameter buffer is a built-in data structure
that may be used if some values (coordinates, for example) change after a definite rule that can be described using a mathematical expression.
This is useful if, for instance, you want to store the current values of your variables.
The parameter buffer is an infinitely long array in which you can store numeric values using the PUT command.
PUT
stores the given values at the end of the buffer.
These values can later be used (by the GET
and USE
commands) in the order in which they were entered
(i.e., the first stored value will be the first one used).
A GET(n) or USE(n) command is equivalent with n values separated by commas.
This way, they can be used in any GDL parameter list where n values are needed.
PUT
PUT expression [, expression, ...]
Store the given values in the given order in the internal parameter buffer.
GET
GET (n)
Use the next n values from the internal parameter buffer and then disregard them.
USE
USE (n)
Use the next n values from the internal parameter buffer without deleting them.
Following USE and GET functions can use the same parameter sequence.
NSP
NSP
Returns the number of stored parameters in the internal buffer.
Example:
Using the parameter buffer:
r = 2 b = 6 c = 4 d = 10 n = 12 s = 180 / n FOR t = 0 TO 180 STEP s PUT r+r*COS(T), c-r*SIN(t), 1 NEXT t FOR i = 1 TO 2 EXTRUDE 3+NSP/3, 0,0,d, 1+16, 0, b, 0, 2*r, b, 0, USE(NSP), 0, b, 0 MULY -1 NEXT i DEL 1 ADDZ d REVOLVE 3+NSP/3, 180, 0, 0, b, 0, 2*r, b, 0, GET(NSP), 0, b, 0 |
The full description:
r = 2 b = 6 c = 4 d = 10 FOR i = 1 TO 2 EXTRUDE 16, 0,0,d, 1+16, 0, b, 0, 2*r, b, 0, 2*r, c, 1, r+r*COS(15), c-r*SIN(15), 1, r+r*COS(30), c-r*SIN(30), 1, r+r*COS(45), c-r*SIN(45), 1, r+r*COS(60), c-r*SIN(50), 1, r+r*COS(75), c-r*SIN(75), 1, r+r*COS(90), c-r*SIN(90), 1, r+r*COS(105), c-r*SIN(105), 1, r+r*COS(120), c-r*SIN(120), 1, r+r*COS(135), c-r*SIN(135), 1, r+r*COS(150), c-r*SIN(150), 1, R+R*COS(165), c-r*SIN(165), 1, 0, b, 1, 0, b, 0 MULY -1 NEXT i DEL 1
ADDZ d REVOLVE 16, 180, 0, 0, b, 0, 2*r, b, 0, 2*r, c, 1, r+r*COS(15), c-r*SIN(15), 1, r+r*COS(30), c-r*SIN(30), 1, r+r*COS(45), c-r*SIN(45), 1, r+r*COS(60), c-r*SIN(50), 1, r+r*COS(75), c-r*SIN(75), 1, r+r*COS(90), c-r*SIN(90), 1, r+r*COS(105), c-r*SIN(105), 1, r+r*COS(120), c-r*SIN(120), 1, r+r*COS(135), c-r*SIN(135), 1, r+r*COS(150), c-r*SIN(150), 1, r+r*COS(165), c-r*SIN(165), 1, 0, b, 1, 0, b, 0