My last few posts have mostly just offered my opinion. This time, I’m really hoping to get responses from you, the reader!
One of the hot topics when we talk about BIM is “parametric design.” I hear people talk about constraints and relationships and parameters as though they all mean the same thing, so I wanted to clarify a bit and offer my own opinions.
To me, each of the three terms means something slightly different, but all three are used to capture what the designer has in mind when creating the model. That’s the whole point of any kind of adding them to a program: to capture the designer’s intent and to help make changes to the model more quickly.
A constraint ties two overlapping elements together. A simple example is the edge of a ceiling that coincides with the face of a wall. Constraining them together will mean that moving the wall will move the edge of the ceiling as well.
Even at this basic point, there is a question of behavior: If you try to move the ceiling edge, what of the following should happen?
· The wall moves with the ceiling automatically, without any notification from the software
· The wall moves with the ceiling automatically, and the wall is highlighted to tell you that the it moved as well
· The software tells you that doing so would move the wall as well, then offer you the choice to move it or not (and if not, remove the constraint)
· The software gives you an error message and gives you the options to undo your change or remove the constraint (like one popular software does….)
· Some other option?
All of these possibilities point to this: should there be a hierarchy of constraints, so that one element can move the other, but not vice versa? Or should all elements in a relationship be treated as equals?
Moving on, relationships are constraints with an angle or distance assigned to them. For example, two corridor walls that have their faces set to be 6’-0” apart, so that moving one wall moves both of them, retaining the distance between them. Another option is two grid lines set to be 60 degrees apart. Rotating one line would move them both, but moving one of them would not move the other (since the angle would not be changing).
For relationships, what would you want to see?
· The second element moves/rotates automatically with no notification
· The second element moves/rotates automatically, highlighting the other elements that moved
· The software informs you that there are related elements and offers you a choice to move them or break the relationship
Parameters are the most complex and usually involve some form of mathematical calculation. For example, three windows along a wall that are evenly spaced or mullions in a curtain wall that are 4’-0” on center for the entire length of the curtain wall. If the wall’s length is changed, the windows will re-space themselves. If the curtain wall is made longer, then more mullions are added. A more complex example would be a bow-string truss that has a parameter for the radius of its curve, and changing that radius requires all the elements in the truss to change their length.
Once again, there are several ways to handle this. I’ll propose what I would like to see the program do:
1. Show me the proposed new element locations on-screen.
2. If more than one option is viable, such as spacing the mullions 4’-0” from the start of the wall or centering the mullions so they have equal space on each end, show me both of them and let me choose between them.
3. Have an option to remove the parametric relationship and let me move the windows/mullions myself.
I want the software to take a guess and, if the guess is wrong, let me discard the guess and manually make the changes. I always want the software to protect my work that I’ve already done. If I spend 2 hours working out a mullion pattern, I really don’t want the software to discard all my work just because I made the wall 1’-0” longer.
Lastly, I want to be able to change the nature of a parametric relationship on the fly. Maybe I decide that 4’-0” isn’t the right spacing and, just for design options, I want to make 6 equal-sized glazing panels instead. That should be a quick change and not require me to delete everything and start over.
I’ve asked a lot of questions in this post and proposed how I would like to see parametric relationships work. If you agree, disagree, or have some other alternative altogether, please comment!
Let me just say: Wow!!!! Thanks for great and detailed comments. There are ideas and points in here that I never considered, and that is exactly why I asked for them!
I hope you will all be along for the ride as we move forward :-)