New GDL Features in ARCHICAD 21

This section contains a fly-through of the new GDL features in ARCHICAD 21.
You can find more detailed definition of the new options by following the links.

Introducing Building Material in GDL

New parameter type available in GDL starting from ARCHICAD 21. In addition, general GDL function sets have been enhanced to support this new attribute type.

Building material – command consequences

Existing commands are extended and new ones are introduced to support this feature.
[SET] BUILDING_MATERIAL: new command for 3D use to set the building material parameter for bodies. Check out the command link for more explanation.
SECT_ATTRS{2}: new command to enhance control over all section attributes. Can be used in combination with BUILDING_MATERIAL.
IND: command extended with BUILDING_MATERIAL keyword to support then new building material attribute’s index accessibility.

Building material – global variables

Global variables have been added or enhanced to support building material data.
WALL_BMAT: building material index of the wall, see Wall Globals section
WALL_SKINS_PARAMS: building material index added to the array, see Wall Globals section
COLU_CORE_BMAT: building material index of the column core, see Column Globals section
COLU_VENEER_BMAT: building material index of the column veneer, see Column Globals section
BEAM_BMAT: building material index of the beam, see Beam Globals section
SLAB_BMAT: building material index of the slab, see Slab Globals section
SLAB_SKINS_PARAMS: building material index added to the array, see Slab Globals section
ROOF_BMAT: building material index of the roof, see Roof Globals section
ROOF_SKINS_PARAMS: building material index added to the array, see Roof Globals section
MESH_BMAT: building material index of the mesh, see Mesh Globals section
SHELLBASE_BMAT: building material index of the shell, see Shell Globals section
SHELLBASE_SKINS_PARAMS: building material index added to the array, see Shell Globals section
MORPH_BMAT: building material index of the morph, see Morph Globals section

Building material – request options

Request options have been added or enhanced to support building material data.
Request("Name_of_building_material"): returns the building material name identified by index.
Request("ASSOCLP_PARVALUE_WITH_DESCRIPTION"): building material is now a valid parameter type.

Introducing Profiles in GDL

New parameter type available in GDL starting from ARCHICAD 21. In addition, general GDL function sets have been enhanced to support this new attribute type.

Profile – command consequences

Existing commands are extended and new ones are introduced to support this feature.
RULEDSEGMENTED: creates a surface based on two arbitrary-shaped polyline in 3D space. It generates a sequence of doubly ruled surfaces, like RULED, but with less restriction on input polylines and with a subdivision of better quality.
TUBE{2}: TUBE just got better. The base polygon can contain holes, individual surface settings for all parts to support profiles
POLY2_B{6}: contour attributes (pen and linetype) can be controlled individually for each contour segment. Works well together with profile requests.
VALUES: PROFILETYPES_MASK added to support profile type categories.
IND: command extended with PROFILE_ATTR keyword to support then new profile attribute’s index accessibility.
In CPRISM_, SPRISM_, CROOF, TUBE and REVOLVE commands (versions {3} and above), curved surface can be smooth, the curved segment edges no longer copy the masking settings of the first node of the curved section:
CPRISM_{3}: mask value +8
SPRISM_{3}: mask value +8
CROOF_{3}: mask value +8
TUBE{2}: mask value +256
REVOLVE{4}: mask value +1024

Profile – request options

Request options have been added or enhanced to support profile data. See the Profile Requests for more.
Request("Name_of_Profile"): returns the profile name identified by index.
Request("Profile_components"): returns number and component type of the profile identified by index.
Request("Profile_default_boundingbox"): returns the 2 defining coordinate point of the original bounding rectangle.
Request("Profile_default_geometry"): returns the original geometric data of the profile.
Request{4}("Profile_component_info"): returns a requested attribute value of a dedicated component.

Classification system updates

Request options have been enhanced to support the new classification system.
Request("Properties_Of_Parent"): “propertyType” parameter have been added to this request with possible values for: core property, AC property, IFC property or classification

Introducing the new Stair Tool

Stair – global variables

ARCHICAD provides a whole new set of global variables to assist the creation of objects working together with the new Stair Tool.
Just a few examples:
GLOB_ELEM_TYPE: new values are added to support the new stair and railing object types. See General element parameters for details.

STAIR_AREA: projected 2D area of the stair. See General stair variables for details.

TREAD_ELEVATION: elevation to Project Zero of the selected (current) tread. See General tread variables for details.

RISER_FRONT_AREA: front surface area of the selected (current) riser. See General riser variables for details.

