PK_BODY_make_persp_outline_o_t   

struct PK_BODY_make_persp_outline_o_s
    {
    int                   o_t_version;       --- version number
    PK_outline_project_t  project;           --- whether to project outline
                                             --- curves onto a projection
                                             --- surface
                                             --- (PK_outline_project_no_c)
    PK_VECTOR_t           project_location;  --- the location of the projection
                                             --- surface
                                             --- (0, 0, 0)
    PK_VECTOR1_t          project_direction; --- the direction defining the
                                             --- projection surface with the
                                             --- the 'project_location' and
                                             --- the 'eye_position'
                                             --- (0, 0, 1)
    PK_scale_factor_t     project_scale;     --- scale to shrink the outlines
                                             --- returned on a projection plane
                                             --- (PK_scale_factor_1x_c)
    double                tolerance;         --- curve tolerance
                                             --- (1.0e-6)
    PK_LOGICAL_t          want_tracking;     --- whether to return the tracking
                                             --- information of outline curves
                                             --- (PK_LOGICAL_false)
    PK_LOGICAL_t          want_body;         --- whether to create a body from
                                             --- outline curves
                                             --- (PK_LOGICAL_false)
    PK_TOPOL_dimension_t  body_dimension;    --- whether to request a body of
                                             --- maximum dimension 1 or 2
                                             --- (PK_TOPOL_dimension_1_c)
    PK_persp_clipping_t   clipping;          --- view range type to clip the
                                             --- outline curves
                                             --- (PK_persp_clipping_no_c)
    double                view_angle;        --- viewing angle
                                             --- (0)
    PK_VECTOR1_t          view_direction;    --- view direction
                                             --- (1 0 0)
    double                spin_angle;        --- spin angle
                                             --- (0)
    PK_VECTOR1_t          spin_direction;    --- spin axis direction
                                             --- (0 0 1)
    PK_BODY_t             clipping_body;     --- clipping body
                                             --- (PK_ENTITY_null)
    PK_BODY_keep_as_facet_t
                          keep_as_facet;     --- whether to make a purely facet
                                             --- body from input that only
                                             --- contains purely facet bodies
                                             --- (PK_BODY_keep_as_facet_yes_c)
    PK_results_output_t   results_output;    --- whether to output results in
                                             --- returned arguments from the
                                             --- function or in a report
                                             --- (PK_results_output_return_c)
    };
typedef struct PK_BODY_make_persp_outline_o_s PK_BODY_make_persp_outline_o_t;



Controls for the PK_BODY_make_persp_outline options structure


Specific Errors:
    PK_ERROR_bad_tolerance        (MILD)  the supplied tolerance is less than
                                          1.0e-7.

    PK_ERROR_bad_dimension        (MILD)  the value of 'body_dimension' is
                                          neither PK_TOPOL_dimension_1_c nor
                                          PK_TOPOL_dimension_2_c; or the
                                          'clipping_body' is neither a sheet
                                          body nor a solid body.

    PK_ERROR_bad_orientation      (MILD)  the 'project_direction' of the
                                          projection cylinder is not
                                          perpendicular to the direction from
                                          the 'eye_position' to the
                                          'project_location'.

    PK_ERROR_bad_combination      (MILD)  the value of 'clipping_body' is
                                          set to PK_ENTITY_null when the
                                          value of 'clipping' is set to
                                          PK_persp_clipping_body_c; or the
                                          value of 'project_scale' is not
                                          PK_scale_factor_1x_c and the
                                          value of 'project' is not
                                          PK_outline_project_plane_c.

    PK_ERROR_bad_angle            (MILD)  the value of the 'view_angle' or
                                          'spin_angle' is negative or larger
                                          than pi; or the value of 'spin_angle'
                                          is zero; or the value of 'view_angle'
                                          is zero if the value of 'clipping' is
                                          set to PK_persp_clipping_pyramid_c.

    PK_ERROR_vectors_are_parallel (MILD)  the 'view_direction' and the
                                          'spin_direction' are parallel.

    PK_ERROR_failed_to_project    (MILD)  any part of an outline curve is
                                          projected outside the size box, or
                                          cannot be projected, or a face to
                                          be produced will reach infinity in an
                                          outline operation to produce a sheet
                                          body.


Used in:

PK_BODY_make_persp_outline


Description of fields:

'project'               Whether the outline curves are output as 3-dimensional
                        curves i.e. their depth information is retained, or if
                        they are projected onto a specific projection surface
                        defined by the 'project_location', the 'eye_position'
                        and 'project_direction'.

'project_location'      A location vector that defines the surface onto which
                        the outlines will be projected.

                        If 'project' is set to PK_outline_project_plane_c,
                        the outlines are projected onto the plane containing
                        the 'project_location' that is perpendicular to the
                        direction from the 'eye_position' to the
                        'project_location'.

                        If 'project' is set to PK_outline_project_sphere_c,
                        the outlines are projected onto a sphere containing
                        the 'project_location' and centred at the
                        'eye_position'.

                        If 'project' is set to PK_outline_project_cylinder_c,
                        the outlines are projected onto a cylinder containing
                        the 'project_location', with an axis defined by the
                        'eye_position' and 'project_direction',

