GDL reference guide: Perfect self-study material!

I find that relatively often I have to check the “bible” of ArchiCad: The GDL reference guide.

In this guide in over 600 pages Graphisoft goes through the basics of how the GDL programming language works.

If you are interested in making objects for ArchiCad, this reference guide gives a detailed description of GDL, including syntax definitions, commands, variables, etc.

You can download it for yourself using this link.

Table of contents and logical flow

The reference guide starts of handling 3D objects before moving on to how to represent them in a 2D plane.

It however lacks severely in for example curtain wall and other feature objects that have become more mainstream in later versions of ArchiCad.

For those of you who have been reading this blog you’ll find that the ArchiCad curtain wall is severely under-documented in the reference guide.

Lastly before going over the various listing parameters the GDL reference guide goes through making user interfaces.

Later I’ll post some code-snippets and ideas that have helped me in the past. Making user interfaces can be tedious but with the right templates, they are a piece of cake!

GDL reference guide additions

In a later post I’ll add more information on several additions that were made to the reference guide.

For example the GDL cookbook by David A. Nicholson is a really good addition if you are tackling GDL at home.

In a very clear and straight forward fashion David demystifies several commands and codes included within GDL.

Although the cookbook was made for a very early version of ArchiCad, it is still relevant. The version in which the cookbook was written was iirc ArchiCad 8. Now we’re up to 21 already at the time of writing.

However the good thing about GDL, the GDL reference guide and the cookbook is that the language itself remains fairly static.

As a result objects written in ArchiCad version 8 will work just as fine in later versions (mind a few UI quips that I’ll go through later as well..).



Business idea #1

Something I have been thinking about building is an online tool that will help improve security on building sites. And by security I mean Health and Safety.

It would take the form of a template that you can drag and add content to to make it suit your need. For example if today you’re planning to do lifitng work on site you could select the “lift work”-template from the library and click and add other information there.

This other information would most likely be the names of the ones doing the lifting work, the name of the person in charge of the site and general safety and then the name/number of the jobsite.

This would all be done through an app or through a dedicated website to which you have credentials.

Per usage of the website (or per document created) you’d pay a fee.

Thanks to the fact that everyone has a smartphone nowadays you can make your phone into an automatic document signer. Once the safety-contract has been made using the template, you can then click on a “sign here” button upon which you phone would use its touchscreen capabilities to read an autograph.

The users then use their fingers or a stylus to sign on your phone. The document is then stored in a central location and emails are sent to both the workers and the supervisor with the document attached.

That way supervisors have written proof that the workers understand the basic safety rules of the work they are about to undertake, and the workers have had to go through the document so they are aware of the risks and dangers involved. And more importantly how to prevent them.

A next step would then be for the general manager of the construction company to have full overview of the health and safety on his/her jobsites.

They know that on this day at jobsite x there is this kind of work going on. On a calendar they can then see that safety documents were supposed to be created on the previous day and signed today.

If they see that this has not happened (a signed and stored document would be an inserted row in a database somewhere) they can then phone the job site manager on site and ask him/her to collect those documents immediately.

So that everyone is covered should something go wrong, but more importantly prevent something going wrong in the first place!

ArchiCad Curtain Wall – Custom Panel

So far I have been working on an ArchiCad project for a client of ours. Apparently it is extremely tricky to do anything with the archicad curtain wall tool.

Similar in Revit the curtain wall tools are very much in the starting blocks when it comes to usability and user-friendliness. For Revit there is a bustling community of developers actively working and modifying the tool using various plugins to make it better suit their needs.

