parameters: (self, facets, facet_holestarts=None, markers=None)
docstring: Set a list of complicated factes. Unlike :meth:`set_facets`,
          :meth:`set_facets_ex` allows holes and multiple polygons per
          facet.
  
          :param facets: a list of facets, where each facet is a list
            of polygons, and each polygon is represented by a list
            of point indices.
          :param facet_holestarts: Either None or a list of hole starting points
            for each facet. Each facet may have several hole starting points.
            The mesh generator starts "eating" a hole into the facet at each
            starting point and continues until it hits a polygon specified
            in this facet's record in *facets*.
          :param markers: Either None or a list of integers of the same
            length as *facets*. Each integer is the facet marker assigned
            to its corresponding facet.
  
          :note: When the above says "list", any repeatable iterable
            also accepted instead.
docstring_summary: Set a list of complicated factes. Unlike :meth:`set_facets`,
          :meth:`set_facets_ex` allows holes and multiple polygons per
          facet.
docstring_tokens: Set a list of complicated factes . Unlike : meth : set_facets : meth : set_facets_ex allows holes and multiple polygons per facet .
function: def set_facets_ex(self, facets, facet_holestarts=None, markers=None):
          """Set a list of complicated factes. Unlike :meth:`set_facets`,
          :meth:`set_facets_ex` allows holes and multiple polygons per
          facet.
  
          :param facets: a list of facets, where each facet is a list
            of polygons, and each polygon is represented by a list
            of point indices.
          :param facet_holestarts: Either None or a list of hole starting points
            for each facet. Each facet may have several hole starting points.
            The mesh generator starts "eating" a hole into the facet at each
            starting point and continues until it hits a polygon specified
            in this facet's record in *facets*.
          :param markers: Either None or a list of integers of the same
            length as *facets*. Each integer is the facet marker assigned
            to its corresponding facet.
  
          :note: When the above says "list", any repeatable iterable
            also accepted instead.
          """
  
          if markers:
              assert len(markers) == len(facets)
          if facet_holestarts is not None:
              assert len(facet_holestarts) == len(facets)
  
          self.facets.resize(len(facets))
          for i_facet, poly_list in enumerate(facets):
              facet = self.facets[i_facet]
              polys = facet.polygons
  
              polys.resize(len(poly_list))
              for i_poly, vertex_list in enumerate(poly_list):
                  poly = facet.polygons[i_poly]
  
                  poly.vertices.resize(len(vertex_list))
                  for i_point, point in enumerate(vertex_list):
                      poly.vertices[i_point] = point
  
              if facet_holestarts is not None:
                  hole_list = facet_holestarts[i_facet]
                  facet_holes = facet.holes
                  facet_holes.resize(len(hole_list))
                  for i_hole, hole_start in enumerate(hole_list):
                      for i_coordinate, co_value in enumerate(hole_start):
                          facet_holes[i_hole, i_coordinate] = co_value
  
          if markers:
              self.facet_markers.setup()
              for i, mark in enumerate(markers):
                  self.facet_markers[i] = mark
function_tokens: def set_facets_ex ( self , facets , facet_holestarts = None , markers = None ) : if markers : assert len ( markers ) == len ( facets ) if facet_holestarts is not None : assert len ( facet_holestarts ) == len ( facets ) self . facets . resize ( len ( facets ) ) for i_facet , poly_list in enumerate ( facets ) : facet = self . facets [ i_facet ] polys = facet . polygons polys . resize ( len ( poly_list ) ) for i_poly , vertex_list in enumerate ( poly_list ) : poly = facet . polygons [ i_poly ] poly . vertices . resize ( len ( vertex_list ) ) for i_point , point in enumerate ( vertex_list ) : poly . vertices [ i_point ] = point if facet_holestarts is not None : hole_list = facet_holestarts [ i_facet ] facet_holes = facet . holes facet_holes . resize ( len ( hole_list ) ) for i_hole , hole_start in enumerate ( hole_list ) : for i_coordinate , co_value in enumerate ( hole_start ) : facet_holes [ i_hole , i_coordinate ] = co_value if markers : self . facet_markers . setup ( ) for i , mark in enumerate ( markers ) : self . facet_markers [ i ] = mark