Exemple #1
0
        /// <summary>
        /// Breaks initial zones into generally rectangular pieces.
        /// Subdivides those pieces into rooms based on program sizes and quotas.
        /// </summary>
        /// <param name="zm"></param>
        /// <param name="pm"></param>
        public static void RoomConfiguration(ZoneManifest zm, ProgramManifest pm)
        {
            foreach (ZonePackage zone in zm.Zones)
            {
                zone.Rooms = new List <RoomPackage>();

                List <Brep> rectangularizedZoneRegions = Breps.Rectangularize(zone);

                //Slice rectangularized zone regions into room lanes.
                foreach (Brep region in rectangularizedZoneRegions)
                {
                    Update.Room.LaneConfiguration(region, zone, pm);
                }

                //Perform final measurements and prepare rooms for population.
                for (int i = 0; i < zone.Rooms.Count; i++)
                {
                    var room = zone.Rooms[i];

                    Update.Room.Orientation(room, zone);
                    Update.Room.ProgramHint(room, zone, i);
                }
            }
        }