#ifndef PROROUNDH
#define PROROUNDH
 


#include <ProANSI.h>
#include <ProObjects.h>
#include <ProToolkit.h>
 
PRO_BEGIN_C_DECLS


/*****************************************************************************

Feature element tree

   PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEATURE_TYPE
     |
     |--PRO_E_STD_FEATURE_NAME
     |--PRO_E_RNDCH_SETS
     |    |
     |    |--PRO_E_RNDCH_SET
     |         |
     |         |--PRO_E_RNDCH_SHAPE_OPTIONS
     |         |--PRO_E_RNDCH_VARIABLE_RADIUS
     |         |--PRO_E_RNDCH_COMPOUND_CONIC
     |         |    |
     |         |    |--PRO_E_RNDCH_CONIC_TYPE
     |         |    |--PRO_E_RNDCH_CONIC_VALUE
     |         |    |--PRO_E_RNDCH_CONIC_DEP_OPT
     |         |
     |         |--PRO_E_RNDCH_REFERENCES
     |         |    |
     |         |    |--PRO_E_RNDCH_REFERENCE_TYPE
     |         |    |--PRO_E_STD_CURVE_COLLECTION_APPL
     |         |    |--PRO_E_RNDCH_REFERENCE_SURFACE1
     |         |    |--PRO_E_RNDCH_REFERENCE_SURFACE2
     |         |    |--PRO_E_RNDCH_REFERENCE_EDGE1
     |         |    |--PRO_E_RNDCH_REFERENCE_EDGE2
     |         |    |--PRO_E_RNDCH_REPLACE_SURFACE
     |         |
     |         |--PRO_E_RNDCH_COMPOUND_SPINE
     |         |    |
     |         |    |--PRO_E_RNDCH_BALL_SPINE
     |         |    |--PRO_E_STD_CURVE_COLLECTION_APPL
     |         |
     |         |--PRO_E_RNDCH_AUTO_CONTINUE
     |         |--PRO_E_RNDCH_COMPOUND_EXT_OPTIONS
     |         |    |
     |         |    |--PRO_E_RNDCH_AUTO_BLEND
     |         |    |--PRO_E_RNDCH_TERM_SURFACE
     |         |
     |         |--PRO_E_RNDCH_RADII
     |         |    |
     |         |    |--PRO_E_RNDCH_RADIUS
     |         |         |
     |         |         |--PRO_E_STD_POINT_COLLECTION_APPL
     |         |         |--PRO_E_RNDCH_LEG1
     |         |         |    |
     |         |         |    |--PRO_E_RNDCH_LEG_TYPE
     |         |         |    |--PRO_E_RNDCH_LEG_VALUE
     |         |         |    |--PRO_E_RNDCH_REFERENCE_EDGE
     |         |         |    |--PRO_E_RNDCH_REFERENCE_POINT
     |         |         |
     |         |         |--PRO_E_RNDCH_LEG2
     |         |              |
     |         |              |--PRO_E_RNDCH_LEG_TYPE
     |         |              |--PRO_E_RNDCH_LEG_VALUE
     |         |              |--PRO_E_RNDCH_REFERENCE_EDGE
     |         |              |--PRO_E_RNDCH_REFERENCE_POINT
     |         |
     |         |--PRO_E_STD_CURVE_COLLECTION_APPL
     |         |--PRO_E_RNDCH_AMBIGUITY
     |
     |--PRO_E_RNDCH_ATTACH_TYPE
     |--PRO_E_RNDCH_TRANSITIONS
          |
          |--PRO_E_RNDCH_TRANSITION
               |
               |--PRO_E_RNDCH_TRANS_TYPE
               |--PRO_E_RNDCH_TRANS_CAP
               |--PRO_E_RNDCH_TRANS_SPHERE_DATA
               |    |
               |    |--PRO_E_RNDCH_TRANS_RADIUS_OPTIONS
               |    |--PRO_E_RNDCH_TRANS_SPHERE_RADIUS
               |    |--PRO_E_RNDCH_TRANS_LEG1_OPTIONS
               |    |--PRO_E_RNDCH_TRANS_LEG1_VALUE
               |    |--PRO_E_RNDCH_TRANS_LEG2_OPTIONS
               |    |--PRO_E_RNDCH_TRANS_LEG2_VALUE
               |    |--PRO_E_RNDCH_TRANS_LEG3_OPTIONS
               |    |--PRO_E_RNDCH_TRANS_LEG3_VALUE
               |
               |--PRO_E_RNDCH_TRANS_PATCH_DATA
               |    |
               |    |--PRO_E_RNDCH_TRANS_PATCH_REF_SURF
               |    |--PRO_E_RNDCH_TRANS_PATCH_RAD_OPT
               |    |--PRO_E_RNDCH_TRANS_ARC_RADIUS
               |
               |--PRO_E_RNDCH_TRANS_STOP_DATA
                    |
                    |--PRO_E_RNDCH_TRANS_STOP_REF_TYPE
                    |--PRO_E_RNDCH_TRANS_STOP_REFERENCE


---------------------------------------------------------------------------------------------------
Element Id                       Element Name        Data Type                Valid Values
---------------------------------------------------------------------------------------------------
PRO_E_FEATURE_TYPE               Feature Type        PRO_VALUE_TYPE_INT       PRO_FEAT_ROUND
PRO_E_STD_FEATURE_NAME           Feature Name        PRO_VALUE_TYPE_WSTRING   Wide character string
PRO_E_RNDCH_SETS                 Sets                Array
PRO_E_RNDCH_SET                  Set                 Compound
PRO_E_RNDCH_SHAPE_OPTIONS        Shape options       PRO_VALUE_TYPE_INT       See below
PRO_E_RNDCH_VARIABLE_RADIUS      Variable Radius     PRO_VALUE_TYPE_INT       Not Used
PRO_E_RNDCH_COMPOUND_CONIC       Conic               Compound
PRO_E_RNDCH_CONIC_TYPE           Conic Type          PRO_VALUE_TYPE_INT       See Below
PRO_E_RNDCH_CONIC_VALUE          Conic value         PRO_VALUE_TYPE_DOUBLE    Range 0.05 to 0.95
PRO_E_RNDCH_CONIC_DEP_OPT        Independent         PRO_VALUE_TYPE_INT       See below
PRO_E_RNDCH_REFERENCES           References          Compound
PRO_E_RNDCH_REFERENCE_TYPE       Reference type      PRO_VALUE_TYPE_INT       See below
PRO_E_STD_CURVE_COLLECTION_APPL  Reference Edges     Chain Collection
PRO_E_RNDCH_REFERENCE_SURFACE1   Reference Surface1  PRO_VALUE_TYPE_SELECTION PRO_SURFACE
PRO_E_RNDCH_REFERENCE_SURFACE2   Reference Surface2  PRO_VALUE_TYPE_SELECTION PRO_SURFACE
PRO_E_RNDCH_REFERENCE_EDGE1      Reference Edge1     PRO_VALUE_TYPE_SELECTION PRO_EDGE
PRO_E_RNDCH_REFERENCE_EDGE2      Reference Edge2     PRO_VALUE_TYPE_SELECTION PRO_EDGE
PRO_E_RNDCH_REPLACE_SURFACE      Replace Surface     PRO_VALUE_TYPE_SELECTION PRO_SURFACE
PRO_E_RNDCH_COMPOUND_SPINE       Spine               Compound
PRO_E_RNDCH_BALL_SPINE           Ball/Spine          PRO_VALUE_TYPE_INT       See below
PRO_E_STD_CURVE_COLLECTION_APPL  Spine curve         Chain Collection
PRO_E_RNDCH_AUTO_CONTINUE        Auto Continue       PRO_VALUE_TYPE_INT       See below
PRO_E_RNDCH_COMPOUND_EXT_OPTIONS Ext options         Compound
PRO_E_RNDCH_AUTO_BLEND           Auto Blend          PRO_VALUE_TYPE_INT       Not Used
PRO_E_RNDCH_TERM_SURFACE         Terminating Surface PRO_VALUE_TYPE_SELECTION Not Used
PRO_E_RNDCH_RADII                Radii               Array
PRO_E_RNDCH_RADIUS               Radius              Compound
PRO_E_STD_POINT_COLLECTION_APPL  Radius Point        Point Collection         Single point
PRO_E_RNDCH_LEG1                 Leg1                Compound
PRO_E_RNDCH_LEG2                 Leg2                Compound
PRO_E_RNDCH_LEG_TYPE             Leg Type            PRO_VALUE_TYPE_INT       See below
PRO_E_RNDCH_LEG_VALUE            Leg Value           PRO_VALUE_TYPE_DOUBLE
PRO_E_RNDCH_REFERENCE_EDGE       Reference Edge      PRO_VALUE_TYPE_SELECTION PRO_EDGE
PRO_E_RNDCH_REFERENCE_POINT      Reference Point     PRO_VALUE_TYPE_SELECTION PRO_POINT
PRO_E_STD_CURVE_COLLECTION_APPL  Rad Curve           Chain Collection
PRO_E_RNDCH_AMBIGUITY            Ambiguity
PRO_E_RNDCH_ATTACH_TYPE          Attach type         PRO_VALUE_TYPE_INT       See below
PRO_E_RNDCH_TRANSITIONS          Transitions         Array
PRO_E_RNDCH_TRANSITION           Transition          Compound
PRO_E_RNDCH_TRANS_TYPE           Type                PRO_VALUE_TYPE_INT       See below
PRO_E_RNDCH_TRANS_CAP            Capping surface     PRO_VALUE_TYPE_INT       See below
PRO_E_RNDCH_TRANS_SPHERE_DATA    Sphere Data         Compound
PRO_E_RNDCH_TRANS_RADIUS_OPTIONS Radius options      PRO_VALUE_TYPE_INT       See below
PRO_E_RNDCH_TRANS_SPHERE_RADIUS  Sphere Radius       PRO_VALUE_TYPE_DOUBLE
PRO_E_RNDCH_TRANS_LEG1_OPTIONS   Leg1 Options        PRO_VALUE_TYPE_INT       See below
PRO_E_RNDCH_TRANS_LEG2_OPTIONS   Leg2 Options        PRO_VALUE_TYPE_INT       See below
PRO_E_RNDCH_TRANS_LEG3_OPTIONS   Leg3 Options        PRO_VALUE_TYPE_INT       See below
PRO_E_RNDCH_TRANS_LEG1_VALUE     Leg1 Value          PRO_VALUE_TYPE_DOUBLE
PRO_E_RNDCH_TRANS_LEG2_VALUE     Leg2 Value          PRO_VALUE_TYPE_DOUBLE
PRO_E_RNDCH_TRANS_LEG3_VALUE     Leg3 Value          PRO_VALUE_TYPE_DOUBLE
PRO_E_RNDCH_TRANS_PATCH_DATA     Patch Data          Compound
PRO_E_RNDCH_TRANS_PATCH_REF_SURF Arc Surface         PRO_VALUE_TYPE_SELECTION PRO_SURFACE
PRO_E_RNDCH_TRANS_PATCH_RAD_OPT  Arc Radius options  PRO_VALUE_TYPE_INT       See below
PRO_E_RNDCH_TRANS_ARC_RADIUS     Arc Radius          PRO_VALUE_TYPE_DOUBLE
PRO_E_RNDCH_TRANS_STOP_DATA      Capping surface     Compound
PRO_E_RNDCH_TRANS_STOP_REF_TYPE  Reference Type      PRO_VALUE_TYPE_INT       See below
PRO_E_RNDCH_TRANS_STOP_REFERENCE Stop Reference      PRO_VALUE_TYPE_SELECTION PRO_SURFACE,
                                                                              PRO_POINT,
                                                                              PRO_DATUM_PLANE

*****************************************************************************/

