#ifndef PRODRAFT_H
#define PRODRAFT_H
/*
   Creo Parametric TOOLKIT declarations related to draft feature.
*/



#include <ProToolkit.h>
#include <ProDirection.h>

PRO_BEGIN_C_DECLS


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

Feature element tree

PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEATURE_TYPE
     |
     |--PRO_E_STD_FEATURE_NAME
     |
     |--PRO_E_DRAFT_TWEAK_OR_INTERSEC
     |
     |--PRO_E_DRAFT_EXTEND
     |
     |--PRO_E_DRAFT_SPLIT
     |
     |--PRO_E_STD_SURF_COLLECTION_APPL
     |
     |--PRO_E_DIRECTION_COMPOUND
     |
     |--PRO_E_DRAFT_CONSTANT_OR_VARIABLE
     |
     |--PRO_E_STD_CURVE_COLLECTION_APPL
     |
     |--PRO_E_DRAFT_SPLIT_GEOM
     |
     |--PRO_E_STD_SECTION
     |  |--PRO_E_SEC_USE_SKETCH
     |
     |--PRO_E_DRAFT_INCLUDE_TANGENT 
     |
     |--PRO_E_DRAFT_SIDE_1
     |  |--PRO_E_DRAFT_NEUTRAL_OBJECT_TYPE_1
     |  |--PRO_E_DRAFT_NEUTRAL_PLANE_1
     |  |--PRO_E_STD_CURVE_COLLECTION_APPL
     |  |--PRO_E_DRAFT_DEPENDENT_1
     |  |--PRO_E_DRAFT_ANGLE_1
     |  |--PRO_E_DRAFT_ANGLES
     |  |  |--PRO_E_DRAFT_ANG_PNT
     |  |     |--PRO_E_STD_POINT_COLLECTION_APPL
     |  |     |--PRO_E_DRAFT_ANGLE
     |  |
     |  |--PRO_E_DRAFT_NEUTRAL_QUILT_1
     |
     |--PRO_E_DRAFT_SIDE_2
        |--PRO_E_DRAFT_NEUTRAL_OBJECT_TYPE_2
        |--PRO_E_DRAFT_NEUTRAL_PLANE_2
        |--PRO_E_STD_CURVE_COLLECTION_APPL
        |--PRO_E_DRAFT_DEPENDENT_2
        |--PRO_E_DRAFT_ANGLE_2
        |--PRO_E_DRAFT_ANGLES
        |  |--PRO_E_DRAFT_ANG_PNT
        |  |  |--PRO_E_STD_POINT_COLLECTION_APPL
        |  |  |--PRO_E_DRAFT_ANGLE
        |   
        |--PRO_E_DRAFT_NEUTRAL_QUILT_2

Feature elements table

-------------------------------------------------------------------------------------
Element Id                         Element Name               Data Type
-------------------------------------------------------------------------------------
PRO_E_FEATURE_TYPE                 Feature Type               PRO_VALUE_TYPE_INT           
PRO_E_STD_FEATURE_NAME             Feature Name               PRO_VALUE_TYPE_WSTRING
PRO_E_DRAFT_TWEAK_OR_INTERSEC      Tweak or Intersect         PRO_VALUE_TYPE_INT                  
				                    - See Note 1.                           
PRO_E_DRAFT_EXTEND                 Extend                     PRO_VALUE_TYPE_INT
				                   - See Note 2.                             
PRO_E_STD_SURF_COLLECTION_APPL     Drafted Surfaces           PRO_VALUE_TYPE_SELECTION
				                   - Refer ProSrfcollection.h
PRO_E_DRAFT_SPLIT                  Split                      PRO_VALUE_TYPE_INT
PRO_E_DIRECTION_COMPOUND           Direction Utility          Compound
				                   - See ProDirection.h       
