Create SheetSet from Sheet grouping

Hi All

I have added a parameter to my Sheets so that I can filter my Sheet Views by that parameter, say sorting A,B,C,D etc

So each of the groups contain some Sheets.

Is there anyone I can create Print Sets ( SheetSets ) From each of the groupings ? For the purpose of selecting that list when it comes to Print or Export those sheets.

Thanks in Advance


Here’s a quick python node that lets you create sheet sets.






import clr
from Autodesk.DesignScript.Geometry import *

import Autodesk
from Autodesk.Revit.DB import *

import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument

sheets = IN[0]
sheetSetName = IN[1]

viewSet = ViewSet()

msg = “Failed to create sheet set.”

try to add all of the sheets to the set

for vs in sheets:
view = UnwrapElement(vs)

If there’s one item in the set, just add the one

view = UnwrapElement(sheets)

Get the printmanager to add the view set to.

printManager = doc.PrintManager
printManager.PrintRange = PrintRange.Select

create the ViewSheetSetting to append the viewset.

viewSheetSetting = printManager.ViewSheetSetting
viewSheetSetting.CurrentViewSheetSet.Views = viewSet

Create the Sheet Set

trans = Transaction(doc, “Create View/Sheet Set”)
msg = “Sheet set '” + sheetSetName + “’ created.”
msg = “Failed to create sheet set”

#Assign your output to the OUT variable
OUT = msg

1 Like

Timothy, many thanks for that. After having to retype a lot of it because simple copy paste Doesn’t work from this site :/, thought I’d give you some feedback on it.

I’m using btw


I set it up the way you suggested, it all works fine without error, but didn’t actually generate the Sheet Set, I restarted Dynamo etc, Reloaded DYN file etc … No change…Working ok on your own files ?

I even tried using an Element Type ( ViewSheet ) to begin with.

I don’t know if it’s what I was looking for though ? Basically a Creation of a View/Sheet Set based on a parameter on the actual sheets. So if I had that parameter ( Call it Issue_ID ) which was set to “FIRST”, then it would create a SheetSet based on those sheets which has “FIRST” as the Issue_ID, and so on…


Hi guys,

I’m trying to do a similar thing, after filtering my views according to their parameters using dynamo, I’d like to create separate Sheetsets for these. Actually I got it working so far, however I don’t like the fact that if I want to update the sheetset I get an error message (since the set is already existing).

I’m looking for a way to either update a sheetset - or delete it if it already exists. Any thoughts on this?

Btw, here is a screenshot of the working script (in 8.1) - take care of the intends after try: (copy/paste of the script above didn’t work with me either because of the formatting)

Thx, Lejla

08-07-2015 15-49-31


the above does not work for us. The script returns the success message but we cannot see any new sheet set created.


Any news on this script?

Dynamo on Revit 2016


thank you




I recently needed that same functionality. The node is called “ViewSet.ByViewsName” and is found in the spring nodes package. It has a safety switch that is set to not overwrite by default.



1 Like

Okay, I managed to have the script work (partially). Besides the quotation marks coming in the wrong ASCII character (from the script posted online), Dynamo was also complaining about the indentation of some of the lines of the script. I thought indentation was more of a human visual aid more than a programming syntax…

Anyways, the script now works, but every other time I launch it. See the screen capture:

9-29-2015 9-16-56 AM

When I first launch it I get this error:

Warning: IronPythonEvaluator.EvaluateIronPythonScript operation failed.
Traceback (most recent call last):
File “<string>”, line 42, in <module>
Exception: Starting a new transaction is not permitted. It could be because another transaction already started and has not been completed yet, or the document is in a state in which it cannot start a new transaction (e.g. during failure handling or a read-only mode, which could be either permanent or temporary).

So I go to line 42 and take that blank line out, as in the following screen cap, so that " trans.Start()" is attached to the previous line:

9-29-2015 9-23-41 AM

and it works…

However, next time I launch the script again, it produces the same error, and I have to reintroduce the blank line, so that the line " trans.Start()" is at 42 again…

Basically I have to move back and forth the “Trans” line from line 41 and 42 each time I run the script…

Any idea on what’s going on?

PS: even adding two blank lines works…

Hi, This is how i got it to work. Now looking at how you can update a print set. Capture