PK_MTOPOL_make_meshes_o_t   

struct PK_MTOPOL_make_meshes_o_s
    {
    int                          o_t_version;         --- version number
    PK_LOGICAL_t                 allow_disjoint;      --- allow disjoint
                                                      --- meshes
                                                      --- (PK_LOGICAL_true)
    PK_MTOPOL_select_cb_f_t      select_cb;           --- callback function
                                                      --- (NULL)
    PK_POINTER_t                 select_data;         --- context data for the
                                                      --- callback function
                                                      --- (NULL)
    PK_CLASS_t                   select_mtopol_class; --- class type of the
                                                      --- input mtopol of the
                                                      --- callback
                                                      --- function
                                                      --- (PK_CLASS_mfin)
    PK_selector_type_t           select_type;         --- create a mesh from
                                                      --- either the selected
                                                      --- or unselected set
                                                      --- of facets
                                                      --- (PK_selector_type_
                                                      --- include_c)
    PK_MFACET_map_t              map_mfacets;         --- enable or disable
                                                      --- mapping of mfacets
                                                      --- (PK_MFACET_map_no_c)
    PK_MVERTEX_map_t             map_mvertices;       --- enable or disable
                                                      --- mapping of mvertices
                                                      --- (PK_MVERTEX_map_no_c)
    PK_MTOPOL_map_cb_f_t         map_cb;              --- callback function
                                                      --- (NULL)
    PK_POINTER_t                 map_data;            --- context data for the
                                                      --- mapping callback
                                                      --- function (NULL)
    int                          n_max_cb_mtopols;    --- maximum number of
                                                      --- mtopols passed per
                                                      --- call to 'map_cb'
                                                      --- (500)
    int                          n_faces;             --- number of faces (0)
    const PK_FACE_t             *faces;               --- faces (NULL)
    const PK_LOGICAL_t          *senses;              --- controls mesh sense
                                                      --- (NULL)
    const PK_MTOPOL_selection_t *contributions;       --- indicates type of
                                                      --- selection for each
                                                      --- face (NULL)
    };
typedef struct PK_MTOPOL_make_meshes_o_s PK_MTOPOL_make_meshes_o_t;


This structure contains optional controls for PK_MTOPOL_make_meshes


Specific Errors:
    PK_ERROR_bad_combination      The 'map_cb' field is NULL and either
                                  the 'map_mfacets' field is set to
                                  PK_MFACET_map_yes_c or the 'map_mvertices'
                                  field is set to PK_MVERTEX_map_yes_c. Or the
                                  'select_cb' field is non NULL and
                                  'n_faces' is greater than zero. (MILD)

    PK_ERROR_bad_orientation      The 'senses' field has inconsistent entries.
                                  (MILD)

    PK_ERROR_non_manifold         The 'faces' field contains more than two
                                  faces that share a non-manifold edge. (MILD)

Used in:

PK_MTOPOL_make_meshes


Description of fields:

'allow_disjoint'         This controls the behaviour when the inputs produce
                         more than one mesh component. If set to
                         PK_LOGICAL_false then each component is returned as a
                         separate mesh. If set to PK_LOGICAL_true a single
                         mesh with disjoint components will be returned unless
                         any pair of components touch at mvertices in which
                         case all components will be returned as separate
                         meshes.

'select_cb'              This callback function of type
                         PK_MTOPOL_select_cb_t determines the criterion for
                         selecting either the given mfacet, or the mfacet of
                         the given mfin. If 'select_cb' is set to NULL, the
                         selection of mfacets will be limited to 'mtopols'.

'select_data'            This is a pointer to application data that may be
                         used to communicate information between the
                         application and its callback function 'select_cb'.

'select_mtopol_class'    This determines the class of mtopol passed to
                         'select_cb'. If 'select_mtopol_class' is
                         PK_CLASS_mfin, the selected facet will be the mfacet
                         of the given mfin.
                         The class PK_CLASS_mvertex is currently not allowed.

'select_type'            If this option is set to PK_selector_type_include_c,
                         a mesh is created from the facets in the original
                         mesh which were given as input in the argument
                         'mtopols' or selected by the callback function. If
                         set to PK_selector_type_exclude_c, this function will
                         instead use the unselected facets to create a mesh.
                         The option PK_selector_type_off_c is not allowed.
                         This option is independent of the callback options.

'map_mfacets'            This determines if mtopols of type PK_MFACET_t in the
                         resulting meshes are to be mapped to their
                         corresponding mtopols in the original meshes. If set
                         to PK_MFACET_map_yes_c mfacets will be mapped, if set
                         to PK_MFACET_map_no_c mfacets will not be mapped. If
                         'map_cb' is NULL this option must be set to
                         PK_MFACET_map_no_c.

'map_mvertices'          This determines if mtopols of type PK_MVERTEX_t in the
                         resulting meshes are to be mapped to their
                         corresponding mtopols in the original meshes. If set
                         to PK_MVERTEX_map_yes_c mvertices will be mapped, if
                         set to PK_MVERTEX_map_no_c mvertices will not be
                         mapped. If 'map_cb' is NULL this option must be set
                         to PK_MVERTEX_map_no_c.

'map_cb'                 This callback function of type PK_MTOPOL_map_cb_f_t
                         is used to return mapping information to the user. If
                         'map_cb' is set to null, then no mapping information
                         will be returned. The mtopols that are mapped are
                         determined by the 'map_mfacets' and 'map_mvertices'
                         options.

'map_data'               This is a pointer to application data that may be
                         used to communicate information between the
                         application and its callback function 'map_cb'.

'n_max_cb_mtopols'       This determines the maximum number of mtopols that
                         will be returned per call to 'map_cb'.

'n_faces'                The number of elements in the 'faces', 'senses'
                         and 'contributions' arrays.

'faces'                  An array of length 'n_faces' containing the faces
                         that are involved in the operation. If non NULL then
                         all supplied mtopol seeds must be contained in one of
                         the faces in this array. All of the faces must be
                         from the same body.

'senses'                 An array of PK_LOGICAL_t values of length 'n_faces'.
                         The n'th entry indicates whether or not to reverse the
                         mfacets copied from the mesh attached to the n'th
                         element of the 'faces' array. The value
                         PK_LOGICAL_true indicates that we should reverse the
                         sense of the mfacets. The value PK_LOGICAL_false
                         indicates that we should not reverse the sense of the
                         mfacets.

'contributions'          An array of PK_MTOPOL_selection_t values of length
                         'n_faces'. The n'th entry indicates how to interpret
                         the selection of mtopols from the mesh attached to
                         the face in the n'th element of the 'faces' array.
                         The value PK_MTOPOL_selection_all_c indicates that
                         all mfacets from the mesh containing the supplied
                         mtopols should be used, the value
                         PK_MTOPOL_selection_only_c indicates that only the
                         supplied mfacets should be used. If no mtopols
                         are supplied from a face the value of this
                         option has no effect. If 'select_type' is
                         PK_selector_type_exclude_c and 'contributions' is
                         PK_MTOPOL_selection_all_c then no mtopols from the
                         associated face will be used.