Section Box not creating

Here is a workaround,

You may need to adapt the Python code to meet your requirements.

set_section_box_from_align_bbx

import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

# Import ToDSType(bool) extension method
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)

# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *

doc = DocumentManager.Instance.CurrentDBDocument

def set_SectionBox(view3d, ds_bbx):
    margin = XYZ(0.05, 0.05, 0.05)
    # convert bbx
    tf_view = view3d.CropBox.Transform
    cs = ds_bbx.ContextCoordinateSystem
    tf = Transform.Identity
    tf.BasisX  = cs.XAxis.ToXyz()
    tf.BasisY  = cs.YAxis.ToXyz()
    tf.BasisZ  = XYZ.BasisZ #coord_system.ZAxis.ToXyz()
    tf.Origin  = cs.Origin.ToXyz()
    ptmax_before_cs = ds_bbx.MaxPoint.Transform(cs.Inverse())
    ptmin_before_cs = ds_bbx.MinPoint.Transform(cs.Inverse())
    newbox = BoundingBoxXYZ()
    newbox.Max = ptmax_before_cs.ToXyz().Add(margin)
    newbox.Min = ptmin_before_cs.ToXyz().Subtract(margin)
    newbox.Transform = tf
    view3d.SetSectionBox(newbox)

views = UnwrapElement(IN[0])
ds_bboxes = IN[1]

TransactionManager.Instance.EnsureInTransaction(doc)
if isinstance(IN[0], list):
    if isinstance(IN[1], list): OUT = [set_SectionBox(x, y) for x, y in zip(views, ds_bboxes)]
    else: OUT = [set_SectionBox(x, ds_bboxes) for x in views]
else:
    if isinstance(IN[1], list): OUT = set_SectionBox(views, ds_bboxes[0])
    else: OUT = set_SectionBox(views, ds_bboxes)
TransactionManager.Instance.TransactionTaskDone()

OUT = views
4 Likes