License Delivery maintenance is expected to occur on Saturday, November 30, between 8 AM and 11 AM CET. This may cause a short 3-hours outage in which license-related tasks: license key upload, download, update, SSA validation, access to the license pool and Graphisoft ID authentication may not function properly. We apologize for any inconvenience.
GDL
About building parametric objects with GDL.

Zone Labels: read parameters from zones

Jochen Suehlo
Moderator

For zone labels the usually used command

REQUEST ("ASSOCLP_PARVALUE", "ROOM_NAME", ...

seems not to work.

What is the corresponding command for zone parameters?

Jochen Suehlo . AC12-27 . MAC OSX 14.4 . WIN11
GDL object creation: b-prisma.de
7 REPLIES 7
Palawat
Advocate

You might want to look at the "Built-in Property".
For the Indigo Figs Zone Label, I request "Property_Value_Of_Parent" with a "Built-in Property" using "Builtin.Zone_ZoneName" for "Zone Name".

 

Archicad 26, Windows 10, Corei7 3.4 GHz, 16 GB Ram.
https://www.indigofigs.com
https://www.facebook.com/indigofigs
Jochen Suehlo
Moderator

Thank You, Palawat.
This is very interesting. I checked your zone stamp from Indigo and in the stamp and MVO object I have seen that the whole parameters section from the zone stamp is there in the Property list.
Questions:
1. does the zone label uses these zone properties and not a direct request to the zone parameters?
2. How did you get those "zone parameters" in the Properties dropdown list?
Is there any example in the Archicad library that I didn't find?

 

Jochen Suehlo . AC12-27 . MAC OSX 14.4 . WIN11
GDL object creation: b-prisma.de
Palawat
Advocate

Glad I could help.

1. Yes, it does. Since all the ROOM_NAME, ROOM_NUMBER, ... are available only for zone stamp, so the zone label uses built-in zone properties.

2. Not sure if there's an example but I use UI_CUSTOM_POPUP_INFIELD which accepts array variables.

Master script:

dim uiZoneParam[][]

uiZoneParam[1][1] = "Zone Name"
uiZoneParam[1][2] = "Catagory Name"
uiZoneParam[1][3] = ""
uiZoneParam[1][4] = "Zone Name"

uiZoneParam[2][1] = "Zone Number"
uiZoneParam[2][2] = "Catagory Name"
uiZoneParam[2][3] = ""
uiZoneParam[2][4] = "Zone Number"

...

 

UI script:

dim parentProperties[]
n = REQUEST ("Properties_Of_Parent", "", parentProperties)
n = REQUEST("PROPERTY_NAME", name, typeName, groupName, propertyName)
ui_custom_popup_infield{2}	name, x, y, width, height,
				1, 3, 1, propertyName,
				"None", "", "", "None",
				uiZoneParam,
				parentProperties

These are not the actual code. I simplified it a bit but yes, you get the idea. 🙂

Archicad 26, Windows 10, Corei7 3.4 GHz, 16 GB Ram.
https://www.indigofigs.com
https://www.facebook.com/indigofigs

BTW. Zone labels biggest drawback (resulting in "not using" in general) is inability to access the zone stamp parameters - GS devs please read 🙂

Hi,

 

please enter/vote a wish about those which aren't available as properties.

Péter Baksa
Software Engineer, Library as a Platform
Graphisoft SE, Budapest

Done

Jochen Suehlo
Moderator

The example objects from Graphisoft are very complicated. The GDL manual is also not very well documented. It therefore took me a while to figure out the simplest version of how to read a room stamp parameter with a label (Thank You Palawat for the hint).

IF _param[i] = "Room Name" THEN
  _actProperty = "Builtin.Zone_ZoneName" ! Room Name
  m = request ("Property_Value_Of_Parent", _actProperty, _typeValue, dim1, dim2, _propertyValues)
  _content_2D[i] = _propertyValues
ENDIF
Jochen Suehlo . AC12-27 . MAC OSX 14.4 . WIN11
GDL object creation: b-prisma.de