Friday, March 02, 2018

The Future is Now

Mark Mendez from EvolveLAB has a great article in AUGIWorld this month on MEP Systems: Autodocumentation to Fabrication.

When people ask me where BIM is going, articles like this is what I point to. Back in 2004, Lonnie Compton told me if I wanted to get ahead in the business, I should start learning Revit immediately. He was right, and I am right in telling you to read this article from Mark right now.

The time to lead is today. If you want to follow, you can wait until tomorrow.

Friday, October 28, 2016

How to Stay in Phase when Revit Phases Disappear

Recently we ran into an issue where every phase in a project disappeared. The impossible situation of no phases happened. What's more the ability to add phases seemed to be blocked by the graying out of the Insert phases buttons in the empty dialog.

In the absence of phases in the project, elements that were existing or demo no longer had visibility overrides. We also discovered that we could no longer create new spaces, new sections showed nothing, and valves no longer broke into pipes properly.

After a lot of back and forth, our own Mitch Voss came up with a suitable fix.

  1. Use Transfer project Standards to add at least one phase from a template into the current project. (If you bring all the required phases from an earlier incarnation of the project or a template, you will find they still won't work. Revit does really want an imported phase and will not function properly with them.) All elements will be assigned to the newly transferred phase. I prefer to name the imported phase "DO NOT USE".
  2. The good news is that the functionality of the Phasing dialog is returned. Meaning you can now create the required phases. Since these phases were made in the project (as Revit expects), they will function correctly.
  3. Now open up a 3D view and select everything. Filter out as many unphased categories as you can and change the phase of these elements to the newly created "New Construction" phase.
  4. Now you can cherry pick existing or demo elements to move to appropriate phases. Views and schedules can be changed to an appropriate phase all at once by selecting them in the Project Browser and changing the phase in Properties.
It's a good idea to verify that your Phase mapping is still in sync, but it seems to recover nicely on its own. It is a little bit of effort, but seems to be working quite well. It also won't take much to automate this process with a macro, if you are into that kind of thing.

Good luck and Stay in Phase!

Monday, October 24, 2016

Revit Road Map

I did not expect to see the first ever public road map of where Revit is going to be published on the Autodesk Community porthole. They say it better than I can summarize so go check it out and see if they plan to give want you want.

Find the road map here....

Revit Road Map

Monday, August 29, 2016

Blunt Force Revit Formulas

I got asked by a friend to create a formula that will pass a value from 1-4 to a parameter called IP. The 1,2,3, or 4 will come from one of 4 Yes/No parameters (LB, LC,LF, and LO). As a given check-box is checked "on", the other check-boxes should turn off and the value set into the IP parameter.

Here is what I came up with...

Users can check as many boxes as they like under Constraints, but if they check more than one the formula that IP is set to  will return a zero, letting them know multiple are checked.

The formula for IP first checks for every bad situation of multiple checking that is possible. If any are true it sets IP to BADpick or zero. Once multiple picking is eliminated, it checks for the four appropriate single checks, and will return a 1,2,3, or 4 respectfully. If neither a good or bad pick is true it defaults to zero. The formula checks for bad outcomes first because as soon as it finds a true response, it stops checking.

The hard part might have been quantifying all the bad responses. I start by trying to come up with each combination of two checks.

LB and LC
LB and LF
LB and LO
LC and LF
LC and LO
LF and LO

With four possible choices, you know you have all the combinations when each shows up 3X in your list. I did the same for combinations of threes, again ensuring each parameter showed up 3X.

LB and LC and LF
LB and LC and LO
LB and Lf and LO
LC and LF and LO

Lastly, I check for all four parameters checked at once.

LB and LC and LF and LO.

This is the entire formula. I used if/and statements

if(and(LBTrue, LCTrue), BADpick, if(and(LBTrue, LFTrue), BADpick, if(and(LBTrue, LOTrue), BADpick, if(and(LCTrue, LFTrue), BADpick, if(and(LCTrue, LOTrue), BADpick, if(and(LFTrue, LOTrue), BADpick, if(and(LBTrue, LCTrue, LFTrue), BADpick, if(and(LBTrue, LCTrue, LOTrue), BADpick, if(and(LBTrue, LFTrue, LOTrue), BADpick, if(and(LBTrue, LCTrue, LOTrue, LFTrue), BADpick, if(LBTrue, LB, if(LCTrue, LC, if(LFTrue, LF, if(LOTrue, LO, 0))))))))))))))

It's definitely blunt force programming, but it does the trick to make sure only one in four is picked.

Monday, November 30, 2015

Excellent Blog Post by Doug Bowers

Electrical Panels in Revit are at the very least... fussy. 

Doug Bowers just posted an excellent article on why electrical load calculations can go bad on his Blog Applying Technology to Architecture.

Friday, July 10, 2015

Open to Favorites

Little things sure can make a big difference. 

If I have a job I will be returning to. I add a shortcut to it in my Windows Favorites. Then I rename the shortcut to include the project name and number. This is nice because when I use the Open command in Revit can navigate to Favorites then find my project.

Taking that one step farther, go to Options in the File Locations tab, change the Default path for user files: to your favorites folder. Now every time to click Open in Revit, it will take you directly to where your project shortcuts are.

Thursday, June 25, 2015

Hide Unused Sections, Callouts, and Elevations

When annotating sheets I often have to deal with more than enough callouts, sections, and elevations that have not been placed on sheets. They clutter the drawing and distract me.

To clear things up, a not so intuitive filter can be made. It employs quite a bit of double negative mentality, but does the job.

First create a new filter. In Visibility Graphics, go to the Filters tab and choose Edit/New....

In the lower left corner of the dialog select the icon that looks like a sheet of paper with a tiny Sun at the upper right. Name your filter something like "Hide Unused Sections and Callouts".

Under Categories select Callouts, Elevations, and Sections. Then Filter by Sheet Number. Make the rule "does not contain" then leave the next box blank.

This filter will find every callout, elevation and section that does not have a sheet number assigned to it. The ones that have not been placed on sheets.

Back on the Filters tab add the newly created filter and uncheck the visibility box.

Now no unused callouts, elevations or sections will be visible in your view. That's better. Get back to work.

Monday, June 22, 2015

Aligned Duct Tags

Want your duct tags to align to duct at all sorts of angles?

Duplicate your duct tag family, go to the family categories button and set the tag to "rotate with component". Save with the suffix "-Aligned" and use it when needed. That was easy.

Saturday, March 07, 2015

Revit Family Basics, The Bookcase Example

This article comes from my Revit Basics Blog which I have decided to shut down. It will help the beginner learn about making families by starting with a simple concept and progressively making it harder. It's not a light fixture, air handling unit, or custom sink, but it will put you on the path. Good luck!

In this example a bookcase family is required that a user can define the HxWxD. The number of shelves should be determined by the height, there should also be a control for the thickness of the material and the option to have doors on the bottom 3 shelves.

To gain the type of control needed, the shelves will have to be nested into the bookcase family. Nesting means the shelves will be an independent family that will be loaded into the bookcase family.

Build the Shelf Family
1. Begin with the Generic Model.rft template.

2. Unpin the 2 references planes in the template and uncheck the Defines Origin check box.

3. Add 4 reference planes to define the length and width of the shelf in the reference view. Set the Right and Back reference planes to Define Origin and Pin them in place.

4. Name the new planes (Front, Back, Left, Right) and set the Is Reference parameter accordingly.

5. Use the Extrusion tool on the Home tab to create a form for the shelf, locking it to the 4 defining planes.

6. Use the dimension tool to dimension the Width and depth of the shelf form.

7. Select the width dimension and pick the Label: drop down on the Options Bar, and then select .

8. The Parameter Properties dialog appears. Fill it out as indicated below. Do the same for the Shelf Depth dimension.
9. Switch to the Front view and create a reference plane to define the top of shelf. Name the reference plane, set its reference to Top and lock the top surface of the shelf form to the plane.

10. Set the shelf’s thickness to ½”. Create a parameter for Shelf Thickness as was done with width and depth.

11. Save this family as A-Fn Bookcase-Shelf.rfa

Build the Bookcase Shell
1. Begin with the Generic Model.rft template.

2. Unpin the 2 references planes in the template and uncheck the Defines Origin check box.

3. Add 4 reference planes to define the length and width of the shelf in the reference view. Set the Right and Back reference planes to Define Origin and Pin them in place.

4. Name the new planes (Front, Back, Left, Right) and set the Is Reference parameter accordingly.

5. Add 3 more reference planes to define the thickness of the back and sides of the bookcase.

6. Use the Extrusion and trace the footprint of the bookcase sides and back. Lock the faces of the extrusion to the reference planes.

7. Switch to the Front view and create a reference plane to define the top of bookcase. Name the reference plane, set its reference to Top and lock the top surface of the shelf form to the plane.

8. Create parameters for Bookshelf Height, Bookshelf Width, Bookshelf Depth, and Bookshelf Thickness the same way parameters were added to the shelf family.

9. Add “half” parameters for the bookcase width and depth. These will be used to keep the center planes in the center.

10.  Click the family types button to open its dialog.
11.  Group the “half” parameters under constraints and insert the formulas below to ensure they are always half of their parent lengths.

12.  This is a good time to flex the family by trying different dimensions in the parameters and checking that the geometry follows suit.

Add the Bottom Bookcase Shelf
The intent here is to add one shelf near the bottom of the shell and array it to the top of the shell. We can then create a parameter to determine the number of shelves in the array. That parameter can be driven by an equation that adds more shelves the taller the bookcase gets.

1. Begin loading the shelf family into the bookcase family and place it off to the side in the reference level view of the bookcase family.

2. Use the Align tool to lock the sides of the shelf to the inside planes of the bookcase shell and the front plane.

3. Select the shelf to access its properties. Here we want to create links between the parameters in the shelf to new parameters in the bookcase to control the shelf’s width, depth and thickness.

4. Select the grey box to the right of the Shelf Thickness to add a new parameter. Name it “Shelf Thickness (in case)”, make it an Instance parameter and group it under Constraints.

5. Do the same for Shelf Width and Shelf Depth.

6. In the Family Type dialog we can now create formulas to keep the shelves the correct size as the case changes. Create the formulas shown in the image below.

Creating a Swappable Shelf

To add another level functionality (or complexity) we can add a parameter that will allow the user to switch from one type of shelf to another.

1. Open the original shelf family and save it as the second shelf option. The shelf below has extrusions added to the bottom.

2. Load this new shelf into the bookcase family, but do not place it.

3. In the Family Types dialog create a new Type parameter named “Swappable Shelf”. Make its discipline Common, its Type of Parameter and group it under Constraints.

4. When you select the Type of Parameter Revit will open the Select Category dialog. Pick Generic Models.

5.  Select the original shelf in the bookcase family now. In the Properties dialog, look for the Label parameter and change it to “Swappable Shelf”.

6.  In the Family Types dialog Create 2 shelf types, Shelf Type 1 and Shelf Type 2. Associate the swappable shelf parameter with the appropriate type.

7. Flex the family. Change the family type and verify that the shelf changes.

Array the Shelf
1. Switch to the front view. And move the shelf up 3”. Add a reference plane to the underside of the shelf. Dimension this plane from the reference level and create a parameter named “Bookshelf Toe-Kick”.
2.  Use the Array tool with Group and Associate on and Move To set to “Last”. The array should go from the top of the placed shelf to the top of bookcase reference plane.

3. Select the group and associate line with the current number in the array. On the Options bar select from the label drop down and add a new parameter.

4.  Make it an instance parameter and group it under Constraints.

5. In the Family Types dialog add the equation below to place a shelf at about one shelf per linear foot.

6. Flex the family by changing the height of the bookcase, verifying that the number of shelves changes. Also flex the width, depth, and shelf type.

7. If the shelves lean out of plumb, use the Align tool to lock the upper most shelf in place.

Control the Thickness
For this family the user can input the thickness of the bookshelf, this will in turn drive the thickness of the shelves. Let’s create a formula that allows the user to input any thickness they want, however, if the thickness is less than ½” Revit should use ½” anyway. Conversely if the user specifies any thickness greater than 1”, Revit will use 1” only. If the user specifies any thickness in-between, Revit should consider this a fair value and use it directly.

This requires creating an Actual Thickness parameter and a couple of nested IF statements.

1. Create a new instance parameter and name it Bookshelf Thickness Actual. Group it under Constraints.

2. Apply the following equation to the new parameter.

There are essentially two parts to this nested IF statement.

If (Bookshelf Thickness < 0' 0 1/2", 0' 0 1/2", 

This first part states that if the Bookshelf thickness is less than ½” use ½” for the Actual thickness. If it is not, refer to the rest of the statement.

if (Bookshelf Thickness > 0' 1", 0' 1", Bookshelf Thickness))

The last part states that if the Bookshelf thickness is greater than 1” use 1”. If it is not, use the Bookshelf thickness.

3. To finish apply the Actual thickness parameter to the constraining dimension instead of the nominal one.

if(BCS Thickness <; 0' 0 1/2", 0' 0 1/2", if(BCS Thickness > 0' 1 3/4", 0' 1 3/4", BCS Thickness))

Using Model Text to Provide User Feedback
Since the user can specify any thickness they want, even if they are wrong, it may be a good idea to provide feedback to the user if the thickness they provide is out of bounds. Model Text will be used for this.

• Place some Model Text on top off the bookshelf and make the text read "XXX".

• Select the Model Text and pick the little square to the right of the Text Parameter in Properties.

• Add a parameter and name it "Thick Condition"

• In the Family Type dialog and a formula as shown below.

• This formula will test to see if the parameters of Bookcase Thickness and Bookcase Thickness Actual are equal. If so the user supplied good data and the model text should read "GOOD". If they are not equal the users supplied bad data and the model text should read "BAD".

Lastly, we only want the model text to display if the condition is "BAD". To do this, create another parameter Called Thick Condition Visible as shown below.

In the Type Parameters dialog, add this formula to the Thick Condition Visible parameter.

Not (Bookcase Thickness = Bookcase Thickness Actual)

This formula returns a true when model text is in a "BAD" condition. When this yes/no parameter is true, it is visible.

The opposite is when the model text is in a "GOOD" condition, the yes/no parameter is false and the Model text will not display.

Important: You must load this family into a project for this to work. The Good and the BAD are visible in the family, but Only Bad is visible once loaded into a project.