Thursday, July 07, 2005

What are parameters and why should I care?

A recent conversation with a fellow Revit user suggested that my writing about shared parameters assumed too much perhaps...meaning that it assumes there is no confusion about the concept of parameters in general. So I thought I'd take a stab at explaining well I do? You be the judge!

What are they? Why should I care?

They are the underlying information of all objects. They are how we communicate with Revit. They are the height of a wall, the width of a door, the thickness of a counter, the material of a floor, the elevation of a level and the scale of a view. Every piece of information you might wish to supply, change, schedule, calculate or study is a parameter.

We can group them in this manner...

Project Parameters: (Encountered in a project environment)
  • System (type or instance)
  • User Defined (type or instance)
Family Parameters: (Encountered in a project or family editor environment)
  • System (type or instance)
  • User Defined (type or instance)

Shared Parameters: (User defined and encountered in a project or family editor environment)

  • Project (type or instance)
  • Family (type or instance)

What’s this Type or Instance comment?

All parameters in Revit apply to either the kind or “type” of object you are working with or the individual “instance” of the object. A wall style whose “type” is 8” Masonry has “type” parameters that affect every individual “instance” of the wall while its “instance” parameters only affect a single wall “instance”. The thickness of the wall is a “type” parameter. Every “instance” of the wall will be the same thickness. The height of the wall is an “instance” parameter so each wall can have a different height if necessary.

To explain this stuff I feel you have to break the rule of not including the word you are defining in the definition. So to make up for it…I’ve used the words repeatedly and in a sentence at the same time!!

So what can I expect from each of these parameters?

System parameters: For either families or projects are those that Revit defines for us. We can’t change or alter the character of them except to provide different values for them. Every object in Revit has some system parameters.

Some examples: (parameter in quotes)
  • Wall “Top and bottom constraint“
  • Wall “Location Line”
  • Floor Object Layer “Thickness”
  • Casework “manufacturer”
  • Window “width”
  • Project “Name”
  • Project “Client Name”
  • View “View Scale”
User Defined parameters: Let us decide what information a family or project will have in addition to the system parameters.

Some examples: (parameter in quotes)
  • Room “Occupancy Classification”
  • Project “Issued Date”
  • Project “Issued Description”
  • Door “undercut”
  • Door “jamb detail type”
  • Window “Glazing Area”
It is important to appreciate that User Defined parameters, created in a project can appear in a schedule but not tags. Those created in a family, cannot be used in schedules or tags. This is where the next parameter type comes in…

Shared Parameters: In a way these combine the nature of system and user defined parameters. Shared parameters allow us to tell Revit we are talking about the same information whether it originates in a family or a project. They can be used to create a parameter in either a family or project to allow the information to be displayed in a schedule and/or tags.

When you create a parameter from a Shared Parameter, there is no link to the file they come from. Instead the shared parameter file permits you to tell Revit that you are referring to the same piece of information when you use it to create parameters. When Revit encounters a parameter in a family within a project that also uses the parameter it automatically knows they are the same. This allows you to schedule and tag objects.

Hopefully this helps!!


Anonymous said...

Nice explanation!

Jim Balding said...

Steve We saw this during SCRUG and now you site will go down because everybody want this info...

Love and Kisses -

- JB

Beau Turner said...

echoing what Scott said, great explanation.

Keep up the great work!

Anonymous said...

Ok lets take it up a knotch. I would like to schedule the height of walls however this paramter is not available to extract to a schedule. So I can create a parameter to use a formula of Area/Length and this works ok but does not account for wall openings and reports the wrong height for walls with windows and doors. So I created a shared parameter for the wall openings so I could add back the opening area so the formula calculates properly, and so goes my question; how can you get the opening area data/parameters from the doors and windows into a wall schedule so it can be included in the wall height formula. Currently if I enter the opening areas in the shared wall parameter manually it works but I want it automated.
Any ideas appreciated, Carl

Steve said...

Wall height is variable as you've discovered. It is not simply discovered by a basic math formula of (Area/Length). Some walls maybe but not all and not those with windows/doors or other hosted elements that alter the wall. At least not the way that Revit looks at walls.

Further, walls can be attached to sloping faces and to the face of massing/generic models. These conditions mean that wall height is not a "simple" number. A wall with a sloped top has a varied height.

This is similar to the discussion about Room "length and width" dimensions. Easy for simple rectangular spaces but not so simple for irregular shapes. We subjectively approximate/round off such information in documentation but Revit doesn't "do" subjective well or in most cases "at all".

This is a long winded answer to say "you can't", not within what Revit offers us while using it. It won't give you an automatic value you can trust at all times. Your only way to access this information with a bit more control is by using the ODBC data export and/or via the API.