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.

RFA parameter formulas can reference other parameters combined with functions (+, -, <, etc), condition statements, and standard (manually written) text or numerical values.

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.


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.


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: FacebookTwitter, 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.


  1. TroyGates (@TroyGates) August 13, 2013
    • Kristian Bursell August 13, 2013
      • Ali August 27, 2013
      • Kristian Bursell August 28, 2013
  2. Ben Cohen August 13, 2013
    • Kristian Bursell August 13, 2013
  3. Elrond Burrell August 14, 2013
  4. Elrond Burrell August 14, 2013
    • Kristian Bursell August 14, 2013
  5. Stefan Boeykens August 14, 2013
    • Kristian Bursell August 14, 2013
    • lopezfigueroa August 14, 2013
  6. sabinu August 14, 2013
  7. Jared Banks August 14, 2013
    • lopezfigueroa August 14, 2013
  8. Dennis Nelson August 15, 2013
    • Jared Banks August 15, 2013
    • Kristian Bursell August 15, 2013
      • Dennis Nelson August 15, 2013
    • TroyGates (@TroyGates) August 15, 2013
      • Dennis Nelson August 15, 2013
      • TroyGates (@TroyGates) August 15, 2013
  9. Antonio Pina September 2, 2013
  10. Alex November 19, 2013
  11. olivier January 15, 2014
  12. Djordje December 1, 2014
  13. Chris Wade May 20, 2015
    • Kristian May 20, 2015

Leave a Reply