public static IPanel <TEdge, TOpening> SetOutlineElements1D <TEdge, TOpening>(this IPanel <TEdge, TOpening> panel, IEnumerable <IElement1D> edges)
            where TEdge : IEdge
            where TOpening : IOpening <TEdge>
        {
            IPanel <TEdge, TOpening> pp = panel.GetShallowClone(true) as IPanel <TEdge, TOpening>;

            pp.ExternalEdges = ConvertToEdges <TEdge>(edges);
            return(pp);
        }
        public static IPanel <TEdge, TOpening> SetInternalElements2D <TEdge, TOpening>(this IPanel <TEdge, TOpening> panel, List <IElement2D> openings)
            where TEdge : IEdge
            where TOpening : IOpening <TEdge>
        {
            IPanel <TEdge, TOpening> pp = panel.GetShallowClone() as IPanel <TEdge, TOpening>;

            pp.Openings = new List <TOpening>(openings.Cast <TOpening>().ToList());
            return(pp);
        }