'project_direction'     A direction vector that defines the axis direction of
                        the cylinder onto which the outlines will be projected.

                        If 'project' is set to PK_outline_project_plane_c or
                        PK_outline_project_sphere_c, the 'project_direction'
                        is ignored.

'project_scale'         Scale factor used to shrink outlines projected on
                        a plane, with the 'project_location' used as the
                        scaling centre. No scaling is applied when the
                        value is PK_scale_factor_1x_c.

'tolerance'             The accuracy of the outlines. The minimum tolerance
                        allowed is 1.0e-7.

'want_tracking'         Whether to return the tracking information for
                        identifying the edges and faces corresponding to
                        outline curves.

'want_body'             Whether to create a body constructed from the set
                        of outline curve loops. One has the option to create
                        either a wire body or a sheet body. This includes the
                        possibility of a general body.

                        If multiple loops are created, a single body is formed
                        from the disjoint loops. This option is only valid
                        when using the projection option with the value of
                        PK_outline_project_plane_c, PK_outline_project_sphere_c
                        or PK_outline_project_cylinder_c

                        If the value of projection option is set to
                        PK_outline_project_no_c, this option is only valid when
                        creating a wire body.

                        If this value is set to PK_LOGICAL_true, the curves
                        returned by the calling function will be incorporated
                        into a body. The body will be a wire or a sheet
                        depending on the setting of the 'body_dimension'
                        option. These curves will be incorporated into the body
                        either as edge curves or (in the case of a tolerant
                        edge on a sheet body) as nominal edge curves.

'body_dimension'        Whether to request a body of maximum dimension 1 or 2.
                        If a wire body is desired, then this field should use
                        the token value of PK_TOPOL_dimension_1_c. It may be
                        that a general body also of dimension 1 may be created
                        depending on the body creation output.

                        If a sheet body is to be created with the projection
                        surface, then this field should use the token value of
                        PK_TOPOL_dimension_2_c. It may be that a general body
                        also of maximum dimension 2 may be created depending
                        on the body creation output.

                        The tokens PK_TOPOL_dimension_0_c and
                        PK_TOPOL_dimension_any_c are not allowed and are
                        invalid input for this option.

'clipping'              The types of viewing ranges in 3D space as defined in
                        the table below, which Parasolid should use to clip the
                        outline curves.

'view_angle'            The viewing angle.

'view_direction'        The view direction.
                        NOTE: zero 'view_angle' is treated as pi if the
                              'spin_angle' is not zero.

'spin_angle'            The spin angle between 0 and pi.

'spin_direction'        The spin axis direction.

'clipping_body'         The sheet or solid body for clipping outline curves.

'keep_as_facet'         Whether to make a purely facet body from input that
                        only contains purely facet bodies.
                        Note: this option is ignored if the input bodies
                        contain any classic geometry or if a wire body is
                        requested.

 ==============================================================================
 Value of 'clipping'         Definition of the viewing range
 ==============================================================================
 PK_persp_clipping_cone_c    Inside a cone whose apex is the 'eye_position'
                             with its axis parallel to the 'view_direction'.
                             Its halfangle is specified by the 'view_angle'.
                             See here for more information.

 PK_persp_clipping_sector_c  Inside a spherical sector bounded by a pair of
                             cones whose apex is the 'eye_position' with their
                             axes parallel to the 'spin_direction'. Their
                             half angles are defined by the 'view_angle' with
                             respect to the 'view_direction' and in the plane
                             that also contains the 'spin_direction'.
                             See here for more information.

 PK_persp_clipping_wedge_c   Inside a wedge whose apex edge is defined by the
                             'eye_position' and the 'spin_direction'.
                             Its half angle is defined the 'spin_angle' with
                             respect to the centre plane containing the
                             'view_direction' and the 'spin_direction'.
                             See here for more information.

 PK_persp_clipping_pyramid_c Inside a spherical coordinate pyramid whose apex
                             is the 'eye_position' with a centre line in the
                             'view_direction'.
                             Its half angles are defined by the 'view_angle'
                             and 'spin_angle' in the centre plane containing
                             the 'view_direction' and the 'spin_direction',
                             and in another centre plane orthogonal to the
                             'spin_direction' respectively.
                             See here for more information.

 PK_persp_clipping_body_c    Inside a generalised cone formed by the outlines
                             of the 'clipping_body' and the 'eye_position'.
                             The 'clipping_body' can be single or disjoint,
                             sheet or solid body.
                             See here for more information.
 ==============================================================================

'results_output'        Whether to output the result as returned arguments
                        from the function, or in report form to the Parasolid
                        report. The records in the report will be of type
                        PK_REPORT_record_type_3_c.

                        Possible values are:

                            PK_results_output_return_c:
                                The results are output in the 'result' and
                                'tracking' arguments from the function.
                                This is the default.

                            PK_results_output_report_c:
                                The 'result' and 'tracking' arguments
                                remain empty.
                                If the function succeeds and reports no
                                error, the results are output in the
                                Parasolid report in a record with status
                                PK_REPORT_3_outline_result_c. Otherwise,
                                the function reports errors in the
                                Parasolid report in a record with status
                                PK_REPORT_3_outline_error_c. If produced,
                                the results are also output in a record
                                with status PK_REPORT_3_outline_result_c.