PDA

View Full Version : Visibility with Yes/No Conditional Statement



jcoe
2006-09-14, 02:11 PM
I would like to create a formula where if I select the visibility of something to be on, the others turn off.

Problem:
In our title block families I have created several stamps (ie. Record Set, Construction Document Set, Design Development Set, Schematic Design Set and Progress Print). Right now I have instance visibility controls for each stamp and for some reason people are having trouble with this. I thought maybe there is a way where someone selects Construction Document Set stamp to be visible, all other stamps turn off. For some reason, I just cannot seem to get my head around this.

Any help/suggestions would be appreciated.

mschroeder
2006-09-14, 03:03 PM
Create a visibility parameter for your stamps and in the formula bar insert:
NOT(your_other_visibility_parameter)

cadclips81126
2006-09-14, 03:23 PM
.
GOOD ONE.

jcoe
2006-09-14, 04:36 PM
I started using the not(parameter) as a base to work from, but this only affects one at a time. I would like to formulate something where:

if A is visible, then B,C,D and E are not
if B is visible, then A,C,D and E are not
if C is visible, then A,B,D and E are not....

You get the idea. However, this approach gives me a circular chain of reference error.

I tried setting up a text parameter with and If/Then statement in the visibility formula field but I keep getting inconsistent unit errors.

Am I on the right track or way off base here. I have attached and illustration for reference.

jcoe
2006-09-14, 05:42 PM
I think I figured it out. The only drawback here is you cannot have more than one box checked at a time of nothing will be visible due to the "or" condition.

Steve_Stafford
2006-09-14, 05:54 PM
I wrote a little article called "Make Up My Mind (http://revitoped.blogspot.com/2005/11/make-up-my-mind.html)". This offers one approach to this.

Dimitri Harvalias
2006-09-14, 05:55 PM
I was going to suggest that you create a new Set Description parameter to drive visibility of each stamp. A simple conditional would then compare the value of Set Description to toggle the visibility.

eg for the DD Stamp the formula would be =Set Description="DD"
Unfortunately, from what I gather, conditionals do not allow text strings as values to compare. (from the Revit Help file)

Conditional statements can contain numeric values, numeric parameter names, and Yes/No parameters. You can use the following comparisons in a condition: <, >, =. You can also use Boolean operators with a conditional statement: AND, OR, NOT.

It would be nice if we had drop down lists as one of the parameter types and we could then enter a set of allowable values, text or numeric, that could be used to drive any number of other parameters. As an example we could create styles for a kitchen and if we chose 'shaker' from the drop down list it would make the cupboard doors style A, the counter color green and the hinges and faucets type 2.
:idea:Now that I think about it this sounds very much like schedule keys but for parameters. :idea:

I realize you're trying to make things as goof proof as possible in your template but, assuming when you are printing a set that all drawings in that set will have the same stamp visible, wouldn't it be easier to instruct your users to right click on one of the title blocks, select all instances, and simply check the visibility parameter for the correct set description?

jcoe
2006-09-14, 06:26 PM
I wrote a little article called "Make Up My Mind (http://revitoped.blogspot.com/2005/11/make-up-my-mind.html)". This offers one approach to this.

This was very helpful Steve. I knew there was a better way to accomplish this.

mschroeder
2006-09-14, 06:30 PM
It looks like you have many choices. Rather than using the visibility parameters in the sheet, try just swapping family types in the sheet family. Then your types can have many static yes/no parameters for your variations.

Load this sheet and change it's type parameters..

twiceroadsfool
2006-09-14, 06:38 PM
Woah, nice. I just had to make an ADA parking family accomplished something similar, and i ended up having two extra parameters, for *yes* and *no* values that could be referenced in the IF statements.

Steve, your solution is waaaay cleaner. Thanks for that :)

jcoe
2006-09-14, 06:39 PM
Michael,
I originally played around with this option. I even tried to set up type catalogs, but was unsuccessful in getting the yes/no to work properly. The other problem I had with this is that now you have five versions of the same titleblock loaded with only one small variation. I felt that having one family type with user visibility controls would be easier for everyone to handle.

Thank you for your suggestion, though.

mschroeder
2006-09-14, 06:55 PM
The other problem I had with this is that now you have five versions of the same title block loaded with only one small variation.

Hmmm? The beauty of this is that you have a single master stamp family. Easily load it into all of your different size title blocks. Once in the project, select the title block and choose to select the stamp type from a pull down list (family selection parameter).

But, whatever works best for you :beer:

hamoda32372991
2013-04-20, 09:40 AM
@ mschroeder: Big thanks your file is very helpful

hamoda32372991
2013-04-20, 09:42 AM
@ mschroeder: Big thanks

CadManCook
2017-02-28, 02:22 PM
Hello everyone. Seeking a little help here with a formula.

I've got two yes/no parameters (one of each family type). "A" will be surface mount light fixture, "B" is a pendant. When the yes/no for "A" is checked, I need the light source elevation to set at the elevation of the bottom of the surface mount fixture. I'm just starting out learning about formulas. I know what I want, just not sure how to ask for it. Any guidance would be awesome. :banghead:

david_peterson
2017-02-28, 07:15 PM
so you have a VG parameter for A which equals not(b).
that will set which family is visible.
So on to the next step, the light source elevation.
if(A=1, x'-x", B elevation)

So if "A" is check (A=1), the elevation should be X, Y if false)