The Global Archicad Community

Stay informed. Get help. Share your knowledge.

GDL language and objects, API, Add-ons, Script…

Moderators: Karl Ottenstein, LaszloNagy, ejrolon, Barry Kelly, Gordana Radonic, nbalogh, mnguyen, gkmethy

What is your opinion about this Wish?

No votes
Not Important
No votes
Not Needed
Here is a wish which I think would be really great if implemented.
Many GDL objects have value lists.
This topic is about how to extend the default value list of Flooring Types available in Zone Stamps: ... 58#p310458
This other topic is about the default value list of Fire Rating values available in Doors: ... 34&t=71264

So my wish is:

Let us have a central repository for all value lists that are used by GDL Objects (maybe in a folder within the embedded Library), plus an interface to open any of the values lists and edit/add the list of available values. GDL objects using these values then will always use the most up-to-date list of values. This way, these values list will not be buried somewhere deep in GDL but would be accessible for modification, which is desirable because no default GDL value list will ever be suitable for the whole Archicad users community.

There are many of these potential value lists:
-Zone names
-Flooring/Covering types
-Fire ratings
-Acoustic ratings
-Standard Door/Window/Skylight size combinations (e. g. 90x150, 150x150 etc.)
-Standard Steel Profile sizes
-Standard MEP element sizes
-Standard Kitchen cabinet sizes

Currently, if the list of default values is not good enough one has to have good GDL scripting skills to be able to modify them. This would greatly enhance the usability of these GDL Objects.

Additionally, the use of these value lists could be optional. For example, in the case of Doors/Windows, you could have a checkbox using which you could either restrict sizes to be selected from the value list or use "custom" and set any value you want.
It can kind of be done now with a MASTER_GDL macro.
Any macro with the name containing MASTER_GDL (i.e. MASTER_GDL_variables) will be run when a library is loaded.
This MASTER_GDL file can just be a bunch of VALUE lists, just as you would create in any object.

So now you create the parameter in any object but do not create the VALUE list - as you already have it in the MASTER_GDL.
This will be available to any object that has that parameter.

If you do create a VALUE list in the object using that parameter - it will simply override what is in the MASTER_GDL.

The thing is you need to manually edit this MASTER_GDL and re-load the library if you want to make any changes.
It would be nice to have an interface that allows the user to simply edit this list rather than opening and editing the macro script.

Using Properties in objects is similar and gives us the interface for editing the list, but theses are not actual variables in the object.

My opinion in inline with that of Barry Kelly, although I would also propose using a macro dedicated for that purpose only
Totally wrong direction.
I'd rather wish to have access to Properties in GDL.

This would tick so many boxes at once!

Please not another fiddling "solution". Graphisoft needs to start thinking more integratively.
GDL is the biggest asset of Archicad and it's mightiest enemy.
I am with runxel in this one.
IMO "Properties" is the foundation of BIM. Filter, inject, assemble them freely.
The Property Manager can do exactly what the Parameter section do inside a GDL object. We just need to also have the option to insert already created properties on objects.
My 2cts.
@Braza & @runxel

I would go with the opinion of @runxel if and only if,
  1. Properties can be exported with projects file saving as PLA. (Checked)
  2. Properties values can be assigned by a GDL parameter, or vice verse. (Unchecked)
  3. Editing a list of values in Properties or their order, would not necessarily mean that the values in GDL parameters of used library parts would get shifted. (Unchecked)
Last edited by Moonlight on Thu Nov 26, 2020 10:43 am, edited 1 time in total.
Can I suggest rewording this wish and the criteria selected for the Wishlist. I think the metadata path from objects to properties is an important one which wasn't part of the original wish.

I think this is good that this wish has created a good discussion with many suggestions.

So, to summarize, if I understand correctly, runxel and Braza suggest that instead of having a master file of value lists for Library Parts, we should make Library Parts capable of reading and using Property values. I agree that this is a better idea. I have one concern though: what happens if the Property the Library Part is referencing does not exist in the file? In this case, we should receive a message from the Library part that it is missing and should be created and its value list created as well.

Aaron's suggestion is to enable data flow the other way around: to make Library Part parameters available for use in Property Expressions (something that is currently not available), just like Library Part parameters can be listed in schedules.

You got @Braza & @runxel idea correctly, but adding to your concern there is another, what happens if the values' order have been changed ???

I propose (if possible), that there would be a database table for Properties values, for all properties we want to add to the project to act as a reference point for the whole project, then the Property parameter would reference to the specific values by GUID, so even if the text of a specific value was changed, it would be a global one.

Then there would be another table in ArchiCAD that would only reference Property parameters by GUID, something in the same manner with GLOB_ISSUE_SCHEME or GLOB_CHANGE_SCHEME, that way if any user made any number of custom Property parameters it can be referenced easily.

On the GDL side (if possible), Graphisoft would create a new type of GDL parameter type only for Properties, to make a relationship between GDL Property Parameters, and Property Parameters, using the GUID only, therefore no more overhead from the GDL side.
But the GDL Property Parameters, will also reference the selected/desired value of the Property Parameter, either by GUID or by array (just as with LAYOUT_REVISION_HISTORY, or LAYOUT_CHANGE_HISTORY), so if the Property parameter's value have changed, the change will be global, and if GDL Property Parameters can be referenced to a Property Parameter value, ArchiCAD would emit an alert of the broken references
Perhaps my agreement on runxel's idea, is a lot biased by my Dedicated Shared Resource File wish. This issue on a missing property "called" by an object could be fixed by just loading the correct Resource File. If you create an element with specific properties, you save it in a resource file that could be loaded on any other file. If a missing property is detected, both on GDL or a Project, I think a simple warning would be enough.