BILT Speaker

BILT Speaker
RevitCat - Revit Consultant
Showing posts with label parameter. Show all posts
Showing posts with label parameter. Show all posts

Sunday, 14 March 2021

Shared Parameters in Revit View Filters

Here is another Revit Gotcha for young and old: 

Family Editor Shared Parameters

If you add a new Shared Parameter in the family editor, you might expect that parameter to be available in a project in all situations.  You would be wrong!



Shared Parameters created in the family editor, and then loaded into a project have two entirely different (inconsistent) behaviours:

  • In Schedules, the shared parameters will automatically be available to add as fields
  • In View Filters, the family shared parameters will not be available to add as fields

This is quite confusing and inconsistent.  It can also catch you out, however experienced with Revit you might be - as I recently discovered when demonstrating how to create View Filters to a client

Schedules

If you create a new schedule  for the category of the recently loaded family, the Shared Parameter is automatically available in the list of available fields - as you might expect:  it is one of their mystical powers.

View Filters

Try the same trick with View Filters and you will probably get a nasty surprise


 

 Workaround

To make the shared parameters available for use in View Filters, you have to add them (again) as Project Parameters.


 
  

 

View Filter

If you go back to the View Filter definition, you will see that the Shared Parameter is now available as a field to be added.


As a BIM Manager, I would once have known about this Revit inconsistency - but I just plain forgot!  There is no way we can remember all of the inconsistencies.  And why should we have to?

Fortunately, Autodesk are slowly addressing some of these irritations - but it is such a laborious process.





Monday, 20 April 2020

System Volume Parameter in Generic Category Families

 Here in New South Wales, Australia, we have a planning requirement (SEPP65) to provide a certain amount of storage in multi-unit residential developments.  Some of that storage can be in the apartment itself, and some can be in storage cages/cupboards in the basement.

The storage has to be calculated by volume per apartment - this means that we have to create schedules that combine the storage cupboards in apartments with the cages in the basement.  Thus we need to create objects of different shapes and sizes in the model.

There are several ways to calculate the volumes from these objects, but surely the simplest way would be to use Revit's automatic volume calculation properties?

System Volume Property

You would think that Revit would be able to report back the volume of any object in your model.  It is a database, right?

It turns out that it can do so, to a very limited extent - and of course that leads to restrictions and frustrations.

It seems that only cetain category objects can report their volume, and then there may be further restrictions on scheduling or tagging:

By Category

  • Many of the system families do have a "Volume" property

  • But you would not want to create storage cages or cupboards by mis-using those categories?  No, you would not!
  • Logically you would use the Casework category for cupboards - but sadly that category does not have a volume property.
  • The same applies for most loadable family categories.

  • You could use the Mass category, but that is not sensible either, because that should be reserved for creating building massing models - if you start mis-using that category it will surely make life difficult (not least with visibility issues).

  • Rooms do have volume properties, although that can depend on project settings - see below.
  • Rooms are also not an ideal way to model such things as high-level storage cupboards!

  •  That leaves us with one last option (that I know of):  the Generic category.
  • For many years in Revit, generic families did report a Volume property (automatically calculated from the volume of all solid objects in the family).
  • However, it was not originally possible to schedule this property
 
  • In Revit 2014, Autodesk enabled the ability to schedule this Volume property.
  • This was one of my few successes with lobbying Autodesk to include one small new feature in Revit, that would make a big difference to us.
  • Sadly they ignored my pleas to also enable this property to be tagged.

Generic Families

Prior to v2014, we created a range of storage families that did the volume calculations as formulas within the families - so that we could schedule and tag the volumes.

When it comes to basement storage cages, the shapes often become quite complex as they have to wrap around columns or need angled sides.


This led to some quite complex formulas that needed to take into account optional cutouts to the shapes, and to allow for overlapping cutouts.





Fortunately all these calculations became redundant with v2014, as we can now use the system calculated "Volume" parameter to schedule storage volumes.

Except . . . . . When a project requires the storage to be tagged on drawings.

Room Volumes

Rooms do have the ability to calculate and report their volume, and it may be easier to create basement storage cages as rooms with cage walls to enclose them.  This would allow any shaped area without having to create a range of families.


However, this becomes problemmatic when you need to create one schedule that combines the basement storage cages (Rooms) with in apartment storage cupboards (Generic category families).

