Guest Blogger Kristian Bursell: ARCHICAD GDL vs REVIT FAMILIES

Recently I spent a great deal of time working with Revit Families (RFA’s) to determine their capabilities. I approached this endeavor with no bias; as most mathematicians will tell you, it is all about potential with personal preference a liability.

Though I could write a book on the topic of ArchiCAD GDL vs Revit Families I’m going to be as brief as possible and hopefully expand in later posts.

Basic Parametric Shapes

In this regard the difference between the two platforms is that the shape is easier to model in RFA’s but the parametrics are easier to assign in GDL.

In RFA’s you choose the type of shape and draw the boundaries. In GDL you choose the type of shape and write the coordinates of the points. In RFA’s the shape is made parametric through “Constraints” as well as “Formulas” assigned to parameters. In GDL the shape is already parametric through the written coordinates being defined as variables which can be linked to parameters or other predefined variables.

ArchiCAD Parametric Script

Constraints in RFA’s are akin to coordinates in GDL where they’re associated to some type of geometric positioning. The Constraints work by locking a part of the shape to another element or reference line, or by dimensioning the shape and locking the dimension or linking it to a parameter value. This is quite clumsy in comparison to the GDL solution where you simple type the equation into the coordinate. It is also fraught with pitfalls; not only do you need to carefully plan your RFA constraints to make sure they work properly, they also greatly affect the file size.

Revit Constraints

RFA’s Formulas assigned to parameter values can utilize typical conditional statements (IF, ELSE, AND, & OR) similar to GDL. So in RFA’s you can set up a series of rules for every parameter where the conditional statements can be many levels deep (multiple IF statements). This allows RFA’s to be highly parametric; though still not quite as parametric as GDL Objects.

Higher Parametrics

In both platforms the parameters are restricted first by their type. Although the types are slightly different in each platform they still fall into the three main categories of; Boolean (On/Off toggle), numerical values, and text values.

The parameter types work in much the same way in both platforms. The main difference is that GDL has a higher level of functionality that can be applied to parameters. For example; every parameter in GDL can have multiple value options in the form of drop down menus. With condition statements even the drop down menus for a parameter can be variable. Combined with subroutines this exponentially expands the possible outcomes.

Revit parameter list

ArchiCAD parameter list

With RFA’s there are two ways to expand on possible variability; the first is through Family “Types”. However this is like having one drop down menu for only a single master parameter in GDL. The second option is to use nested families for variable sub-elements and then assign shared parameters. This is a good solution though it can’t be used too much without blowing out the file size. It would also compare to using macros in a GDL Object for every variable sub-element; the term “nightmare” comes to mind.

What this basically boils down to is that GDL is far more capable of creating highly parametric models. The flexibility is so extensive that GDL can create highly efficient modelling tools for any building element. I have created several library parts that demonstrate this; Swift Joinery, Swift Gutter Plus, and the Swift Window & Door Libraries just to name a few. GDL greatly improves the modelling & design process while also automating as much documentation as possible.

Data Types

Another difference between the two platforms is that GDL can reference a great deal more data types.

GDL Object Data Referencing

GDL equations can reference all the above as well as variables defined in the Master script, variables defined in local scripts, values from external databases, and many forms of data from the ArchiCAD environment. GDL objects can react to all sorts of project and location data. This once again exponentially expands the potential intelligence of any modeled element. As far as I know RFA’s can only respond to representational data such as level of detail and pen and line types.

Intelligence

Where Revit gains back some ground is in the intelligence of certain aspects. The fact that any RFA can be created as dynamically attached to model elements is a massive advantage. It allows that object to affect the element it is connected to. For instance; a simple recessed toilet roll holder will not only cut the recess in the wall it is placed on but will move with the wall when the design alters.

Revit Plumbing connection

The presence of MEP Connections is also very useful. Placing a connection is simply a matter of nominating the category (electrical, etc.) and selecting the surface to assign it to. You can then use this connection to create parameter information such as flow rates and other connection type data.

