Equivalent PK functions: |
PK_CURVE_spin PK_SPUN_create |
CRRVSU ( profil, point, direct, nopts, opts, optdta, revsur, ifail ) ==================================================================== Create a surface of revolution Receives: KI_tag_curve *profil --- curve to revolve KI_vec_position point --- point on revolution axis KI_vec_axis direct --- direction of revolution axis <KI_int_nitems> *nopts --- number of options supplied KI_cod_crop opts[nopts] --- array of options <KI_tag_list> optdta[nopts] --- array of option data Returns: KI_tag_surface *revsur --- resulting surface of revolution KI_cod_error *ifail --- error code Specific errors: KI_impossible_swing Cannot determine spun geometry KI_su_self_intersect Surface would be self-intersecting KI_unsuitable_entity Not one of the allowed curve types KI_wrong_direction Parameters in wrong order KI_invalid_geometry Invalid curve KI_bad_parameter End parameter out of range Start parameter out of range KI_bad_parametric_prop inappropriate property KI_bad_option_data Should be exactly 2 values option data missing Description: This function creates a spun surface or surface of revolution. The curve 'profil' is revolved about the axis defined by the point vector 'point' and the direction vector 'direct', the new surface being the envelope of the curve. The sense of the revolution appears clockwise when viewed along the direction of the axis. The curve must be one of the following: line circle ellipse B-curve The options allow the caller to indicate whether simplification is to be attempted and to specify a parameter range which indicates which part of the curve to use. The possible entries are: token | meaning | data --------------------------------------------------------------------- | | CROPSI | Simplify to equivalent | none | analytic surface | | | CROPPR | Parameter range on required | list of two doubles | section of 'profil' | | | The simplification token is CROPSI. If this is not given then the function will always return a surface of type TYSUSU. If it is given then, if possible, the function will return an simpler surface which is equivalent to the surface of revolution. Normally the simpler surface is analytic; for example, a spun line which intersects the axis is equivalent to a cone. Sometimes the simpler surface is a spun surface with a profile different to 'profil'. This can occur when the whole of 'profil' would sweep the spun surface twice, i.e. the surface would be self intersecting at all its points. For example, this occurs when 'profil' is a circle which lies in a plane perpendicular to the plane containing its centre and the spin axis. In this case, the profile of the resulting surface is a B-curve equivalent to the part of 'profil' specified using CROPPR (although the parameterisation of the new profile will, in general, be different to that of 'profil'). If the token CROPPR is supplied, then a list of two doubles must also be supplied as data. These two doubles specify a parameter range indicating the part of the curve to be spun. A parameter range may be specified for any case but will only be important in cases where the curve intersects the axis. In these cases, it is ambiguous as to which part of the curve should be spun and this option provides a way of choosing one part to be spun. The parameters must be given in ascending order. The curve is extended from the given parameter range until it meets the spin axis, and this becomes the portion of curve to be revolved. If ambiguous data is supplied and SLIPSI (see SEINTP) is non-zero, then an error is signalled, otherwise (if SLIPSI is zero) then the part of the curve used is undefined. A self intersecting surface may be returned, but it is not possible to spin a line about an axis equivalent to the line itself. If 'profil' is not an orphan, the resulting surface will be created as construction geometry in the owning part. A curve which is a dependent of another entity may be revolved - for example, a single curve may be the underlying curve of two spun surfaces.