/******************************************************************************
         DIFFERENT TYPES OF ROUNDS AND ELEMENTS REQUIRED FOR THEM
 *****************************************************************************

 Elements required for all types of rounds
-------------------------------------------------------------------------------
|  Element Id                          | Value                                |
-------------------------------------------------------------------------------
| PRO_E_FEATURE_TYPE                   | PRO_FEAT_ROUND                       |
| PRO_E_STD_FEATURE_NAME               | Name of the feature                  |
| PRO_E_RNDCH_SETS                     | Array element                        |
| PRO_E_RNDCH_SET                      | Compound element                     |
|                                      | One element per set present in       |
|                                      | PRO_E_RNDCH_SETS                     |
| PRO_E_RNDCH_ATTACH_TYPE              | Attachment type                      |
| PRO_E_RNDCH_TRANSITIONS              | Array element                        |
-------------------------------------------------------------------------------

 Each set (PRO_E_RNDCH_SET) should have the following elements

-------------------------------------------------------------------------------
|  Element Id                          | Value                                |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_SHAPE_OPTIONS            | Shape type                           |
| PRO_E_RNDCH_COMPOUND_CONIC           | Compound element                     |
| PRO_E_RNDCH_CONIC_TYPE               | Conic or circular                    |
| PRO_E_RNDCH_REFERENCES               | Compound element                     |
| PRO_E_RNDCH_COMPOUND_SPINE           | Compound element                     |
| PRO_E_RNDCH_BALL_SPINE               | Rolling Ball or normal to spine      |
| PRO_E_RNDCH_AUTO_CONTINUE            | Enabled or Disabled                  |
|                                      | Required if                          |
|                                      | PRO_E_RNDCH_REFERENCE_TYPE ==        |
|                                      | PRO_ROUND_REF_EDGE                   |
| PRO_E_RNDCH_RADII                    | Array element                        |
|                                      | Required if                          |
|                                      | ( PRO_E_RNDCH_SHAPE_OPTIONS !=       |
|                                      |   PRO_ROUND_TYPE_THROUGH_CURVE  &&   |
|                                      |   PRO_E_RNDCH_SHAPE_OPTIONS !=       |
|                                      |   PRO_ROUND_TYPE_FULL )              |
| PRO_E_RNDCH_RADIUS                   | Compound element. Should be one per  |
|                                      | radius present                       |
| PRO_E_STD_CURVE_COLLECTION_APPL      | Required if                          |
|                                      | PRO_E_RNDCH_SHAPE_OPTIONS ==         |
|                                      | PRO_ROUND_TYPE_THROUGH_CURVE         |
| PRO_E_RNDCH_AMBIGUITY                |                                      |
-------------------------------------------------------------------------------

 Each PRO_E_RNDCH_COMPOUND_CONIC should have the following elements

-------------------------------------------------------------------------------
|  Element Id                          | Value                                |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_CONIC_VALUE              | Required if PRO_E_RNDCH_CONIC_TYPE ==|
|                                      | PRO_ROUND_CONIC_ENABLE               |
| PRO_E_RNDCH_CONIC_DEP_OPT            | Required if PRO_E_RNDCH_CONIC_TYPE ==|
|                                      | PRO_ROUND_CONIC_ENABLE               |
-------------------------------------------------------------------------------

 Each PRO_E_RNDCH_REFERENCES should have the following elements

-------------------------------------------------------------------------------
|  Element Id                          | Value                                |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_REFERENCE_TYPE           | Mandatory                            |
| PRO_E_STD_CURVE_COLLECTION_APPL      | Required for edge chain round        |
|                                      | Required if                          |
|                                      | PRO_E_RNDCH_REFERENCE_TYPE ==        |
|                                      | PRO_ROUND_REF_EDGE                   |
|                                      | Mixed selection from different solid |
|                                      | bodies and/or quilts is supported.   |
|                                      | Resulting geometry will be attached  |
|                                      | back to the same solid body or quilt |
|                                      | where the referenced edges came from.|
| PRO_E_RNDCH_REFERENCE_SURFACE1       | Required for surf surf or surf surf  |
|                                      | surf full round                      |
|                                      | Required if                          |
|                                      | PRO_E_RNDCH_REFERENCE_TYPE ==        |
|                                      | PRO_ROUND_REF_SURF_SURF              |
| PRO_E_RNDCH_REFERENCE_SURFACE2       | Required for edge surf, surf surf or |
|                                      | surf surf surf full round            |
|                                      | Required if                          |
|                                      | ( PRO_E_RNDCH_REFERENCE_TYPE ==      |
|                                      |   PRO_ROUND_REF_SURF_SURF ||         |
|                                      |   PRO_E_RNDCH_REFERENCE_TYPE ==      |
|                                      |   PRO_ROUND_REF_EDGE_SURF )          |
| PRO_E_RNDCH_REFERENCE_EDGE1          | Required for edge surf or edge pair  |
|                                      | full round                           |
|                                      | Required if                          |
|                                      | ( PRO_E_RNDCH_REFERENCE_TYPE ==      |
|                                      | PRO_ROUND_REF_EDGE_SURF)  ||         |
|                                      | ( PRO_E_RNDCH_REFERENCE_TYPE ==      |
|                                      |   PRO_ROUND_REF_EDGE_EDGE &&         |
|                                      |   PRO_E_RNDCH_SHAPE_OPTIONS ==       |
|                                      |   PRO_ROUND_TYPE_FULL)               |
| PRO_E_RNDCH_REFERENCE_EDGE2          | Required for edge pair full round    |
|                                      | Required if                          |
|                                      | ( PRO_E_RNDCH_REFERENCE_TYPE ==      |
|                                      |   PRO_ROUND_REF_EDGE_EDGE &&         |
|                                      |   PRO_E_RNDCH_SHAPE_OPTIONS ==       |
|                                      |   PRO_ROUND_TYPE_FULL)               |
| PRO_E_RNDCH_REPLACE_SURFACE          | Required for surf surf surf full     |
|                                      | round                                |
|                                      | Required if                          |
|                                      | ( PRO_E_RNDCH_REFERENCE_TYPE ==      |
|                                      |   PRO_ROUND_REF_SURF_SURF &&         |
|                                      |   PRO_E_RNDCH_SHAPE_OPTIONS ==       |
|                                      |   PRO_ROUND_TYPE_FULL)               |
-------------------------------------------------------------------------------

 Each PRO_E_RNDCH_COMPOUND_SPINE should have the following elements

-------------------------------------------------------------------------------
|  Element Id                          | Value                                |
-------------------------------------------------------------------------------
| PRO_E_STD_CURVE_COLLECTION_APPL      | Required for normal to spine round   |
|                                      | Required if                          |
|                                      | PRO_E_RNDCH_BALL_SPINE ==            |
|                                      | PRO_ROUND_NORMAL_TO_SPINE            |
-------------------------------------------------------------------------------

 Each PRO_E_RNDCH_RADIUS should have the following elements

-------------------------------------------------------------------------------
|  Element Id                          | Value                                |
-------------------------------------------------------------------------------
| PRO_E_STD_POINT_COLLECTION_APPL      | Required for variable rounds         |
|                                      | required if                          |
|                                      | PRO_E_RNDCH_SHAPE_OPTIONS ==         |
|                                      | PRO_ROUND_TYPE_VARIABLE              |
| PRO_E_RNDCH_LEG1                     | Compound                             |
| PRO_E_RNDCH_LEG2                     | Required for conic rounds            |
|                                      | Required if                          |
|                                      | PRO_E_RNDCH_CONIC_DEP_OPT ==         |
|                                      | PRO_ROUND_CONIC_INDEPENDENT          |
-------------------------------------------------------------------------------

 Each PRO_E_RNDCH_LEG1 or PRO_E_RNDCH_LEG2 should have the following elements

-------------------------------------------------------------------------------
|  Element Id                          | Value                                |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_LEG_TYPE                 | Mandatory                            |
| PRO_E_RNDCH_LEG_VALUE                | Required if PRO_E_RNDCH_LEG_TYPE ==  |
|                                      | PRO_ROUND_RADIUS_TYPE_VALUE          |
| PRO_E_RNDCH_REFERENCE_EDGE           | Required if PRO_E_RNDCH_LEG_TYPE ==  |
|                                      | PRO_ROUND_RADIUS_THROUGH_POINT       |
| PRO_E_RNDCH_REFERENCE_POINT          | Required if PRO_E_RNDCH_LEG_TYPE ==  |
|                                      | PRO_ROUND_RADIUS_THROUGH_POINT       |
-------------------------------------------------------------------------------

 Each PRO_E_RNDCH_TRANSITIONS can have the following elements

-------------------------------------------------------------------------------
|  Element Id                          | Value                                |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_TRANSITION               | One element for each user defined    |
|                                      | transition                           |
-------------------------------------------------------------------------------

 Each PRO_E_RNDCH_TRANSITION should have the following elements

-------------------------------------------------------------------------------
|  Element Id                          | Value                                |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_TRANS_TYPE               | Mandatory                            |
| PRO_E_RNDCH_TRANS_CAP                | Mandatory                            |
| PRO_E_RNDCH_TRANS_SPHERE_DATA        | Required if PRO_E_RNDCH_TRANS_TYPE ==|
|                                      | PRO_ROUND_TRANS_SPHERE_CORNER        |
| PRO_E_RNDCH_TRANS_PATCH_DATA         | Required if PRO_E_RNDCH_TRANS_TYPE ==|
|                                      | PRO_ROUND_TRANS_PATCH                |
| PRO_E_RNDCH_TRANS_STOP_DATA          | Required if PRO_E_RNDCH_TRANS_TYPE ==|
|                                      | PRO_ROUND_TRANS_STOP_AT_REF          |
-------------------------------------------------------------------------------

 Each PRO_E_RNDCH_TRANS_SPHERE_DATA should have the following elements

-------------------------------------------------------------------------------
|  Element Id                          | Value                                |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_TRANS_RADIUS_OPTIONS     | Mandatory                            |
| PRO_E_RNDCH_TRANS_SPHERE_RADIUS      | Required if                          |
|                                      | PRO_E_RNDCH_TRANS_RADIUS_OPTIONS ==  |
|                                      | PRO_ROUND_TRANS_RADIUS_ENTER_VALUE   |
| PRO_E_RNDCH_TRANS_LEG1_OPTIONS       | Mandatory                            |
| PRO_E_RNDCH_TRANS_LEG1_VALUE         | Required if                          |
|                                      | PRO_E_RNDCH_TRANS_LEG1_OPTIONS ==    |
|                                      | PRO_ROUND_TRANS_RADIUS_ENTER_VALUE   |
| PRO_E_RNDCH_TRANS_LEG2_OPTIONS       | Mandatory                            |
| PRO_E_RNDCH_TRANS_LEG2_VALUE         | Required if                          |
|                                      | PRO_E_RNDCH_TRANS_LEG2_OPTIONS ==    |
|                                      | PRO_ROUND_TRANS_RADIUS_ENTER_VALUE   |
| PRO_E_RNDCH_TRANS_LEG3_OPTIONS       | Mandatory                            |
| PRO_E_RNDCH_TRANS_LEG3_VALUE         | Required if                          |
|                                      | PRO_E_RNDCH_TRANS_LEG3_OPTIONS ==    |
|                                      | PRO_ROUND_TRANS_RADIUS_ENTER_VALUE   |
-------------------------------------------------------------------------------

 Each PRO_E_RNDCH_TRANS_PATCH_DATA should have the following elements

-------------------------------------------------------------------------------
|  Element Id                          | Value                                |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_TRANS_PATCH_REF_SURF     | Mandatory                            |
| PRO_E_RNDCH_TRANS_PATCH_RAD_OPT      | Mandatory                            |
| PRO_E_RNDCH_TRANS_ARC_RADIUS         | Required if                          |
|                                      | PRO_E_RNDCH_TRANS_PATCH_RAD_OPT ==   |
|                                      | PRO_ROUND_TRANS_RADIUS_ENTER_VALUE   |
-------------------------------------------------------------------------------

 Each PRO_E_RNDCH_TRANS_STOP_DATA should have the following elements

-------------------------------------------------------------------------------
|  Element Id                          | Value                                |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_TRANS_STOP_REF_TYPE      | Mandatory                            |
| PRO_E_RNDCH_TRANS_STOP_REFERENCE     | Mandatory                            |
-------------------------------------------------------------------------------


******************************************************************************/

