- •Contents
- •General Overview
- •Starting Out
- •Scripting
- •Library Part Structure
- •Analyze, Deconstruct and Simplify
- •Elaboration
- •Entry Level
- •Intermediate Level
- •Advanced Level
- •Expert Level
- •3D Generation
- •The 3D Space
- •Coordinate Transformations
- •The GDL Interpreter
- •The GDL Script Analysis
- •GDL Syntax
- •Statements
- •Line
- •Label
- •Characters
- •Strings
- •Identifiers
- •Variables
- •Parameters
- •Simple Types
- •Derived Types
- •Coordinate Transformations
- •2D Transformations
- •3D Transformations
- •Managing the Transformation Stack
- •3D Shapes
- •Basic Shapes
- •BLOCK
- •BRICK
- •CYLIND
- •SPHERE
- •ELLIPS
- •CONE
- •PRISM
- •PRISM_
- •CPRISM_
- •BPRISM_
- •FPRISM_
- •HPRISM_
- •SPRISM_
- •SLAB
- •SLAB_
- •CSLAB_
- •CWALL_
- •BWALL_
- •XWALL_
- •XWALL_{2}
- •BEAM
- •CROOF_
- •MESH
- •ARMC
- •ARME
- •ELBOW
- •Planar Shapes in 3D
- •HOTSPOT
- •RECT
- •POLY
- •POLY_
- •PLANE
- •PLANE_
- •CIRCLE
- •Shapes Generated from Polylines
- •EXTRUDE
- •PYRAMID
- •REVOLVE
- •RULED
- •RULED{2}
- •SWEEP
- •TUBE
- •TUBEA
- •COONS
- •MASS
- •Elements for Visualization
- •LIGHT
- •PICTURE
- •3D Text Elements
- •TEXT
- •RICHTEXT
- •Primitive Elements
- •VERT
- •TEVE
- •VECT
- •EDGE
- •PGON
- •PIPG
- •COOR
- •BODY
- •BASE
- •Cutting in 3D
- •CUTPLANE
- •CUTPOLY
- •CUTPOLYA
- •CUTSHAPE
- •CUTFORM
- •Solid Geometry Commands
- •GROUP
- •ENDGROUP
- •ADDGROUP
- •SUBGROUP
- •ISECTGROUP
- •ISECTLINES
- •PLACEGROUP
- •KILLGROUP
- •SWEEPGROUP
- •Binary 3D
- •2D Shapes
- •Drawing Elements
- •HOTSPOT2
- •LINE2
- •RECT2
- •POLY2
- •POLY2_
- •POLY2_A
- •POLY2_B
- •POLY2_B{2}
- •POLY2_B{3}
- •CIRCLE2
- •SPLINE2
- •SPLINE2A
- •PICTURE2
- •PICTURE2{2}
- •Text Element
- •TEXT2
- •RICHTEXT2
- •Binary 2D
- •FRAGMENT2
- •FRAGMENT2
- •3D Projections in 2D
- •PROJECT2
- •PROJECT2{2}
- •PROJECT2{3}
- •Drawings in the List
- •DRAWING2
- •DRAWING3
- •DRAWING3{2}
- •DRAWING3{3}
- •Graphical Editing
- •Hotspot-based Editing Commands
- •HOTSPOT
- •HOTLINE2
- •HOTARC2
- •Status Codes
- •Status Code Syntax
- •Additional Status Codes
- •Previous part of the polyline: current position and tangent is defined
- •Segment by absolute endpoint
- •Segment by relative endpoint
- •Segment by length and direction
- •Tangential segment by length
- •Set start point
- •Close polyline
- •Set tangent
- •Set centerpoint
- •Tangential arc to endpoint
- •Tangential arc by radius and angle
- •Arc using centerpoint and point on the final radius
- •Arc using centerpoint and angle
- •Full circle using centerpoint and radius
- •Attributes
- •Directives
- •Directives for 3D and 2D Scripts
- •RADIUS
- •RESOL
- •TOLER
- •LINE_PROPERTY
- •[SET] STYLE
- •SET STYLE 0
- •Directives Used in 3D Scripts Only
- •MODEL
- •[SET] MATERIAL
- •SECT_FILL
- •SHADOW
- •Directives Used in 2D Scripts Only
- •DRAWINDEX
- •[SET] FILL
- •[SET] LINE_TYPE
- •Inline Attribute Definition
- •Materials
- •DEFINE MATERIAL
- •DEFINE MATERIAL BASED_ON
- •DEFINE TEXTURE
- •Fills
- •DEFINE FILL
- •DEFINE FILLA
- •DEFINE SYMBOL_FILL
- •DEFINE SOLID_FILL
- •DEFINE EMPTY_FILL
- •Line Types
- •DEFINE LINE_TYPE
- •DEFINE SYMBOL_LINE
- •Styles
- •DEFINE STYLE
- •DEFINE STYLE {2}
- •Paragraph
- •Textblock
- •Additional Data
- •External file dependence
- •Non-Geometric Scripts
- •The Properties Script
- •DATABASE_SET
- •DESCRIPTOR
- •REF DESCRIPTOR
- •COMPONENT
- •REF COMPONENT
- •BINARYPROP
- •SURFACE3D ( )
- •VOLUME3D ( )
- •POSITION
- •DRAWING
- •The Parameter Script
- •VALUES
- •PARAMETERS
- •LOCK
- •HIDEPARAMETER
- •The User Interface Script
- •UI_DIALOG
- •UI_PAGE
- •UI_CURRENT_PAGE
- •UI_BUTTON
- •UI_SEPARATOR
- •UI_GROUPBOX
- •UI_PICT
- •UI_STYLE
- •UI_OUTFIELD
- •UI_INFIELD
- •UI_INFIELD {2}
- •UI_INFIELD{3}
- •UI_TOOLTIP
- •Expressions and Functions
- •Expressions
- •VARDIM1(expr)
- •VARDIM2(expr)
- •Operators
- •Arithmetical Operators
- •Relational Operators
- •Boolean Operators
- •Functions
- •Arithmetical Functions
- •CEIL
- •ROUND_INT
- •Circular Functions
- •Transcendental Functions
- •Boolean Functions
- •Statistical Functions
- •Bit functions
- •BITTEST
- •BITSET
- •Special Functions
- •String Functions
- •SPLIT
- •STRLEN
- •STRSTR
- •STRSUB
- •Control Statements
- •Flow Control Statements
- •NEXT
- •GOTO
- •GOSUB
- •RETURN
- •END / EXIT
- •Parameter Buffer Manipulation
- •Macro Objects
- •The Output Statement
- •File Operations
- •OPEN
- •INPUT
- •VARTYPE
- •OUTPUT
- •CLOSE
- •Miscellaneous
- •Global Variables
- •General environment information
- •Story information
- •Fly-through information
- •General element parameters
- •Object, Lamp, Door, Window parameters
- •Object, Lamp parameters
- •Object, Lamp, Door, Window parameters - available for listing and labels only
- •Object, Lamp parameters - available for listing and labels only
- •Window, Door and Wall End parameters
- •Window, Door parameters - available for listing and labels only
- •Lamp parameters - available for listing and labels only
- •Label parameters
- •Wall parameters - available for Doors/Windows
- •Wall parameters - available for listing and labels only
- •Column parameters - available for listing and labels only
- •Beam parameters - available for listing and labels only
- •Slab parameters - available for listing and labels only
- •Roof parameters - available for listing and labels only
- •Fill parameters - available for listing and labels only
- •Mesh parameters - available for listing and labels only
- •Free users’ globals
- •Requests
- •REQUEST
- •Doors and Windows
- •General Guidelines
- •Creation of Door/Window Library Parts
- •3D related challanges
- •Rectangular Doors/Windows in Straight Walls
- •Non-Rectangular Doors/Windows in Straight Walls
- •WALLHOLE
- •WALLNICHE
- •Rectangular Doors/Windows in Curved Walls
- •Non-Rectangular Doors/Windows in Curved Walls
- •2D Related Challanges
- •Cutting custom wall opening
- •WALLHOLE2
- •WALLBLOCK2
- •WALLLINE2
- •WALLARC2
- •GDL Created from the Floor Plan
- •Keywords
- •Common Keywords
- •Reserved Keywords
- •3D Use Only
- •2D Use Only
- •Non-Geometric Scripts
- •Property Script
- •Parameter Script
- •Interface Script
- •Alphabetical List of Current GDL Keywords
- •Parameter Naming Convention
- •GDL Data I/O Add-On
- •Description of Database
- •Opening a Database
- •Reading Values from Database
- •Writing Values into Database
- •Closing Database
- •GDL DateTime Add-On
- •Opening Channel
- •Reading Information
- •Closing Channel
- •GDL File Manager I/O Add-On
- •Specifying Folder
- •Getting File/Folder Name
- •Finishing Folder Scanning
- •GDL Text I/O Add-On
- •Opening File
- •Reading Values
- •Writing Values
- •Closing File
- •Property GDL Add-On
- •OPEN
- •CLOSE
- •INPUT
- •OUTPUT
- •GDL XML Extension
- •Opening XML Document
- •Reading XML Document
- •Modifying XML Document
- •Index
- •Numerics
Control Statements
END / EXIT
END / EXIT [v1, v2, ..., vn]
End of the current GDL script. The program terminates or returns to the level above. It is possible to use several ENDs or EXITs in a GDL file. If the optional list of values is specified, the current script will pass these return values to its caller.
See the description of receiving returned parameters at “CALL” on page 218.
BREAKPOINT
BREAKPOINT expression
With this command, you can specify a breakpoint in the GDL script. The GDL debugger will stop at this command if the value of the parameter (a numeric expression) is true (1) and the Enable Breakpoints option of the debugger is checked. In “normal” execution mode, the GDL interpreter simply steps over this command.
PARAMETER BUFFER MANIPULATION
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. The PUT command 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.
214 |
ArchiCAD 11 GDL Reference Guide |
Control Statements
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.
ArchiCAD 11 GDL Reference Guide |
215 |
Control Statements
Example for 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
216 |
ArchiCAD 11 GDL Reference Guide |
Control Statements
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, |
C-R*SIN(15), |
1, |
R+R*COS(15), |
||
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, |
C-R*SIN(15), |
1, |
R+R*COS(15), |
||
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 |
|
|
ArchiCAD 11 GDL Reference Guide |
217 |