Workset & Element Workset ID's


I was testing out “Workset ID from Element” node and “Get Worksets” Node.

Shouldn’t my values match?

Notice the Workset ID from one of the doors the value is 11597, that element ID is non-existant in the Worksets ID’s.

User Error, Error in the nodes or some strange Revit UTH logic I am unaware of?




I feel like I should respond to your question since I have created those two nodes. Let me just quote an excerpt from Revit API Documentation: “WorksetId is not guaranteed to be unique. It is only valid within one model and its value may change when the model is synchronized with central. If unique identification of a workset is needed, the workset’s GUID should be used instead.”. This of course does not explain the fact that workset id’s from doors do not match existing workset id’s. It is to let you know that workset IDs might change at any time.

Let me elaborate on that a little more. GetWorksets node filters only for User Worksets. Those are worksets that you encounter everyday when working with central files. However, there is a number of system worksets that Revit automatically places things like view specific annotation or unplaced door types. What happens in your example is that when you used a node All Elements of Category it actually collected from the model all doors including the unplaced door types. You probably noticed that the list output from the All Elements of Category contains more elements than you have doors in the project. Following Revit logic that all elements are on a workset (either user or system workset), the odd numbers that don’t show up in the GetWorkset output are your system worksets for unplaced doors (what i mean by unplaced doors is that your Single Door Family might have three (3) types: 36", 28" and 24" wide. Even if you never used the 24" Type in the project it will still show up when using All Elements of Category node).

I hope this clears those muddy Revit waters for you. Also, I might be 100% wrong so if anybody from the Autodesk/Dynamo team has a better answer feel free to correct me.