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)