It's been a couple of months since I've started studying gdl for specific tools development purposes, but I have been a little disappointed so far because I've found it very incomplete for a BIM coding language (specially a more expensive one compared to other competitors)
This are the main aspects that I consider unbelievably absent:
- First of al the IDE (Integrated Development Environment) is reealy poor, many other software uses components like scintilla for autoindenting, autocomplete, contextual options, colors schemes for keywords, line numbers...
- The next key thing missing is about objects interaction, in Archicad an object just can't "see" the other objects in the project, this in BIM is usually unthinkable, I need to get parameters from objects and make other objects react in consequence, check if an object intersects others, check required distances between objects, autocomplete parameters based on project status, auto-check some council rules. It's crucial to get pointers of objects like some unique ID from gdl so anyone can get and set parameters with that.
Other aspects are:
- Lack of custom structures definitions
- lack of object oriented or some pseudo object oriented coding like most of modern languages
- lack of global variables!!! how can a program that depends on nodes interaction doesn't have a way to communicate between objects?!
BIM is about information, and information is managed trough code, you just can't have such of minimalistic language for an "all purpose" BIM software for two main reasons:
-the users have to wait and beg to developers to hear their prayers instead of develop themselves
-the external developers are not tempted to innovate with so static language and Graphisoft is missing some possibly great improvements form users with great ideas.
I apologize for the format of this wish, please believe me that my objective is to contribute with my point of view
Welcome to ARCHICAD Talk. Wishes generally focus on 1 specific item in order to allow Graphisoft to prioritize feedback. A smorgasbord like this is a great way to vent, but not to improve things.
When you post or ask questions, please search first. Pretty much everything you've complained about has been wished for already and so votes should go to those places. But, for what its worth, I don't anticipate Graphisoft giving us much in the way of GDL improvements any time soon - as nothing has been done with the language and environment for 17 years or so other than some additional commands.
Many things that you ask for have been desired for years by serious GDL programmers who are experienced in modern systems.
Many things you are asking for show that you do not understand what GDL is and does relative to API programming for ARCHICAD.
GDL is NOT a BIM coding language at all. It is NOT a scripting language for ARCHICAD. It is "Geometric Description Language" and allows for the construction of parametric objects (which happen to be data containers as well). Objects have zero knowledge of any other objects or the environment. That never was part of the design goals of GDL and I doubt we'll ever see that.
I'm not sure what you mean by "tools development" - but assume you mean BIM related tools, extending ARCHICAD. That's not possible with GDL. You can use GDL to produce a parametric object 'tool' such as Cadimage Windows/Doors, or to produce objects that read values from a file that define what the object looks like, etc. But that's about all. GDL is in essence, and intentionally, 'sandboxed'.
To develop tools, particularly BIM tools, for ARCHICAD, you must program in C/C++ using the ARCHICAD API which provides access to most of the internal data structures and classes. The things you complain about and want to do are all possible there, not GDL. Apply for developer access to the API site: http://archicadapi.graphisoft.com/start
Content there is only readable by registered developers. It's a little odd...you have to sign in with a Graphisoft ID for even the 'register online' link to work. You should already have an ID from the myarchicad.com or other GS web site. Otherwise, create one.