I developed a couple of grasshopper scripts to imports rhino blocks to Revit with the intention to use them with the grasshopper player. With the current way object tracking is set up, I can’t run the same script more than once in a file, on more than one object. The script is linked to Revit object creation so when you run the script a second time it deletes everything created from the first run.
Unfortunately, this renders any workflow that involves using the same script multiple times on the same file for different objects completely useless.
We desperately need someway to be able to control the behavior of object tracking. I would suggest one of the following solutions:
Each Revit creation components comes with a “bake name” similar to the Elefront plugin. This way the user can control which objects are replaced by dynamically supplying a different name. This seems to be the best option.
For example you could create an Id for objects created in Rhino, ie Panel 01, Panel 2 etc. Using that Id as a “Revit bake name”, any changes to those panels would update the object in Revit, but you could make a change to Panel 01 using the same script without affecting Panel 02.
Add options to change the behavior of Rhino.Inside Revit creation components similar to what was done with the Content component for Rhino 8. That way users can choose if they want new scripts to overwrite geometry or add geometry. Ideally this would be accessible as a parameter.
The issue with this method is that once you create an object using the add geometry option there would be no way to go back and change the objects already created.
I would argue for the creation of “bake names” as this gives the user more control. With the current set up, the only way to update geometry already baked or tracked when the tracking mode is disabled is to delete all those components manually in Revit and recreate them.
For example lets say you had Panel type A and Panel Type B all created with the same scripts. With tracking enabled you can either create Panel A or Panel B. With tracking disabled you can create Panel Type A and then Panel Type B. To update Panel A you would need to manually delete all instance in Revit and then rerun the script.
One workaround would be to write into the script a portion that selects all instances of Panel A if they exist and then deletes them, so the newly created objects would replace the old. I did this by creating a partId parameter in the component and making that parameter “public” by adding it to the project parameters so I can filter components by that paramter.
Yes, using the same script on a project and keeping the elements from the previous run would require you to create a ‘bakename’ / Parameter workflow depending on how you are planning to modify/update the previous sets.
Thanks! I didn’t see that you could disable the tracking, I think that is a new feature?
Might the bake name be something to incorporate into the component? I found a work around by disabling tracking and then creating a custom parameter to identify the part. I think this is basically what elefront does, creates a bakename parameter and then deletes all objects with that bakename prior to baking.