PRO_E_DRAFT_CONSTANT_OR_VARIABLE   Constant or Variable       PRO_VALUE_TYPE_INT
PRO_E_STD_CURVE_COLLECTION_APPL    Exclude Loop (optional)    PRO_VALUE_TYPE_SELECTION
                                   Draft hinge(s) 
				                   - See ProCrvcollection.h 
PRO_E_STD_SECTION                  Split Sketch (optional)    Compound
				                   - See ProStdSection.h
PRO_E_SEC_USE_SKETCH               Split Sketch (optional)    PRO_VALUE_TYPE_SELECTION
PRO_E_DRAFT_SPLIT_GEOM             Split Geom (optional)      PRO_VALUE_TYPE_SELECTION
PRO_E_DRAFT_INCLUDE_TANGENT        Include Tangent            PRO_VALUE_TYPE_INT
PRO_E_DRAFT_SIDE_1                 1st draft's side           Compound 
PRO_E_DRAFT_NEUTRAL_OBJECT_TYPE_1  Type of Draft hinge        PRO_VALUE_TYPE_INT
PRO_E_DRAFT_NEUTRAL_PLANE_1        Draft hinge                PRO_VALUE_TYPE_SELECTION
PRO_E_DRAFT_DEPENDENT_1            Dependence                 PRO_VALUE_TYPE_INT
PRO_E_DRAFT_ANGLE_1                Draft Angle (constant)     PRO_VALUE_TYPE_DOUBLE
PRO_E_DRAFT_SIDE_2                 1st draft's side           Compound 
PRO_E_DRAFT_NEUTRAL_OBJECT_TYPE_2  Typr of Draft hinge        PRO_VALUE_TYPE_INT
PRO_E_DRAFT_NEUTRAL_PLANE_2        Draft hinge                PRO_VALUE_TYPE_SELECTION
PRO_E_DRAFT_DEPENDENT_2            Dependence                 PRO_VALUE_TYPE_INT
PRO_E_DRAFT_ANGLE_2                Draft Angle (constant)     PRO_VALUE_TYPE_DOUBLE 
PRO_E_DRAFT_ANGLES                 Draft Angles and Points    Array
PRO_E_DRAFT_ANG_PNT                Draft Angle and Point      Compound
PRO_E_STD_POINT_COLLECTION_APPL    Point for Angle            PRO_VALUE_TYPE_SELECTION
				                   - See ProCrvcollection.h                  
PRO_E_DRAFT_ANGLE                  Draft angle (variable)     PRO_VALUE_TYPE_DOUBLE 
PRO_E_DRAFT_NEUTRAL_QUILT_1        Hinge quilt                PRO_VALUE_TYPE_SELECTION
PRO_E_DRAFT_NEUTRAL_QUILT_2        Hinge quilt                PRO_VALUE_TYPE_SELECTION     
-------------------------------------------------------------------------------------


Table Draft 1 : Common elements and their values

 ---------------------------------------------------------------------
 |      Element Id 			           Valid Values                  |
 |-------------------------------------------------------------------|
 |  PRO_E_FEATURE_TYPE                 PRO_FEAT_DRAFT                |
 |  PRO_E_DRAFT_TWEAK_OR_INTERSEC 	   ProDraftTweakOrIntsctOpts     |
 |  PRO_E_DRAFT_EXTEND			       ProDraftExtendOpts            |
 |  PRO_E_DRAFT_SPLIT			       ProDraftSplitOpts             |
 |  PRO_E_DRAFT_CONSTANT_OR_VARIABLE   ProDraftConstOrVarOpts        |
 |  PRO_E_DRAFT_INCLUDE_TANGENT		   ProDraftIncludeTangentOpts    |
 |  PRO_E_DRAFT_NEUTRAL_OBJECT_TYPE_1  ProDraftHingeType	         |
 |  PRO_E_DRAFT_NEUTRAL_OBJECT_TYPE_2  ProDraftHingeType             |
 |  PRO_E_DRAFT_DEPENDENT_1  		   ProDraftDependenceOpts        |
 |  PRO_E_DRAFT_DEPENDENT_2	     	   ProDraftDependenceOpts        |
 ---------------------------------------------------------------------


 Notes :
 ******

