Controlling visibility within a Revit family
Today we're going to talk about controlling parts of a family within Revit, in terms of visibility. On - Off visibility to be specific. So, Revit allows us the ability to control turning something on and turning something off, even if it's just part of a family.
Now if you remember, families, of course is the term that we apply to an element. We can change parameters within a family based on an instance of that parameter or based on the type of family that we have. So, today we're going to talk about controlling visibility for just part of a family, and that part can be a whole assortment of things. It could actually be a 3D component or it could be a line, or it could be something else that we want to control, have it on in certain situations and have it off in other situations.
Now, if we're trying to edit our family to match something that we like from another family, or to use a concept that somebody else has created in a similar family a lot of times we can copy and paste those things in, however, there's downsides to copying something into a family. We might be bringing in details or adding to the file size or adding more complexity than we want.
Sometimes those can be good things, but a lot of times we might want to recreate things from scratch so that it's clean and concise, and it's exactly what we're looking for, and we're giving ourselves the control that we want to.
So again, in this segment we're focusing on visibility for a portion of a family.
Now, this might come in handy when we have title blocks and we want to have the ability to turn a key plan on or off, either in a specific title block like on a specific sheet, or globally, we could want to turn a client logo on or off within a title block.
We could want to turn a NICET certification or a PE seal on or off in a title block.
But it's not just title blocks.
Let's say we have fire alarm appliances that we're laying out on a plan. Maybe we want to show a coverage box for the strobe. The extent of the strobe coverage.
Maybe we want that to be on an on - off setting - so we could have it on when we're working on the plans but turn it off when we want to plot the project.
Maybe a similar thing like a coverage box for a sprinkler. Or we could turn that coverage box on when we're working on a plan and turn it off right before we want to plot that plan.
Well, in this segment we're going to talk about how we create those things, and we give ourselves the ability to turn just a portion of a family on or off.
Now there are three ways that we can set this up.
The first way is as an instance on - off parameter.
The second would be as a type parameter. It could again be an on - off type parameter.
The third way that I've done it is a subcategory for a model - so we know model categories. Like you can choose a sprinkler or a light fixture or an air terminal. Those are three different types of model categories where we can actually create a subcategory that would allow us to turn things on or off.
So, let's go through these three different situations and explain how they work, and then where they're useful, and hopefully by the time we're done, we're going to get a better idea of how we can control parts of families and set our families up and our templates up so that it's most beneficial for you.
So, #1 - let's start with an instance on off parameter.
So in this example, what I'm going to use is a fire sprinkler as an example, and I'm going to use the coverage box that we talked about in one of our segments about sprinkler spacing and what I'm going to do within Revit is take a coverage box which is a box with known dimensions, and I'm going to create that inside of a sprinkler family that does not already have it.
The coverage box will be helpful for me when I'm laying out sprinklers because it visually shows the extent which I can lay out a sprinkler.
So, our first case is going to be the instance parameter which we would edit inside of family.
So first I'm going to go to a floor plan and I'm going to create a sprinkler.
Now you see the sprinkler that I've created in here, it already has this coverage box. That extent, that boundary that's around the outside - that's already in this.
But what if I have a sprinkler that doesn't already have this?
How do we create that?
So here, I have a floor plan and let's create a sprinkler. Now the sprinkler may look a little bit different from yours, that's because I've already modified this - and you can see I have edges here that are created in order to center that sprinkler on a ceiling tile and then I have offsets at the six inch mark so that I can offset a sprinkler at 1/4 point or trim pipe at the six inch mark from that sprinkler.
But let's say I want to add a coverage box which is a larger box for this sprinkler - Now, in order to create an instance parameter, I'm going to click on that family and click EF, which for me is edit family, and that opens up the family editor for this particular sprinkler.
Now there's some customized features already in here which are lines in this space. But here we're going to create an instance parameter so that we can individually turn off some portion of this sprinkler as we want to.
So as an example, I'm going to create a model line and I'm going to view this, and a floor plan- so it's a little bit easier to draw. So if I go LI for model line, you'll see these are the available subcategories. I'm just going to leave it on sprinklers. And I'm going to draw a box that is 15 feet wide by 15 feet. And I'm actually going to move this so that it is centered just on the sprinkler.
So now, we have a model line that is all the way around. Now, if I were to load this in, right now - I'm not going to save this to the file, but I am going to load this into the project so the sprinkler in our project is going to update. Overwrite the value and its parameter values. You'll see now we have a box that's around our sprinkler.
And that's all fine, but I have no way to control when this box is on or when it's off. In fact, when I go to my view template and I go down to sprinklers, I have no control over how to turn that on and off.
It's just off when I turn the whole thing off or it's on.
That's the only control that we get.
So, what I'm going to do is go back into that sprinkler editor - EF for edit family. And then here what I can do is I can create a parameter that's inside of this family.
So, I'm going to go into the properties editor for this family, and here I have a whole assortment of parameters that are associated just with this family - so I'm going to go down here and I'm going to go to new parameter. I'm just going to create a family parameter, since this is only going to be for this.
So now here we have two options - we have a family parameter which would only be a parameter that's only specific to this exact family, or I can use a shared parameter which is going to be consistent between different families.
So as an example, if this is a concealed style sprinkler and I have a recessed sprinkler and I have an upright sprinkler and I want those to all have a similar parameter, then I'm going to want to use share perimeter.
If this is only going to apply to one specific type of family - then I can use family parameter.
In this case I'm going to go share parameter - I'm going to give myself the option of using this parameter through different types of sprinklers if I want to.
So, I'm actually going to create a new parameter.
I'm going to go select - I'll put this under sprinklers, and I'm going to go to edit and so all we're doing is creating a few pop up browsers here - we're getting a little bit deeper.
I'm going to go down to sprinklers again and I'm going to create a new parameter. This is a new shared parameter and I'm going to just call this - Coverage box - and I'm going to make this a yes no type of parameter.
So, this is a new shared parameter that we're creating. And it's a yes no. The type of parameters important because whatever you decide here is going to determine what input is allowed to be used for this parameter.
So, if it's a text parameter, you can type in any kind of text.
If it's a number it's going to recognize that parameter as a number. It's going to force the input to be a number.
Same with length - it's going to force the input to be a length.
Here we just went – Yes/No - we want this to be a checkable yes/no option.
So, coverage box - I'm going to click OK. That's going to create it within our shared parameters. I'm going to select that and go to OK. Now here we're selecting which share parameter we want to introduce back. So if I go back under sprinklers you can see the coverage box here - I click OK. Now that's bringing it back in so that I can add this parameter to this specific sprinkler.
So, in this example, again, we're trying to create an instance on/off parameter that applies on each individual sprinkler.
So, I've pulled in the shared parameter - I'm going to apply this in this family as an instance, and then lastly under this parameter where to group it - all this is doing is determining which blue header this is going to be under.
I'm going to do constraints - just so it shows up at the top. That's all that really is affecting and click OK. Now if I go back up to the top under constraints, you see that very first one. Here's the coverage box that's the shared parameter that we just introduced to this family. Its default value is what goes here. I can check it, I can uncheck it. Those are my only two options. It's a yes/no. And if I fix it in place, I can set that over here.
I'm not going to fix it in place, I'm just going to leave it here as a checkbox. And select OK.
So, what we did is we created a shared parameter that we could use for other families too. We brought that shared parameter into this family and we gave it a spot in our properties bar so. So then what I'm going to do is I'm going to select my lines that I had from before. I'm going to hit tab. And then select all of them just by right clicking. And then here is the visibility - I can turn the visibility on or off for the family.
But what I'm actually going to do here is I'm going to say the visibility needs to be equal to - Coverage box.
So, this little gray box that shows up right here - It kind of hides in there, but what that essentially is, is saying - you can take whatever your parameter is over here and you can tie it to something specific or equal to something specific, and I want it to equal the coverage box.
So, if I select OK - that means that these lines are no longer going to be controlled over here. They are going to equal the coverage box when that parameter is turned on.
So, let's load that.
I'm not going to save this family, but I will load it into the project.
Let's load that back into our project.
Overwrite the values.
Now here nothing changed, except that when I select this sprinkler and I go to constraints, I now have this coverage box shared parameter and it's checked on. If I uncheck that - it hides.
If I go back, select the sprinkler, check that - it's on.
Now if that - warning flag, I flag those so that I know that I've got sprinklers that are disconnected, but if we want to turn that off we can just go to analyze - show disconnects and I'm just going to uncheck that pipe - just so it doesn't flag it for me.
Cleans things up here going forward.
So, if I take this sprinkler and CC for copy and I copy this over here - actually, let's copy it a few different spots.
So, we've got a sprinkler layout and we've got coverage box shown for all these spaces. Now, with this individual instance on/off, I can select one of them and turn the coverage box off.
Over here. if I don't want the coverage box shown I could even select multiples. Check it on - Or check it off.
The other thing that I can do is I can say SV which for me is select all in view - that selects all these types of families in the view and I can turn them on or I can turn them off, or what I can do is I can click on one and say SE - select all in project – (that's the way I have my shortcut set up) select all in project and I can turn that coverage box on or I can turn it off.
Now what we've essentially done here, is given ourselves the ability to turn any portion of a family on or off based on the instance.
So, if we wanted to show maybe a symbol for a sprinkler guard, we could apply that on and off as an instance parameter.
If we want to do a box or a shape or an extrusion or void or whatever that is - that some part of a family. This gives us the ability to turn that on and off.
If we want to title it something different, or instead of showing up under constraints, we want it to show up at the bottom and under data or fabrication or whatever - That's in our control.
We have the ability to do that.
If I can make an analogy in that we're constructing our own house and we're going to go in, and we're going to put lights in our house and we're going to wire up our house. Using an instance on off parameter - It's like we're assigning a light switch to every single light in our house.
Now our house might have cam lights, it might have surface mounted strip lights. It might have wall sconces if we want to get really fancy with the way that we're describing the lights in our house.
We're putting all those different types of lights in our house, but when we use an instance on off parameter, it's like we're wiring every single individual light to its own switch.
Now it's still relatively easy to select all of those lights in our house or say all the sprinklers and turn something on or off universally - That's fine - The problem is that we have control over every single one of these. Which means that if we're reviewing a set of documents, we have to make sure before we plot that we've turned off every single instance that this could show up in a project.
Now for doing a small 8 sprinkler relocation project that's in a little tenant space - Maybe that's not that big a deal, it's going to be pretty obvious if something's on or off.
But let's say we have a large project. Are we going to want to go and select all of those sprinklers, say 3000 sprinklers - Or do a select all where we're selecting 3000 elements in a model and then changing that?
It's kind of nice to have individual control, but at the same time we know that if one box is on or two boxes is on, it doesn't tell us anything about the rest of the model.
So having one light switch for, say, a type of family or one light switch for that entire project - that can be kind of convenient.
That leads us to our next change, which would be a type parameter.
So right now, these are all acting individually, but if I select one, I go EF to edit that family again. Let's go back and instead of having an instance parameter, let's change that to a type parameter.
So I'm going to go back into the properties of that family, and I click on the coverage box. I'm going to edit that coverage box. And instead of applying this as an instance, let's do it as a type.
Now what this is going to do is every type of family that we have, it's going to change our decision.
Now when we use a type parameter, that means every family that is that type is going to be affected by our decision. It's going to be affected globally. In our in our home analogy, this is basically like saying every type of Cam light in our home is going to be under this single light switch.
So, I select OK for the type property.
OK - nothing really looks different.
Let's go ahead and load this in. I'm not going to save this family off, but I am going to load it into the project. I'm going to overwrite the parameters.
Now let's look at something here - If I copy the sprinkler round and I select one sprinkler. My parameter no longer shows up here. That's because it's not controlled on an instance level, it's controlled on a type. So the way that I would turn this on or off is I go to edit the type. Which here this means that we're editing the properties for all the families that are this type.
So, we have one light switch for all the type of lights in this house.
Now our parameter is showing up. This is a type property, so this is a type parameter. Now it's showing up under the type properties bar.
Here I can turn it off and even though I had one selected, it's going to turn that coverage box off for all the sprinklers in the project.
If I go back and select any of these sprinklers, go back to edit the type properties and turn it back on -now we have it on for all the sprinklers of that type.
Personally, this is a really quick way and a really easy way to make universal decisions about something without having to select 3000 elements and without having to change all that much.
This is a clean way of editing things universally - although the only downside is if we have a different type of sprinkler - Let's say we have an upright sprinkler and we want to turn off coverage boxes. Well, we'd have to go through the type properties for our concealed sprinklers, for our pendant sprinklers and our upright sprinklers and make sure that each of those types are turned off.
So, if we go back to our analogy, this really isn't like we're turning off all the lights in our house with one switch. Instead, this is like all the can lights in our house are turned off with one switch.
The surface mounted strip fixtures are still on and our wall sconces are still on.
Because we're only controlling that type with one on/off connection.
So, the last way that I'm going to show you to control some portion of a family is going to be using model subcategories.
So, if I click on a sprinkler and go EF to edit family again. I'm now back in the family editor. One of the things we can do instead of having a parameter, I'm actually just going to delete that out - One of the things that we can do is create a model subcategory.
So, to do that I go to manage.
Then I go to object styles and you'll see here we have a few limited selections of subcategories for this model style. I'm going to go create new subcategory and let's call this coverage box.
I'm going to use all caps so that it's pretty obvious what I just created.
I go to OK.
Now hit tab and select all those lines and up here you can now have a new option for coverage box on the subcategory up top. So apply that. You'll notice when I click on this line - this is no longer tied to anything now, it's not visible with anything. It's actually the line type is part of the subcategory of coverage box.
So anyways, let's load into the project - not going to save that family off, but I am going to update the parameters. Now if I look at the properties for a single sprinkler, it's not showing up as an instance. If I edit the type, it's not showing up in the type properties. But what I do have control here is if I go to my view template - I don't even have to select a sprinkler. If I go to the view template and I go to the model categories. This is the visibility graphics override for the model categories up here.
And I go down to sprinklers - a fast way to do that is select one - hit S and it will take me down to the S's. Now under the sprinklers, I have a new subcategory and that is the (capital) COVERAGE BOX and it's turned on by default.
Now if I uncheck that and hit apply, it's going to turn off all those coverage boxes because they are on that model subcategory.
This is my favorite way of controlling visibility for some portion of a family that's similar between all families of that category.
So, for example, a coverage box - it's going to be a coverage box, whether it's an upright or a pendant or whatever it is. They can be different sizes. They can show up differently - It doesn't really matter, but this controls all coverage boxes across any kind of family.
So, if I check that off there, or I check that on – I have universal control.
This is really beneficial because if I'm plotting out drawings and I say, oh, well, I've got a coverage box that's on in this view, I know that there's one spot to go, there's one light switch that affects all the coverage boxes for the entire project. So there's one checkbox that I've got to turn off for my view template.
Now, any view that has that template applied - I know it's off. It's one checkbox.
For me, that's a very convenient way of going about that. The only downside to using a model subcategory is you really don't want to junk this up.
Now in this example for the model category, if I go back down to the sprinklers, you'll see the new one in there - this is the one that I've used before that 130 - I didn't really title it very well, and then that's an old one that just has a basic box to it too.
So if I did this process too many times and say I've got 20 model subcategories, well now I'm really just kind of junking up the model and losing a nice clean organization.
I would only really recommend this if you only are going to add just a few models of categories. I don't really want to clog this up and make this harder to navigate than it needs to be.
But of the three, this is my favorite method for controlling something that's consistent between different types. Between different families that are still under the same model category.
Now, if that was what we used for a pendant sprinkler and we want to apply this same thing for an upright sprinkler - Just as an example, I'm going to pulling an upright.
So, this is an upright sprinkler. I actually have a filter on that turns the sprinkler a different color when it's at 8 feet as opposed to 0 feet. So you notice when I set this to zero, it actually turns teal. That's a warning to me that I've got it at the zero elevation. That's just the way that I track that, that's why the colors are showing up differently.
But here - if I go back to the model subcategory, go down to sprinklers and I turn the coverage box - This is my subcategory that I use for my template, and I hit apply - you see that my coverage box shows up and this is the exact shape that I had before.
So, with the models that we have shared on the link from Meyer Fire University for the coverage box, and if you're looking for that model, click the link below this video and it will take you to that one where we link to these files.
But if I were to go to edit family. You'll see that this coverage box - there's actually two of them - there's a square coverage box and then there's this one.
This is all it is on that coverage subcategory.
Now, if I wanted to go in here and go to manage and go back to object styles and say, you know, let's have a new one - All caps - coverage box to match the other subcategory sprinklers – great, OK.
I could take this, and I could put it on that coverage box.
Load it back into the project - and now let's see if those operate together.
And it does.
So now, just with that one capitalized coverage box, if I select or I don't even need to select - if I go to that view template, go to model categories, go down to sprinklers. Now, if I turn that coverage box on - and that's just the old one, that's unrelated, but I turn that coverage box on - hit apply. Now you see it applies the same.
That's on and this is on - We're good.
So that's how the model subcategory works.
Again, I would use that in a limited number of situations, but that can be very helpful to have a global on/off switch.
So where could this process be useful?
Well, let's say we have a fire alarm, and we're looking for coverage areas for strobes. Well, that could be a really useful application. Something like this where you can see strobe coverage boxes. You could use this for sprinkler spacing. You could use it for egress clearances. You could use it for mechanical equipment clearances. There's a whole number of ways that you could use on/off visibility for just a portion of a family.
My favorite way is to show certain things when I'm working on a project, but when I'm ready to plot, I just change a few model subcategories and now it's clean and ready to print.
That level of convenience is a nice way of checking things when I'm working on the model, but then having a nice clean plot set when I go to print.
Same could be applied for title blocks, for sprinklers, for fire alarm appliances. Really anything within Revit.
So here in this video we introduce three different ways to edit a family and control visibility for parts of that family.
There's the instance parameter.
There's the type parameter
There's the model subcategory.
There are other ways to control model visibility, but these have been the most useful ways that I found as it relates to Fire Protection.
I hope you found this helpful.
If you have questions or are looking for additional detail in any different way, comment below this video and we're happy to carry on that discussion.
Otherwise, I'm Joe Meyer and this is Meyer Fire University.
Sentry Page Protection