We value your input!
Please participate in Archicad 28 Home Screen and Tooltips/Quick Tutorials survey

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