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 |