Hope everyone is doing well. I am looking for a bit of advice on a script I am building to export schedules.
Context
We recently moved over to Revit 2026. I was previously using a custom pyRevit tool for this, but our IT environment is quite restricted and the supporting plugins are no longer available in our catalogue. Because of this, I am back to using Dynamo and need to stick strictly to native, out-of-the-box nodes without installing any custom packages.
I came across this forum post which was really useful for getting started:
I am unsure if the methods in these older posts are still relevant or up to date for Revit 2026 and Dynamo v3.6.2.
So far, I have managed to filter down to the exact schedules I need. However, I seem to have hit a wall where Dynamo only wants to export them one at a time rather than all together. I wanted to check if anyone can confirm if this is a known limitation with native nodes, or if I am just missing something with how my list is set up.
Why I need this
I am currently testing model upgrades done natively versus using Autodesk Forma. We are aiming for a very high pass rate as we will eventually be upgrading around 800 models at a time, so I need to compare the exported schedules across different versions and upgrade methods to see how much cleanup work might be needed. This is why having precise, structured file names is so important for tracking.
Software Versions
Revit: 2026
Dynamo: 3.6.2
What I am trying to achieve
Export all filtered schedules in one go (or loop through them automatically).
Automatically name the exported files using this format: Revit Model File Name_Revit Version Year-Custom Text-Revit Schedule Name.
If standard nodes cannot handle exporting multiple schedules or setting this exact file name, I am happy to use a standard Python script node to make it work.
Thanks in advance for any help or pointers!
Would you like to make any further adjustments, or is this ready for you to post?
Apologies for missing the workspace image in my original post, it has been a while since I was last on the forums! Please find the screenshot attached.
Start with Document.Current, then Document.FilePath, then String.Split, then List.LastItem.
But if you’re going to take the speed hit and use Python then why not do the full path in one Python node?
The standard Python template has a variable for app which is the application, and one for doc which is the document. The app variable should have a property for VersionNumber, and the doc variable should have a property for Title. Assuming you put the schedules as IN[0] for the Python node, and your custom text as IN[1] using either a custom selection node or a String node then you can do a one liner along the lines of OUT =[ “{} - {} - {} - {}.CSV”.format(doc.Title, app.Version, IN[1], i) for i in IN[0] ]
The issue I am running into now is that the File Path node requires selecting an individual file for the first part of the CSV name. While the output string from the Code Block `a+“_”+b+“-”+c+“-”+d+“.csv”;` looks correct, it only generates a single file name rather than creating names for all the filtered schedules in my list.
Because the Directory Path node was replaced with the File Path node, no schedules are being generated in the target folder. How can I feed the directory back into the export node while maintaining this naming structure across the whole list of schedules?
Thanks for your reply. I updated the script using the current document and added a few extra nodes, which successfully generated the exact file naming structure I needed.
However, I am now unsure how to properly specify and connect my desired directory path so that all filtered schedules in the list export to that location. I have attached my updated workspace below for reference.
Removing that node resolved the issue, and all my schedules are now displaying correctly in the list with the right names.
I have also replaced two of the Code Blocks with String nodes so I can enter my custom text inputs directly through Dynamo Player.
The final step I need to resolve is correctly specifying the target folder path so all files export to that location. I have attached my updated workspace below for reference.
Yes - there is no need for the file path, but you’ll still need a directory path. You could append it within the Python by adding it as another input to the node and modifying the code accordingly @fintan.sumners.
Thanks for highlighting that. I am aware of this aspect and have taken it into consideration for the workflow.
This exercise is purely for local testing on a single machine at this stage. The overall process will be further developed and optimized before any future deployment.
I have managed to get the script working. I realized the Code Block creating the file name was missing the initial directory input step that was present in a previous version of my script.
Feeding the directory path into the string combination solved the export issue. I have attached my updated workspace below for reference.
Glad you’re sorted - try to mark a solution somewhere (even if it’s your own) so others who come up with similar problems can find a solution more readily.