PK_TOPOL_find_nabox_o_t   

struct PK_TOPOL_find_nabox_o_s
    {
    int                o_t_version;  --- options structure version number
    PK_LOGICAL_t       have_axis1;   --- whether axis1 supplied
                                     --- ( PK_LOGICAL_false )
    PK_AXIS1_sf_t      axis1;        --- local origin and one axis for nabox
    PK_LOGICAL_t       have_axis2;   --- whether axis2 supplied
                                     --- ( PK_LOGICAL_false )
    PK_AXIS2_sf_t      axis2;        --- local coordinate system for nabox
                                     --- ( world coordinate system )
    PK_NABOX_quality_t quality;      --- which information to use when finding
                                     --- naboxes in the absence of any axis
                                     --- constraints
                                     --- ( PK_NABOX_quality_standard_c )
    };
typedef struct PK_TOPOL_find_nabox_o_s PK_TOPOL_find_nabox_o_t;


This structure provides options for PK_TOPOL_find_nabox.


Specific Errors:
PK_ERROR_bad_combination     (MILD) 'have_axis1' and 'have_axis2' are
                             both set to PK_LOGICAL_true

Used in:

PK_TOPOL_find_nabox


This option structure contains the fields:

'have_axis1'            whether the application wishes to specify one of the
                        axes of the non-aligned box and leave the other two
                        for Parasolid to calculate.

'axis1'                 the 'location' and 'axis' to occur in the 'basis_set'
                        in the PK_NABOX_sf_t returned by PK_TOPOL_find_nabox
                        when 'have_axis1' is PK_LOGICAL_true.

'have_axis2'            whether or not the application has supplied a local
                        coordinate system in which a non-aligned box should
                        be calculated.

'axis2'                 the coordinate system in which a non-aligned box is
                        required if 'have_axis2' is set to PK_LOGICAL_true.

'quality'               determines which information Parasolid should use to
                        find the non-aligned box when 'have_axis1' and
                        'have_axis2' are both PK_LOGICAL_false.



Parasolid determined coordinate system
--------------------------------------

When 'have_axis1' and 'have_axis2' are both PK_LOGICAL_false, Parasolid
will find a local coordinate system which is aligned with a near-minimal
bounding box for the given topology. The local axes will be ordered in such
a way that the local X axis has the greatest dimension, the local Y axis
the next greatest dimension and the local Z axis the smallest dimension.
In terms of the fields of a PK_AXIS2_sf_t
structure:
  local X is 'ref_direction'
  local Z is 'axis'
  local Y is the cross product of local Z and local X.
This means that when the box degenerates to a rectangle then the dimensions of
the rectangle are given by the local X and Y dimensions, and when the box
degenerates to a line then its extent is given by the local X dimensions.
If a single vertex is input to PK_TOPOL_find_nabox then the returned axes will
always be axis aligned but the extent of the box may be non-zero if the vertex
is tolerant.

Specifying a single axis
------------------------

When 'have_axis1' is PK_LOGICAL_true, Parasolid will calculate a non-aligned
box containing the given topology such that the 'location' and 'axis' of its
'basis_set' will be the 'location' and 'axis' from 'axis1', and whose
projection onto the plane defined by 'axis1' is of minimal area. The
'ref_direction' is taken from the longest side of the rectangle bounding the
projection of the non-aligned box onto this plane.

Specifying a full coordinate system
-----------------------------------

If 'have_axis2' is PK_LOGICAL_true, then Parasolid will find the non-aligned
box of the given topology within the coordinate system defined by 'axis2'. In
this case the 'basis_set' in the PK_NABOX_sf_t returned by PK_TOPOL_find_nabox
will be identical to 'axis2'.