Note 1. PRO_E_DRAFT_TWEAK_OR_INTERSEC option is available for features created 
	Pro/E Version prior to WildFire 2.0. 

Note 2. PRO_E_DRAFT_EXTEND - For features created using Pro/E Version prior to 
        WildFire 2.0 - is available only for 
        PRO_E_DRAFT_TWEAK_OR_INTERSEC ==  PRO_DRAFT_UI_INTERSECT

Note 3. PRO_E_DRAFT_DEPENDENT_1 / _2 :: control whether corresponding side 
	is drafted. Depends upon the type of Draft hinge the 
	PRO_E_STD_CURVE_COLLECTION_APPL or if PRO_E_DRAFT_NEUTRAL_PLANE_... 
	is used for Draft hinge.


*/     


/* Include Tangent  :: PRO_E_DRAFT_INCLUDE_TANGENT */
typedef enum  
{
 PRO_DRAFT_UI_NOT_INC_TANG = 0,  /* Not include tangrnts */
 PRO_DRAFT_UI_INC_TANG = 1  /* Include tangrnts */
} ProDraftIncludeTangentOpts;

/* Constant or Variable :: PRO_E_DRAFT_CONSTANT_OR_VARIABLE  */
typedef enum 
{
 PRO_DRAFT_UI_VARIABLE = 0, /* Variable */
 PRO_DRAFT_UI_CONSTANT = 1 /* Constant */
} ProDraftConstOrVarOpts;

/* Tweak or Intersect :: PRO_E_DRAFT_TWEAK_OR_INTERSEC */
typedef enum 
{
 PRO_DRAFT_UI_TWEAK = 0,             /* Tweak */
 PRO_DRAFT_UI_INTERSECT = 1         /* Intersect */
} ProDraftTweakOrIntsctOpts;

/* Extend :: PRO_E_DRAFT_EXTEND */
typedef enum 
{
 PRO_DRAFT_UI_NO_EXTEND = 0,  /* Intersect with Extend */
 PRO_DRAFT_UI_EXTEND =   1         /* Intersect with Extend */
} ProDraftExtendOpts;


/* Split :: PRO_E_DRAFT_SPLIT */
typedef enum 
{
 PRO_DRAFT_UI_SPLIT_NONE = 0,   /* No Split */
 PRO_DRAFT_UI_SPLIT_NEUT = 1,   /* Split on Draft hinge */
 PRO_DRAFT_UI_SPLIT_SURF = 2,   /* Split at Surface */
 PRO_DRAFT_UI_SPLIT_SCTCH = 3  /* Split at Sketch */
} ProDraftSplitOpts;

/* Dependence :: PRO_E_DRAFT_DEPENDENT_1 / _2 */
typedef enum 
{
 PRO_DRAFT_UI_INDEPENDENT = 0,  /* Side drafted independently */ 
 PRO_DRAFT_UI_DEPENDENT = 1,    /* Side drafted dependently */ 
 PRO_DRAFT_UI_NONE = 2         /* Side is not drafted */
} ProDraftDependenceOpts;

/* Type of Draft hinge :: PRO_E_DRAFT_NEUTRAL_OBJECT_TYPE_1 / _2 */
typedef enum 
{
 PRO_DRAFT_UI_NO_NEUT = 0,      /* None, use draft hinge for an other side */
 PRO_DRAFT_UI_PLANE = 1,        /* Plane */
 PRO_DRAFT_UI_CURVE = 2,        /* Curve */
 PRO_DRAFT_UI_QUILT = 3,
 PRO_DRAFT_UI_RND_HINGE = 4
} ProDraftHingeType;   

PRO_END_C_DECLS

#endif