private StructuralArea CreateAreaOnTopOf(StructuralArea layer, double D)
        {
            var parallel_area = new StructuralArea {T = D};

            layer.Polygon
                .ForEach(p =>
                             {
                                 var parallel_node = new Node(p.X, p.Y, p.Z);
                                 parallel_area.Add(parallel_node);
                             }
                );

            double dist = layer.T + SectionsDistane;

            parallel_area
                .Move(
                    -layer.normal.X*dist,
                    -layer.normal.Y*dist,
                    -layer.normal.Z*dist
                );

            return parallel_area;
        }
        private StructuralArea CreateAreaOnSideOf(StructuralArea layer, double D)
        {
            var parallel_area = new StructuralArea {T = D};

            layer.Polygon
                .ForEach(p =>
                             {
                                 var parallel_node = new Node(p.X, p.Y, p.Z);
                                 parallel_area.Add(parallel_node);
                             }
                );

            double dist = layer.T/2; // +SectionsDistane;

            parallel_area
                .Move(
                    0,
                    0,
                    layer.GetMiddle().Z + dist
                );

            return parallel_area;
        }