Exemple #1
0
        private static bool CheckDistanceFromBorder(Mesh buiding, Grid grid)
        {
            Plane          planeWorldXY = Plane.WorldXY;
            List <Point3d> points       = grid.GridXY();
            Point3d        pMin         = points.Min();
            Point3d        pMax         = points.Max();

            Point3d    ptMin  = new Point3d(pMin.X + (grid.DimX * Grid.MIN_NUM_BORDER_CELLS), pMin.Y + (grid.DimY * Grid.MIN_NUM_BORDER_CELLS), 0);
            Point3d    ptMax  = new Point3d(pMax.X - (grid.DimX * Grid.MIN_NUM_BORDER_CELLS), pMax.Y - (grid.DimY * Grid.MIN_NUM_BORDER_CELLS), 0);
            NurbsCurve border = new Rectangle3d(planeWorldXY, ptMin, ptMax).ToNurbsCurve();

            Brep      bbox = buiding.GetBoundingBox(true).ToBrep();
            Transform xprj = Transform.PlanarProjection(planeWorldXY);

            bbox.Transform(xprj);

            foreach (BrepVertex v in bbox.Vertices)
            {
                if (border.Contains(v.Location, planeWorldXY, tolerance: 0.01) == PointContainment.Outside)
                {
                    return(false);
                }
            }
            return(true);
        }