I need to change the level from many elements in the project while keeping their exact location.
So, I made a script to select elements and read the base offset value, calculate the new offset and set the new level and base offset parameters.
So far so good. Only issue is that if both parameters are not changed at the same time (in the same transaction or when pressing apply in the revit UI) dynamo will change one first and then the other with the consequent move of the element during the process (and lost of dimensions, hosted elements, rooms not enclosed, etc.).
I can think about using python or a macro to start a transaction and doing both changes in the same transaction, instead of sequentially in dynamo, but that goes beyond my abilities / time to learn at the moment.
Is there a way to get both changes at the same time with dynamo?
It is hard to tell without an illustration. Could you send a screenshot showing what you describe?
Try using a single element.setparametervaluebyname node and feeding a list of elements with a list of parameter names and values, setting levels, and lacing accordingly to see the what happens.
EDIT (I had an idea): You could also store the recalculated elevation value in a CSV or XLS file so you set the elevation after setting the level.
Sure, I’ll try to put an illustration later.
Thanks JacobSmall, I’ll try that: creating a list of 2 lists of parameters and another list of 2 lists of values and feed with that the set.parameter.by.name node at once
I’ll comment and post a pic when I try. In the meantime here is the WiP DYN file if anybody finds it useful or want to give it a try:Change Level.dyn (12.0 KB)
I think this post might be able to help you:
I also made a small post about something similar that could be of help, check it out here: https://ibl.nl/bim/changing-the-level-parameter-of-elements.html
Sorry for the delay in answering, I’m really busy these days…
Thanks T_Pover I think that’s exactly what I was referring to
So simple. As you said just feeding the Element.SetParameterByName node with a list of ParameterNames (level and offset) and a list of Values does the changes in the same transaction