/* Valid values for PRO_E_RNDCH_SHAPE_OPTIONS */
typedef enum pro_round_shape_type
{
   PRO_ROUND_TYPE_CONSTANT        = 0,
   PRO_ROUND_TYPE_VARIABLE        = 2,
   PRO_ROUND_TYPE_FULL            = 8,
   PRO_ROUND_TYPE_THROUGH_CURVE   = 16,
   PRO_ROUND_TYPE_CHORDAL         = (1<<18)
} ProRoundShapeType;

/* Valid values for PRO_E_RNDCH_AUTO_CONTINUE */
typedef enum pro_round_auto_cont_type
{
   PRO_ROUND_AUTO_CONT_DISABLE     = PRO_B_FALSE,
   PRO_ROUND_AUTO_CONT_ENABLE      = PRO_B_TRUE /* Reserved for future use. Not currently supported.  */
} ProRoundAutoContType; 



/* Valid values for PRO_E_RNDCH_CONIC_TYPE */
typedef enum pro_round_conic_type
{
   PRO_ROUND_CONIC_ENABLE         = 1,
   PRO_ROUND_CONIC_DISABLE        = 2,
   PRO_ROUND_CURV_CONTINUOUS      = 3 
} ProRoundConicType;

/* Valid values for PRO_E_RNDCH_CONIC_DEP_OPT */
typedef enum pro_round_conic_Independent_type
{
   PRO_ROUND_CONIC_DEPENDENT      = PRO_B_FALSE,
   PRO_ROUND_CONIC_INDEPENDENT    = PRO_B_TRUE
} ProRoundConicIndependentType;

