Workflow with ArchiCAD - Finally made it. Kind of

Hi! After some testing and trying new features I think I found a way of combining those two wondeful aplications. It’s definetly not perfect, but it’s a good start I guess. Tell me what you think of that way of working. :wink:

So, first of all we need to have three of those program installed - newest ArchiCAD, Rhino and Grasshopper. And of course Ladybug Tools. Aaaand actually one more - Rhino 5.0. Why? Because at least for now ArchiCAD has a real big problem with using Live Connection Tool (which is used to connect ArchiCAD and Grasshopper) in Rhino 6. Mainly because previously in Rhino 5, Grasshooper was installed separately and since its already inside Rhinoceros you’ve got to “cheat” a little bit to make it work. The only way that works for now is to install Rhino 5, then install Grasshopper, Rhino 6, then Live Connection Tool and… this should work. Now you are free to uninstall Rhino 5. :slight_smile: There’s a big chance that with ArchiCAD 22 this issue will be eliminated.

Ok, so we’ve got our setup working. Now, we need to run all three apps simultanously. Then in ArchiCAD in File> Interoperability we click Grasshopper Connection. We can snap it to out workspace as a tab. Now hit connect. There’s a chance that you’ll see “Grasshopper not working” or something simillar although your Grasshopper is already running. It’s 'cause you have to “show” ArchiCAD that it does, so for example make a component. That should solve the problem. :wink:

Now, when you created your drawing in ArchiCAD the only thing that’s important, or the one that is the most important are ZONES. You have to create the sligltly different than usual. They have to fill the entire space now and be “connected”.

Now we’re going to define some values which might be important later. As a little spoiler I can tell you that we can and we will import into Grasshopper some data from the Zones tab in Zones properties under Classification and Properties.

These are things that define our zone inside ArchiCAD. We can manipulate those in any way, as well as removing existing parameters or add ours. To do that you have to click Options > Property Manager. Then you slide down and you’ll see our Zones.

There is a small + sign next to “Zones”. By clicking it you are able to define new parameter.

Now lets move on to Grasshopper. We’re going to use ArchiCAD components which should be already installed on your machine. Now try to find under Parameters component ZONE. Once on a canvas, select it, now click on a your zone in ArchiCAD, then right-click on a ZONE component in Grasshoper and select “Set one Zone in ArchiCAD”. Now your Zone should be visible in Rhino. Now comes the tricky part which is possible since the beggining of current year (so since the last stable update for ArchiCAD 21). From the “Deconstruct” tab select “Deconstruct zone”. Then from “Extract settings” tab pick “Extract zone settings”, then again “Extract settings” and “Extract property settings”. Now if you connect [Panel] to “Properties” you should see all of our Zone Properties from ArchiCAD! :smiley: It should look like this.

OK! We’re almost there! Now to convert our zone to brep we need a simple definition. Our [Deconstruct Zone] gives us “Curve” output and we’re gonna use that. Just connect it to [Curve] > [Boundary Surface] > [Extrude] and you’ve made yourself one, healthy brep. :slight_smile:

Now, let’s say that somewhere in you’re definition you could use some of the data that you’ve imported from ArchiCAD into Grasshopper. It’s never been easier. :wink: My friend helped me prepare this code. It’s just a draft, but a working one! Might need some improvement though. :wink: Let’s say that you want to extract the number of occupants in a zone:

"""Provides a scripting component.
        x: The x script variable
        y: The y script variable
        a: The a output variable"""

__author__ = 'Avik'
__version__ = '2018.04.21'

import rhinoscriptsyntax as rs
import os

const_string = 'Occupants (Type = Integer) : '
const_unit = '\r\n' # os.linesep
string_pos = x.find(const_string) + len(const_string)

a = x[string_pos : x.find(const_unit, string_pos)]

if a.replace(' ', '').isnumeric():
    a = float(a.replace(' ', ''))

Just copy and paste it into Python Component and it should work. :slight_smile: If you want to extract some other number just copy what’s in front of it in the panel, for example " Noise Level Requirement (Type = General) : " And paste it after "constr_string = ’ "

Beauty of this lays in its flow. Once you change value in Zone Parameters in ArchiCAD its immediately (or almost immediately) transferred into Grasshopper, where the rest of the magic happens. :slight_smile: That’s all, folks. That’s all that I managed to make. I really, really hope that the new version of ArchiCAD - ArchiCAD 22 - will bring new possibilities and will make workflow even more BIM-friendly and easy to use. Tell me what you think about this and have fun!




This is a great start and thank you for sharing! Can you bring the opening to Grasshopper with the same workflow? That will be the main challenge here.

Also I assume we can directly get the data from the object instead of using the extra component and the Python script. Unfortunately I don’t have an ArchiCAD license to try it out myself.


About the data - there are different outputs in [Deconstruct] component that will give you data directly. For example for slab it will be structure, building material, composite, thickness, edge angle and so on, and for the Zone there are things like category, name, number, height etc. The problem is that only a small part of those outputs are useful. The useful ones would be height, name or thickness (however I encountered some bugs trying to use the name from the “name” output), but vast majority, like “Building Material”, or “Composite” are closed only for ArchiCAD. You can use them to reuse them recreating some geometry, or creating from scratch but you are not creating “Composite” nor “Building Material”. It’s just picking an item from ArchiCAD library. Being able to use them more easy would greatly improve speed of work. Let’s hope it will happend soon, because pushing Live Connection further is one of the main thing Graphisoft is talking about now regarding newest ArchiCAD. So until then, when we want to use data from “Property Setting” I am afraid that we have to help ourselfes with such scripts.

