Esempio n. 1
0
        /// <summary>
        /// Private function conforming a list of Rooms to another list of Rooms.
        /// </summary>
        /// <param name="fitRooms">Rooms that will conform the 'to' list of Rooms.</param>
        /// <param name="toRooms">List of Rooms to which the 'fitted' Rooms will conform.</param>
        /// <param name="toStory">Indicates whether the new Room should conform to the Story Perimeter. True by default.</param>
        /// <returns>
        /// A list of Rooms.
        /// </returns>
        private List <Room> FitRooms(List <Room> fitRooms, List <Room> toRooms, bool toStory = true)
        {
            if (toRooms.Count == 0)
            {
                return(fitRooms);
            }
            var addRooms   = new List <Room>();
            var toPolygons = new List <Polygon>();

            foreach (Room toRoom in toRooms)
            {
                toPolygons.Add(toRoom.Perimeter);
            }
            Polygon storyPerimeter = Perimeter;

            if (!toStory)
            {
                storyPerimeter = null;
            }
            foreach (Room fitRoom in fitRooms)
            {
                var perimeters = Shaper.FitTo(fitRoom.Perimeter, storyPerimeter, toPolygons);
                for (int i = 0; i < perimeters.Count; i++)
                {
                    var addRoom = new Room()
                    {
                        Color     = fitRoom.Color,
                        Elevation = fitRoom.Elevation,
                        Height    = fitRoom.Height,
                        Name      = fitRoom.Name,
                        Perimeter = perimeters[i]
                    };
                    addRooms.Add(addRoom);
                }
            }
            return(addRooms);
        }