PK_FACE_output_surf_trimmed_o_t   


struct PK_FACE_output_surf_trimmed_o_s
    {
    int                    o_t_version;     --- option structure version
    --- surface options
    PK_FACE_trim_surf_t    trim_surf;       --- what surface to use
                                            --- (PK_FACE_trim_surf_own_c)
    PK_LOGICAL_t           cubic;           --- bsurf to be cubic
                                            --- (PK_LOGICAL_false)
    PK_LOGICAL_t           non_rational;    --- bsurf to be non-rational
                                            --- (PK_LOGICAL_false)
    double                 surf_tolerance;  --- tolerance for creating bsurf
    PK_LOGICAL_t           extend_surf;     --- is surface extension allowed
                                            --- (PK_LOGICAL_true)
    --- curve options
    PK_FACE_trim_confine_t confine;         --- confinement
                                            --- (PK_FACE_trim_confine_closed_c)
    double                 curve_tolerance; --- tolerance for creating spcurves
                                            --- (0.0001)
    PK_FACE_trim_degen_t   degen;           --- in/exclude degeneracies
                                            --- (PK_FACE_trim_degen_no_c)
    --- output options
    PK_LOGICAL_t           want_geoms;      --- whether geometry required
                                            --- (PK_LOGICAL_false)
    PK_LOGICAL_t           want_topols;     --- whether topology required
                                            --- (PK_LOGICAL_false)
    };

typedef struct PK_FACE_output_surf_trimmed_o_s
               PK_FACE_output_surf_trimmed_o_t;



This option structure is used to select how a trimmed surface representation of
a face is to be constructed.


The options are divided into Surface Options, SP-curve Options and Output
Options.


Surface Options
------- -------
The Surface whose parameter space is to be used can either be the surface
attached to the face, or a B-spline representation of that surface.

trim_surf     : PK_FACE_trim_surf_own_c    Use surface attached to face
                  (default)
                  PK_FACE_trim_surf_bsurf_c  Use a B-spline approximation

extend_surf   : allow extension of the surface to fit SP-curves that
                  stray outside.
                  (default = PK_LOGICAL_true)

When trim_surf is set to PK_FACE_trim_surf_bsurf_c 3 other options
may also be set:

surf_tolerance: maximum allowed distance between the face's surface and the
                  B-surface approximation.
                  (default = 0.00001)

cubic         : Force output of B-spline of degree 3

non_rational  : Force output of non-rational B-spline


No matter which type of surface is requested for output,
PK_FACE_output_surf_trimmed will by default extend it to fit SP-curves
approximating the face boundaries that stray outside of the natural
boundaries of the surface. The field extend_surf is provided to
switch off this default behaviour. When extend_surf is set to
PK_LOGICAL_false, PK_FACE_output_surf_trimmed will succeed as before,
however the returned surface will not be extended to include all
SP-curves in the output that pass outside the original bounds of
the surface's parameter space. Since negating extend_surf may lead to
output where SP-curves pass outside the natural boundaries of
the surface on which they lie, any application setting
this field to PK_LOGICAL_false must be able to deal with them.

SP-curve Options
-------- -------
There are 3 options available for the SP-curves which are to be constructed.

curve_tolerance : Allows specification of the tolerance which the SP-curve
                    representations of the edges should satisfy.
                    (default = 0.0001)

confine         : selects the trimmimg configuration.
                    See documentation for PK_FACE_trim_confine_t.
                    (default PK_FACE_trim_confine_closed_c)

degen           : selects whether to represent surface degeneracies.
                    See documentation for PK_FACE_trim_degen_t.
                    (default PK_FACE_trim_degen_no_c)

As indicated above the SP-curve tolerance may be specified, this is a distance
tolerance in model units and refers to the maximum allowable distance
between an SP-curve and the edge curve that it represents. Although
extensive tolerance checking is carried out, and the accuracy of
the representation will usually satisfy the supplied tolerance,
this cannot be guaranteed.

When using a B-spline surface approximation, care must be taken when supplying
the tolerance. The surface approximation needs to be accurate enough for the
SP-curves to satisfy their tolerance. It is suggested that the surf_tolerance
should be no greater than half the curve_tolerance.

The tolerance is ignored for edges of the face that are already tolerant and
have an SP-curve of degree 1 or 2 ( lying in the surface to be returned )
attached. In this case the appropriate trimmed section of the present SP-curve
will be returned without approximation.

If the required tolerance cannot be met then the function will fail with
PK_ERROR_tolerances_too_tight indicating that a larger tolerance may allow a
successful approximation. Similarly there are occasions on which the curve
tolerance specified may be so large that the face will appear, to the function
to be nothing more than a wire. In such cases, rather than output degenerate
loops, the error PK_ERROR_trim_loop_degenerate will be returned.
Setting a smaller tolerance may result in a successful attempt to produce
trimmed surface output.


Output Options
------ -------

There are just two options related to the quantity of data returned. Each
option is provided to indicate that the output arrays holding
information associated with a trim loop is required.

want_geoms   : Requests the return of the array of geometries (geoms)
                 and bounding intervals (intervals) associated with the
                 SP-curves in the PK_SURF_trim_data_t.
                 (default = PK_LOGICAL_false)

want_topols  : Requests the return of the list of model topologies
                 (topols) associated with the SP-curves in the
                 PK_SURF_trim_data_t.
                 (default = PK_LOGICAL_false)