And about the opening to Grasshopper, you mean something like a tutorial for beginners? Focused on what specifically? I think that as soon as I will find some spare time I could try making something similar. :slight_smile:

By openings I meant windows and doors! :slight_smile:

and maybe curtain walls:>

Ow! Actually, I thought about it! Making curtain walls is a pleasure and I used it so many times! With doors and windows its a little bit harder, and thats one thing I hope will be made better in newer version… But I found a way, sooo why not. I’ll try to do such tutorials as soon as possible. :wink:


Hi Avik,

How is it going with the workflow with ArchiCAD? There is now the new version where you can export BREP. Did you manage to get something out of it?



Hi Avik,
Wih Archicad u can export ur model in XML.
First u use Zone Tool to define ur zones and then u can run Ecodesigner.
One more important think, don’t afect a schudule to ur Thermal blocs.
I try it and I teach it to in our School in Marseille France, but there some problems to do it correctly. For example u can’t export overhings.



Hi @Frank_Gergaud,
To be honest - no. Lately I had to focus on projects outside Grasshopper (sadly) but as soon as there is a chance - I’ll give it a shot. :wink: Have you tried it?

and hi @Aziz.BOUKARA !
I know about XML. And I tried very hard to get it working after minggangyin told me about it. I wasn’t happy with it though. I found it quite complicated to prepare the whole model and even after doing everything as detailed as I could, the exported model was incomplete, there were holes, some walls missing and not all informations I needed did exported. There is quite a big chance that I did something wrong but after many evenings spent on trying to prepare XML file I found my way a little bit more intuitive and easier to debug (if needed). If you could share your way of exporting clean XML from ArchiCAD that would be great!

To be honest I also changed a few things compared to the tutorial a posted quite a while ago. For example the script is no longer in use. When I find a moment I’ll try to make a complete tutorial with my “updated” way to - for example - calculate radiation on facade or something similar. Just to show how to combine simple analysis with ArchiCAD. :slight_smile:

Salut Avik
I will be very happy to share this experience with you and other people … I contacted ABVENT France to make me in touch with Abvent nemetschek. I am waiting for their answer.
I also got the export but with small problems (some elements are messing, like overhang …) .
If you want, I ll be happy that we can find a solution to move Archicad to OpenStudio and to Honeybee. I’m waiting for your suggestions.

Hi Avik and Aziz,

I think so far the best way to deal between Grasshopper and ArchiCAD is with the Grasshopper-ArchiCAD live connection. It’s still need to be improved but importing elements from ArchiCAD is much better now. I’ve tried the new released with ArchiCAD 22 and now, importing BREP objects, work just fine. Except that the windows can’t be imported very well, only possible to import the whole window without separating the window glass to the window frame. I hope that in a near future this function will be added. I also try this XML format but didn’t succeed either. That’s fine with Revit but with ArchiCAD is not really easy.




did you still use ArchiCAD 22? When you define zones in ArchiCAD they are excluding stairs, etc. Did you know any solution for that?

Can you discribe how to get perfectly fitting window surfaces in Grasshopper from your ArchiCAD windows?

Thanks a lot for your time!


Yes I worked with ArchiCAD 22.

The zones in ArchiCAD can be defined manually and you can include the stair if you want.

You can import the window from ArchiCAD into Grasshopper. Then you can extract the BREP and done you have your window. In some cases if the window is not a standard window you might have problem with the frame.

Hope it help :slight_smile:


Hello Guys,
I am Akos Karoczkai from the GRAPHISOFT HQ in Budapest and I’ll try to answer your questions regarding the workflows and collaboration between ARCHICAD-Grasshopper and LB-HB.

First let me show you an additional functionality with the Grasshopper Live connection that Frank just mentioned. Now you can extract the BREP geometry of any ARCHICAD element, eg zones as well. (see picture 1)

But you can do more than just referencing the zone geometry, you can select sub-surfaces (eg. sides, top, bottom, etc.). This can help you to set up the model easier for LB+HB analysis. (See picture 2)

You can deconstruct walls to their external surfaces so that you get the “facade geometry”. Unfortunately right now it is not possible to deconstruct openings (windows/doors) to frame and glazed area separately so you have to work with either ratios or rebuild the window surface from the entire window/door brep geometry.

Please let me know if you have any questions and I’ll try and answer them.


Hi Akaroczkai,
Can you put an example please ?
I’m working on the export of Gbxml on Archicad but i found some problems like exporting overhang.
thanks a lot.
Merci beaucoup.

Hello Aziz,
I’ll try to look into that and get back to you.


Oh Merci beaucoup. I ll really aprreciate.


Hi everyone! I’m really sorry for not replying lately - life can become busy at some time… But please - take a look at my new post! It might be interesting for you. :slight_smile:

Congratulation Avik…


Hi @Akaroczkai, thanks for sharing some of the new features.That looks great.

I have a question regarding the wall deconstruction: So far, I could split the external walls and get their external surfaces with the component, but that extraction is based on their reference line and how it was originally drew in Archicad. I wonder if there’s a way to extract the different surfaces of a wall based on their materials (e.g pick the internal surfaces of the external walls).

Thanks in advance!