Another intelligent RFA aspect is the ability to assign IES files to create the detail of light cast from lighting objects. In ArchiCAD the light cone is very limited and has to be defined manually.

Revit Material Properties

The way in which materials are handled is also far superior to ArchiCAD’s materials. You can create the material defining performance properties (thermal, acoustic etc.) and when these materials are assigned to a multiple skin composite you get the total performance data of that composite. ArchiCAD 17 has massively improved this aspect but more testing will be required.

The ability to replace the 3D representation in the Elevation views with 2D data is also a wonderful aspect lacking in GDL. In GDL you define the 2D plan view separately but the elevation views are still 3D projections. Incorporating this function would most likely increase the generation speed of Elevations though ArchiCAD’s background processing and powerful use of processors somewhat negates the need.

Summary

Revit Families are highly parametric, have a lot of very useful intelligence and are easy to create. The main drawback is that assigning parametric conditions is tedious and limited in comparison to GDL. File size is also an issue, particularly with the more complex applications.

ArchiCAD GDL Objects are a great deal more parametric with flexible scripting functionalities that allow for far more powerful applications. They can source all sorts of internal and external data, and file size is never an issue; in fact it’s down right amazing how much can be contained in such small files.

RFA’s main asset is that anyone with basic Revit Knowledge can quickly create parametric models.

GDL’s main asset is that it allows users to create powerful modelling and documentation tools, (without worrying about file size) to streamline and quality control all processes.

What do you think? What do your experiences tell you about the pros and cons of Revit Families and ArchiCAD GDL? Leave your comments below. Or send me (Jared) an e-mail if you’d like to write a follow up post. I’m always interested in sharing more views on BIM. Subscribe to the blog to read more endless comparisons of various architectural tools and strategies: Facebook, Twitter, and the RSS feed.

BONUS! Guest Blogger Martijn de Riet wrote an awesome follow-up post that discusses Revit Families from the perspective of a Revit Guru. You can read that post here.

Related

About The Author

28 Comments

You reference file size several times but give no reference to actual size or ratio of RFA vs GDL. I have developed 1000’s of Revit families over the past 13 years and very few are over 1-2 mb in size. The majority of them are 500kb or less. I use lots of parameters, formulas, and family types across the RFAs. Is 500kb considered a large file to ArchiCAD?

Something you didn’t reference is type catalogs for RFA. Type catalogs allow families to use large (or small) preset data tables to populate the parameter values. These data sets are stored outside the RFA and project, only the family types used are part of the project file.

Other items not discussed are Revit’s use of instance/type parameters, shared parameters, and reporting parameters. Are there similar items in ArchiCAD? What about Revit adaptive component based families?

I am not familiar with ArchiCAD GDL and appreciate your comparisons with Revit.

In regards to file size a typical hand basin in GDL would be less than 20kb with my most parametric GDL objects being under 400kb. The average is about 50kb with only the real complex solutions going over 100kb. You will have to have a look at the demo clip for this part to appreciate the complexity of the object (click on the Swift Window and Door video in the post).

I am aware of Type catalogs and did mention the Family Types setting but although this can be regarded as an external database it is still restricted to the limited functionality of family parameters in that it is set up referencing them directly. GDL objects can reference the value of any cell in a data sheet through an array function regardless of the format or structure of that value; the database does not have to be configured to the library part. I would like to do more testing on this because it would be nice if we could control the data in the Type Catalog through a separate database. The Type catalog is only a text file so it should be possible with a bit of coding to map the two. When we have more global standards for naming conventions this may be a more viable option; for now you would have to code the mapping separately for all families.

Shared parameters were mentioned along with nested families. Instance and Type parameters are just a way of controlling settings globally or locally; its only slightly more efficient than the process for making global changes in ArchiCAD. The process works differently in ArchiCAD because every model is its own separate instance; to make global changes you use a “Find and Select” function which is very efficient or you can control global settings through an external or internal database.

