create placeholder sheets using excel with dynamo v.1.5

By [Konrad K Sobon](/content/author/ksobon/ "Posts by Konrad K Sobon"/index.html)/13 Oct 2014

image by rhshackelford

I made a post a few weeks ago about creating dummy sheets in Revit to account for sheets that consultants working in Auto CAD might send you. Since then I have been receiving quite a few emails about creating placeholder sheets instead and would my definition work. Answer is, YES!

Please visit [**this post**](/content/?p=249 "sheets from excel with dynamo"/index.html) to get the excel import set up.

Now, the only thing that changes is the last custom Python node. First of all, now we only need two(2) inputs to it, like so:

As you can see it just got a lot simpler. Sheet Number and Sheet Name are the only two inputs now. The Python node code looks like this:

As you can see I have gotten rid of setting a few of the filtering parameters that I was setting previously, but also instead of creating a real sheet now we are creating placeholder sheets. Now, an expert Revit user will know that Placeholder Sheets can be tricky since they don’t automatically show up anywhere. When running schedules make sure that you un-hide them. Here’s a few words that Autodesk has put together on this topic:

Sheet Lists and Placeholder Sheets.

#Copyright(c) 2014, Konrad Sobon
# @arch_laboratory, http://archi-lab.net
importclr
clr.AddReference('ProtoGeometry')
fromAutodesk.DesignScript.Geometryimport*
# Import ToDSType(bool) extension method
clr.AddReference("RevitNodes")
importRevit
clr.ImportExtensions(Revit.Elements)
# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
importRevitServices
fromRevitServices.PersistenceimportDocumentManager
fromRevitServices.TransactionsimportTransactionManager
fromSystem.Collections.Genericimport*
# Import RevitAPI
clr.AddReference("RevitAPI")
importAutodesk
fromAutodesk.Revit.DBimport*
doc=DocumentManager.Instance.CurrentDBDocument
uiapp=DocumentManager.Instance.CurrentUIApplication
app=uiapp.Application
#The inputs to this node will be stored as a list in the IN variable.
dataEnteringNode=IN
sheetNumbers=IN[0]
sheetNames=IN[1]
# "Start" the transaction
TransactionManager.Instance.EnsureInTransaction(doc)
sheets= []
for i, j in zip(sheetNames, sheetNumbers):
#create new sheet
newSheet=ViewSheet.CreatePlaceholder(doc)
#set sheet name param
bipName=BuiltInParameter.SHEET_NAME
sheetName=newSheet.get_Parameter(bipName)
sheetName.Set(i)
#set sheet number param
bipNumber=BuiltInParameter.SHEET_NUMBER
sheetNumber=newSheet.get_Parameter(bipNumber)
sheetNumber.Set(j)
#collect all newly created sheets
sheets.append(newSheet)
# "End" the transaction
TransactionManager.Instance.TransactionTaskDone()
#Assign your output to the OUT variable
OUT=sheets

view raw createPlaceholderSheets.py