PK_CURVE_make_spcurves   

PK_ERROR_code_t      PK_CURVE_make_spcurves
(
--- received arguments ---
PK_CURVE_t           curve,       --- curve
PK_INTERVAL_t        range,       --- parameter bounds of reqd part of curve
PK_SURF_t            surf,        --- surface on which curve lies
PK_LOGICAL_t         degenerate,  --- create degenerate spcurves
PK_LOGICAL_t         sense,       --- spcurves in same dirn. as 'curve'
double               tolerance,   --- required accuracy if soln. is approx

--- returned arguments ---
int           *const n_spcurves,  --- no. spcurves produced
PK_SPCURVE_t **const spcurves     --- spcurves
)


This function creates an SPCURVE representation of a curve which lies,
possibly approximately, in a surface.

NOTE: This function is deprecated and has been superseded by
PK_CURVE_make_spcurves_2.



Specific Errors:
    PK_ERROR_bad_precision           tolerance less than modelling resolution
    PK_ERROR_tolerances_too_tight    tolerance too tight
    PK_ERROR_failed_to_create_sp     no spcurves made


This function approximates 'curve' which lies approximately on 'surf' by an
SP_Curve or series of SP_Curves, lying on 'surf'.

The arguments are:


'curve'

   Curve to be approximated by SP-curve(s)

   Lies approximately on 'surf'.


'range'

   Parametric extent of the part of the given 'curve' to be represented by one
   or more SP-Curves.

   If the 'range' is sufficiently long to overhang the parameter range of a
   limited surface, then the surface may be extended in order to accommodate
   the SP-curve(s).

   If the given 'curve' is a trimmed curve, then the 'range' must be contained
   within the bounds of the trimmed curve.

'surf'

   Surface upon which to create SP_Curve(s), 'surf' forms the basis surface
   of the new SP-curve(s).

   If 'surf' is construction geometry or is attached to a face, within a
   body, the SP-curve will be created as construction geometry
   in that body, and may only be attached to topology within that body.


'degenerate'

   Sp_curves may start or end on surface degeneracies, may lie entirely
   within them, but may not pass through them. A trimmed curve which passes
   through a surface degeneracy will be approximated by at least two
   SP_Curves. If 'degenerate' is PK_LOGICAL_true a zero length SP_Curve will be
   returned which joins the otherwise disjoint SP_Curves in parameter space.
   Zero length SP_Curves may not be attached to a model.


'sense'

   If 'sense' is PK_LOGICAL_true, then the created SP-curve(s) will start at
   the beginning of 'range' and end at the end of 'range'.  If 'sense' is
   PK_LOGICAL_false, then the SP-curve(s) will be in the opposite direction.


'tolerance'

   The SP-Curve will be created to the distance tolerance 'tolerance', i.e. it
   lies within 'tolerance' of the image of 'curve' in the surface. The image of
   'curve' in this context means the curve formed by the locus of points
   on 'surf' closest to corresponding points on 'curve'.

   If the required tolerance cannot be met then the function will fail with
   error PK_ERROR_tolerances_too_tight indicating that
   a larger tolerance may allow a successful approximation.


The returns are


'n_spcurves'

   Number of SP-curves produced


'spcurves'

   Array of SP-Curves of length n_spcurves.



Ownership

The ownership of the newly created SP_Curve(s) is determined by the ownership
of 'surf' as follows

    |____________________|___________________|
    | 'surf' owner       | SP_Curve owner    |
    |____________________|___________________|
    | Partition          | Partition         |
    | Assembly           | Assembly          |
    | Body               | Body              |
    | Face               | Body owning face  |
    _____________________|___________________|