I need to modify the parameters of my existing windows and doors. Each item on the window or door list has a specific width. However, the issue is that the parameter I wish to adjust is currently set as read-only.
It’s crucial for me to modify the width of each individual element rather than the entire family.
If the parameter of the family instance is read-only that probably means that that parameter is a type-parameter, and as such read-only. If you want to change the parameter-value on a instance level you’ll have to change the parameter to an instance parameter instead.
Yeah that is what i am trying to avoid. I have multiple windows and doors which each have different widths. Changing the family width manually for each element is not what i want.
Correct; the alternative is to use instance parameters for the width and length, which requires editing all the families - something you indicated you didn’t want to do. If there are only say 5 families in the project converting to instance parameters is certainly going to be a LOT easier than managing 100 types of 5 families.
Automating either direction will require reviewing the intended use and impact on the project in the long term, so best to think the impact all the way though before you get started.
you can use a node from a custom package called setParameterNameByValueTypeorInstance in the Rhythm package by the great John Peirson. I rely on Rhythm heavily. I would also suggest renaming the windows at the same time you resize them to avoid confusion.
Yes true, also if he does elect to convert the dimension parameters to instance, he will have to use custom shared dimension parameters because width and height cannot be changed to instance in a Window category family unfortunately. I would still probably go that way if I was in this position, convert to instance and use shared parameters… but creating the types in Dynamo and naming them wouldnt be so bad either.
@J_Sanford@J_Sanford
Thank you!
Thats my solution or duplicating a family type and changing parameters without the node from Rhythm. Worked also that way.
The question now is if i have multiple families with different dimensions, how can i now create many windows and doors with different width for each element?
As noted a few times now, you’re going to need to duplicate the family type, assign the family instance at that location to the type, and then set the parameter value.
if you want to do this with Dynamo, I would probably just create a list of family type names and dimensions and then overwrite all of them in lieu of trying to filter out existing ones that were already correct. I dont know if this is an option for your workflow. The naming convention can be either extracted from the Dimensions, converted to the units you want and then as a string, or with some python.
Thank you for your time and help @J_Sanford@jacob.small .
I am very new to Dynamo, so i dont really understand what you guys are talking about.
I think i found a possible solution.
That is how i would create the windows with different families. The only thing is that i dont know how to choose the families and filter the right one with the name i have given before. I tried to get a List of all families and family types but did not manage to solve it.
I hope i unserstood that right, but my dimension are comming from simple numbers. In my bigger workflow i am extracting the distance from 2 points. That would be the width.
In which case I recommend making the quick change of the window family to use an instance parameter instead of generating types which will effectively be duplicates of each other.
ie: once you duplicate family N times, if 1/2N has a width of 5, you could (should) use one type for each of those instead of 1/2N types. If N is 5 it’s nto too hard to manage, but more often than not N is more like 50, or 500… At which point your Revit data becomes problematic to work with.
Assuming you have an instance, Element.SetParameterValueByname node where the element is the list of elements, the name is the name of the parameter you want to set, and the value is what you want the parameter to be.