Creating an Identity Data parameter similar to the Mark parameter

Hello everyone! This is a Revit question, but hoping that maybe someone may have come up with a possible work around using Dynamo. Is there a way to mimic the OOTB Revit parameter “Mark” which is located under the Identity Data section and automatically assigned to each element by Revit? This parameter is locked to a certain degree. Meaning that if you input a value in the parameter and copy the element, the value doesn’t copy over to the new element. We are looking at ways to utilize Revit schedules for ordering items and eliminate exporting out to excel. I can use the existing Mark parameter, but would rather create a specific one instead. We do a lot of partial orders along the process, before the project is complete. We input a value into a normal instance parameter designating that it has been ordered, however if the element is copied, the value is copied over also and shows the new element as being ordered. In most of our cases, it’s easier to copy the element than creating a new instance by dragging and dropping from the browser. Any Dynamo work around ideas would help greatly also. Even if we have to export out to Excel to utilize the totaling features, that’s okay. I just need a way to lock certain data to each piece. Thank you in advance!

As you kinda explained yourself, most parameter values are in no way tied to the element. Mark is a little bit of an exception in that it defaults to a unique value and gives a warning when duplicated (but can obviously still be duplicated). Dynamo is not going to fix this root issue and would only be beneficial in checking/maintaining unique values at the time of any given run.

If you want a unique identifier but don’t want to use Mark that’s fine. Element Id and GUID are probably your best options as they are not likely to change and are guaranteed to be unique by default. If you want something you can schedule or just something a little more user friendly then I’d recommend creating some kind of “Tracking ID” parameter that you can tie to the GUID for confirmation. This would allow you to use GUID for full tracking and management because you know it won’t change but still show something a little nicer in your schedule.

Thanks for responding Nick! I thought about trying to use the Element Id/GUID number at first, but writing that value to a parameter and adding a designation to it to show that the element has been ordered, would ultimately put me back with the same issue of keeping that value from being copied over when the actual element is copied in the model. Trying to use Excel to track orders by the Element Id or GUID number would be a grand task. Honestly wouldn’t even know how to approach that functionality. I don’t mind having to use the Mark parameter, as it seems to do exactly what is needed. I know that some users within the company are or have been using it for certain product lines and would have conflicts. But it is what it is…

Thanks again for the input!

@Nick_Boyts I actually just had another thought based on what you stated. I can write a unique value to a parameter along with the order number. For example: 1-1 which would stand for Item# & Order #. If that element is copied, then two elements in the schedule would have 1-1 in the parameter. I could use Dynamo to look for and blank out all duplicate values only leaving one and the blank ones would show what hasn’t been ordered. I could use the Element Id or GUID number instead of an Item #, but would like to keep it as simple as possible. The values for the next order would start 1-2, etc.

My thought is that you would keep a master record of Unique Id and order status somewhere. The Unique Id allows you to confirm that the element in Revit is the correct element and therefore the correct order status. You could also have your Dynamo graph confirm the parameter Id and the actual element GUID match ahead of time and clear all values that don’t match. This would ensure that duplicate elements don’t end up with copied values. However, all of this still relies on running Dynamo to keep everything up to date.


Exactly this. Every time you place an order, output the data (GUID, order number, item number, the parameters you care for, and local coordinate system as 12 doubles) to an intermediate file first (could be excel, JSON, CSV, etc.). Prior to the next order, run a graph to get all items in order 1 by their GUID and confirm the values in the external file match the internal; if not you have ordered something which has changed so you might want to see if you can use it in order 2 and reorder the previous part. If they match then go ahead and set up order #2.

I also recommend using separate parameters for ‘order number’ and ‘item number’, allowing a combined value and easier sorting/grouping in the schedule (show me all elements where the order number values is 11 is a quick and easy filter).

1 Like

Thanks for the responses/work arounds @Nick_Boyts and @jacob.small. Since I can’t mark both of your responses as the solution, I will mark this response as resolved and give credit to you both.