 |
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.