Description
Key Learnings
- Learn how to create reliable, flexible parametric curved forms in the Revit Family Editor.
- Learn how to componentize your families: Reuse the parts and pieces in multiple families and contexts.
- Discover what it takes to make a properly flexing compound curve.
- Learn about using formulas and other advanced techniques to control family curves.
Speaker
- Paul AubinPaul F. Aubin is the author of many Revit book titles including his "deep dive" into the Revit family editor: Renaissance Revit. He has also authored dozens of Revit video training titles on LinkedIn Learning (powered by lynda.com content) covering all levels of Revit, Dynamo and ReCap. Paul is an independent architectural consultant providing content creation, implementation, and training services. His career of over 30 years, includes experience in design, production, BIM management, coaching, reality capture and training. Paul is an active member of the Autodesk user community and has been a top-rated speaker at AU and other industry conferences for many years. Paul is an Autodesk Expert Elite and the founder of ChiNamo; the Chicago Dynamo Community. He was recently named a member of the board of directors for the Volterra-Detroit Foundation. He lives in Chicago with his wife and their three children are currently pursuing their careers around the country.
PAUL F. AUBIN: Welcome to Taming Parametric Curved Geometry in the Revit Family Editor. My name is Paul Aubin. And I'm happy to be here with you today.
Just briefly a little bit about me-- I am an author and consultant with an architectural background going back 20-some, 30 years. I'm also a proud husband and father of three adult children who are beginning their careers around the country, even as we speak.
As far as authoring goes, my two most recent books are these-- Revit Essentials for Architecture, which assumes no prior background to Revit and starts you at the beginning and is a tutorial manual 100% through two projects, two about early CDs, and then my deep dive into the Revit Family Editor, which is a little bit older a book. It's been around since 2014 release, but still pertinent because a lot of the Family Editor content is still valid. And so if you're interested in either of those books, you can learn more on my website.
The reason I mention Renaissance Revit in particular is a lot of today's content is actually drawn from that book. Chapter 4 in particular is where I talk about taming parametric curved geometry. So it's a good follow up if you're interested.
Also, if you're thinking, boy, this guy's voice sounds really familiar and I can't quite place it, perhaps you've seen some of my LinkedIn Learning videos. I've got lots of Revit content there. So feel free to look up my name there and check it out, including some of today's content, of course, on curved geometry.
Now, the handout for this session and an accompanying data set is provided. You can find it on the Autodesk website. But you can also find it at my website. So here's a QR code to my website or just simply wherever you found this recording. There should be some links accompanying it where you can download a ZIP file with the sample Revit files that I'll be working through in this session, as well as the PDF handout, which I did structure as a step-by-step handout. So even though I'll be going through the material relatively quickly on my end here in this presentation, you'll be able to do it at your own pace if you follow along in the handout later on after the session.
So parametric curvature-- just what are we trying to solve here? Well, let's talk about that a little bit. Suppose you had a curve in Revit. Now, the act of drawing the curves are not difficult. You can just draw arcs or circles or ellipses or even splines. There's a number of different curved forms that are supported.
Well, that's not the difficult part. If you're working in the Family Editor and you want that curvature to flex or reshape in some way and you want to be able to control that reshaping or flexing behavior, well, in that case, you could end up with some weird behavior like this, where the curves misbehave and you end up with these kinks or these little strange areas. That's what we're talking about when I say taming parametric curves. I want to give you some tools that you can use in your own family content to be able to control that behavior so that it stays smooth and continuous and gives you desired results.
So in line with everything that we're trying to accomplish, let me just talk about what I'm assuming from you. I am assuming that you have some background in the traditional Family Editor. Now, it's not absolutely required. If you're a complete novice when it comes to creating family content, you're still welcome to watch this course, of course. But some of the material might be a touch more advanced for you.
I'm assuming you're familiar with reference planes, dimensions, and parameters. These are the basic bones and muscle/skin analogy that we talk about in the Family Editor. And it's what drives the geometry, makes everything work. So I'm assuming you've seen that or at least heard of that before.
Obviously, I'm assuming that you've got some basic knowledge of solid and void forms, which we have in the Family Editor. And even though everything that I'm going to show you would be able to be used in the Conceptual Massing Environment, just for simplicity's sake for today, I'm not going to be covering the Conceptual Massing Environment. But again, all of the stuff that I will share with you would apply there. But there are several other additional techniques that I'm not going to be getting into as well.
So I'm mainly focused on the tools that you see over there on the right-hand side of my slide, just basic arcs and elliptical shapes that you can draw in the traditional Family Editor. And of course, the most important assumption I'm making is that you want your curves to flex in a predictable way. So that is the assumptions going in. And with that, let's switch over to Revit.
So here I am in Revit. And I'm just going to cancel this for a minute. This is that form that I showed you at the start in the slide. And I want to just show you this thing is based on a multiplier here. And I want to just show you how it would misbehave horribly if I don't have the curves constrained properly. So again, just to remind you of what we're trying to solve here, all of the examples that we're going to look at here this afternoon are going to address that issue.
So let's go ahead and get started here. And I'm going to open up my first starter file. This is just what I'm calling a seed file. It is a family file that I've started already. I added some basic reference planes for the right and the left and the front and the back. And I added this simple extrusion right here.
Now, I've also got a width and a depth parameter. So if we were to flex either of those parameters, of course, the size of that box would adjust. And let me just Control-Z to undo that.
What I'm going to do is take this box, edit the extrusion, remove the straight lines, and let's start with the simplest curve form of all. And that is a circle. So I'm going to draw a circle. Start right here at the center. Pull it out to here. And I'm going to finish that. And of course, the trouble with that is that simply drawing a circle and snapping to reference planes does not constrain that circle in any way. So it's not going to force that circle to flex when we do that.
So let me undo that and re-edit this. How would we go about flexing this circle? Well, even something as simple as a circle-- we're already running into the first time when we have to break one of the rules of the Family Editor. So if you've done any work in the Family Editor, you know there's this so-called bones, muscle, skin analogy. So you start with the reference planes. You add dimensions to those reference planes to make them flexible and adjustable. And then you pin the geometry to that armature, that framework, of reference planes so that when the reference planes move the bones, it takes the skin, the muscles and the skin, with it. So that's the idea that we want.
Well, that's the general rule of thumb. But like all rules, we sometimes need to break those rules. We need to make exceptions in order to get the behavior we want. And curvature is usually one of the places where we have to start thinking about an alternative approach and breaking some of those rules.
So if I select this circle, a temporary dimension appears here for the radius. And there's the "Make this temporary permanent." I'm going to click that. And now if I click away from it, I have this dimension here. But of course, this dimension is breaking the rule because it's dimensioning directly to the geometry rather than the reference planes. But you can't have a curved reference plane. So that's the problem here.
So I'm going to take this dimension. And I'm going to label it with a new parameter that I'm going to call "Radius." And then I will click OK. And then I will simply finish this. And now, of course, I could flex the radius. And it will adjust the shape of that geometry.
Now, of course, it's not changing the width or the depth. So if you want to tie all that together, then some simple formulas will do the trick. So in the case of a circle, you probably want width to equal depth. So we can do that. And then, of course, I could make either one of those tied to the radius.
Now, of course, the radius is half of the width or the depth. So I could do something like width divided by 2. And then let's apply that just to make sure. It's telling me I've got instance parameters here. So that's one thing I forgot-- is that my radius needs to be an instance parameter in order for a formula to work. Now I can apply it just fine. And I'll change the radius. I'll click OK. And now you're going to see that the circle will change to double the size. And the width and the depth will adjust along with it.
So-- pretty simple example. But it actually already covers some of the fundamental basics that we need to know about flexing curved geometry-- is that you have to think a little differently about how you apply the rules.
Now, I'm going to delete this circle. And in its place, I'm going to do an ellipse. And an ellipse is, admittedly, slightly more complex than a circle. Now, initially, it looks exactly like a circle. Now, it's offering me these two dimensions right here and here. So I'm going to go ahead and take advantage of that. And then instead of "Radius," I'm going to label this one just simply "Y." And let me go ahead and make that an instance this time. And then this one I'm going to label. And I'll simply call that "X" and also make that instance.
Now, what I've done is basically given two radii to this ellipse. But now we need to do a little bit of work here in the family types. I no longer want the depth and the width to be equal to one another. So I'm going to remove that formula there. And then we don't really care about the radius anymore. In fact, you could delete that parameter entirely if you wanted to. And as far as the X and Y, this is where we would want to do the formula.
So the X is running horizontally. So that's going to be my width divided by 2. And then the depth is running vertically. And that's going to be my depth divided by 2. And we'll click Apply just to make sure we don't get any errors this time. And then finally, let's try flexing. And now, of course, you're going to see that it only flexes in one direction. And I'll try flexing this way. And it flexes in one direction.
And of course, if you think about it mathematically, well, all an ellipse-- or rephrase that. If you think about it mathematically, all a circle is is a special case of the ellipse. So if you have an ellipse where both axes are equal, then you have a circle. So if you wanted to, you could use this exclusively for both forms.
Now, there is an alternative to these extra parameters and these half-formulas. And that is that I could remove these dimensions. And I could place the dimensions a little bit differently. So I could go to this reference plane. And then if you use your Tab key here, you should be able to find an endpoint. And you're going to need to do this on all four sides. And then you simply lock these.
Now, it's almost a "six of one, half-dozen of the other" kind of situation. In other words, this is largely a matter of personal preference. But now that means I no longer need X. I no longer need Y. But I still have control over this entire thing. And I can flex it by taking the width and changing it, taking the depth and changing it. And it would-- oops, that was the height. And it will apply, like so. So it's two different approaches to the same thing.
Now, I'm going to finish this example off by just setting the width and the depth back to the same value. And then I'm going to delete this form. And if you happen to be doing a circle, you can use the same trick. So I could do a dimension. And then I get nearby the edge of the circle. And I tab. And it will let me do a 0 dimension there. And this you only need to do on three sides.
Now, you could do the fourth side if you wanted to. It's not going to hurt anything. But mathematically, we really only need three. And when I click Finish here-- and now if I change here, you definitely want to tie these two together. Otherwise, you're probably going to generate an error. So I'll make the depth and the width equal to one another. And then when I apply, you're going to see that works as well.
So those are a couple of techniques that you can use to start controlling your parametric curvature there. Now, those are simple circles, ellipses-- complete, enclosed forms. Well, let me delete this extrusion. And to keep this example a little bit simpler here so I don't have to make another solid form, the next one I'm going to do with just a model line.
So I'm going to go to Create here. And I'm going to choose Model Line. And I'm going to draw an arc now. And this arc I'm just going to draw in this first little quadrant right there. Now, it did offer me some lock icons. I chose not to click those just yet because what I want to show you here is if I flex this-- and right now, I've got the width and the depth equal to one another. If I flex this, you can see that it's doing the correct thing. So at first, you might be thinking, well, gee, that's working just fine. Why would I need to do anything else? Well, sometimes it does. Sometimes, it doesn't.
So let me show you some scenarios where that might not be the case. For example, suppose I put the radius on here. So I'm going to go ahead and select this. And I'm going to call this "Radius." And again, I'll make it Instance. Just last time, I forgot.
Well, now what happens if we flex this radius? Well, now you're going to see it's going to behave a little bit differently because suddenly, that radius is taking on a little bit more hierarchy, we can say, than what was implied earlier. And now if I flex the width and the depth, it's not guaranteed that those are going to have an impact on the overall shape of that arc. So notice that the arc is ignoring what's going on with the width and depth now.
So the bottom line is here there's some underlying rules that are taking place in this family. And you can use those rules if you want to if they're giving you what you want. But if they're not giving you what you want, then the trick is you need to know why. And the reason why is something called Automatic Sketch Dimensions.
So you can see those in visibility graphics. So I'm going to type "VG." And then I'm going to go to the Annotation Categories tab here. And I'm going to check this little box here. Now, in most family templates that you create family content from, that is turned off by default.
Now, what is an Automatic Sketch Dimension? It's really like Revit taking its best guess on what you intended. What was I thinking here-- or rather, Revit saying, what was the "you" thinking when you built this family? What were you trying to achieve? And it tries to guess that using Automatic Sketch Dimensions. So if I turn these on, do you see this little 0 right here and this other 0 right here? Those are the Automatic Sketch Dimensions. So it's taking its best guess on what my intention was.
Now, suppose I took the radius and I deleted it. Well, now, suddenly, I get another one right here. So there's a couple of things you want to know about Automatic Sketch Dimensions. They are automatic, which means the flip side of that is you can't control them. They are making assumptions. And they can change frequently depending on what's going on with the geometry at any given time.
For example, if I took this arc and I started to stretch it out, you see the Automatic Sketch Dimension is changing, changing, changing. At some point, it might flip allegiance, so to speak. So at some point-- you see it right there, how it actually jumped over to an entirely different reference plane.
Now, if you've even built a little bit of Revit Family content, then you know that if your dimensions and your parameters were jumping from reference plane to reference plane-- that you probably wouldn't get very predictable results. So even though, in the case where it's 0, it's logically assuming maybe what I intended, this one-- not so much. So this is why it's important in most cases, certainly with curves, for you to eliminate as many of those Automatic Sketch Dimensions as possible.
Now, how exactly do we go about doing that? Well, what I'm going to do is delete this arc and make a new one just to be easier to start over again. And I'll do it from here to here. And this time-- let me cancel out of there-- notice the Automatic Sketch Dimensions.
Now, as I've already said, it'll probably flex in a way that seems logical because the 0's are giving us what we want here. Well, if I were to go to the Align command, select this reference plane, there's an endpoint right here. And I can lock. And I'll do it in this direction as well. Do you notice how the temporary dimensions are disappearing as I do that? What happens is if you don't want the temporary dimensions, you can't just simply delete them. What you need to do is create rules that make them no longer necessary. So either by adding your own dimension or by aligning and locking, you can remove the necessity of those dimensions.
Now, here's the thing. What happens if I flex this time? Well, it's doing the correct thing. It's giving me an obvious thing until I do something like this. If I take this and I apply the radius to it, and now let's flex that again, well, now that may not be what you had in mind. Well, it's doing exactly what I asked for. It's locking both endpoints to these intersections. And it's maintaining the three-foot radius or the three-unit radius. I forget whether this file is in feet or inches. But it's whole numbers. So it's maintaining that radius.
So that's up to me. As the designer of this family, as the creator of this family, I get to make those decisions. So let me show you a more practical example of when this might be pertinent. Let's think about arches.
So what I'm going to do is actually close this file-- not going to save it. And I've got another sample file in here. This one I have called-- let's see. Where is it here? I've got this face-based one. So I'm going to open that one up. And the only reason I'm using a face-based here is because if I'm doing an arch, it's probably something I want associated with a wall, maybe, or some sort of a horizontal surface. So using a face base is an easy way to do that.
Now, there's already an extrusion in here. I'm going to remove that. And this bottom reference plane-- I don't want that, either. And then I'm going to take this top reference plane here. And actually, it's already named correctly. It's this one that I want to rename. And I'm going to call that "Springline."
And then this, which used to be an equal-equal dimension-- I'm going to rename that or label that, rather, with a new parameter called "Rise." And I think everything in here is instance-based as well. So let's keep it instance-based. And then I'm going to flex this 0.75.
Now, what I want is-- this is the overall size of the arch. So I'm going to create this arch, in this case, with a sweep. So I'm going to go to Sweep, sketch the path. And there's all my curves again. So I'm going to do this three-point curve from here to here to here. And then I'll click the Modify tool.
Now, I've already got Automatic Sketch Dimensions turned on in this file, as you can see. And you can see that they're all appearing in lots of different locations. And we're getting one to this weird point right here because if you imagine where the center of this is-- I forgot to show you a neat little trick we can do with curved geometry-- we can turn on the center mark. So if I do that, that's where those mysterious dimensions are pointing to. So even though the center mark wasn't turned on, Revit still knows where it is. And that's what it's dimensioning to. So again, it's taking its best guess here.
Here's what I want to do. I'm going to go to my Align command again. Now, if you're using a modern version of Revit, 22 or 23, like I am, the Lock feature is right here. So instead of having to pick the reference plane, pick the point, and-- oh, I missed it there. Let me try that again. Pick the reference plane. You want to pay attention to what it's saying here. That says Automatic Sketch Dimension. So I want to tab until it says Sketch. Click the point and lock.
Do you see how the dimension went away? Well, I can save a step if I turn this on ahead of time. So now I'll pick the Springline. And I'll tab and tab again until it says Sketch. And it locks automatically.
So that saves you an extra click. Now, if you're doing this a lot, those clicks add up. So that can be a nice thing. Let me see. For some reason, it's not letting me get to that one. Oh, there it was. I just wasn't paying attention.
Now, notice that I've eliminated most of the Automatic Sketch Dimensions. But there's still one right here to the center because, as you saw in the previous example, just having the endpoints pinned down isn't enough. So most arcs need three things. It can be two endpoints and a radius. It can be the curvature and two endpoints. It can be the angle. There's a number of things you can choose from. But you typically need to lock down three parameters, mathematically speaking, in order to keep that arc behaving.
So I could calculate, using math, where the center line-- or where the center point needs to be. But if we go back to the first example I showed you with the circles and the ellipses, what we can do alternatively is simply put a dimension and tab in right there and lock that. And if you don't like doing a 0 dimension, then you can do it this way from the Springline and tab it right there and then select this and label it with the Rise parameter. Both of those will do exactly the same thing.
And so now if I were to flex this, and let's say that we flex the width of this to 3, you're going to see it spread out a little bit. I'll change it back to 2. If we change the rise to 1, it becomes more of a Roman arch, a half-circle. If we change the Rise to something greater than 1, it becomes more of a amorous kind of shape. And if we go less than 1-- 0.5, 0.75-- then it's got more of that eyebrow shape, that segmental shape. So this same construct could be many different types of arches because we've now made it flexible in all those ways.
Now, this is the path of the sweep. So I can click Finish here. And then I can go to the profile, edit the profile, open up a view. And I'll just draw a simple rectangle to represent the geometry and finish that. And then when we look at it in 3D, we have our arched form right there, which, again, you can flex to any of those ways to adjust that arch.
So it's creating all these techniques. You want them to apply to something practical. And so arches are very common in many different forms of buildings. And so that is certainly one of the practical forms.
Now, as well as those techniques work, and I've got lots of others that I'm skipping over here-- but I'm going to jump right to one of my go-to forms, and my apologies if this is going to bring back any old memories for any of you. But we're going to do a trigonometry example now.
So I know that some of you may not have liked math in high school and you were happy to be done with it and you probably said to yourself, when will I ever use this again? Well, here you are using Revit. Here's an example.
So what I'm going to do is jump back over to my PowerPoint here for a minute and just show you the trigonometry example. So I've got it mapped out here so we can see what we're after. The first thing I want to show you is a handout that's-- or a page that's included at the end of the handout. It's a cheat sheet for trigonometry. And here's just some clippings from that.
Now, I adapted this from a forum post on the RevitForum.org. And Klaus Munkholm was very gracious enough to let me reproduce it. But you can go to that URL at the bottom of the page there if you want to read the entire post. There's lots of good formulas on there. So if you're serious about Revit formulas, you should definitely check out that post. It's still valid today even though it was written, like, 20 years ago. And it's got lots of great formula examples that you can use in your content, including trigonometry.
So what you do with the cheat sheet is you determine which two parts of the triangle you know, either two sides or an angle or something like that. And then it tells you what formula to use in Revit. And the first one we're going to do is make an ovolo curve. And if you're not sure what an ovolo curve is, it's this. It's just a simple-- you would think of it as a quarter round, like if you went to a lumber yard and you picked up some moldings. You would think of it as a quarter round. But a quarter round is equal in both directions. An ovolo is not. An ovolo has a slightly narrower side and a slightly taller side. And therefore, the center of it is shifted off-center.
Now, on the left side of the screen, I'm showing an image from a book by Robert Cheetham, who was one of the sources for Renaissance Revit that I relied on heavily in that book. And then my diagram on the right is in Revit. And the idea is that we're going to ask the end user two questions. We're going to ask them what the depth and the height is of this molding. And we'll figure out the rest. And what we're trying to do is calculate the point right there which that diagonal line is going through. And that's where we need to put a reference plane to mark the center of this arc. And that's going to move depending on the width and the depth. So we need to calculate that location.
And we could have done the same thing with the arch a moment ago when I said the center was floating and we could adjust it. And I chose to do it by putting the dimension directly in the geometry. The alternative would be to calculate where the center ought to be. And that's another option.
So anyway, to find this reference plane, it turns out that the X and Y that we're asking for forms a triangle. So using one of those trigonometry formulas, we can easily figure out the diagonal of that triangle. And then it turns out that this other triangle here is a similar triangle. Now, mathematically, a similar triangle is one that's proportional to the original, but has all the same relationships. So if we take half of the diagonal, that becomes the small side on this other triangle. And then we can take this angle here. And the corresponding angle is right there. And we can use trigonometry, again, with that half-diagonal and that angle to calculate this distance, which is the radius, which you can see turns out to be the long side, or the hypotenuse, of that smaller triangle.
So we just apply a few of these trig formulas. And we get to where we need to go. Here's the formulas. So we're trying to find that point. And we're going to use the Pythagorean theorem to figure out D. Then there it is right there. And we're going to just do simple division to get Half D, right there. And then we are going to look for-- do a little trig here. So we're going to use the atangent function on angle A in order to figure out what the-- to figure out the angle, rather. Sorry. We're going to use the atang function with the height and depth to figure out angle A. And then once we have angle A, we can use the cosine function and Half D to figure out the radius.
So that's how we're going to analyze what we're dealing with. We start with those two inputs, X and Y. And we end up where we need to go. Oops. I did not want to cancel out of the PowerPoint-- my apologies. I pressed my Escape button. It's a Revit habit that I'm sure we're all in. And let's jump back over here.
So the file that I want to open here I have forgotten. Forgive me. Let me go to my notes here. Seed Profile-- so this one. And one thing I forgot to mention here-- the remainder of the session, we're going to be creating profile families. The reason for that is that profile families I like because you can reuse them. So we can do the shape that we want, including all the flexible curves, in a 2D profile family. And then we can use that profile family to create our solid forms, sweeps and swept blends.
Now, if you need extrusions or revolves or blends, there's a pretty good chance that you can emulate those same forms using sweeps or swept blends. So most of the time, you can do most of your geometry using sweeps or swept blends. And therefore, you can rely heavily on profiles because extrusions, revolves, and blends, unfortunately, don't support profiles. So your choices with those forms would either be emulate them with the sweep or swept blend or do the sketch directly in the form, which means you'd have to repeat yourself if you wanted the shape multiple times. So because I'm thinking I want to use this ovolo shape in other circumstances, I'd rather have it as a profile.
So there's a little triangle in here just as a placeholder. I'm going to delete that. I'm going to draw two reference planes, one here and another one a little further out. And just to keep these straight, I'm going to name this one "Projection." And I'm going to name this one "Radius."
So this one is the one that we're using trigonometry to figure out. For the projection, that's just going to be another parameter. So I'm going to put a parameter there. And let's put this over here.
So we're going to label this. I don't think I have "Radius" in here yet. No. So we're going to label this "Radius," or I-- did I use "R"? I think I just did "R" in the handout. So I'll do "R," make it instance-based. And then this one I'm going to call "Projection." And the "Projection"-- I'll do it instance as well. Let me just make that a whole number. So I'll just go with 5 there.
Now, I'm not going to worry about R yet because we're going to calculate that. So what we want to do now is go to our Family Types window here. And let me just make this a little bit larger. And I'm going to add the parameters that I need. And I would love to say I had these all memorized, but I don't. So let me turn to the page-- there we go-- that I need for this. And this is all in the handout if you're-- are following along later.
So I'm going to do a D parameter. That's my diagonal. I'm going to do a Half D parameter, HD. And actually, I want to put these under Constraints. That's just something I like to do because I don't like having everything under Dimensions. But that's not at all required. You can put these in any group that you like. So there-- and then I also need A.
Now, it's very important with A that you pay attention because it defaults to length. And I want A to be an angle. And I also want that in Constraints, instance-based. And I needed one more, R, which I already have. So let's take R. And because we're calculating that, as well-- anything that I'm calculating I like to move to Constraints. So I'm just going to move it up there. So those are the four parameters.
Now, let me change the order. D we're going to calculate first. Then we're going to calculate Half D, From D, and then A, and then, finally, R. So D was Pythagorean theorem, which is SQRT, open/close parentheses.
I'm going to arrow in, open/close again, plus open/close again. The reason I do that is I want to make sure I don't miss any of the parentheses because that will generate errors. And what we're going to do is take X squared.
Now, the way you do square-- the way you square things in the Family Editor is to do the little caret symbol, which is Shift-6, and then the number 2 or whatever power you want to raise it to because you could raise it to the third power or the fourth power or the fifth power.
So I'm going to do caret 2 again. Whoops. There we go. And that calculates that distance. And it's funny. I got it really close, didn't I? I can't see it. But I think it was 16-something already. So that was just dumb luck.
D divided by 2-- that one's easy. This one is the atan function. So again, I do atan, open/close parentheses. Then I'm going to arrow into the parentheses. And it was Y divided by X.
Now, again, I don't have all this memorized. I'm using that trigonometry cheat sheet to remind me. So I just thought about what do I have. I have my X and Y. And I'm trying to calculate an angle and figure that out.
Right now, my X and Y are equal. So you can do a quick gut check. And it's working because if you have two equal sides, you have to have a 45-degree. So it's working. So you can see that right there.
And then finally, the last formula is HD divided by the cosine of A. So it's not too bad-- yeah, a little high school math there, but it's not so painful.
Now, it's very important that you type the parameter names exactly. So I used uppercase in my names over here. I had to use uppercase over here as well.
So if I click OK, you'll see that my radius has flexed. Something doesn't seem right there, though. What did I do wrong? Oh, no. It is saying it's 12. So let's change that. So let's do 8 for the X. And we'll click OK. And do you see how that just adjusted?
Now, instead of having to keep going in and out of the dialog, let me just position these next to each other. Let's flex the Y, too. Click Apply. And you'll see everything adjust.
Now, in order to really see this, let's put some lines. Now, remember, I'm in a profile family. So I'm not creating extrusions or blends yet. I'm just creating the shape. So I'm going to do a center-ends arc. The center point is right there, the intersection of R and that top reference plane. And then I want it to swing from here to here.
I'll click Modify to cancel a whole bunch of temporary sketch dimensions. I'm going to select the arc, turn on the center mark. Then I'm going to go to my Align command.
Now, I previously turned on Lock. It remembers that. So I'm going to align and lock that top endpoint in both directions, align and lock the bottom endpoint in both directions. And then I'm going to align and lock the center line in both directions. And now that arc is locked in three locations. And it should flex perfectly no matter what I adjust these numbers to. So I'm just going to try a few values. And you can see that everything is working.
So to finish off, remember, this is not a profile. So it has to be a closed shape. I'll just draw straight lines. And I want to go to that intersection right there, that intersection right there, and finish it off there, Align command. Align and lock that. Align and lock that. And align and lock that.
Now, I have a testing file that we can test this out in. And it is called-- what is it called? It is called Sweep Flex, 05 Sweep Flex. I'm going to open that up. And I can load in the one that I just created into this file-- whoops-- here. I can load that in. But I actually already had the-- I already had the files here or the profiles already here in this file. So if I just adjust some of these, I can select this sweep and come over here to the profile. And you can see I've already loaded them all in.
So you can use the ones that I've already provided or you can use the one that you loaded yourself. So let's try the one that I just loaded, which is still called "Seed Profile" because I forgot to Save As. And you can see it will come in. And it looks beautiful and smooth and-- nice, clean geometry. That's what I'm going for. It's very important to me that I have nice, clean geometry. I don't like a bunch of gaps. I don't like weird, little angles when it breaks in some strange way. So that's what I'm after.
So I'm going to go back to PowerPoint once more here. And let's just advance here through all this again. And then we're going to go to this one. So this is a slightly more complex curve. There's two arcs now that need to meet at a tangent. And it's kind of the same thing. We're going to find not only a diagonal, but a center there and then the halfway points of each of those. And I had this little happy discovery that it turns out that that's actually a regular hexagon when you do that. So that's kind of cool.
And then you've got a triangle here, again, between X and Y. That gives us a D. But because we're dealing with a regular hexagon, we've actually got six regular triangles within that hexagon, which means that any side of the hexagon is actually also the radius of these arcs.
So we're going to find these two centers points here and here. We're going to need to calculate this little triangle to help us do that. And of course, there's angle A again. A regular triangle has 60-degree angles. So that's going to be easy enough. Here's angle B. But with the combination of angle A and 60 degrees, we'll be able to figure out B very easily.
So again, we're going to do a Pythagorean theorem to get D. Then we're going to just do simple division to get R. So in this case, R is just half of D, as you can see there with my little PowerPoint animation. And then we're going to do some trig to figure out angle A, just like we did in the last one. Then we're going to just do some simple arithmetic.
Now, if you go, wait a minute, how is that 120 minus A, let's explain that. So right here, a total line is 180 degrees, half-circle. We're subtracting angle A from that. But we're also subtracting 60 degrees from that. So if you take 60 degrees and you push it over to the other side, what you get is that B plus A equals 120. And then if you simplify it further, you get that B equals 120 minus A.
So that's how I came up with that. So that's our simple arithmetic. And then to find the center here, now we have to go to our X1 and our Y1. And that's just going to use the cosine function with our radius again and then some more trig here to give us Y1, which is the sine function of the same angle.
So anyway-- oops, went too far. I'll save that one for later. So let's close this guy. And we're not going to save it. Let me just make these full screen again. Open up the starter file here, which is the Cyma Start. I've already done-- I'm not going to do all the work over again. I've already done some of the work here.
So here's the reference planes and the offsets. And basically, we just have to add in the required formulas, some of which are already here. So you can just type in those formulas and then flex it. So rather than watch me do all of that, in the interest of time, and it's all in the handout, I'm going to open up the final version here.
So if you want to do it yourself, you can start in that file. But if you just want to skip to the end, here's what it looks like. And you can see there's an arc here and an arc here with their center lines at that-- those locations. It's all been aligned and locked. And here's those formulas that I mentioned in the PowerPoint, which makes the whole thing flexible. And just to prove that, we can try putting in a different value. And you can see it adjust. And more importantly, it stays nice and tangent, which means that if you load this into this file and you take this and you change the profile that it's using to the Cyma profile, you can see that you get beautiful, smooth geometry, no seam right here.
How many times have you seen families where there's two arcs coming together and there's a line there? The reason there's a line there is because those two arcs aren't perfectly tangent. But if they're perfectly tangent, you get this nice, seamless effect, which I personally just love. I think that is just outstanding.
So I have just about enough time left to show you putting all this together. So there's several other examples in the handout that create other forms of moldings and profiles and so forth. And then there's a final example in the handout where there's an arched opening and you run the profiles along the archway and then you add end post moldings around for them to spring from, and so on. And I encourage you to do that exercise on your own. But I thought it would be more interesting for you to see a different exercise in the live session. So that's what I'm going to do. And then you can follow it up with the exercise in the handout. So you kind of get two for one this way.
So I've got a file here called "Balustrade." And the techniques that I'm going to show you in this file-- let me show you how this balustrade was built. It's just exactly the same techniques that are in the handout for the archway.
So what are we going to do here? This is what we're going to build. And I'm just going to focus on this middle portion for the remainder of our time together here. So there are a number of curved forms in here, as you can see. And some of these we've already done. So this one right at the top is our ovolo profile. It's here again in the railing. And then down here, there's our Cyma profile. So we've already seen those two. And so we reuse those there.
And there's just a few others here. I've got a cavetto. I've got-- forgetting what some of these are called. But I've got a number of these that are in here and then even this custom one.
Now, this custom one I don't have the steps for to show you. But all of the others-- this one, this one, most of the others-- are in the handout. This one you can open up the family. I'm providing the family. And you can open up the family and explore it. But it's the same idea. It's just two arcs coming together at a tangent in order to achieve that effect.
So what we're going to do is we're going to build that baluster together here right now. So I'm going to go to Open. And I'm going to open up the starter file, which is-- well, here's all the profiles, first of all, that are used in that file. So they're all here separately, including that Belly one. I'll just open that one up really quickly and show you. It's a little more advanced. But it's really not. X1 is used over and over again. X2, X3-- so there are a few more parameters. But none of the formulas are that much more advanced. You've got square root, square root. A lot of these are just-- they look complicated because what I built into here was a module.
Now, this is something I talk about in Renaissance Revit. But when you want to make the family scalable so that it can be different sizes, but maintain all the proportions as it scales, then you can add a Module parameter. And then you just multiply everything by that module.
Now, it took a lot of trial and error to figure out what these multipliers ought to be. There's no science here. I just tried numbers until I was satisfied with the look. So that was a design exercise. But they're all multiplied by the module so that if I take the module here and I flex it, the entire shape changes, but maintains that bowling pin shape there. So that was the key to that family-- is just basing the whole thing on a module. So that's just the only real difference that's in that file that's not covered in the examples in the handout.
So what I'm going to do now is I'm going to open up this starter file. And what I did here was I removed all the geometry. So let me show you first what you get if you create an empty baluster. So I'm going to go New Family. So if you've never done a baluster before, I'm going to do the imperial units template. But there's also a metric units one. But if you've never done a baluster before, this is the template. And it starts with this construct.
So you have a top reference plane. You have a height parameter that's applied to that. And then you have these two diagonal reference planes that are controlled by these cut angles, top and bottom cut. And that's because a baluster can either go on a straight railing or it can go along a stairway. So if you're going along a stairway, you want to pay attention to these diagonal ones because that's what's going to cut to the slope of the stair for you. So that's important.
I actually did build this baluster family, this one, so that it would work along the stair. But unfortunately, I did not get time to make the solid posts at the end do that. So that's a challenge exercise for any of you that are so inclined. But if you run these slope ones-- well, here, I'll show it to you. The balusters do actually work along the slope because I'm using those angled reference planes and avoid to cut the geometry there to make them work on that slope.
So anyway, we're not going to do that here. But it's there in the file if you want to explore it. But that's what you're starting with in a basic baluster template. Now, I'm going to close that. And what I've added to that is just some vertical reference planes here that I'm using a simple equal, equal and a width parameter, nothing fancy there.
This is where it maybe looks a little more complicated, where you've got all these reference planes and all these Z-values. But that's just because each one of those marks where a different profile starts. And the Z-values are just figuring out where those profiles need to go in order for the total form to give you that final bowling pin shape that I'm looking for.
So again, I figured out all of these numbers with trial and error. So there's nothing scientific about these numbers. It's just what looked good to me. And I was using some reference material as well. So you can find lots of examples of this online or in a book somewhere or whatever.
This got moved. And that shouldn't be there. So let me change that to-- it's supposed to be down here. And then let's start. So what we're going to do is we're going to build all of these sweeps around this circle.
So I mentioned to you earlier that revolves don't support profiles. But I want to use profiles here. So here's the alternative. Draw a circle for your sweep path. And then just simply sweep your profile around that circle. So instead of revolving around the inner axis, you're sweeping around the outer circle. And that does mean that you have to leave the center hollow. Otherwise, the sweep will fail. But you can fill that center in with solid geometry if you want to.
So this is going to be the path. And the reason I did it as a model line first is just simply so I can use the same path over and over again. And that just makes it easier to flex this whole thing because if we look at the floor plan, I did that trick that I showed you at the very start of the session where I've locked that circle in the three directions so that it flexes with the reference planes that mark the size of this baluster. So that's what we have starting out.
So let's make our first sweep here. So I'm going to go to Create. I'm going to go to Sweep. And I'm going to pick a path. I'm going to pick the circle. Then I'm going to finish that. Then I'm going to go to Select Profile and the dropdown here. And because I've already pre-loaded all the profiles, it makes my job a little bit easier. But if you were building this from scratch, you would simply use Load Profile right here and go out and load in those profile families that you had already created. So you do have to create the profiles first. Then you load them in and use them here in the family.
So let me start with the ovolo since that's the one we just built together. And this is what it does initially. And if I finish that, you can see it's twisting the wrong way. It's a cool form. But it's not the form that I want.
So I'm going to select this. And over here on the Properties-- let me just make this a little wider-- you can see the profile name there. There's a flip parameter here. So that's all I have to do to flip that around so that it goes the correct way.
Now I'm going to go to left view. And it's sitting on the floor. But I want it up here somewhere. And let me see again. I don't have this memorized. So I've got to look at my notes here.
Those are six. I just numbered them. So it wants to go up here to the Z6 location. And you could do that right here with Horizontal Profile Offset and Vertical Profile Offset. And notice that both of those have the Associate Family Parameter button, which means that we can move the locations of those profiles parametrically, which is key to making this entire thing work.
So the horizontal direction is going to use X6. And I'll show you the formula for that in just a minute. It's coming out as 0.25. So let me just apply that. And do you see how it moved in a little closer? And then the vertical direction is Z6. And it's probably going to go off-screen now because it went up to there, right where I wanted it to, at that location.
Now, let me just show you the parameters, nothing fancy about them. X6 is just using the module times a value. Where did this value come from? Trial and error. I figured out that value based on the reference material that I was looking at.
So again, it's not some secret, scientific way of figuring that out. It's just something that you try. And you can type in different numbers until you're satisfied. But because it's driven by the module, if I change the module, then everything will adjust, including the size of the profile and its location. And that was the key that I was looking for.
So that's the first one. Let me just add a couple more. And then we'll go to the final file. So it's not a bad idea to build each one even though you might be tempted to copy and paste this and modify it. There's pros and cons to each. But if you copy and paste it, it loses the association to this path. So it might actually be easier to just build each one independently and pick the path each time.
So I've finished that. Let's do the one right below this one, which is the Corona Profile. So that's right here, Corona. And I will look at it. And you can see it's pointing the wrong way. So I'm going to flip it.
And then you could type the offsets in here. But because I want to make them parametric, I'm going to finish. And then I'm going to do it with the parameters, instead. So the horizontal-- we did X6 for the other one. This is X5. It comes in a little closer. And we did Z6 for the other one. This is Z5. So they just number down. And it's now right where it needs to be underneath there. And then it's just more of the same.
Now, I'm at X6 to get to the ovolo. So that means I've got four more curvy ones. And then I've got two square ones, top and bottom. I'm going to go to the square one next because I want to show you a little trick that I'm going to do there.
You could do the square one as an extrusion. So full disclosure-- there's no reason not to do it as an extrusion. You could work right here in the left view, go to Extrusion. You could pick a work plane, like the center, left, right work plane. And you could draw that. When you finish it and you go to 3D, it'll look like that. And then you would need to switch to a different view, like the front view here. And you would need to say, let's align and lock that here. Oh, I think there's voids in there that are misbehaving. But anyway-- and align that. Lock that there.
So anyway, that would work perfectly fine-- nothing wrong with doing it that way. I'm going to just show you an alternative way. You can do it with a sweep, as well-- just a little thing that I like to do. I'm going to pick the same path, finish it. That bottom profile is my rectangular front left.
Now, I've-- I chose not to make the insertion points parametric. So I've actually got six different profiles for six different possible insertion points. But-- or nine, I think. You could do it with a flexible insertion point if you wanted to. But I chose not to do it that way.
This one is not flipped. And everything's at 0. Now, if I finish that, it's round. Well, there's this cool little feature over here called Trajectory Segmentation. And if you check that box, it'll, essentially, turn that into a square.
And you can actually change the angle here to different values. So if I chose 60 degrees or something, it becomes a hexagon. So the reason it's a square is because I'm using something greater than 90 degrees. And then it becomes square. But by putting in smaller and smaller values, you can get more and more segments. So it's, basically, a way of simulating your curve into flat segments. But it gives me that square shape in this case.
Now, in the interest of time and not to bore you, I will close the Start file and open up the finished version here. And I've added just a couple more features in here that I want to talk about.
So there's the completed forms. So there's that Belly form. There's the Corona. There's the ovolo. You've got the "scotcha" right here. You get the square ones down at the top and the bottom here, right there, and repeated again there. And then I repeated them, as well, up here because I was using the slope like I told you.
So notice that there is-- if I tab, there's a void here that is cutting along those angles. That's what's allowing it to work along the staircase, like I showed you a few minutes ago. And then I use the void.
But what are these voids for here and here? Well, if I go back to the original, notice that on the left, I have half a baluster for the left. And then on the right, I have the opposite half for the right. And then in the middle, I have the full baluster.
So rather than make that three separate families, what I did was make these voids here and here. And I forget which version-- it might have been 2020, possibly 2019. They added this feature for families where it cuts geometry is now a parameter. And you can tie that to a parameter. And it's just a yes/no parameter. So I've got one called Cut Left and another one called Cut Right.
So in the-- let me go to 3D here. And let's turn on Preview Visibility. And then let's go to Family Types. And you could see I've got a full one. And then it doesn't have either box checked. And then when I go to Cut Left, it has the-- or Half Left. In other words, keep the left side. So it's cutting the right side. And you could see it removes that part. And then when I go to Half Right, it does the opposite. So we're only keeping that part.
So that's just the way I chose to do it-- was to do that with parameters. Alternatively, you could save this family as three times and build the geometry. The sweep could go along 180 degrees instead of 360.
Which one is better? I like this because if I need to change something, I only have to change one family and it still works. With the other one, you have to change three families. But it's really entirely up to you.
So that's the final version of that file. You're welcome to reverse engineer that some more on your own. But since railings might be a little bit mysterious to some of you, let me go ahead and finish up our time together by explaining how the railing is put together. And the reason I wanted to show this example is I wanted to show that this technique that I'm-- that I've been showing through the whole session works on both loadable families and system families.
So the example that's in the handout-- and by the way, I never showed what that one looks like. But it's here. Let me see if I can make that a little larger. This is the example that you would do in the handout.
So you'd create this arched opening. You'd sweep the profiles along the arch. You'd create these little end post moldings, these little base moldings. It's the same technique that I just got through showing you with the baluster. You just stack the moldings on top of one another. So instead of trying to create one big, complex profile-- you could do that. I could make this entire shape all around here one big profile.
So all around there-- that's too fat. But I could make that one big profile. But instead of doing that, I'm just stacking them up on top of each other. And that was done inside a family. And it works perfectly fine in the Family Editor. But what I wanted you to see by showing you the railing here in the live session is that it also works in system families.
So a railing profile-- now I'm in a sheet here. So let me double-click into the viewport. And then this is also in a group. So let me double-click into there. But a railing profile is just a-- or a railing family is just a stack of profiles. So I'm going to select this railing. I'm going to go to Edit Type. And here for the rail structure, I did it with the noncontinuous rails. But you could, theoretically, do it with top and bottom rails, too. This is just a stack of-- let me see if I can get the preview open on the same window here.
So that bottom is that square piece of material down there. It's just using one of those rectangular profiles that I just showed you. Notice it's a different insertion point. So this one is the front mid insertion point. So it's centered on the railing, where the other one I did was left or right. I forget which. And I just called it "Plinth." So I renamed the type in there called "Plinth."
Then sitting on top of that is a Cyma with fillets. Now, a fillet is just a square molding. So notice that this is one profile. But these square portions here and here-- that's a fillet molding.
So whenever you are looking at a complex crown molding and there's some separation between the curved piece and the square piece, that's just a-- think of it as almost giving it a little breather when you're designing complex moldings. So that's just referred to as a fillet molding. So I decided to build those fillets directly into the Cyma. But I could have just done a little, thin rectangle as well. So it's up to you. You can do it either way.
Now, we skip some space. So those two are down low here at the height. I'm in decimal units, again, just to simplify. But now if we spin this-- can I spin this? Now it's going to go away for me. There we go. Let's spin it there.
So then if we jump up to here, this is the ovolo. So it allows space for all the balusters. And then that's the same ovolo that we built together a few minutes ago except it incorporates two fillet molds. So there's one at the bottom, one at the top. And those have parameters that you can adjust. So you can make them thicker and thinner. Otherwise, it's exactly the same family. The top is just another rectangle. And then the top Cyma-- once again, exactly like the one we built together except that it incorporates two fillet molds.
So there's really nothing new here. The newness of this is that I'm using those profiles in a railing family instead of in a loadable family. Otherwise, same stuff-- the only disadvantage to using it in a railing is that this is not as parametric because there aren't any parameters. Remember, I built the flexibility in there where I could adjust the size of all these.
So just adjusting the module, I could resize the whole thing. There isn't a parameter-- there isn't a way to hook that parameter up in the railing family. So you do have to do Edit Type, Duplicate, and then load in different pieces, which I do have in the sample file for you to look at.
So FIN_24 stands for "Finished 24." And it's 24 units tall. But then there's another version, FIN_23, which is a little shorter. And everything scales proportionally. So if you want to check that out, you can check out those two different versions. And they're both here in this file. I'll show you in a minute.
Meanwhile, though, let's move on to baluster placement And let's position this so that we can-- and I'll just go to a front view this time. There's the first one. It's that post at the end that I didn't show you. But it's loaded as a square pier. Next to that is the half baluster. It's half right in this case. Then we have 1, 2, 3, 4 full-- or three full balusters and then one more half baluster. And then it repeats.
Now, I did not add the post at the other end. I decided to do that manually in this case. You get nicer results. But if you want to explore, and I didn't add any corner posts or any of that-- so all of these spacings are just calculated based on the parameters that I-- the same design parameters that I used when building the baluster in the first place. So the module is 0.9, for example. And I'm just repeating that multiple times.
And then I think that's everything that I wanted to show you there. So let me just show you how this whole thing is put together. Let me cancel that for a moment. And let's jump into this 3D view, instead.
Just to show you, there's actually two types here. This one has a pier at both ends. And these only have it at one end. So these are actually-- there's actually five separate railings here because I found it was getting very difficult to try and turn the corner in one sketch and get everything to line up perfectly.
So you may not like that. If you're trying to do a complex railing like this, that's what I would recommend. You have to literally calculate. I had to figure out how long that railing should be so that it worked out perfectly. If I make it a little longer or a little bit shorter, it breaks the whole thing. So I'm going to go to Edit Path here. And I'm going to take this. And it's 14.8. I'm going to make it 15. And you're going to see that the-- somewhere in here, we're going to get weird, little gapping. Do you see what happened there? See how I have a weird gap there now?
So to avoid that, you just have to know what size to make it. So it's no different than figuring out the parameters that you need to stack your moldings or to figure out the parameters you need for the spacing. It's the same basic idea. And then this one doesn't have the end pier. So you just snap it with the Align tool to snap them together.
So anyway, that's about all I have the time to show you live. This file will be provided with the data set as well. And I even put some illustrations here of the railing dialog just to show you where the numbers came from and everything.
So you are welcome to open this file up and explore further. I encourage you to go through the PDF and follow it step by step because you'll be able to build all of those moldings individually. And you'll be able to do that archway example as well. And I think if you do both of those things, by the time you get to the end of all of that, you should have much more confidence in taming your parametric curved geometry in the Revit Family Editor.
If you want to learn more about me and my offerings, I welcome you to visit my website or LinkedIn Learning and search for my name. And with that, I would like to thank you very much for your attention.
Downloads
Tags
Product | |
Industries |