Good morning
I am trying to modify the ceiling view view ranges. but I can’t set the upper level for the high and low range.
I’m coming a little with the plan views.
I understand that we can use the words “Unlimited” / LevelBelow. But I can not.
Can you help me understand?
Sorry a work in french
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
def modViewRange(vp, tof, bof, cof, dof, view):
"""
Fonction pour modifier la plage de vue d'une vue 3D.
Args:
vp (Element): La vue 3D à modifier.
tof (float): Le décalage du plan de coupe supérieur.
bof (float): Le décalage du plan de coupe inférieur.
cof (float): Le décalage du plan de coupe.
dof (float): Le décalage du plan de profondeur.
chl (Level): Le niveau de référence pour les plans de coupe et de profondeur.
"""
v = UnwrapElement(vp)
# Obtention de la plage de vue de la vue
viewRange = v.GetViewRange()
assLvl = v.GenLevel
vueHaute = UnwrapElement(view)
viewRangex = vueHaute.GetViewRange()
LVLH = vueHaute.GenLevel
# Réglage du plan de coupe supérieur de la plage de vue
viewRange.SetLevelId(PlanViewPlane.TopClipPlane, assLvl.Id) #possible de mettre "Unlimited" / LevelBelow
viewRange.SetOffset(PlanViewPlane.TopClipPlane, tof)
# Réglage du plan de coupe inférieur de la plage de vue
viewRange.SetLevelId(PlanViewPlane.BottomClipPlane, assLvl.Id)
viewRange.SetOffset(PlanViewPlane.BottomClipPlane, bof)
# Réglage du plan de coupe de la plage de vue
viewRange.SetOffset(PlanViewPlane.CutPlane, cof)
# Réglage du plan de profondeur de la plage de vue
viewRange.SetLevelId(PlanViewPlane.ViewDepthPlane, assLvl.Id)
viewRange.SetOffset(PlanViewPlane.ViewDepthPlane, dof)
if bof < 0:
viewRange.SetOffset(PlanViewPlane.ViewDepthPlane, bof)
else:
viewRange.SetOffset(PlanViewPlane.ViewDepthPlane, 0)
# Application de la plage de vue à la vue
v.SetViewRange(viewRange)
doc = DocumentManager.Instance.CurrentDBDocument
# Supposons que IN[1], IN[2], IN[3] et IN[4] sont des listes contenant des paramètres pour chaque sous-liste de IN[0]
cof_list = IN[1] # Zone de coupe
tof_list = IN[2] # Plage de vue haute
bof_list = IN[3] # Plage de vue base
dof_list = IN[4] # Profondeur de vue
views_list = IN[5]
count = 0
TransactionManager.Instance.EnsureInTransaction(doc)
if isinstance(IN[0], list):
for i, sublist in enumerate(IN[0]): # Parcourir chaque sous-liste
if isinstance(sublist, list):
for vp in sublist:
modViewRange(vp, tof_list[i], bof_list[i], cof_list[i], dof_list[i], views_list)
count += 1
else:
modViewRange(IN[0], tof_list[0], bof_list[0], cof_list[0], dof_list[0], views_list)
count += 1
TransactionManager.Instance.TransactionTaskDone()
OUT = '%d plages de vue modifiées' % (count)