All posts in GDL

Developing GDL part 3 – making a custom wall

In the course on making a success company and starting a revolution in the danish building sector, I want to embed a company’s products into a wall and distribute that wall. This way, the company products can be distributed (and thereby branded) as a useful, feature-rich object in ArchiCAD. But it need to be as easy to use as “standard”-walls.
So I need to somehow make a “custom wall” in ArchiCAD and I really don’t know where to start or where to look… Here’s what I did:

  1. Cried for help in the ArchiCAD-Talk forum
  2. Collected from the answers a list of areas to investigate further:
    • I saw “Composites”, “Favorites”, “Profiles”, “SEO’s” and “Attributes” mentioned – I need to get a hold on those terms!
    • And what about “Wall accessories”?
    • Tepro in Sweden developed an add-on for ArchiCad that allows you to apply their facade systems to an ordinary wall and do stuff – I need to know more about how they did it!
    • Use the ArchiWall tool from Cigraph
    • Use the API – how does it work?

Here is what I figured out…

Enable Special Menu in ArchiCAD 10 on mac

While working on my “programming GDL part 2 – notes to self” I noticed that the toturials out there wasn’t as complete as one could wish for, so here’s a step by step guide on how to enable the famous “Special Menu” in AC 10 on mac OS 10.4:

1. Open finder and navigate to
/Users/[user name]/Library/Preferences/

2. Find the file “com.graphisoft.AC 10.0.0 INT v1.plist” (or similar) and open it – it should open in the “property List Editor” or the “Omni Outliner”
3. Find the setting “Special Menu” and enable it, by setting it’s value to “Yes” or “1”

3a. Alternatively, you can enable the setting by following these steps from TechNotes

4. If you had AC running, quit it!
5. Start AC.
6. Open “Work Environment”

7. Choose “Menus” from the “Command Layout Schemes” (highlighted below)

8. Below “Build or edit this menu” (to the right), choose “Menubar Options” -> “New menu”

9. Name the menu (eg. “Special”)

10. Below “Application commands and menus” (in the middle), choose “All commands by theme” and mark all commands under “special”

11. Click the button “Add selected” and hit OK – et vóila!

Developing GDL part 2 – notes to self

Trying to find my way around Archicad and GDL, I did this list to keep in mind areas of interest that should be investigated further, or just notes to self.

  • When modeling windows and doors, they should lie down, so that the height is drawn out the y-axis, and the width up the z-axis (Why didn’t anyone tell me!?!) – this behavior is by convention and has the explanation that people developing doors and windows using slabs etc. has an easier job if the object is drawn lying down…
  • oh yeah – while we’re at stupid nonsense conventions: A is x, B is y and ZZYZX is z. Why A and B is x and y I don’t know, but David Nicholson-Cole states in “Introduction to Object Making (PDF)“:

    ZZYZX is what GDL denotes for the height. This rather curious name arises from the need to call it something related to Z when ArchiCAD 6.0 came out. But it could not be called Z as many older objects from ArchiCAD 5.0 (and earlier) already used Z for other purposes and might no longer work. The GDL development team chose ‘zzyzx’ after a small town overlooking a dried salt lake in California near Las Vegas, the last town in the US directory of

  • Prepare localization by mapping string parameters internally to integers. This will make all comparisons work regardless how the original parameter value is spelled, and it will even better performance because comparing integers is a lot faster than comparing strings. Only drawback is that the code might get unreadable, but what the heck – this is GDL – the kind of language they used when my ol’ daddy bought his first 5.25″ floppy disk, it’s SUPPOSED to be unreadable.
  • Try to use the subtype-derived predefined parameters, this will ease the conversion to IFC and might give you more of those hidden AC-convention benefits you need to know about but no one tells you…
  • Consider the Global variable GLOB_CONTEXT when writing your scripts – this can give better performance AND higher quality of your objects.
  • Don’t divide! Multiply with a float instead. This is basic programming knowledge, but apparently, the GDL parser/interpreter has no code optimization, which leaves it up to the programmer to do the optimizations. This counts for all aspects of this scripting language, so better dig up that old 1980’s performance tricks.
  • Set BODY -1 when drawing transparent things, to make the shadows render correctly.
  • Try to always use Arial as font, as it is represented on both windows and mac platforms.


  • Look into LP_XMLConverter and write a post about what it is.
  • Enable the “Special Menu” af figure out what it can do.
  • Figure out what the “parameter stack” is, what “put” and “get” does and write a post about it.
  • Try to find an explanation to why it’s recommended never to use “DEL TOP” except at the very end of a script.
  • Make a library, get it to work with the new AutoCAD adapter and the GDL Web Control.

