PK_ERROR_code_t PK_CURVE_make_wire_body_2
(
--- received arguments ---
int n_curves,
--- number of curves (ie, length of curves and bounds arrays)
const PK_CURVE_t curves[],
--- curves to create a wire body out of
const PK_INTERVAL_t bounds[], --- bounds of each curve
const PK_CURVE_make_wire_body_o_t *options, --- options structure
--- returned arguments ---
PK_BODY_t *const body, --- the created wire body
int *const n_new_edges, --- number of new edges
PK_EDGE_t **const new_edges, --- new edges
int **const edge_index --- pos in original array
)
This function creates a wire body from an array of curves and intervals. The
curves do not need to be ordered or directed.
Specific Errors:
PK_ERROR_unsuitable_entity unsuitable curve(s) supplied
PK_ERROR_invalid_geom invalid geometry supplied
PK_ERROR_bad_shared_dep dependant of entity would be illegally
shared
PK_ERROR_non_manifold body would become general
PK_ERROR_not_connected body is disjoint, and allow_disjoint set
to PK_LOGICAL_false
PK_ERROR_crossing_edge two or more edges cross
PK_ERROR_bad_vertex tolerance bubbles of two vertices clash
PK_ERROR_bad_param bad parameters supplied
PK_ERROR_cant_extract_geom failed to extract geometry
The part of each curve required must be defined by the corresponding parametric
interval in the array bounds. The wire may be closed. If allow_disjoint of
the options structure is set to PK_LOGICAL_true, then disjoint bodies can be
created.
If the wire body crosses the seam of a closed curve, then the parameterisation
of the curve must be periodic (see Knot Vectors).
Orphan curves are used as the geometry of the body, otherwise a copy of each
curve that is not an orphan is used as the geometry of the body. A copy will
also be used for any curve that is located in a partition other than the
current partition, and the resultant body will be created in the current
partition.
If a curve that needs to be duplicated is supplied more than once, then it is
only duplicated once.
The number of edges in the wire body is returned. If want_edges of the
options structure is set to PK_LOGICAL_true, then an array of the edges of the
new wire body will be returned in new_edges. If want_indices of the options
structure is set to PK_LOGICAL_true, then an array of integers indicating the
position in the array of curves and bounds that refers to the curve and bound
used to create the corresponding edge in new_edges will be returned in
edge_index.