Saturday, August 24, 2013

Hacking System Parameters in Door Family

All the component families in Revit have built-in (hard-coded) parameters for each category; most of them are for scheduling purpose or data storage. By default, they are listed as "Type Parameters" and there is no way you can change how they are within the family. Under the family type, all the predefined parameters are listed there. If you try to click "modify", you will learn that they are greyed out. As for door family, one of the built-in parameter that allows user for schedule is "Fire Rating". This particular parameter, which is just a "text" parameter let you identify if the door is rated. However, this will always be a "type" parameter in Revit.
Here's come the problem. If I need a door to be rated, I have to make a new type for this door (say a hollow metal door) as a rated door that is different from a non-rated door. As a result, you could end up with many more duplicates for the same type of doors.

For many users, they would create their own "Fire Rating" parameter as an instance base shared parameter (if needed for tagging) or just a project parameter and use it for schedule. I often find this annoying since the available fields from the door schedule will now have 2 parameters both call "Fire Rating". I have seen people somehow get confused and not knowing which one to use.

My office was undergoing a process of re-building all the door families for our office library. I was discussing this same issue with some of my peers about what's the best way to handle this. As it turns out, there is a much easy and elegant way to get around this without using user-created parameters for fire rating.

Hard-coded "Fire Rating" parameter that is locked/greyed out
What I had to do was to open a door family --> Family Types, first to input a value (I put 90 MIN or it can be any text) under "Fire Rating".

Next is to go to Family Category --> change your door from doors category to other category. In my case, I just chose the Generic Models category.


Since Generic Models do not have built-in parameter for "Fire Rating", Revit will now treat this parameter as a user-defined parameter; therefore, you can now go in and modify it!


Just go to modify and switch from "Type" to "Instance". Voila! You now have this as an instance parameter!!!


However, don't forget to go back to Family Category and switch it back from generic models to doors.

Put this modified door back into the project and now you can assign "Fire Rating" as an instance parameter under properties.


This trick should also work on other hard-coded parameters in other families. The key to understand this is to switch the original family to something that does not have its specific parameter built-in. Hope this will be a helpful tip and I think the factory should somehow re-think how the users want to utilize family parameter in projects.


14 comments:

  1. Awesome !
    Thank you for sharing. I knew there had to be way. However you would think the folk at autodesk would understand construction documents a little bit more to make the software lend itself to make our life easier.

    ReplyDelete
  2. Philip,

    Good stuff. One other note as a follow up step. Be sure to recreate any subcategories in the family. Otherwise, they are lost when you change the category and the door will lose much of the graphic control.

    For dimensional parameters that are locked in the same way, you can simply dimension two random objects, change the dimension into the parameter that is predefined as a type, select the dimension, and in the options bar, select the "Instance" check box. While the parameter will still be "unmodifiable " in the types dialog, it will change it from a type to an instance parameter. For non-dimensional parameters or if you ever want to remove the parameter altogether though, your method is a great tip.

    Nice trick. Thanks for sharing.

    ReplyDelete
  3. Thanks Darrell,

    It is good to see you here. I have made a follow-up post to talk about the oversight of using this "hack"
    http://phil-osophyinbim.blogspot.com/2013/08/hacking-system-parameter-in-door-family.html

    ReplyDelete
  4. Very good trick. Thanks for the article, I will apply to my students Revit in Spain

    ReplyDelete
  5. Thanks for sharing this, Philip.

    I tried this for Function parameter (Door), and it seems it doesn't work the same way. Too bad...

    good hack though!

    ReplyDelete
  6. Hi Julien,

    From my understanding, I think the [Function] parameter from Door is not a "text" parameter; therefore, it wouldn't work with this trick. However, I was testing it eariler with an attempt of hacking the [function] parameter and I found something else that is interesting. Maybe I will try to make a post about those behavior later. Thanks again for letting me know.

    Philip

    ReplyDelete
  7. So a slab 3'x7' door and a 3'x8' door are the same type but Revit treats them as different types. So one could you your workaround to change this hard coded type parameter to and instance parameter.

    John A.

    ReplyDelete
  8. Hi John,

    I am not sure if I understand you question, could you clarify it in more details?

    Philip

    ReplyDelete
  9. Great, thanks for sharing I did it all the time with shared parameters :).

    ReplyDelete
  10. Heyyy great ..Thanks a lot ..like it hihihi

    ReplyDelete
  11. Good tip! but beware changing off category parameters can result in Errors.
    Especially if the family is in a far devellpoped state.
    Save the old family first and then with the new family do the parmater trick..

    ReplyDelete
  12. Hi Ramon,

    Yes, for our door families in the office, we had this "trick" already set up in the base file before we started building all the geometries in the door family.

    ReplyDelete
  13. Excellent post. Thank you.

    ReplyDelete
  14. Excellent! Thank you! Do you know how to change the name of those parameters conserving the cathegory?

    ReplyDelete