In ArchiCad the main programming language is (next to C# for plugins) GDL. Or Geometric Description Language. It turns out however that in the User Reference Guide there is no mention (or very little) on the usability of curtain walls.

ArchiCad Curtain wall code

Quite some trial and error  was necessary to make things work. If you decide to go the hard route and design a custom panel in GDL, here is some code that you might find useful:

cprism_ mat1, mat2, mat3, 4, panel_thickness,

The above piece of code makes sure your panel follows the scheme. You can then set several scheme settings and save them as favorite settings so you don’t have to redo the work over and over.

Also more interestingly for us and our client, these favorites can be exported to a .prf file that you can load in to another project entirely.

AC_PanelCoords[4][4] stores the coordinates of each and every panel. So as you call them in this way in (for example) a cprism_, you can then use this framework to make your own custom panel.

For my own I have declared in my master script the following:

!This makes it follow the grid

And in my 3D-script:

cprism_ mat1, mat2, mat3,29,zzyzx,

..It can get a little complicated..

And if only it was this simple..

There is a 50 mm offset using the panel coordinates that I have no idea (so far) where it is coming from. Probably the archicad curtain wall doesn’t give the exact coordinates or there is some setting that is switched on somewhere that I haven’t been able to turn off.

However it seems to only affect on the 2D representation of the object. The line I commented out actually fixes this and shifts everything 50 mm to the left, alligning everything perfectly.


In the 2D view it seems like the first panel and the second overlap. However as we see from the 3D this is not the case. So very interesting indeed that a simple “project2” command would show these to be intersecting.

My hunch is that this is caused by some bug or error in the AC_PanelCoords somewhere. Or then a fault in my code, which is also highly likely!

2D representation

Secondly another thing that has me ripping out my hair is, as mentioned above, the fact that a projected view of the acrhicad curtain wall is not the same in the 3D view.

Case and point:

archicad curtain wall

How is it possible that the projected view of this panel in the curtain wall is a projection of it on its side?

This has to do with how the archicad curtain wall tool interprets the orientation of the panel as an object itself. The 2D projection then takes the information of the object in its 3D view representation rather than its view in the curtain wall itself.

Meaning that to get the panel to show up as upright when used in a curtain wall, you need to turn the object when modelling in GDL in such a way that it lays flat on the ground.

Only in this way (I have found so far) will the panels show as upright in the archicad curtain wall tool. Then the 2D representation (if you project) takes its information from the GDL version of the standalone object.

Extremely frustrating and most likely a bug in at least Archicad 18. Don’t know if this has been fixed in later versions of archicad.


One workaround that I have found so far is to change the projection_code from 3 (for topview), to 4 (being side-view).

Your code will then be:

project2 4, 270, 32

Which basically is the projection from the side, used as projection from plan-view.

Logical, right?

Handling Corners

Our customer wanted a solution that would be as true to the Archicad curtain wall tool as possible. As such the way we handle corners needed to be similar.

Right now my code does this:

It lines up well, but let’s face it, not a pretty corner now is it.

When taking a look at what ArchiCad had to offer I found that they have a separate panel in their curtain wall tool to handle corners.

As a result I added the next few lines of code to my custom panel in an effort to make the behavior more like the standard ArchiCad ones.

In the master-script I have added the following:

if behaviourvalue = “Normal” then
!This makes it follow the grid
if behaviourvalue = “Corner” or behaviourvalue = “Kulma” then
!Add thickness B of panel to the end to make the corners square

In practice..

In my interface script I have a dropdown with 3 values; Normal, Corner and Stretchable.

If “Normal” is chosen, the panel behaves as it should. It follows the grid as is defined by the user and doesn’t do anything extra.

However if you select the curtain wall and select the “Edit in 3D”-mode, individual panels become clickable.

In order to make a square corner, all the user then has to do is click one of the panels. Then he/she needs to select “Corner” from the dropdown. Ultimately the code works in such a way that it will add the thickness of the panel (in my case read in as “B”) to the end of the panel.

The panel “overshoots” the grid by a measure of “B”. As such the corners are squared.

As the code is placed in the master script there is no need for me to update the 2D script. It takes the rules automatically from the master script.

Frame objects

Lastly the archicad curtain wall tool allows you to add in a lot more than just custom panels. In GDL you can easily define mullions, transoms and border frames.

Mullions are the listings that go in a vertical direction, while transoms divide your panel in a horizontal direction. Border frames border off your wall.

Check this article later for more information on those.

Also if you notice something off or something strange, no-one is perfect :). Please let me know in the comments below so I have a chance to fix it!

Here is the original thread

Merit of theory

