 |
PK_TOPOL_make_facet_topol_o_t |
|
struct PK_TOPOL_make_facet_topol_o_s
{
int o_t_version; --- Version of option
--- structure.
PK_LOGICAL_t have_angular_tolerance; --- Whether angular_tolerance
--- is set.
--- (PK_LOGICAL_false)
double angular_tolerance; --- Angular tolerance between
--- new and existing geometry.
PK_LOGICAL_t have_max_chord_length; --- Whether max_chord_length is
--- set.
--- (PK_LOGICAL_false)
double max_chord_length; --- Controls the maximum length
--- of polyline chords.
PK_LOGICAL_t have_max_facet_width; --- Whether max_facet_width
--- is set.
--- (PK_LOGICAL_false)
double max_facet_width; --- Controls the maximum length
--- of a facet edge.
PK_LOGICAL_t store_normals; --- Whether to store the
--- normals of classic surfaces
--- as vertex normals in the
--- meshes which replace them.
--- (PK_LOGICAL_false)
PK_LOGICAL_t track_faces; --- Whether to return tracking
--- information for any faces
--- which were created or
--- destroyed by the operation.
--- (PK_LOGICAL_false)
PK_track_edges_t track_edges; --- Options for tracking edges.
--- (PK_track_edges_no_c).
PK_LOGICAL_t return_redundant; --- Whether to return tracking
--- information for any
--- topological entities which
--- were deleted in order
--- to accommodate the new
--- geometry.
--- (PK_LOGICAL_false)
PK_LOGICAL_t return_modified; --- Whether to return an array
--- of all topological entities
--- modified by the operation.
--- (PK_LOGICAL_false)
};
typedef struct PK_TOPOL_make_facet_topol_o_s
PK_TOPOL_make_facet_topol_o_t;
This structure holds optional controls for facet geometry creation, together
with controls governing the amount of tracking information returned.
Specific Errors:
PK_ERROR_bad_tolerance 'have_max_chord_length' is PK_LOGICAL_true
and `max_chord_length is less than the value
returned by PK_SESSION_ask_precision
OR
'have_max_facet_width' is PK_LOGICAL_true
and 'max_facet_width' is less than the value
returned by PK_SESSION_ask_precision
OR
'have_angular_tolerance' is PK_LOGICAL_true
and 'angular_tolerance' is less than the value
returned by PK_SESSION_ask_angle_precision
(MILD)
Used in:
PK_TOPOL_make_facet_topol
This structure contains:
Geometry creation controls
'have_angular_tolerance' : This field controls whether the associated
'angular_tolerance' is used.
'angular_tolerance' : If 'have_angular_tolerance' is PK_LOGICAL_true
and this field is set to a positive value
then this value is used to control the sum
of the angles formed between a facet edge
and the curve/surface tangents at each end.
In particular, facets for classic surfaces
will usually be created in such a way that the
surface normals corresponding to points in a
portion of surface represented by the same
facet will not differ by more than this value.
This rule is usually observed, but this is not
guaranteed.
'have_max_chord_length' : This field controls whether the associated
'max_chord_length' is used.
'max_chord_length' : If 'have_max_chord_length' is PK_LOGICAL_true
and this field is set to a positive value
then this value is used to control the chord
length of all polylines created for edges and
halfedges. This value may also influence the
size and aspect ratio of facets near the
boundaries of new meshes.
'have_max_facet_width' : This field controls whether the associated
'max_facet_width' is used.
'max_facet_width' : If 'have_max_facet_width' is PK_LOGICAL_true
and this field is set to a positive value then this
value is used to control the maximum length of
the mfins in the meshes created for any supplied
faces. It does not provide any control over the
widths of facets in faces with existing facet
geometry unless these are explicitly handed in
for conversion.
'store_normals' : If this field is PK_LOGICAL_true then the
meshes created for any supplied faces will
inherit normals from the existing surfaces
on these faces. When this field is
PK_LOGICAL_true, the meshes created for faces
which initially have classic geometry will have
unique stored mvertex normals consistent with
the geometry of the original surfaces. If the
input array contains faces with facet geometry
which do not need subdividing, the new meshes
for these faces will be the same as the original
meshes would be after calling
PK_MESH_store_normals with the 'replace' field
in the option structure set to
PK_MESH_replace_normal_all_c.
Note: mfins whose mvertices correspond to points
on the existing surfaces for which
PK_SURF_eval_with_normal returns an error
code different from PK_ERROR_no_errors will
still all share a single normal, but this will be
calculated using the local geometry of the new
meshes, rather than that of the classic surfaces
they replace.
Tracking controls
'track_faces' : If this field is PK_LOGICAL_true then tracking
records will be returned for all topological
changes to faces made as part of the conversion
operation.
'track_edges' : If this field is set to PK_track_edges_yes_c or
PK_track_edges_laminar_wire_c then tracking
records will be returned for all topological
changes mades to edges of the indicated type.
'return_redundant' : If this field is PK_LOGICAL_true then tracking
records will be returned containing all
topological entities which were merged out or
made redundant by the conversion operation.
'return_modified' : If this field is PK_LOGICAL_true then an array
will be returned containing all topological
entities which were in any way modified by the
conversion operation. This will include any
entities which have had their geometry replaced,
any edges and vertices which have undergone
tolerance adjustments, as well as any newly
created edges and vertices.