struct PK_TOPOL_render_line_o_s { int o_t_version;--- version of this PK option struct PK_render_edge_t edge; --- whether to draw edges --- (PK_render_edge_yes_c) PK_render_silhouette_t silhouette; --- whether to draw silhouettes --- (PK_render_silhouette_no_c) PK_render_planar_t planar; --- whether to draw planar hatching --- (PK_render_planar_no_c) PK_render_radial_t radial; --- whether to draw radial hatching --- (PK_render_radial_no_c) PK_render_param_t param; --- whether to draw parametric hatch --- (PK_render_param_no_c) PK_render_unfix_t unfix; --- whether to draw unfixed blends --- (PK_render_unfix_no_c) PK_render_vis_t visibility; --- whether to determine visibility --- (PK_render_vis_no_c) PK_render_smooth_t smooth; --- whether to indicate smooth edges --- (i.e. where faces have the same --- tangent surface at the edge) --- (PK_render_smooth_no_c) PK_render_internal_t internal; --- whether to indicate internal edges --- (i.e. where faces on either side --- of the edge lie on same surface) --- (PK_render_internal_no_c) PK_render_region_t region; --- whether to produce regional data --- (PK_render_region_no_c) PK_render_hierarch_t hierarch; --- whether to produce hierarchical --- output (PK_render_hierarch_no_c) PK_render_bcurve_t bcurve; --- method for rendering bcurves --- (PK_render_bcurve_polyline_c) PK_render_viewport_t viewport; --- whether to use viewport(s) --- (PK_render_viewport_no_c) PK_render_invisible_t invisible; --- whether to output invisible lines --- when visibility is set to --- PK_render_vis_extended_c --- (PK_render_drafting_no_c) PK_render_drafting_t drafting; --- whether to distinguish lines --- hidden by lines and faces --- when visibility is set to --- PK_render_vis_extended_c --- (PK_render_invisible_no_c) PK_render_self_hidden_t self_hidden;--- whether to distinguish lines --- hidden by own or another --- occurrence when visibility is --- set to PK_render_vis_extended_c --- (PK_render_self_hidden_no_c) PK_LOGICAL_t is_curve_chord_tol; --- whether curve_chord_tol is set --- ( PK_LOGICAL_false ) double curve_chord_tol; --- chordal tolerance between curve --- and chord edges in model units --- ( 0.0 ) PK_LOGICAL_t is_curve_chord_max; --- whether curve_chord_max is set --- ( PK_LOGICAL_false ) double curve_chord_max; --- max length of chord in model units --- ( 0.0 ) PK_LOGICAL_t is_curve_chord_ang; --- whether curve_chord_ang is set --- ( PK_LOGICAL_false ) double curve_chord_ang; --- max angle between adjacent chords --- in radians --- ( 0.0 ) double planar_spacing; --- distance between planes for --- planar hatching --- ( 0.0 ) PK_AXIS1_sf_t planar_axis; --- axis for planar hatching --- (through 0,0,0 direction 0,0,0) double radial_around; --- angular spacing around spine for --- radial hatching --- ( 0.0 ) double radial_along; --- spacing in model units along spine --- ( 0.0 ) double radial_about; --- angular spacing about centre --- ( 0.0 ) double param_u; --- hatch spacing in U direction --- ( 0.0 ) double param_v; --- hatch spacing in V direction --- ( 0.0 ) double unfix_spacing; --- unfixed blend default rib spacing --- ( 0.0 ) PK_NABOX_sf_t viewport_sf; --- viewport definition --- if single viewport is used, i.e. --- PK_render_viewport_yes_c chosen double radial_around_start; --- starting value for angular --- spacing around --- spine for radial hatching --- ( 0.0 ) double radial_along_start; --- starting value for spacing in --- model units along spine --- ( 0.0 ) double radial_about_start; --- starting value for angular --- spacing about centre --- ( 0.0 ) double param_u_start; --- starting value for hatch spacing --- in U direction --- ( 0.0 ) double param_v_start; --- starting value for hatch spacing --- in V direction --- ( 0.0 ) PK_render_ignore_t ignore; --- whether to ignore small features --- in hidden line rendering. --- Small features can be ignored --- by inputting an absolute value or --- a ratio value --- ( PK_render_ignore_no_c ) double ignore_value; --- features smaller than this value --- will be considered for ignoring --- ( 0.0 ) PK_render_overlap_t overlap; --- whether to allow for overlapping --- bodies --- ( PK_render_overlap_no_c ) PK_render_memory_target_t memory_target; --- whether to restrict memory usage --- ( PK_render_memory_target_no_c ) size_t memory_target_value; --- target memory usage in bytes --- ( 0 ) PK_LOGICAL_t is_edge_smooth_tol; --- whether edge_smooth_tol is set --- ( PK_LOGICAL_false ) double edge_smooth_tol; --- max angle (in radians) allowed --- between face --- normals for edge to be smooth --- ( 0.0 ) int n_viewports; --- number of viewports const PK_NABOX_sf_t *viewports; --- array of viewports }; typedef struct PK_TOPOL_render_line_o_s PK_TOPOL_render_line_o_t; Controls for the PK_TOPOL_render_line options structure PK_TOPOL_render_line_o_t provides controls for PK_TOPOL_render_line to generate view-independent, view-dependent and hidden line drawings of topological entities through the Graphics Output (GO) interface. The controls allow view independent and view dependent data (silhouettes) to be generated in the same call to PK_TOPOL_render_line. Hidden line drawings should be generated in a separate call to PK_TOPOL_render_line because their arguments are generally incompatible with those used for the other categories of drawing. The options specify which types of lines should be rendered (e.g. edges, silhouettes) and what additional data (e.g. visibility and smoothness) needs to be calculated and handed onto GO. Tolerance Values Each control tolerance is passed as a pair of values, consisting of a PK_LOGICAL_t flag and a double precision value. If a specific tolerance is required, the variable is set to a strictly positive value and the associated flag set to PK_LOGICAL_true. If Parasolid is to use its internal tolerance defaults, the associated flag is set to PK_LOGICAL_false (and no use made of the associated tolerance argument). This is the default state set by the PK_TOPOL_render_line_o_m macro. Visibility If visibility is set to PK_render_vis_no_c then no visibility evaluation (ie hidden line drawing) is performed. Common visibility requirements may be requested by the values: PK_render_vis_hid_c, PK_render_vis_inv_c and PK_render_vis_inv_draft_c. For more refined control over visibility requirements, visibility may be set to PK_render_vis_extended_c which then enables the options: invisible, drafting and self_hidden. Radial and Param Default Start Values In no values are specified for the radial start values then the option PK_render_radial_yes_c will behave like PK_render_radial_free_c and Parasolid will choose the start values. Similarly, if no param start values are specified then the option PK_render_param_yes_c will behave like PK_render_param_free_c and Parasolid will choose the start values. Ignore Small Features The 'ignore' option can be set to one of the following values: PK_render_ignore_no_c: (default) All features will be rendered regardless of their size. PK_render_ignore_absolute_c: Any feature with a box size smaller than the value specified will be ignored. PK_render_ignore_ratio_c: The 'ignore_value' corresponds to the ratio of box size of the feature to the size of the box containing the entities to be rendered i.e. if this value is set to 0.01 then all features smaller than 1 per-cent of the entities' box will be ignored. PK_render_ignore_body_ratio_c: The 'ignore_value' corresponds to the ratio of the box size of the feature to the size of the box of the body containing the feature. This option only takes effect when visibility is not set to PK_render_vis_no_c. Note that 'small' features will only be ignored provided that ignoring them does not leave the model invalid. Overlapping Bodies The 'overlap' options can be set to one of the following values: PK_render_overlap_no_c: Parasolid assumes that the bodies to be rendered do not overlap. If there are overlapping entities present then the overlap will not be detect and the resulting picture may contain errors. PK_render_overlap_yes_c: Parasolid will detect overlapping bodies and will split the existing lines appropriately. However, the algorithm will not generate new edges where the faces intersect. The additional effort of detecting overlaps will incur a performance overhead compared to 'PK_render_overlap_no_c'. This option only takes effect when visibility is not set to PK_render_vis_no_c. Abutting bodies will always be rendered correctly, regardless of the setting of the option. Memory Target The 'memory target' option can be set to one of the following values: PK_render_memory_target_yes_c: Parasolid will attempt to restrict the memory usage of PK_TOPOL_render_line to the amount of memory given by "memory_target_value". The target value is not guaranteed to be met. The amount of memory used by PK_TOPOL_render_line will be reduced at the expense of total processor time. The value given by 'memory_target' refers to the peak amount of extra memory temporarily allocated during PK_TOPOL_render_line. PK_render_memory_target_no_c: Parasolid will maximise performance without attempting to restrict memory usage. This option only takes effect when visibility is not set to PK_render_vis_no_c. Edge Smoothness If is_edge_smooth_tol is set to true, the value in edge_smooth_tol defines the angular tolerance (in radians) for the smoothness property in the same way as PK_EDGE_is_smooth. The criteria for smoothness is defined as being that the angle between the normals of the two faces that meet at a given edge do not exceed the angle supplied in edge_smooth_tol. If is_edge_smooth_tol is set to false, the angular tolerance used will depend upon the accuracy of the relevant edge. Multiple viewports PK_render_viewport_t controls the multiple viewport behaviour. PK_render_viewport_no_c: no viewports are supplied (default) PK_render_viewport_yes_c: the single viewport specified in viewport_sf is used. Entities outside the single supplied viewport may be omitted. In this case, n_viewports and viewports are ignored. PK_render_viewport_array_c: an array of viewports is supplied. Entities outside all the supplied viewports may be omitted. viewport_sf is ignored. The number of viewports used is set in n_viewports and can be set to zero or a positive integer. The array of viewports is specified in viewports.