Viewport.SetBoxCenter Method

ViewportSetBoxCenter Method

Moves this viewport so that the center of the box outline (excluding the viewport label) is at a given point.

Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntax
public void SetBoxCenter(
	XYZ newCenterPoint
)
Public Sub SetBoxCenter ( 
	newCenterPoint As XYZ
)
public:
void SetBoxCenter(
	XYZ^ newCenterPoint
)
member SetBoxCenter : 
        newCenterPoint : XYZ -> unit 

Parameters

newCenterPoint  XYZ
The desired center for the box outline.
Exceptions
ExceptionCondition
ArgumentNullException A non-optional argument was null
InvalidOperationException The viewport is not on a sheet.
Example
public static void PlaceAlignedViewsAtLeftCorner(Document doc)
{
    FilteredElementCollector fec = new FilteredElementCollector(doc);
    fec.OfClass(typeof(ViewPlan));
    var viewPlans = fec.Cast<ViewPlan>().Where<ViewPlan>(vp => !vp.IsTemplate && vp.ViewType == ViewType.CeilingPlan);

    ViewPlan vp1 = viewPlans.ElementAt(0);
    ViewPlan vp2 = viewPlans.ElementAt(1);

    using (Transaction t = new Transaction(doc, "Place on sheet"))
    {
        t.Start();

        // Add two viewports distinct from one another
        ViewSheet vs = ViewSheet.Create(doc, ElementId.InvalidElementId);
        Viewport viewport1 = Viewport.Create(doc, vs.Id, vp1.Id, new XYZ(0, 0, 0));
        Viewport viewport2 = Viewport.Create(doc, vs.Id, vp2.Id, new XYZ(0, 5, 0));

        doc.Regenerate();

        // Calculate the necessary move vector to align the lower left corner
        Outline outline1 = viewport1.GetBoxOutline();
        Outline outline2 = viewport2.GetBoxOutline();
        XYZ boxCenter = viewport2.GetBoxCenter();
        XYZ vectorToCenter = boxCenter - outline2.MinimumPoint;
        XYZ newCenter = outline1.MinimumPoint + vectorToCenter;

        // Move the viewport to the new location
        viewport2.SetBoxCenter(newCenter);

        t.Commit();
    }
}
Public Shared Sub PlaceAlignedViewsAtLeftCorner(doc As Document)
    Dim fec As New FilteredElementCollector(doc)
    fec.OfClass(GetType(ViewPlan))
    Dim viewPlans = fec.Cast(Of ViewPlan)().Where(Function(vp) Not vp.IsTemplate AndAlso vp.ViewType = ViewType.CeilingPlan)

    Dim vp1 As ViewPlan = viewPlans.ElementAt(0)
    Dim vp2 As ViewPlan = viewPlans.ElementAt(1)

    Using t As New Transaction(doc, "Place on sheet")
        t.Start()

        ' Add two viewports distinct from one another
        Dim vs As ViewSheet = ViewSheet.Create(doc, ElementId.InvalidElementId)
        Dim viewport1 As Viewport = Viewport.Create(doc, vs.Id, vp1.Id, New XYZ(0, 0, 0))
        Dim viewport2 As Viewport = Viewport.Create(doc, vs.Id, vp2.Id, New XYZ(0, 5, 0))

        doc.Regenerate()

        ' Calculate the necessary move vector to align the lower left corner
        Dim outline1 As Outline = viewport1.GetBoxOutline()
        Dim outline2 As Outline = viewport2.GetBoxOutline()
        Dim boxCenter As XYZ = viewport2.GetBoxCenter()
        Dim vectorToCenter As XYZ = boxCenter - outline2.MinimumPoint
        Dim newCenter As XYZ = outline1.MinimumPoint + vectorToCenter

        ' Move the viewport to the new location
        viewport2.SetBoxCenter(newCenter)

        t.Commit()
    End Using
End Sub

No code example is currently available or this language may not be supported.

No code example is currently available or this language may not be supported.

See Also