import clr
import sys
sys.path.append(‘C:\Program Files (x86)\IronPython 2.7\Lib’)
import System
from System import Array
from System.Collections.Generic import *
clr.AddReference(‘ProtoGeometry’)
from Autodesk.DesignScript.Geometry import *
clr.AddReference(“RevitNodes”)
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference(“RevitServices”)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference(“RevitAPI”)
clr.AddReference(“RevitAPIUI”)
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
uidoc = uiapp.ActiveUIDocument
def tolist(obj1):
if hasattr(obj1,“iter”): return obj1
else: return [obj1]
#Preparing input from dynamo to revit
element = UnwrapElement(IN[0])
#Do some action in a Transaction
TransactionManager.Instance.EnsureInTransaction(doc)
sheets = FilteredElementCollector(doc).OfClass(ViewSheet).ToElements()
views = FilteredElementCollector(doc).OfClass(ViewPlan).WhereElementIsNotElementType().ToElements()
floorpln =
for view in views:
if view.ViewType == ViewType.FloorPlan:
floorpln.append(view)
sheetwidth = (1000/2)/304.8
sheetheight = (1100/2)/304.8
center = XYZ(sheetwidth , sheetheight , 0)
“”"
for sheet , view in zip(sheets , floorpln):
Viewport.Create(doc , sheet.Id , view.Id , center)“”"
for sheet in sheets:
sheet_name = sheet.Name
if sheet_name == (“Plumbing Details”):
mysht = sheet
for view in floorpln :
view_name = view.Name
if view_name == (“GROUND FLOOR”):
myvw = view
#np = Viewport.Create(doc , mysht.Id , myvw.Id , center)
Method for indexing python list selected views
view_names = [“GROUND FLOOR” , “FIRST FLOOR” ,“SECOND FLOOR”]
selected_views = [view for view in floorpln if view.Name in view_names]
#Getting the structural sheets from sheets
sheet_names = [“Second Floor Structural Plan” , “First Floor Structural Plan” , “Ground Floor Structural Plan”]
selected_sheets = [sheet for sheet in sheets if sheet.Name in sheet_names]
#for sheet , view in zip(selected_sheets , selected_views):
np = Viewport.Create(doc , sheet.Id , view.Id , center)
result =
“”"
for sheet , view in zip(selected_sheets , selected_views):
if sheetname == “Second Floor Structural Plan”:
viewname == “Second Floor”
if sheetname == “First Floor Structural Plan”:
viewname == “FIRST FLOOR”
if sheetname == “Ground Floor Structural Plan”:
viewname == “GROUND FLOOR”
newvp=Viewport.Create(doc, sheet.Id, view.Id, XYZ(1.75 , 1.1 , 0))
result.append(newvp) “”"
name_map = {
“Roof Floor Structural Plan”: “ROOF FLOOR”,
“Second Floor Structural Plan”: “Second Floor”,
“First Floor Structural Plan”: “FIRST FLOOR”,
“Ground Floor Structural Plan”: “GROUND FLOOR”
}
“”"
for view in selected_views:
view_name = view.Name
sheet_name = name_map.get(view_name) # Use map to get the corresponding view name
if sheet_name:
# Find the view that matches view_name
sheetnew = next((sheet for sheet in selected_sheets if sheet.Name == sheet_name), None)
if sheet:
# Create a viewport on the sheet with this view at ‘center’ position
new_vp = Viewport.Create(doc, view.Id, sheet.Id, XYZ(center))
result.append(new_vp)“”"
this is all i have tried but its not working , i want to automate it in python itself i dont want to take any input from dynamo nodes