/* Valid values for PRO_E_RNDCH_REFERENCE_TYPE */
typedef enum pro_round_reference_type
{
   PRO_ROUND_REF_EDGE             = 1,   /* For round and chamfer */
   PRO_ROUND_REF_SURF_SURF        = 2,   /* For round and chamfer */
   PRO_ROUND_REF_EDGE_SURF        = 3,   /* For round and chamfer */
   PRO_ROUND_REF_EDGE_EDGE        = 4    /* Only for round */
} ProRoundReferenceType;

/* Valid values for PRO_E_RNDCH_BALL_SPINE */
typedef enum pro_round_cross_section_type
{
   PRO_ROUND_ROLLING_BALL         = PRO_B_FALSE,
   PRO_ROUND_NORMAL_TO_SPINE      = PRO_B_TRUE
} ProRoundCrossSectionType;

/* Valid values for PRO_E_RNDCH_LEG_TYPE */
typedef enum pro_round_radius_type
{
   PRO_ROUND_RADIUS_TYPE_VALUE    = 1,
   PRO_ROUND_RADIUS_THROUGH_POINT = 2
} ProRoundRadiusType;

/* Valid values for PRO_E_RNDCH_ATTACH_TYPE */
typedef enum pro_round_attach_type
{
   PRO_ROUND_ATTACHED             = 0,
   PRO_ROUND_UNATTACHED           = 9,
   PRO_ROUND_CAPPED_ENDS          = 15
} ProRoundAttachType;