STRUCTURE_WIDTH: width of the selected (current) structure component. See Stair structure variables for details.
GLOB_MVO_STAIR_FLOOR_PLAN_COMP: stair MVO component bitset. See Stair Model View Options variables for details.
STAIR2D_FULL_TPOLYGON_GEOM[n][3]: data triplets of tread 2D polygon nodes. See General 2D related variables for details.

STAIR_TREAD_GEOMETRY[n][3]: data triplets of tread 3D polygon nodes. See Stair 3D variables for details.

See Stair component parameters in general for the new global variables related to stair components.

Stair – fix named optional parameters

ARCHICAD provides a whole new set of parameters to assist the creation of elements objects together with the new Stair Tool.
See Stair related parameters for the new fix named optional parameters related to stairs components.

Introducing the new Railing Tool

Railing – global variables

ARCHICAD provides a whole new set of global variables to assist the creation of objects working together with the new Railing Tool.
Just a few examples:
GLOB_ELEM_TYPE: new values are added to support the new stair and railing object types. See General element parameters for details.
RAILING_HEIGHT: height of the railing segment (as set in Railing Settings Dialog / Segment Settings). See Railing component parameters for details.
RAILING_REFLINE_DISTANCE: horizontal offsets of rail element from railing reference line. See Railing 3D variables for details.
RAIL2D_FULL_POLYLINE_GEOM: contains geometric data of the railing panel. See Railing 2D variables for details.

See Railing component parametersin general for the new global variables related to railing components.

Railing – fix named optional parameters

ARCHICAD provides a whole new set of parameters to assist the creation of elements objects together with the new Railing Tool.
See Railing related parameters for the new fix named optional parameters related to railing components.

Recommended updates of existing library parts

Subtype changes related to Stairs

To support the new Stair and Railing tool, the subtype hierarchy has changed regarding GDL objects. Stair objects belonging to the deprecated subtypes will be available in Object Tool starting from ARCHICAD 21. The new Stair and Railing tool will only work with the new, dedicated subtypes.

Number of returned parameters in macro calls

The number of possible returned elements is limited at 32767 items. This is not a new feature, only a documentation update related to CALL and END/EXIT

Identifiers’ encoding

Identifiers can be GDL keywords, global or local variables or strings (names). The Identifiers has been updated with ASCII restrictions.

Request handling variations

Requests have become more various over the last few years, but ARCHICAD currently handles 4 basic types, according to input parameter number and types:
  • n = REQUEST – default request, with 1 input parameter of string or numeric type
  • n = REQUEST{2} – 2 parameters: string or numeric, string type
  • n = REQUEST{3} – 2 parameters: string, string or numeric array type
  • n = REQUEST{4} – 3 parameters: string or numeric, numeric, string type. Compatibility: introduced in ARCHICAD 21.
ARCHICAD identifies the order and number of the input parameters by either the version of the command, or the exact name (as string constant) of the request option. This means that using the first or both of the following options is the safest:
  • name of the request is always a constant string
  • version is added to the command
In case you put aside your background compatibility concerns (see Multithread Options Issues), and can not avoid using requests with variable names, make sure to state the request version in the code to get the desired results.
In case of variable names only, and no command version, only the default type of requests will work, the rest will cause fault in function or compiler errors. The library part background compatibility check will still report warnings in this case: “Variable request, req or application query name used”. Not recommended, alltogether.
Starting with ARCHICAD 21, the range of usable image types is extended with scalable vector graphics (.svg) in GDL, to support High Dots Per Inch resolution (HDPI) on OS X devices. The resulting library parts are better represented on Windows platforms as well (HDPI support for Windows is not yet available).
This technology requires the use of the LP_XMLConverter tool:
  • the object .xml contains either a GDLPict, Picture, InfoPict section referring to the .svg image, or the image is referred by its name in the scripts (make sure to use the right .tiff extension in the image name reference string).
  • the .svg images should be part of the library source.
  • the .xml to .gsm conversion creates multilayer .tiff images of the original .svg images. These resulting .tiff images contain separate layers with different resolution versions of the same image for 100%, 150% and 200% resolution options.
  • the .gsm items use the .tiff images runtime, selecting the most convenient resolution layer to display on OS X devices (Note: on Windows platform, 100% is the default resolution currently).
For more and detailed information, please check out the Images and HDPI support in GDL guides on the subject.

Polyoperations add-on changes

In the previous versions of the add-on, edge offsetting operations ending with a self-intersecting result polygon returned only the data of one result piece (instead of all pieces). This data-loss of the lesser result polygon pieces have been corrected for ACHICAD 21. See Upcoming changes in the Polyoperations addon for details.