 |
PK_FACE_imprint_curves_2 |
|
PK_ERROR_code_t PK_FACE_imprint_curves_2
(
--- received arguments ---
PK_FACE_t face, --- face
int n_curves, --- number of curves
const PK_CURVE_t curves[], --- curves
const PK_INTERVAL_t intervals[], --- parametric intervals
const PK_FACE_imprint_curves_o_t *options, --- options
--- returned arguments ---
PK_ENTITY_track_r_t *const tracking --- imprint tracking
)
This function imprints an array of curves onto a face, thereby creating new
edges and faces.
Specific Errors:
PK_ERROR_not_in_same_partition (MILD) 'face' and a number of 'curves'
do not lie in the same
partition
PK_ERROR_invalid_geometry (MILD) At least one of 'curves' is
invalid
PK_ERROR_bad_basis_surf (MILD) SP curve basis surface differs
from 'face's surface.
PK_ERROR_missing_geom (MILD) 'face' does not have geometry
PK_ERROR_not_on_surface (MILD) At least one of 'curves' does
not lie on 'face's surface.
PK_ERROR_not_on_face (MILD) At least one of 'curves' does
not imprint on the face.
PK_ERROR_cant_do_imprint (SERIOUS) Failed to imprint at least one
of 'curves'.
If any of the 'curves' do not lie on the 'face's surface, then the error
PK_ERROR_not_on_surface is returned.
If, for any of the 'curves', the portion of curve defined by the corresponding
interval lies entirely outside the 'face' then the MILD error,
PK_ERROR_not_on_face, is returned.
Otherwise, each part of each 'interval' of each 'curve' which lies within the
'face' will be imprinted on the face as a new edge.
The returned PK_ENTITY_track_r_t structure contains tracking records of
type PK_ENTITY_track_create_c and PK_ENTITY_track_split_c. The new
edges created by imprinting the 'curves' will produce records of type
PK_ENTITY_track_create_c. The typical record will consist of a single
'original_entities' and one or more 'product_entities' that are the
new edges uniquely defined by 'original_entities'. In the case where
several 'curves' overlap in one or more common segments the record will
have multiple 'original_entities' and one or more 'product_entities'.
Splitting the existing 'face' will produce a record of type
PK_ENTITY_track_split_c with the input 'face' as its 'original_entities',
while it and all the other faces produced by the splitting will be
'product_entities'.
If a curve of 'curves' is a trimmed curve then its basis curve will be
imprinted and the trimmed curve will be deleted.
If a curve of 'curves' was an orphan, in the same partition as the face, then
it will be attached to the new edge(s). If the curve may be shared with the
new edge(s) then it will be. Otherwise a copy of the curve will be made and
attached to the new edge(s).
When several new edges are created by imprinting one curve, then all of the
edges will share the same geometry if possible.