Room volume calculations also have some quirks, that depend on project-wide settings:

  • Rooms have a height property - this is used for the system calculated volume.
  • However, it will not work if Rooms are set to only calculate Areas (not Volume)
  • This project-wide setting is generally recommended as it makes the project performance noticeably faster - the menu even tells you that (and it is true)

  • If you enable Areas and Volume calculation you will get the volumes being reported, but a slower project.
  • If you need to do this anyway, then it is no extra overhead for calculating room storage.




Room Volumes are calculated at Wall Finish, regardless of the Room Area settings.
  • This can be complicated if you need room areas to be calculated to wall centrelines.
  • More on this in another blog post . . . .

Monday, 5 August 2019

Using Count Parameter in Revit Schedule Formulas

Anyone who has tried to master Revit Schedules would have encountered all kinds of limitations.  One of those is the limitations on which parameter types can be used in a calculation:

These parameter types can be used in formulas:
  • Number
  • Integer
  • Length
  • Area
  • Volume
  • Angle
  • Yes/No
  •  <Family Type..>
  • etc
They are all basically a number or a choice between items that have a number hidden behind them (Y/N  or <Family Type..>

The following parameter types cannot be used in formulas:
  • Text
  • URL
  • etc
They are some kind of text, which is all too hard for Revit to cope with (poor little Revit).

There is another kind of schedule parameter, which is not listed above (because it is a system parameter that you cannot choose from a list of types): 

        "Count", which is just a number (always = 1 for each item).


However, if you try to use this in a schedule formula, Revit gets very uppity and says you cannot.


This is unprecedented in Revit - a message that actually explains why it can't do what you want!
  • In case its not obvious what this means, it is referring to when you uncheck "Itemise every instance" under the Sorting/Grouping tab.

However, it is quite likely that you do actually want to perform a calculation on the combined result when multiple elements appear on the same row.  If not that, you may want to calculate per item and then total up the results of your calculation.  Here is my workaround:

Count Dracula Formulas

In your schedule, you can create your own "Count" parameter:
         a Calculated Value with a formula = 1

You could call it "Dracula", but that might confuse everyone later, so its better to use something more prosaic like "MyCount"
MyCount formatted to No Calculation

Don't forget to format your Count Dracula parameter to 'Calculate Totals' otherwise it will list only 1 even for multiple elements per row (as above).
MyCount formatted to Calculate Totals

Once you have 'MyCount' working, you can include it in a formula:
  • You may have a numeric parameter - say 'Num Shelves', which represents the number of shelves in a unit.
  • This can be multiplied by your Count parameter in a new 'ShelfCount' calculated value

Revit is quite happy to include "Dracula" or "MyCount" in the formula even though it is doing the same job as the system parameter 'Count'.

The formula could include an if statement:

Or you could put a formula directly into your 'MyCount' parameter

NB  . The last two formulas were somewhat superfluous, but just shown to demonstrate that you can create formulas with your own Count parameter.  For a more realistic example, refer to my previous post on Hiding Zeros in Schedule Formulas

This workaround removes one of Revit's many limitations - the programmers obviously put that one in deliberately to prevent "wrong workflows", but in reality they didn't anticipate all our requirements with schedule formulas. [Yes, my spellchecker doesn't like "formulas", but then I never liked learning Latin, so I'm not changing it!]

For more information about Revit Schedules, refer to this index of Schedule blog posts
 

Sunday, 28 July 2019

Arrays in Revit Global Parameters

Continuing with the theme of  Global Parameters in Revit . . . . .

Global Parameters and Arrays


Global parameters do not directly support arrays – you cannot associate a parameter to an array number in a model (unlike the ability to do so in the family editor).

When you select an array number in a project, have a look at the Options Bar - there is no label for you to associate a global parameter.












In the family editor, when you select an array number - there is a label on the Options Bar for you to associate a family  parameter to the array number.

 

 

 

 

 


Workaround


To work around this Global Parameter limitation, you need to build the array into an external family:
  • The family needs to have an integer instance parameter - this can be created directly when associating the array number (or created prior).
  • The array could consist of nested families or arrayed elements - it is usually much easier to control the array when it is a nested family, but that may slow response times if there are too many levels of nesting.
  • If you need to be able to schedule, tag or select individual families in the project (from the array), then the nested family should be 'Shared'.

  • Once you have associated the array number to a controlling parameter, it is wise to use that as a check parameter, to prevent users from inputting a value of less than 2 - because this would break the array.
  • You need to then create a User Input parameter, which is the one used in the project.
  • The check parameter is then driven by the User Input array number, with a check formula in place to prevent an input less than 2

  • Load the family into project then its instance property (Array Number) can be associated to a global parameter.

Once this is set up, your nested family array should be driven by Global Parameters in the project.

If you would like Autodesk to fix this annoying limitation, please go to Revit Ideas to vote:

Enable global parameters to associate to Array Numbers




Wednesday, 17 July 2019

LRUG Computational Design LT in Revit

Pump up the Volume - Control Panel using Adaptive Components

Last week I did a presentation at LRUG (London Revit User Group) entitled "Computational Design LT" - using Revit as a design tool, with model changes driven by sliders (100% Revit, no Dynamo).  This was achieved by various methods, including Adaptive Components and Global Parameters.   This talk was largely based on presentations that I did at RTC/BILT conferences in Scottsdale, Arizona and Adelaide, South Australia: "Power to the People" (2016-7);  and "Pump up the Volume" in Chicago and Melbourne (2014).
Sliders Using Global Parameters

In previous blog posts I have documented most of the background research I did on Global Parameters (refer to contents page).  In future blogs I will add more descriptions of how this works.

Sliders by Design


Sunday, 20 May 2018

Revit Ideas Wishlist Voting

Autodesk created the 'Revit Ideas Wishlist' a while back - yes I know it is flawed and has a lot of rubbish on it.  However, I know that the Revit Product Managers do actually look at it and monitor the votes.  It is not the only thing that decides what goes into future Revit upgrades but it contributes to the discussion - so I like to support it, in particular the sensible ideas that are posted on it.

I do believe that we should mainly be voting for things to be done to the core software that cannot be done by API, Dynamo or Add-ins - as those things can be done quickly by others (or yourselves).

Here are some of the better ones that I think should be voted up (including some that I have posted):

Please go to the Revit Ideas forum and vote for any of these ideas that you agree with:

Model Stability (& Pins)


Allow us to change 2D extents of pinned sections - just like we can for grids and levels.  Then we could leave those sections pinned all the time and not risk losing attached annotation.

Persistent Pins - pins that reinstate themselves after you have modified the element once

Parameters


#1 wish regarding parameters is to allow Shared Parameters in Key Schedules  - this would unlock so much potential in Revit, and the API just can't get in there to solve it.

There are several outstanding Global parameter requirements:

The first is oh so simple, but would be a huge deal for us:
Enable global parameters to associate to Floor ‘Height Offset from Level’ system property

Enable global parameters to associate to Array Numbers

Enable creation of an Area Reporting Parameter for use in Global Parameters

For more detail  refer to Global Parameter wishes


Stairs & Railings


There are so many things that need to be fixed on stairs and railings, that I have created a list of requests just for Stairs and Railings.

There are a couple of basic ones that just need to be done to improve stair arrows - not much more than bug fixes:

 

Families

Are you intensely irritated by the default setting for face-based family placement being 'Place on Vertical Face'?  I think that 99+% of users would like it to be changed (not to mention BIM managers who have to deal with confused users not understanding why they can't place ceiling fittings).
Vote her to  make the default 'Place on Face'

 

Form Creation

Creating forms in the Conceptual Massing Environment is fraught with problems - some of them could be alleviated by the following two capabilities:

Control profile order during form creation

Select Path during form creation

There are oh so many more things that need to be fixed in Revit - but since Autodesk concentrate on such a few, we need to target which ones would genuinely benefit the most people.  And we shouldn't ask Autodesk to spend time on things that can be done by some other means (API, Dynamo etc).

Have a look at the latest updates to the Autodesk Revit development roadmap to see what is planned or has been recently delivered.

Thursday, 2 November 2017

Weird Stuff with Revit Shared Parameters

When you create a suite of similar parametric families (say windows), you will define a series of parameters that control the families in the project - it may be dimensions, visibility switches etc.  If those are instance parameter, there is a really important choice you have to make:

  • Should they be "Shared Parameters" or just regular "Family Parameters"?

Conventional wisdom says that you only need to make them shared if you want to tag or schedule them in the project.  However, there are some other critical differences in behaviour that may affect your decision:

Did you know that when you make them 'Family Parameters', then start using the families in the project and swap them over for similar families with identical parameters - Revit loses the  data held in the instance parameters - even if the instance parameters are identically named in the families?  Aargh!!  That is not good news.  This even happens if the families were cloned from one source that already had the parameters set up.

However, if you used 'Shared Parameters' that instance property data is maintained when you swap family/types (provided that the same shared parameters are defined in each of the families).

Here is another reason for using shared parameters even when you don't need to tag or schedule them.