PK_CURVE_make_wire_body_2   


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.