Think of GDL as RFA with the ability to map and populate parameters using flexible logic similar to that available through languages such as C++ and BASICS. Contrary to popular belief this does not make it impossible for novice users; its just maths.

Nice post Kristian, good read
I’m afraid I totally agree with troy here.
I have created hundreds of Revit families and have no issue whatsoever with memory/file size.

Regarding your query about Revit parameters referencing a external datasheet, you can use whats called “Look-up” parameters, which will look to a spreadsheet or .txt file (comma dominated or text dominated) which drives any parameter you set to be a look up. A great example of this is for plumbing pipe radius/dia, where changing the type will change any number of parameters. For instance, if you have a valve/pipe connected to a radiator that has a connection R of 22mm, and change the radiator type to a bigger size, this will in turn change the type of connection to R34mm and all associated numerical parameters and associated meta-data will update to whatever is stated within the external document. And by doing this, any relevant schedule with the project will simultaneously update along with any detailing tags etc.

Troy mentioned adaptive components, I’m not sure if there is any equivalent .GDL format? …but this function alone, personally, rockets Revit in front of any “family component” modeling software.

On an side note, there is an add-on called “Dynamo” for Revit/Vasari which lets you create any type of family by using visual scripting essentially (much the same as Rhino does i believe). Which also lets you input different types of parametric constraints to control literally anything you can think of within the model.

Martijn also stated in his follow up blog that file size is not really an issue; which is great news because they do seem to grow quite quickly, though I guess that’s comparing to GDL where they are so small.

Your information on referencing external datasheets is invaluable!
I will have to play around with this aspect but basically it means we can control parameters in separate GDL and RFA’s for a specific product with a single database. Others might not be aware of the ramifications of this but for movements such as the National BIM Libraries and manufacturers content it is a big plus. I wonder if we can do the same with other platforms.

Adaptive components were mentioned in Martijn post and I addressed it there. My question to Martijn was how many forms of data can they adapt to; he didn’t respond. The example he gave was for door frames reading wall thicknesses. In ArchiCAD we do have an equivalent but it is slightly more flexible in that there are over a 100 forms of information that you can “request” and utilise to influence the Object. At a glance it is a little more extensive then thew RFA adaptive components but I will look a bit deeper.

Dynamo sounds like a great add-on; I am a big fan of Rhino and I know several people who use it alongside Revit & ArchiCAD.

Interesting read Kristian. I am yet to have a serious crack at Revit families. So its interesting to hear from a fellow GDL’r and ex Sandgroper 🙂
You didn’t mention ArchiCAD’s user interface and how it compares to Revits. Can a family have a custom interface or are you stuck with the parameters section only. The Revit family interface has alway reminded me of a poorly designed Access Database
Also – Editable hotspots – is there any equivalent in Revit? I find them one of the best tools in the GDL toolkit
And lastly – can Revit handle arrays at any level? Can you use “for next loops” and pass in array values at all? For the creation of louvred windows, ceiling grids and anything else with high levels of repetition.

Ben,
Great to hear from you; I’m missing that western sky, especially at then end of the day.
You touch some interesting topics, I keep if brief for now.
No RFA’s don’t have a customisable GUI, your stuck with a parameter list, its a real shame.
The equivalent of editable hotspots in Revit are what they call Handles. You can assign rules to them but i’m told (by a “Power” Revit User) it once again affect file size. Also its restricted to the properties of the element whose handle you are using as to how it can move. As far as I know you cant really assign the levels of control we do with hotspots for altering configurations as well as general sizes. I’m thinking of the rotating hotspot you have/had on your window tool to change an opening from sliding to casement to double hung, or even something simple like the positioning of a downpipe in a length of gutter in a roof edging GDL Object; not possible in Revit.
They don’t have “for next loops” because its not scripting, but there is an array function that you can apply to a component of the family that you can make parametric. Its quite powerful if used cleverly and it would work quite well for louvered windows and ceiling grids.

