PK_SURF_make_bsurf_2   

PK_ERROR_code_t     PK_SURF_make_bsurf_2
(
--- received arguments ---
PK_SURF_t                   surf,         --- surface
PK_UVBOX_t                  uvbox,        --- required parameter bounds of surf
PK_SURF_make_bsurf_o_t     *options,      --- options

--- returned arguments ---
PK_SURF_make_bsurf_t *const status,       --- status
PK_BSURF_t           *const bsurf,        --- created BSURF
double               *const achieved_tol, --- achieved tolerance
PK_achieved_cont_t   *const achieved_cont --- achieved continuity
)


This function creates a 'bsurf' which is coincident with the given parametric
'uvbox' of the given 'surf'.

This function does not support facet geometry [NF]


Specific Errors:

    PK_ERROR_cant_make_bspline      failed to create equivalent geometry
                                    (MILD)
    PK_ERROR_bad_uvbox              'uvbox' does not define valid extent
                                    of 'surf' (MILD)
    PK_ERROR_tolerances_too_tight   'tolerance' is too tight (MILD)
    PK_ERROR_bad_tolerance          'tolerance' is less than session precision
                                    (MILD)


The created 'bsurf' will be exactly coincident with the given 'surf' if
possible.  Where this is not possible, the maximum distance between 'surf' and
'bsurf' will be limited by 'tolerance'.  The function will usually achieve this
condition but this is not guaranteed.

Representations of planes and the rational forms of cylinders, cones, spheres
and tori are exact. When the representation of a bsurf is changed it will, in
general, only be exact when the order is not decreased and when a rational
'surf' is not represented as a non-rational 'bsurf'.

The returned argument 'status' is set to PK_SURF_make_bsurf_exact_c if the
'bsurf' is exact. Otherwise it will be set to PK_SURF_make_bsurf_approx_c if
the resultant 'bsurf' has been made within the supplied 'tolerance', or
PK_SURF_make_bsurf_loose_c if the resultant 'bsurf' deviates by more than
'tolerance'. If the 'status' is PK_SURF_make_bsurf_loose_c, then
'achieved_tol' will be set to an upper bound for the maximum distance between
'surf' and 'bsurf'. Otherwise 'achieved_tol' should be ignored.

If the function is unable to approximate the 'surf' because the 'tolerance' is
too small, then the function will fail with the error
PK_ERROR_tolerances_too_tight. A looser tolerance may allow the function to
succeed.

If 'force_cubic' is set to PK_LOGICAL_true, then the resulting 'bsurf' is
forced to be cubic.  If 'force_non_rational' is set to PK_LOGICAL_true, then
the resulting 'bsurf' is forced to be non-rational.

The options 'force_continuity' and 'continuity' control the continuity and
periodicity of the resultant 'bsurf':
  o If 'force_continuity' is set to PK_force_continuity_no_c, then no
    restrictions are placed on the continuity of the resultant 'bsurf'.
  o If 'force_continuity' is set to PK_force_continuity_prefer_c, the resultant
    'bsurf' will have the level of continuity specified by 'continuity' if
    possible. Otherwise, the function may return a surface with a lower level
    of continuity.
  o If 'force_continuity' is set to PK_force_continuity_yes_c, the resultant
    'bsurf' will have the level of continuity specified by 'continuity'. If
    this is not possible, the function will fail.

If 'force_continuity' is set to PK_force_continuity_prefer_c, then the
returned argument 'achieved_cont' will indicate whether the preferred
continuity has been achieved. For other values of 'force_continuity',
'achieved_cont' will always be set to PK_achieved_cont_yes_c.

Click here for more information.