I got it wortking with a list of views, but it does not work with lists of view ranges
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import*
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
views = UnwrapElement(IN[0])
tof = IN[1]
bof = IN[2]
cof = IN[3]
dof = IN[4]
ltop = UnwrapElement(IN[5])
lcut = UnwrapElement(IN[6])
lbot = UnwrapElement(IN[7])
ldep = UnwrapElement(IN[8])
count = 0
if not hasattr(views, '__iter__'):
views = [views]
TransactionManager.Instance.EnsureInTransaction(doc)
for view in views :
viewrange = view.GetViewRange()
asslvl = view.GenLevel
if ltop is None:
viewrange.SetLevelId(PlanViewPlane.TopClipPlane,viewrange.Unlimited)
else :
viewrange.SetLevelId(PlanViewPlane.TopClipPlane,ltop.Id)
viewrange.SetOffset(PlanViewPlane.TopClipPlane,tof)
viewrange.SetLevelId(PlanViewPlane.CutPlane,lcut.Id)
viewrange.SetOffset(PlanViewPlane.CutPlane,cof)
viewrange.SetLevelId(PlanViewPlane.BottomClipPlane,lbot.Id)
viewrange.SetOffset(PlanViewPlane.BottomClipPlane,bof)
if ldep is None:
viewrange.SetLevelId(PlanViewPlane.ViewDepthPlane,viewrange.Unlimited)
else :
viewrange.SetLevelId(PlanViewPlane.ViewDepthPlane,ldep.Id)
viewrange.SetOffset(PlanViewPlane.ViewDepthPlane,dof)
view.SetViewRange(viewrange)
TransactionManager.Instance.TransactionTaskDone()
OUT = views