/* Valid values for PRO_E_RNDCH_TRANS_TYPE */
typedef enum pro_round_trans_type
{
   PRO_ROUND_TRANS_INTERSECT      = 1,
   PRO_ROUND_TRANS_BLEND          = 2,
   PRO_ROUND_TRANS_STOP           = 3,
   PRO_ROUND_TRANS_CONTINUE       = 4,
   PRO_ROUND_TRANS_SPHERE_CORNER  = 5,   /* For Round Only */
   PRO_ROUND_TRANS_PATCH          = 6,
   PRO_ROUND_TRANS_BLEND_3SRF     = 7,
   PRO_ROUND_TRANS_PLANE_CORNER   = 10,  /* For Chamfer Only */
   PRO_ROUND_TRANS_RBALL          = 12,
   PRO_ROUND_TRANS_STOP_0_SIDE    = 13,
   PRO_ROUND_TRANS_STOP_1_SIDE    = 14,
   PRO_ROUND_TRANS_STOP_2_SIDE    = 15,
   PRO_ROUND_TRANS_STOP_AT_REF    = 16,
   PRO_ROUND_TRANS_STOP_FULL      = 18,  /* For Round Only */
   PRO_ROUND_TRANS_STOP_2_WE      = 19   /* For Round Only */
} ProRoundTransType;