I just finished an exam in Steel structural design at my local college. One of the questions I had was along the lines of “What norm governs the design of welds”. A model answer would’ve been “1995-1-1-2”. Those of you familiar with the subject will quickly see that I still cannot answer it.

I couldn’t answer the question because as I was studying i didn’t see the merit of memorizing a numerical code used as a title for a chapter.

I feel that in 2017 any theory question that you can google with max 3 search terms and get a direct hit shouldn’t be an exam question.

I don’t think that in this day and age you should be able to be judged on the random fact memorization of useless information.

It is in my opinion that I am now in the middle of 2 generations. Those who grew up with the internet and those who didn’t. Unfortunately those who have not grown up with modern technology by their side have had to memorize what I call “useless” facts out of necessity.

For them it was helpful to open a book and immediately find the right norm they are looking for. This saves time when designing and helps bring overall cost down during the design stage. I can imagine that if it takes you paging through a 300 page book for a few minutes every time you want to double-check a certain design principle your calculations will be delivered at a much later time than your colleagues.

Nowadays with the arrival of PDF and other text-formatting formats, a simple ctrl+z followed by a few keywords will bring you directly to the desired chapter.
This saves you time and best of all: no need to memorize norms.

I do not however advocate sloppiness. You still need to be able to know what each norm governs. You need to understand what is in those norms. But to memorize the numerical code of the norm is in my opinion senseless.

It will be really interesting to see how the curriculum changes over the next decade as the old guard retires and young blood seeps into our educational system.

My prediction is that the laptop/computer/device that allows you internet access (Google Glass?!) will take a more and more center stage. even when teaching theory. I have found that having to google stuff for myself has proven 10x more effective in learning that particular subject than sitting in a lecture, dabbling on my phone.

Or then I am just lazy and watched too many “Stranger Things” episodes while studying… Some food for thought!

Getting 2 more niche sites ready for Christmas

I’m trying something new with a couple of domains I registered just the other day.

Both are Christmas toys, or presents usually bought during Christmas time. So for these I will be going long to see if they rake in any profit. Most likely the only time I will see any movement with these sites will be next year’s Christmas.

As these domains are bought from scratch (not using or any other domain name selling service), they are unknown in the eyes of Google.

Meaning that it’ll be quite difficult to get traction for these sites. And by difficult I mean it will just take longer. Ultimately any site you work on for a long enough time in a decent enough time-interval will generate some money.

Either in content that you write that you can then later sell onwards if you fail to get any traffic to the site, or then in actual sales through Amazon or any affiliate program of your choice.

Making these websites, playing around online has also got me thinking I should probably look more into developing my programming sills more as they are very much basic so far…

New niche sites coming up

Today I added some new niche sites that I will be working on.

One of them, is specialized in footwear. However I’m using several plugins at the moment to help with importing data from amazon. Woozone to be more precise. Through their plugin I can import hundreds of products at the same time while adding my own affiliate link into the product pages.
Then I instantly get plenty of material to write content on, all set up and ready to go at the click of a button.
It’s not just enough to spin the content and import from amazon, you can add more value to your reader to provide more in-depth reviews of the products you imported.

I’ll keep you updated here on how the progress is going.

I used the “Kingdom”-theme in the beginning but it was terrible to get it set up right, so ditched that one. I would not recommend it to anyone else either. However the WooZone plugin from the same makers really does work like a charm.


The second site, is a website handling the weight-loss evergreen. It will be a website in a similar fashion to previous niche sites I have made in the past. I’ll write up some articles, do some blogpost comments for SEO and see if I can get it to rank in Google.

What’s the point of this site?

Good question!

I guess the main point is to first of all keep his domain name in my name.

Second of all this is an easy way of having some sort of “shop-front” up and running for various projects I am currently involved in.

Some of my interests include, but are not limited to;

  • Niche sites
  • 3D modelling
  • ArchiCad object creation training
  • Revit family creation training


Lastly another reason for starting this site is if there are any other foreigners out here in the Helsinki area that need some comparative support, feel free to get in touch!

If you are stuck somewhere maybe there is a way I can help you out!