Shared Project Parameter or Shared parameter in Family? Pros-Cons


I know this might be more a Revit question than a Dynamo question, sorry, but i see a lot of scripts that add Shared Parameters to Families. If i add a Shared Parameter to the Project Parameters and set the category -being it Instance or Type-, i can do all i want, Tag, Schedule etc.
What would be the pros and cons to adding a Shared Parameter to a Family vs. adding it as a Project Parameter in your opinion?
(the parameters are not driving geometry)

1 Like

A few;

  • storing parameter values at family level
  • calling/driving from family formulae
  • carrying metadata to projects regardless of their project parameters
  • processability at library level
  • ability to use type tables
  • instance parameters for nested families

To name a few…

Also noting that usually families ge upgraded or converted from older versions, so we add/replace shared params often to these families vs have them come in a template.

Worth noting you can do both, add it at project level also to enable it to be filtered as well as find families missing the value.

Hope that helps give some ideas/reasons!


My big reason for Family based SP is on the Mechanical Side of things. Parameter wise if using Project Shared Parameters for the Mechanical Equipment Category, it becomes a crazy big list of parameters applying to every instances that would be placed. This causes users to have to hunt in the parameter list to find the 20 parameters that apply to that piece of equipment. I also have found that each element instance placed it has to hold null or 0 values for all parameters drastically increasing file size exponentially as you place more elements. This is avoided if using Family based Shared Parameters by keeping the meta data for the family instances limited.

1 Like

Basically what the others have said, but I’ll give my personal experience as well. We have all our schedule parameters setup as shared project parameters so that any loaded family “just works” (mostly). But we also “pre-load” many of our standard families with the values we want/need. There are also some cases (I don’t know the exact requirements but I’ve ran into it a few times) where shared project parameters force you to be type based. This doesn’t affect any of our standard families because the family definition is instance based and trumps the project settings, but it can be annoying for families that aren’t setup that way.

1 Like

At the end of the day, I always rely on what the parameter needs to do. if it is just driving stuff inside the family and there isn’t and won’t ever be a need to tag it in a Project then it doesn’t need to be a Shared Parameter in my opinion. My Shared Parameter list is VERY small compared to some that I have come across where literally EVERY parameter they ever use is in their MASSIVE Shared Parameter file.

Here is a decent summary as well if you want a little more reading.