/* Valid values for PRO_E_RNDCH_TRANS_CAP */
typedef enum pro_round_trans_cap_type
{
   PRO_ROUND_CAPPING_SURF_DISABLE = PRO_B_FALSE,
   PRO_ROUND_CAPPING_SURF_ENABLE  = PRO_B_TRUE
} ProRoundTransCapType;

/* Valid values for PRO_E_RNDCH_TRANS_RADIUS_OPTIONS,
                    PRO_E_RNDCH_TRANS_LEG1_OPTIONS,
                    PRO_E_RNDCH_TRANS_LEG2_OPTIONS,
                    PRO_E_RNDCH_TRANS_LEG3_OPTIONS,
                    PRO_E_RNDCH_TRANS_PATCH_RAD_OPT */
typedef enum pro_round_trans_radius_type
{
   PRO_ROUND_TRANS_RADIUS_ENTER_VALUE = PRO_B_FALSE,
   PRO_ROUND_TRANS_RADIUS_AUTOMATIC   = PRO_B_TRUE
} ProRoundTransRadiusType;

/* Valid values for PRO_E_RNDCH_TRANS_STOP_REF_TYPE */
typedef enum pro_round_trans_stop_ref_type
{
   PRO_ROUND_TRANS_REF_NO_REF      = 0,
   PRO_ROUND_TRANS_REF_GEOM        = 1,
   PRO_ROUND_TRANS_REF_PNTVTX      = 2,
   PRO_ROUND_TRANS_REF_DTMPLN      = 3,
   PRO_ROUND_TRANS_REF_ISOLINE     = 4

} ProRoundTransStopRefType;

extern ProError ProRoundIsAutoRoundMember ( ProFeature *p_feat_handle,
                                            ProBoolean *p_is_auto_round_member);
/*
    Purpose: Determines whether the specified feature is a member of the Auto 
             Round Feature.

    Input Arguments:
        p_feat_handle - The feature to check for completeness.

    Output Arguments:
        p_is_auto_round_member - If the feature is an Auto Round Member, this 
                                 is PRO_B_TRUE. Otherwise, this is PRO_B_FALSE.

    Return Values:
        PRO_TK_NO_ERROR - The function successfully retrieved the information.
        PRO_TK_BAD_INPUTS - The input argument is invalid.

*/

PRO_END_C_DECLS
 
#endif