 |
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.