Instant/type parameters are more than just a global/local change efficiency – it is keeping the information management process as close to the real world procurement as is useful. In this example (and some others) AC seems more flexible but while Revit offers less choices, from an architects view, they are the right choices.

Much as I can personally see big advantages in effectively coding components (GDL), architects are mostly visual people and the visual modelling/drafting approach for Revit families works well for architects. I don’t think any of our staff would want to code a component! The same goes for parameters, greater flexibility might seem like an advantage, and in some cases might really be so, but for architects, adding dimensional parameters you can actually see and see directly the effects of, far outweighs any perceived or real limitations of this method.

Obviously my points relate specifically to architects and a firm of the size where everyone is able create components rather than having a dedicated component-maker who might well enjoy coding. But then that’s the key isn’t it? Different methods suit different people and different needs.

Thanks for your comments. I generally agree with what your are saying however I think the perception of GDL as complex coding seems to unnecessarily intimidate people. It is actually highly visual with various types of shapes similar to those available in RFA’s (Extrudes etc.) but with a more extensive list or shape types allowing for more flexible forms. I could go on for hours covering comparisons between to two modelling techniques to make GDL seem less daunting but for now you will just have to believe me when I say; anyone who plays with GDL loves the power they find at their fingertips, and wonders what all the fuss is about.

One thing I will say is that I often find the modelling of Revit components painful because in many instances I have to draw the general shape and then adjust everything to the desired size and positioning. Though this probably frustrates me because I’m used to the preciseness of typing coordinates.

Very interesting discussion. I’m only a novice with Revit Families. I have decent programming knowledge, so I can find my way around GDL, but find it an arcane environment. The GDL language per se is OK. It is efficient, but the coding and especially the tools to edit your GDL object are really unprofessional.

I wonder how it would work if you wrap GDL in a current programming or scripting language, e.g. Python, Ruby, Javascript or C# and use a professional code editor (can be free and Open Source), with syntax coloring, code completion and code folding, with integrated documentation searching.

This would really improve the access to GDL, at least for people with some programming background.

While the creation of static or simple parametric objects in the Revit Family Editor is quite visual, it becomes complex really fast. And I really doubt that it is possible to go into the depth of the parametrisation that you can achieve in GDL.

Also for those curious, you can make Objects in ArchiCAD without GDL. There are definitely limitations, but for many users this is enough for the few random Objects we might need to make for a given project:

They both have their strengths and weaknesses, I feel that both object generative systems are flawed. Sure they work well inside each respective closed system, but what both of the don’t handle very well is interoperability with other CAD systems. Particularly MCAD system. Here is the way I see it. Most items that are manufactured are model is systems like Solidworks, Inventor, Solidedge… ect. and quite a few of these items are used in the AEC industry, and as of right now these manufacturing models can’t utilized very well in BIM models.

I too would like to see a stronger connection between ArchiCAD and Solidworks. There has been some work done between ArchiCAD and Rhino by a 3rd party developer, so it definitely is possible.
The main issue is whether or not the imported models can actually use the advance functions or each platforms. If they just come through as mapped geometries with assigned parameters then the solution is not viable.

@TroyGates
While Inventory Models can be imported into Revit through the building exchange function, it’s far from “working very well”. Correct me if I am wrong, while it does bring across parameters and data is doesn’t created actual editable geometry in the revit family.

And I complete disagree with the comment that MCAD model are to detailed, which it’s funny you should say that as it’s one of Martijn de Riet rebuttable arguments on Revit families. Also if I am a interior design working with a furniture manufacture or door hardware supplier I want detail models.

Inventor 2014 exports Revit families that are fully editable in Revit, including parameters, geometry, and MEP connectors. Have you used Inventor creator content in Revit to justify that is doesn’t work well?