My GDL link collection

Developing GDL – the big picture

While still in the process of actually buying Archicad, I’ve managed to get hold of a demo version, to try it out for myself. My first accomplishment was a neat little house with doors, windows, a stairway and even a toilet, firmly guided by a tutorial.

My first Archicad drawing

After this first and somewhat successful encounter, I started exploring the GDL scripting language, its capabilities and editing environment. I had my hopes up for a somewhat BASIC scripting language, but still powerful and efficient for its purpose. This seems to be true so far.

What I didn’t expect was this incredibly lousy editor. Unfortunately it’s as simple as that. Archicad ships with a built-in GDL editor that, to my great frustration and sorrow, is the worst piece of inconvenient half-done crap, I as a programmer could imagine. I’d rather edit my GDL in M$ notepad, and that should say something about the quality of the editor!

My first GDL object

I’ve been browsing for other editors, and since I had a hard time actually believing what I saw, maybe for some answers to the quality of the built-in editor. I came across the ArchiCAD-Talk forum, where Archicad users where discussing newly proposed GDL coding guidelines from Graphisoft, that among others, suggests that commands are written lower case (commands has, like in BASIC been written upper-case so far):

Case, indents and comments are the only tools we have to make scripts readable. I see no reason to promote a standard which abandons one of these features.

… and the talk goes on with wishes for line numbers, syntax highlighting and auto indentation.
The discussion is from 2004, but nothing really seems to have changed since then.

I have been programming C, Java and C# for a couple of years, and for my part, the tools I use are of the essence. I’ve been used not only to syntax highlighting and auto-indentation, but to auto-completion, tool-tip help and code snippets that help me code the trivial tasks faster and more efficient. This GDL-editor is like returning to DOS, writing .bat scripts with edit – *sigh*.

My hunt for other (and better) editors has resulted in the following:

One editor being used is the 3nf GDL scripter. It has syntax highlighting and line numbers, but the website has not been updated since 2004. I’ve tried it on my XP SP2, and it keeps crashing. Further, if I open an object in ArchiCad made with GDL scripter, I’m issued a warning, that this object is made by an external editor and yada yada yada – certainly not a message I want my customers to be met with.

Then there’s a GDLedit highlighting plugin for a number of editors, including vim and emacs. This could be used for editing the GDL scripts in an external editor, and copy-paste it to Archicads built-in editor.

That’s it. No more editors as far as I can see (let me know if you know any!) – This leaves me somewhat depressed.

Now, why would Graphisoft, a company that has invested so much effort in parametric objects and BIM, abandon the project like this?

Daddy is not angry, daddy is disappointed.

I’ve heard so much about the wonderful GDL-society and the good-spirited, open-minded and ambitious people populating it. But all I find is dead links and closed websites, old tools and people complaining about the stand-still in the developing of new ones.

I hope I’m wrong, that there’s some great, wonderful tool out there being developed or just overlooked, that someone will post the missing link sometime soon. Until then, I’ll be checking out what Autodesks Revit, Bentleys Microstation or maybe IFC can do for me.

My GDL link collection
My IFC link collection

Archicad vs. Revit – and what about Microstation?

While browsing for more knowledge on GDL and what tools exists out there, I stumbled over a discussion of Archicad vs. Revit. Some bright fellow, Dwight Atkinson, had this to share:

The choice of Archicad/REVIT is somewhat irrelevant – while either application might present a killer pitfall for your practice style, buildings pop out of both of them. So don’t sweat it. Ford Versus Chrysler, etc. At one time, Archicad represented an intimidating paradigm shift. It WAS different! You could feel smart if you “got” the BIM idea in 1992, like I did, and create a lot of integrated material quickly. Even ten years ago, it was ahead of the curve. So far ahead, even, that it was around the bend. You couldn’t see it from the back of the bus, where most computer drafting was taking place. But not now. The BIM is an established concept. Now we need to talk about how we want to buildinginformationmodel (to use the German) a building – what’s important, what’s not. When you buy either application, you’ll be furthering the paradigm shift because the culture is still being discovered.

I like this point of view, this means that I am furthering the paradigm shift times 2, since I’ll be using both these applications with my new start-up, to support as many “buildinginformationmodellers” (could this be a word?) as possible.

One question remaining to me is: Where does Bentleys Microstation Architecture position itself in this discussion?

More reading:
The cited discussion
My GDL link collection