PK_ERROR_code_t PK_BODY_taper ( --- received arguments --- const PK_BODY_t body, --- body to be tapered int n_refs_above, --- number of reference --- entities above parting --- sheet const PK_ENTITY_t refs_above[], --- reference entities --- above parting sheet int n_refs_below, --- number of reference --- entities below parting --- sheet const PK_ENTITY_t refs_below[], --- reference entities --- below parting sheet const PK_BODY_t parting_body, --- parting body PK_VECTOR1_t direction, --- draw direction double angle_above, --- taper angle above double angle_below, --- taper angle below const PK_BODY_taper_o_t *options, --- options --- returned arguments --- PK_TOPOL_track_r_t *const tracking, --- tracking information PK_TOPOL_local_r_t *const results --- status information ) This function applies two-sided tapering to the body parted by the parting_body. Specific Errors: PK_ERROR_unsuitable_topology only solid bodies and solid or sheet parting bodies are supported (MILD) PK_ERROR_wrong_entity_in_array given references are not from same body or non-default tapering method entities not given as references (MILD) PK_ERROR_bad_reference invalid reference entity (MILD) PK_ERROR_impossible_taper taper conditions cannot be satisfied (SERIOUS) PK_ERROR_not_implemented unavailable functionality is called (MILD) PK_ERROR_taper_failed PK_BODY_taper suffered an internal algorithmic failure (SERIOUS) The body is divided by the parting_body into "above" and "below" halves with respect to the draw direction. Taper faces are then constructed and replace existing faces between given references on each half and the parting_body. Surfaces of new taper faces are defined by the direction and angle_above or angle_below for "above" and "below" halves respectively. These surfaces originate at refs_above and refs_below and propagate to the intersection with the parting_body. Currently only edge references forming a single chain on either side are supported. Default tapering method can be defined for all references with default_method option field. It is possible to override the default method for each reference entity using methods and method_refs arrays of the option structure. If resulting tapered faces from two halves do not meet at the parting_body then the function will do the following depending on miter_at_parting option field: Non-mitered solution (miter_at_parting is PK_LOGICAL_false) Any gaps between misaligned "above" and "below" halves at the parting_body will be filled using faces of the parting_body. Mitered solution (miter_at_parting is PK_LOGICAL_true) Extra material will be added to one or both halves to make sure they match at the parting_body. This results in increased taper angle for some of the new faces. The function allows for one-sided solutions. In this case only one set of references should be given and a parting_body must be the same as the body. The function will construct new taper surfaces from the given references to the intersection with the body. For further details regarding this method of tapering please refer to the Parasolid Functional Description Chapter Body Tapering.