As a member of the MEP industry, I can tell you that we rarely model over LoD 300. It is a waste to have screws/bolts, welds, internal (non-visible parts like fans, support braces, pipes), etc in our families. The equipment doesn’t need to be at a level that you can see all of that detail just because it looks nice in the model. If it isn’t usable, it isn’t desired. LoD is something that we define on projects to avoid having overly complicated geometry that isn’t needed.

Antonio PinaSeptember 2, 2013

In GDL vs RFA discussions things tend to be naturally taken to Revit vs Archicad discussion, each kind of user defending what it is most used to, wich I totally understand. I am also trully suspect because I use Archicad and program GDL for more years than I can remember. Although not difficult to do simple, or even some complex objects, GDL as it is presented within Archicad today it is still not user friendly enough to make Archicad users use it more. By user friendly I mean it is lacking something like a Visual GDL tool, wich could be a more intuitive way for any user to address the language. Presently GDL programming is accessible through different menu options inside Archicad.

I have known a few experiences of good standalone GDL applications in the past, Black Turtle’s (I think this was it’s name) being my favorite. You could use anywhere, and was 100% archicad independent.

I am not a Revit user, but I tend to think RFAs work a bit like using “macros” inside Revit, and I am sure if we try, we will find many aspects that might be better than using GDL. In the other hand, GDL is a truelly simple/accessible yet powerfull programming language. It allows you to to do objects like furniture, but also other kind of utilities, from importing and placing XL tables, to creating automated material maps, construction systems, configurators, etc. I also underline the reduced file size you get by using it. For instance, for internal use on an architectural project, at some point we developed a single GDL object that reproduced every possible option available for a bookshelf from IKEA catalog. I believe we are talking hundreds, if not thousands of different possibilities in a single simple object, including availability in different colors, position for each of the 2 or 4 shelves, (depending on the selected models etc). If I am not mistaken, its size was under 100k. We also developed it with a graphical user interface wich easily helped overlap language barriers, need for instructions, understanding of the library part or the original catalog.
(You can see it working here in a movie of our old website: http://youtu.be/WZ8JjS8DqrQ )

In my opinion, GDL language is powerfull and usefull enough to become an independent BIM tool supported by a strong standalone Visual GDL software and become available for Archicad but also Revit and other software users, therefore becoming crossplatform.

If we look how GDL objects already can be independently integrated in websites and exported to different 3D formats through Archicad’s webplugin, ( http://youtu.be/hfoE_Ia06DM ), this idea is probably not far from being able to become true.

Nice post and I appreciate the bi-partisan approach.
My stance is that these platforms are tools to help us do our jobs better and that the tail should never be allowed to wag the dog! Having said that, I’m an archicad user and GDL tinkerer of some years, now facing the reality of switching to Revit due to a company merger.

Re GDL, I know from first hand experience the resistance of regular architects to look at code, no matter how easy and logical. Revit’s families sound more intuitive in this regard. However now that I know the extent of what I can achieve via GDL (saving time and enhancing design) I am loath to relinquish the power.

As touched on in Antonio’s post a graphical interface for GDL would, in my opinion by a crucial step forward and something I have mentioned in a number of forums etc.

I do not think it is reasonable for an employer to expect a new CAD user to learn an entire coding language to become useful (These people tend to be self selecting). But if you made it as intuitive as the Grasshopper plugin for Rhino, which is really like playing with Lego (function nodes and connectors with ties to model geometry), it would change the playing field. Many, many more would use it.

In the mean time RFA’s “accessibility” may just mean that the large number of users leveraging a little more BIM power outweigh the few committed “nerds” (myself included) who learn GDL and leverage truly great BIM power!

Hello and thanks for the nice analyse.!
One thing that I don’t understand with Revit Families is how they do work internally.
Are there not written as some kind of program that permits that parametricity?
I mean : will they never be a way to edit or program rfa families directly in the code in order to achieve complex parametricability?

My 2c worth. I’ve just started exploring Revit, have a bit of past experience of ArchiCAD (as an architecture student, most recently in 2008, rather than in a professional environment), lots of experience with AutoCAD and AutoCAD clones (working for small architectural practices) plus some experience programming. I’m not ‘allied’ to ArchiCAD – I’ve found it both easy to use and frustrating in equal measure. Likewise my initial impressions of Revit have left me feeling underwhelmed. In terms of a tool to get my ideas across I much prefer Sketchup to either but that does virtually nothing to fill the BIM role of the other packages.

It’s my understanding that Revit families are authored in a way that is closer to AutoCAD parametric blocks than ArchiCAD’s GDL objects? I did play with parametric blocks quite a bit when they were new and they seemed to be a powerful way to add a bit of versatility to blocks. I quickly found they got out of hand if you tried anything with enough complexity to be genuinely useful, though. Keeping track of what actions triggered what other actions became a real headache. The idea of trying the same with parameters over three dimensions, plus materials and other parametric information, leaves me with the feeling that achieving any level of versatility in a Revit family would be pretty frustrating.

I haven’t tried developing objects using GDL yet (there wasn’t much call for it in the limited use I had for ArchiCAD) but as a programmer I can see the appeal – if you can understand the code presumably it makes spotting how the rules work much easier. Also, as a totally flexible approach it must make a decent basis for a more visual Revit-style approach for people who wish to work that way, if only the authoring tools exist to achieve that. Presumably the same isn’t possible the other way around?

Making blocks in AutoCAD is very easy, but in a way that’s as much a problem as it is a benefit. It is relatively simple to get a tidy block with considered linetypes and layers (if it’s necessary to have lines on anything other than Layer0), limited complexity, a basepoint that’s in a sensible place in the geometry and a meaningful name. Despite this, CAD block libraries seem to end up a hopeless, jumbled mess of blocks with duplicate purposes, differing drawing standards and meaningless names. Someone in the practice really needs to act as manager of the library, both to make sure that new contributions are up to scratch but also point people in the right direction if they’re after a particular block instead of creating a new one. The whole point of blocks – and families and objects – of create once use often tends to be undermined by the readiness that people have to creating new ones instead of looking for existing. I therefore feel that concerns over GDL complexity, while no doubt well-founded, aren’t massively important. I know enough of using Revit and ArchiCAD to have seen how much more user-friendly ArchiCAD’s object configuration windows seem to be. Surely these are used multiple times an hour by everybody using ArchiCAD whereas authoring objects is comparatively rare. Spending more time on producing the object would seem to have greater benefits in terms of usability and flexibility than making the object itself easier to make. I would have thought it makes sense for whoever is responsible for the CAD library to also have the necessary know-how to support others in the office in achieving this.

Also, I feel the issue of file size between families and GDL objects is more significant than the comments seem to imply. It sounds like a typical Revit family is a good 10x larger than a GDL object, judging by the sizes commented on above and Revit families can grow to over 2Mb. I’d imagine a reasonably sized building could have potentially hundreds of families? I don’t know if it is common to embed or link families into Revit files – from recollection they’re linked in ArchiCAD? Presumably with collaborative working, though, any blocks / families / objects will need transmitting in which case there seems a clear benefit to having files that are so much smaller, purely because of the cumulative effect of the volume of them.

Chris,
Your logic is sound on all accounts, especially in regards to the CAD Managers role in controlling the objects created. As a one time cad manager I cringe at the thought of anyone in the office creating the own objects at will; it would either be a managerial nightmare or the objects would be dumb.
Really I believe the two (GSMs & RFAs) should not be considered the same for comparison as their roles are really quite different. GDL objects (GSMs) at their most basic fulfill the same role as revit families but are more geared towards system solutions with many design options and variables whereas RFAs are more suited to components of a system.
So really I think comparing the two is unfair on the RFAs. Perhaps a better comparison for RFAs would be Autocad parametric blocks as you suggested, or even sketchup components.
Glad to be on this side of the fence;)
Kristian