A bounding box in various objects


#1

Hi friends
I selected several objects on the screen, however need to create a single bounding box around all objects, so I can move them to another point. It would be possible to post an example in C # that make this function.

Thanks


(Dale Fugier) #2

Calculate the bounding box of each object and then union the bounding boxes (together) using Rhino.Geometry.BoundingBox.Union. Does this help?


#3

Below is the code what I’m trying to do, the problem is that central point is not generated from the bounding box that encompasses all objects.

        var go = new Rhino.Input.Custom.GetObject();
        go.SetCommandPrompt("Select objects");
        go.EnablePreSelect(true, true);
        go.EnablePostSelect(true);
        go.GetMultiple(0, 0);

        if (go.CommandResult() != Result.Success)
        {
            return go.CommandResult();
        }
        Point3d pt = new Point3d(0, 0, 0);
        var bBox = new BoundingBox();

        var selected_objects = go.Objects().ToList();
        foreach (var obj in go.Objects())
        {
            bBox = obj.Geometry().GetBoundingBox(true);
            bBox.Union(pt);
        }
        doc.Objects.AddPoint(bBox.Center);
        doc.Views.Redraw();
        return Result.Success;

(Menno Deij - van Rijswijk) #4

What you want to do is this

var go = new Rhino.Input.Custom.GetObject();
go.SetCommandPrompt("Select objects");
go.EnablePreSelect(true, true);
go.EnablePostSelect(true);
go.GetMultiple(0, 0);

if (go.CommandResult() != Result.Success)
{
    return go.CommandResult();
}

BoundingBox bBox = BoundingBox.Unset;

var selected_objects = go.Objects().ToList();
foreach (var obj in go.Objects())
{
    BoundingBox bbObj = obj.Geometry().GetBoundingBox(true);
    bBox.Union(bbObj); // union the object bounding box with the overall bounding box
}
doc.Objects.AddBrep(bBox.ToBrep()); // see the box
doc.Objects.AddPoint(bBox.Center); // see the center
doc.Views.Redraw();
return Result.Success;

#5

100% Functional.
Thank you all