Synopsis

PDX_MSGT gdx_CBSRotateSurfFromSeam(long option, MDA_PTR gdx_cbs_ptr, int *status, PDX_BOOL *seam_touch, int *num_axis_touches)

Purpose

Rotate a surface for a CBS so that the seam crossing could be avoided

Description

Check if the seam crossing problem can be solved by rotating the surface; yes, the surface would be rotated if there is no other parent for this surface or a new surface would be created by rotating the original surface.

The model space curves must exist, otherwise the surface is considered as un-rotatable. In order to find the possible rotation angle, it is required that the model curves of each CEC should be continuous, and the parm curves of each CEC should be continuous except those ending points lying on the seam of the surface.

If the surface is rotated, all parm-curves will be deleted.

Input

option

Options (not used)

gdx_cbs_ptr

The valid GDX CBS database pointer

Output

status

GDX_SURF_REV_ROTATED

The surface has been rotated;

GDX_SURF_REV_UNCLOSED

The surface is an unclosed revolving surface;

GDX_SURF_REV_NO_SEAM_XING

The surface does not have seam crossing problem;

GDX_SURF_REV_UNROTATABLE

The seam crossing problem could not be solved by rotating the surface;

GDX_SURF_NOT_REV

The surface is not a revolving surface.

seam_touch

Flag indicating whether or not any loop touches the seam when GDX_SURF_REV_ROTATED or GDX_SURF_REV_NO_SEAM_XING returned.

num_axis_touches

Number of loops touching the rotation axis, invalid if < 0

Return

      GDX_NOERR
      GDX_MODEL_LOOP_NOT_CONT
      GDX_PARM_LOOP_NOT_CONT
      Low level error return
      .fi