The Ramp Upgrade Project! Grasshopper Workaround.

A couple of months ago, we were visiting some friends at an office where we did an Archicad implementation last year in Singapore. They were working on one of the biggest project ever made, and consequently one of the biggest modelled in Archicad: 800.000 sqm mixed-use project somewhere in India.

We were catching up on the project and they were asking different technical questions and complaining about different bugs and small things about ArchiCAD (as we all do from time to time…) when they mention about the lack of flexibility of the ramp object that Archicad brings by default in its standard library. I couldn’t do anything but to agree.

I think the ramp was supposed to be released together with the stair tool in version 21 (as it was tied before to the previous stair tool) but for some reason that didn’t happen. I don’t have news about when the ramp will be updated but I think it should be soon!

In the meantime, we got excited after this conversation on trying to develop a script that could bridge some of this issues at least temporarily. 

We got excited … on trying to develop a script that could bridge some of this issues.

So the next day me and Eugenio, using some spare hours at the airport, started drafting some ideas to develop a ramp object with some functionalities missing in the current object.

The problem is that we both have very poor skills in GDL and so we jumped to Grasshopper to sketch the functionalities and the different parameter/requirements that we wanted to have with the hope that maybe in the future somebody with some better skills could transform the same logic into GDL for better implementation.

After getting started, we discovered indeed that in order to create a fully functional object we’d need some help and sometime; As usually happen, once you start to dive deep in a problem, you find more issues and little things that you didn’t anticipate.

So what we did first was to analyse the current available Archicad objects: the curve and straight ramp.

The current Ramp Objects.

Both the straight and curved ramp objects have great functionalities, but they are limited, especially in terms of geometry generation. Also, they could behave a little smarter, as the stairs do now!

There are different ways to build the ramps, as you can see on the internet and on the Archicad forums: using roofs, meshes, shells, stairs, railings and even slabs! But all of them are seem more workarounds, than a proper BIM smart workflow. And there are some paid objects that are pretty good, but they still lack here and there a few of the features that we’d like to have on this “smart tool”.

So we listed out what are the functions that we’d like to implement:

  • Similar to the stair tool, we’d like to be able to manipulate freely the “walking line” so we could create the ramp with several segments; Straight and curved. This polyline should be editable as a normal polyline.
  • We’d also like to link (or not) to story levels, as the stairs do.
  • It should give you information about the parameters (length, area, height, ratio…) and give you a warning if the ratio goes beyond some threshold.
  • Finally, it should be possible to manipulate the contour (define a mask) of the ramp, allowing variable shapes.
  • Obviously, 2D representation as per usual in Archicad should be neat and editable.

At this moment, our experiment is still a “work in progress”; Somewhere 50% developed. See below where we are.

This is the complete script screencapture.

The 3D geometry script is extremely simple: We managed to generate a “ramp slab” from a 2D polyline, which corners you can fillet parametrically. We added some parameters as the thickness of the slab, the width of the ramp (reference line placed in the centre of the section). Finally, that is sent to ArchiCAD as a Morph (3D mesh).

As the Morph is a pretty dumb geometry, we spent a bit more of time, filling that Geometry with information and data; Within the scrip we interrogated the geometry some basic data as: Length, height, area, ratio… and created properties in ArchiCAD to feed this information in so it could be scheduled and used in labels, etc…

Finally, we created a 2D script in order to represent properly the ramp; Using a “cutting plane” parameter in Grasshopper to calculate the projected and overhead linework, as well as the walking line and arrow.

The grasshopper connection still can’t control the Archicad Text, so we used instead of it a label filled with autotext to display the information on the plan and 3D documents.

We used a label filled with autotext to display the information on the plan and 3D documents.

At this point, we discovered a few other functionalities that we want to implement, as the custom contour, that might need some re-development of the script that we will share in the coming days/weeks when the other projects don’t get in the way… In the meantime, you can check the script, use it and modify it in any way and I hope someone finds it useful.

You can can download the package here

As this is a work in progress project, please send your comments and we’d appreciate any help!

As I mentioned before, the idea of building this Grasshopper script is not only a workaround to get a more functional tool but also a way to understand the different parameters and functions that the tool needs. Somewhat a what to sketch the code in order to later develop a propper GDL object like this: Check the “profile object” by Jaime Ingram

Hope you enjoyed the reading and stay tuned for the next post!!!