Multi-Category Passthrough


I’m still a newby to the dynamo world. I am currently working on trying to create a script. For our workflow of Architectural Keynotes we use multi-category tags. It was brought up that they want the keynote schedule to only show the keynotes that are actually tagged on the sheet (they keynotes are still numbered on a “project” basis). We looked into the built-in revit keynotes but prefer to keep with the multi-category tags as I have precooked in a default description, division (that we use to seperate each divsion section). I created a dynamo script that works by collecting the multi-category tags placed, selects the elemetns that are tagged and the ownerview of those elements which is then pushed into the Sheet Parameter that is in the families to be able to filter the schedules on the sheets. The only issue I have is that if an elements was to have the tag removed that parameter still has the sheet number in the parameter. So I modified the script to gather all the elements of the categories that we tag and erase any data in the Sheet Parameter. I’ve tried to do the passthrough node, but I think the process I am doing is not able to use the Passthrough as I am collecting all elements in first step and only select ones by different process in second. Without changing anything this script did do what it needed to one day, but is now back to not working.

Is there something different I need to do. I don’t want the users to have to run a script to delete the fields and then run another one to push the Sheet Number into them.


Maybe you could try moving the bottom Element.SetParameterByName node to the other side of the PassThrough node? Like this:

Passthrough Example.dyn (24.8 KB)

This way, the passthrough node will wait for the parameter values to be cleared and only then pass the tags to the Element.SetParameterByName.


That worked! Thank you so much!


That seems to be a wrong solution… there is no usage needed for a waiting procedure!

this should be the solution!
Passthrough Example.dyn (18.9 KB)


I think the graph I posted misrepresents the actual data being used. In the case of OP’s graph, the elements in the lower portion are a subset of the elements in the upper portion. For example:

Tags Example.dyn (18.5 KB)

Edit: Actually, the filter I used is only returning 24 elements where I would expect it to have 37. Maybe I’m not entirely understanding this…

Edit 2: It looks like there are 24 unique elements, implying that some of them have more than one tag, so it’s working as expected.


what I don’t get is the waiting procedure… the two parts should be interconnected so the data flow would run as expected without a waiting procedure. So why is a waiting procedure the right answer!?

But anyway, looking at the original graph. It should also be doable to simplify it…
Home.dyn (8.1 KB)


Whenever I have ran the script without the passthrough it just erases the data (element 1 path). The dynamo script show that the elements (element 2 path) do have that parameter but it is actually not setting that. So i’m not sure what its doing. It may also be something with multi-category stuff and the way I have put this together.


Looking at your graph again, I’m not sure if you need to use the “Get Elements of Categories” section at all. In the bottom portion, you are getting all elements with multi-category tags on them and, in the end, those are the elements to which you are writing new parameter values. I may be assuming incorrectly, but it doesn’t look like you need to clear the Sheet Number_Keynote parameter for all elements, just the ones with tags. If that is the case, you don’t need to clear the parameter names at all, since you will be overwriting them with the SheetNumber value.


I need to clear it in case someone were to remove a tag from an element so then we would have a discrepancy with a number showing in the keynote schedule but the tag not on the plan. If I dont clear them prior, that SheetNumber would still have the sheet number and would still be in the schedule as the schedule is being filtered by that field.