コード例 #1
0
        //====================================================================//

        public static List <PolylineCurve> UpdateBoundaries(List <MultiFamily> houseList, MultiFamily baseHouse, Curve bound)
        {
            if (houseList.Count == 0)
            {
                return(new List <PolylineCurve>());
            }
            Polyline cutRegion = Compute.ConvexHull(houseList.Select(x => x.GardenBound).ToList());

            Curve        cutCrv       = Curve.CreateControlPointCurve(cutRegion.ToList(), 1);
            Curve        offsetRegion = cutCrv.OffsetOut(baseHouse.Offset, Plane.WorldXY);
            List <Curve> cutRegions   = Curve.CreateBooleanDifference(bound, offsetRegion, Tolerance.Distance).ToList();
            double       cellSize     = AreaMassProperties.Compute(baseHouse.GardenBound.ToPolylineCurve()).Area * 2;

            cutRegions = cutRegions.Where(x => AreaMassProperties.Compute(x).Area >= cellSize).ToList();

            return(cutRegions.ToPolylineCurves());
        }