HelixToolkit.Wpf.MeshBuilder.AddBoundingBox C# (CSharp) Method

AddBoundingBox() public method

Adds the edges of a bounding box as cylinders.
public AddBoundingBox ( System.Windows.Media.Media3D.Rect3D boundingBox, double diameter ) : void
boundingBox System.Windows.Media.Media3D.Rect3D /// The bounding box. ///
diameter double /// The diameter of the cylinders. ///
return void
        public void AddBoundingBox(Rect3D boundingBox, double diameter)
        {
            var p0 = new Point3D(boundingBox.X, boundingBox.Y, boundingBox.Z);
            var p1 = new Point3D(boundingBox.X, boundingBox.Y + boundingBox.SizeY, boundingBox.Z);
            var p2 = new Point3D(boundingBox.X + boundingBox.SizeX, boundingBox.Y + boundingBox.SizeY, boundingBox.Z);
            var p3 = new Point3D(boundingBox.X + boundingBox.SizeX, boundingBox.Y, boundingBox.Z);
            var p4 = new Point3D(boundingBox.X, boundingBox.Y, boundingBox.Z + boundingBox.SizeZ);
            var p5 = new Point3D(boundingBox.X, boundingBox.Y + boundingBox.SizeY, boundingBox.Z + boundingBox.SizeZ);
            var p6 = new Point3D(boundingBox.X + boundingBox.SizeX, boundingBox.Y + boundingBox.SizeY, boundingBox.Z + boundingBox.SizeZ);
            var p7 = new Point3D(boundingBox.X + boundingBox.SizeX, boundingBox.Y, boundingBox.Z + boundingBox.SizeZ);

            Action<Point3D, Point3D> addEdge = (c1, c2) => this.AddCylinder(c1, c2, diameter, 10);

            addEdge(p0, p1);
            addEdge(p1, p2);
            addEdge(p2, p3);
            addEdge(p3, p0);

            addEdge(p4, p5);
            addEdge(p5, p6);
            addEdge(p6, p7);
            addEdge(p7, p4);

            addEdge(p0, p4);
            addEdge(p1, p5);
            addEdge(p2, p6);
            addEdge(p3, p7);
        }

Usage Example

        private Model3D CreateModel()
        {
            var plotModel = new Model3DGroup();

            var axesMeshBuilder = new MeshBuilder();

            _realRect3D = GetSampleImageBox();
            axesMeshBuilder.AddBoundingBox(_realRect3D, 0.01);

            plotModel.Children.Add(new GeometryModel3D(axesMeshBuilder.ToMesh(), Materials.Yellow));

            switch (CurrentDirection)
            {
                case FrameDirection.Top:
                    CreateTopSelectionSlice(plotModel, SectionBrush);
                    CreateTopMaxSlice(plotModel);
                    CreateTopPartSlice(plotModel, SectionPosition);
                    break;

                case FrameDirection.Front:
                    CreateFrontSelectionSlice(plotModel, SectionBrush);
                    CreateFrontMaxSlice(plotModel);
                    CreateFrontPartSlice(plotModel, SectionPosition);

                    break;

                case FrameDirection.Left:
                    CreateLeftSelectionSlice(plotModel, SectionBrush);
                    CreateLeftMaxSlice(plotModel);
                    CreateLeftPartSlice(plotModel, SectionPosition);

                    break;

                default:
                    throw new InvalidOperationException("Can not process the direction.");
            }

            return plotModel;
        }
All Usage Examples Of HelixToolkit.Wpf.MeshBuilder::AddBoundingBox