#ifndef PRODTMCRV
#define PRODTMCRV

/*
   Creo Parametric TOOLKIT declarations related to datum curve feature
*/



#include <ProToolkit.h>

PRO_BEGIN_C_DECLS

/*****************************************************************************\

////////////////////////////// SKETCHED /////////////////////////////////////////
Feature - sketched

(1) Feature element tree

   PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEATURE_TYPE
     |
     |--PRO_E_CURVE_TYPE
     |
     |--PRO_E_STD_FEATURE_NAME
     |
     |--PRO_E_STD_SECTION
     |
     |--PRO_E_ATTRIBUTES
     |    |--PRO_E_DTMCRV_DISPLAY_HATCH     if type = sketch (optional)
     |    |--PRO_E_DTMCRV_HATCH_DENSITY     if type = sketch and display hatch = yes.

(2) Feature elements table

--------------------------------------------------------------------------------
Element Id                  Element Name   Data Type                Valid Values
--------------------------------------------------------------------------------
PRO_E_FEATURE_TYPE          Feature Type   PRO_VALUE_TYPE_INT       PRO_FEAT_CURVE
PRO_E_CURVE_TYPE            Curve Type     PRO_VALUE_TYPE_INT       ProCurveType
PRO_E_STD_FEATURE_NAME      Feature Name   PRO_VALUE_TYPE_WSTRING
PRO_E_STD_SECTION           Section        Compound                 see ProStdSection.h
PRO_E_ATTRIBUTES            Attributes     Compound                 see Note 1
PRO_E_DTMCRV_DISPLAY_HATCH  X-hatching     PRO_VALUE_TYPE_INT       PRO_B_TRUE, PRO_B_FALSE
PRO_E_DTMCRV_HATCH_DENSITY  Density        PRO_VALUE_TYPE_DOUBLE
--------------------------------------------------------------------------------

(3) Notes

Note 1: The element PRO_E_ATTRIBUTES and its subelements are directly
	dependent upon the presence of a fully defined PRO_E_STD_SECTION
	element tree (including PRO_E_SKETCHER).
	Values assigned to these elements before fully defining the
	PRO_E_STD_SECTION will be ignored.


Table 1 Notes for Elements required for Sketch Datum Curve
-----------------------------------------------------------------------
| Element Id                 | Comment                                |
-----------------------------------------------------------------------
| PRO_E_STD_SECTION          : Mandatory. Its following sub-elements  |
|                            : must be defined to complete feature:   |
|                            : |                                      |
|                            : |-PRO_E_STD_SEC_SETUP_PLANE            |
|                            : |   |--PRO_E_STD_SEC_PLANE             |
|                            : |   |--PRO_E_STD_SEC_PLANE_VIEW_DIR    |
|                            : |   |--PRO_E_STD_SEC_PLANE_ORIENT_DIR  |
|                            : |   |--PRO_E_STD_SEC_PLANE_ORIENT_REF  |
|                            : |-PRO_E_SKETCHER                       |
|............................:........................................|
| PRO_E_ATTRIBUTES           : Optional. Defined only                 |
|                            : if PRO_E_STD_SECTION is defined.       |
|                            : |                                      |
|                            : |-PRO_E_ATTRIBUTES                     |
|                            : |   |--PRO_E_DTMCRV_DISPLAY_HATCH      |
|                            : |   |--PRO_E_DTMCRV_HATCH_DENSITY      |
|---------------------------------------------------------------------|

Table 2 Notes for Attributes (PRO_E_ATTRIBUTES)
-----------------------------------------------------------------------
| Element Id                 | Comment                                |
-----------------------------------------------------------------------
| PRO_E_DTMCRV_DISPLAY_HATCH : Optional of type PRO_VALUE_TYPE_INT.   |
|                            : It can be PRO_B_TRUE or PRO_B_FALSE    |
|............................:........................................|
| PRO_E_DTMCRV_HATCH_DENSITY : It is of type PRO_VALUE_TYPE_DOUBLE.   |
|                            : Defined only if                        |
|                            : PRO_E_DTMCRV_DISPLAY_HATCH is set to   |
|                            : PRO_B_TRUE                             |
|---------------------------------------------------------------------|



////////////////////////////// TRIM ////////////////////////////////////////////
Feature - Trim Curve ( aliases: Split Curve )

(1) Feature element tree

   PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEATURE_TYPE
     |
     |--PRO_E_CURVE_TYPE
     |
     |--PRO_E_STD_FEATURE_NAME
     |
     |--PRO_E_CRV_TRIM_SPLIT_CURVE
     |
     |--PRO_E_CRV_TRIM_DIVIDER
     |
     |--PRO_E_CRV_TRIM_SPLIT_SIDE

(2) Feature elements table

----------------------------------------------------------------------------------
Element Id                  Element Name   Data Type                Valid Values
----------------------------------------------------------------------------------
PRO_E_FEATURE_TYPE          Feature Type   PRO_VALUE_TYPE_INT       PRO_FEAT_CURVE
PRO_E_CURVE_TYPE            Curve Type     PRO_VALUE_TYPE_INT       ProCurveType
PRO_E_STD_FEATURE_NAME      Feature Name   PRO_VALUE_TYPE_WSTRING
PRO_E_STD_CRV_SPLIT_CURVE   Curve          PRO_VALUE_TYPE_SELECTION PRO_CURVE
PRO_E_STD_CRV_SPLIT_DIVIDER Divider        PRO_VALUE_TYPE_SELECTION PRO_EDGE,PRO_QUILT,
                                                                    PRO_SURFACE, PRO_CURVE,
                                                                    PRO_POINT, PRO_DATUM_PLANE
PRO_E_STD_CRV_SPLIT_SIDE    Side To Keep   PRO_VALUE_TYPE_INT       ProSplitSides
----------------------------------------------------------------------------------

(3) Notes

-----------------------------------------------------------------------
Element Id                    Comment
-----------------------------------------------------------------------
PRO_E_CURVE_TYPE             =PRO_CURVE_TYPE_SPLIT
.......................................................................
PRO_E_CRV_TRIM_SPLIT_SIDE    Mandatory. See ProSplitSides
.......................................................................
PRO_E_CRV_TRIM_SPLIT_CURVE   Mandatory. Trimmed Curve reference
.......................................................................
PRO_E_CRV_TRIM_DIVIDER       Mandatory. Divider reference
-----------------------------------------------------------------------


////////////////////////////// INTERSECT ////////////////////////////////////////
Feature - Intersect Curve ( aliases: Intersect Surfaces Curve and
                                     Two Projections Curve)
(1) Feature element tree

   PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEATURE_TYPE
     |
     |--PRO_E_CURVE_TYPE
     |
     |--PRO_E_STD_FEATURE_NAME
     |
     |--PRO_E_CRV_IP_REF_TYPE
     |
     |--PRO_E_CRV_IP_COMP_REF1
     |    |--PRO_E_CRV_IP_REF1
     |    |--PRO_E_CRV_IP_REF_SEL1_TYPE
     |
     |--PRO_E_CRV_IP_COMP_REF2
     |    |--PRO_E_CRV_IP_REF2
     |    |--PRO_E_CRV_IP_REF_SEL2_TYPE
     |
     |--PRO_E_CRV_IP_COMP_SEC1
     |    |--PRO_E_STD_SECTION
     |--PRO_E_CRV_IP_COMP_SEC2
     |    |--PRO_E_STD_SECTION

(2) Feature elements table

-----------------------------------------------------------------------------------
Element Id                  Element Name    Data Type                Valid Values
-----------------------------------------------------------------------------------
PRO_E_FEATURE_TYPE          Feature Type    PRO_VALUE_TYPE_INT       PRO_FEAT_CURVE
PRO_E_CURVE_TYPE            Curve Type      PRO_VALUE_TYPE_INT       ProCurveType
PRO_E_STD_FEATURE_NAME      Feature Name    PRO_VALUE_TYPE_WSTRING
PRO_E_CRV_IP_REF_TYPE       Reference Type  PRO_VALUE_TYPE_INT
PRO_E_CRV_IP_COMP_REF1      Comp ref1       Compound
PRO_E_CRV_IP_REF1           Surfaces1       PRO_VALUE_TYPE_SELECTION PRO_QUILT,PRO_SURFACE,
                                                                     PRO_DATUM_PLANE,
                                                                     PRO_SOLID_GEOMETRY
PRO_E_CRV_IP_REF_SEL1_TYPE  Selection type1 PRO_VALUE_TYPE_INT       ProCrvIpSelType
PRO_E_CRV_IP_COMP_REF2      Comp ref2       Compound
PRO_E_CRV_IP_REF2           Surfaces2       PRO_VALUE_TYPE_SELECTION PRO_QUILT,PRO_SURFACE,
                                                                     PRO_DATUM_PLANE,
                                                                     PRO_SOLID_GEOMETRY
PRO_E_CRV_IP_REF_SEL2_TYPE  Selection type2 PRO_VALUE_TYPE_INT       ProCrvIpSelType
PRO_E_CRV_IP_COMP_SEC1      Comp sec1       Compound
PRO_E_STD_SECTION           Section1        Compound
PRO_E_CRV_IP_COMP_SEC2      Comp sec2       Compound
PRO_E_STD_SECTION           Section2        Compound
-----------------------------------------------------------------------------------

(3) Notes

Table 1 Notes for common elements
-----------------------------------------------------------------------------
Element Id                    Comment
-----------------------------------------------------------------------------
PRO_E_CURVE_TYPE              =PRO_CURVE_TYPE_INTSRF   for Intersect Surfaces
                              =PRO_CURVE_TYPE_TWO_PROJ for Two Projections
..............................................................................
PRO_E_CRV_IP_REF_TYPE         same value as PRO_E_CURVE_TYPE
                              PRO_CURVE_TYPE_INTSRF/PRO_CURVE_TYPE_TWO_PROJ
-----------------------------------------------------------------------------


Table 2 Notes for Intersect Surfaces ( PRO_CURVE_TYPE_INTSRF )
---------------------------------------------------------------------------------------
Element Id                    Comment
---------------------------------------------------------------------------------------
PRO_E_CRV_IP_COMP_REF1        Compound
.......................................................................................
PRO_E_CRV_IP_REF1             Reference 1  (multiple selections if
                              PRO_E_CRV_IP_REF_SEL1_TYPE = PRO_CURVE_TYPE_MULTIPLE_SEL)
.......................................................................................
PRO_E_CRV_IP_REF_SEL1_TYPE    See ProCrvIpSelType
                              PRO_CURVE_TYPE_WHOLE indicates that PRO_E_CRV_IP_REF1
                              contains only one selection of types PRO_QUILT,
                              PRO_DATUM_PLANE,PRO_SOLID_GEOMETRY
                              PRO_CURVE_TYPE_MULTIPLE_SEL indicates that PRO_E_CRV_IP_REF1
                              contains any number of selections of type PRO_SURFACE
........................................................................................
PRO_E_CRV_IP_COMP_REF2        Compound
........................................................................................
PRO_E_CRV_IP_REF2             Reference 2
                              see comment for PRO_E_CRV_IP_REF1
........................................................................................
PRO_E_CRV_IP_REF_SEL2_TYPE    See ProCrvIpSelType
                              see comment for PRO_E_CRV_IP_REF_SEL1_TYPE
---------------------------------------------------------------------------------------


Table 3 Notes for Two Projections ( PRO_CURVE_TYPE_TWO_PROJ )
-----------------------------------------------------------------------------
Element Id                    Comment
-----------------------------------------------------------------------------
PRO_E_CRV_IP_COMP_SEC1        Compound
..............................................................................
PRO_E_STD_SECTION             Section 1
..............................................................................
PRO_E_CRV_IP_COMP_SEC2        Compound
..............................................................................
PRO_E_STD_SECTION             Section 2
------------------------------------------------------------------------------


//////////////////////////////// WRAP /////////////////////////////////////////
Feature - Wrap Curve ( aliases: Formed Curve)

(1) Feature element tree

   PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEATURE_TYPE
     |
     |--PRO_E_CURVE_TYPE
     |
     |--PRO_E_STD_FEATURE_NAME
     |
     |--PRO_E_CRV_WRAP_SRF_TYPE
     |
     |--PRO_E_CRV_WRAP_SRF
     |
     |--PRO_E_STD_SECTION
     |
     |--PRO_E_CRV_WRAP_FLIP
     |
     |--PRO_E_CRV_WRAP_COORD_SYS
     |
     |--PRO_E_CRV_WRAP_TRIM
     |
     |--PRO_E_CRV_WRAP_STAY_ON_SURF

(2) Feature elements table

-----------------------------------------------------------------------------------
Element Id                  Element Name    Data Type                Valid Values
-----------------------------------------------------------------------------------
PRO_E_FEATURE_TYPE          Feature Type    PRO_VALUE_TYPE_INT       PRO_FEAT_CURVE
PRO_E_CURVE_TYPE            Curve Type      PRO_VALUE_TYPE_INT       ProCurveType
PRO_E_STD_FEATURE_NAME      Feature Name    PRO_VALUE_TYPE_WSTRING
PRO_E_CRV_WRAP_SRF_TYPE     Surface type    PRO_VALUE_TYPE_INT       ProWrapSrfType
PRO_E_CRV_WRAP_SRF          Wrap Surface    PRO_VALUE_TYPE_SELECTION PRO_QUILT,
                                                                     PRO_SOLID_GEOMETRY,
                                                                     PRO_BODY
PRO_E_STD_SECTION           Section         Compound
PRO_E_CRV_WRAP_FLIP         Direction flip  PRO_VALUE_TYPE_INT       ProWrapFlip
PRO_E_CRV_WRAP_COORD_SYS    Coord System Id PRO_VALUE_TYPE_INT
PRO_E_CRV_WRAP_TRIM         Trim curve      PRO_VALUE_TYPE_INT       ProWrapTrim
PRO_E_CRV_WRAP_STAY_ON_SURF Stay on surface PRO_VALUE_TYPE_INT       proWrapStay
------------------------------------------------------------------------------------

(3) Notes

-----------------------------------------------------------------------
Element Id                    Comment
-----------------------------------------------------------------------
PRO_E_CURVE_TYPE              =PRO_CURVE_TYPE_WRAP
.......................................................................
PRO_E_CRV_WRAP_SRF_TYPE       Mandatory, see ProWrapSrfType
.......................................................................
PRO_E_CRV_WRAP_SRF            Mandatory, destination of Wrap,
                              Solid or Quilt surface
.......................................................................
PRO_E_STD_SECTION             Mandatory, curve to wrap
.......................................................................
PRO_E_CRV_WRAP_FLIP           Required if ambiguity of wrap direction
                              exists
.......................................................................
PRO_E_CRV_WRAP_COORD_SYS      Mandatory, start point of wrapping -
                              external id of Coordinate Systemin Sketch,
                              or 0 if Center of Sketch is used

Important: This element is dependent upon the presence of a fully defined
           PRO_E_STD_SECTION element tree. Values assigned to this element
           before fully defining the PRO_E_STD_SECTION will be ignored.
.......................................................................
PRO_E_CRV_WRAP_TRIM           Mandatory, stop wrapping on non-developing
                              edge or fail a feature, yes or no
.......................................................................
PRO_E_CRV_WRAP_STAY_ON_SURF   Mandatory, indicates whether to ignore inner
                              contours and shells for fake lines, yes or no
-----------------------------------------------------------------------



////////////////////////////// OFFSET //////////////////////////////////////////
Feature - Offset Curve ( aliases: Offset From Surface, Offset Curve = Offset Quilt(aka HULL) )

(1) Feature element tree

   PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEATURE_TYPE
     |
     |--PRO_E_CURVE_TYPE
     |
     |--PRO_E_STD_FEATURE_NAME
     |
     |--PRO_E_CRV_OFFS_FEAT_TYPE
     |
     |--PRO_E_DATUM_CURVE_REF_TO_CRV
     |
     |--PRO_E_CRV_OFFS_CRV_REF
     |
     |--PRO_E_CRV_OFFS_SRF_REF
     |
     |--PRO_E_STD_CURVE_COLLECTION_APPL
     |
     |--PRO_E_CRV_OFFS_DIR_FLIP
     |
     |--PRO_E_CRV_OFFS_GRAPH_REF
     |
     |--PRO_E_CRV_OFFS_ST_END
     |
     |--PRO_E_DATUM_CURVE_OFFSET_VAL
     |
     |--PRO_E_DATUM_CURVE_CURVE_MENU
     |    |--PRO_E_STD_CURVE_COLLECTION_APPL
     |    |--PRO_E_DATUM_CURVE_IS_CONSTANT
     |    |--PRO_E_DATUM_CURVE_NO_OF_CURVES
     |    |--PRO_E_DATUM_CURVE_M_DIR
     |    |--PRO_E_DATUM_CURVE_REF_PLANE
     |    |--PRO_E_DATUM_CURVE_VAR_OFFSET_TAB
     |         |--PRO_E_DATUM_CURVE_VAR_OFFSET_CMP
     |              |--PRO_E_DATUM_CURVE_VAR_OFFSET_REF
     |              |--PRO_E_DATUM_CURVE_VAR_OFFSET_VAL

(2) Feature elements table

--------------------------------------------------------------------------------------
Element Id                        Element Name     Data Type                Valid Values
--------------------------------------------------------------------------------------
PRO_E_FEATURE_TYPE                Feature Type     PRO_VALUE_TYPE_INT       PRO_FEAT_CURVE
PRO_E_CURVE_TYPE                  Curve Type       PRO_VALUE_TYPE_INT       ProCurveType
PRO_E_STD_FEATURE_NAME            Feature Name     PRO_VALUE_TYPE_WSTRING
PRO_E_CRV_OFFS_FEAT_TYPE          Feat Subtype     PRO_VALUE_TYPE_INT       ProOffsetFeatType
PRO_E_DATUM_CURVE_REF_TO_CRV      Ref to crv       PRO_VALUE_TYPE_INT       ProHullDtmcrvRefCurvesOpts
PRO_E_CRV_OFFS_CRV_REF            Curve Select     PRO_VALUE_TYPE_SELECTION PRO_CURVE
PRO_E_CRV_OFFS_SRF_REF            Quilt/Surface    PRO_VALUE_TYPE_SELECTION PRO_QUILT,PRO_SURFACE
PRO_E_STD_CURVE_COLLECTION_APPL   Curve Offset     PRO_VALUE_TYPE_POINTER   Curve collection
PRO_E_CRV_OFFS_DIR_FLIP           Direction Flip   PRO_VALUE_TYPE_INT       ProOffsetDirFlip
PRO_E_CRV_OFFS_GRAPH_REF          Graph Select     PRO_VALUE_TYPE_SELECTION PRO_FEATURE
PRO_E_CRV_OFFS_ST_END             Start Graph Pnt  PRO_VALUE_TYPE_INT       ProOffsetStEnd
PRO_E_DATUM_CURVE_OFFSET_VAL      Offset value     PRO_VALUE_TYPE_DOUBLE
PRO_E_DATUM_CURVE_CURVE_MENU      Curve Menu       Compound
PRO_E_STD_CURVE_COLLECTION_APPL   Second fan curve PRO_VALUE_TYPE_POINTER   Curve collection
PRO_E_DATUM_CURVE_IS_CONSTANT     Is_constant      PRO_VALUE_TYPE_INT
PRO_E_DATUM_CURVE_NO_OF_CURVES    Number of curves PRO_VALUE_TYPE_INT
PRO_E_DATUM_CURVE_M_DIR           Measurement Dir  PRO_VALUE_TYPE_INT       ProHullDtmcrvMeasureDirOpts
PRO_E_DATUM_CURVE_REF_PLANE       Reference Plane  PRO_VALUE_TYPE_SELECTION PRO_SURFACE
PRO_E_DATUM_CURVE_VAR_OFFSET_TAB  Var Offset Table Array
PRO_E_DATUM_CURVE_VAR_OFFSET_CMP  Variable Offset  Compound
PRO_E_DATUM_CURVE_VAR_OFFSET_REF  Plane/Point      PRO_VALUE_TYPE_SELECTION PRO_SURFACE, PRO_POINT
PRO_E_DATUM_CURVE_VAR_OFFSET_VAL  Value            PRO_VALUE_TYPE_DOUBLE
-------------------------------------------------------------------------------------

(3) Notes

Table 1 Notes for common elements
---------------------------------------------------------------------------------------
Element Id                        Comment
---------------------------------------------------------------------------------------
PRO_E_CURVE_TYPE                 =PRO_CURVE_TYPE_OFFSET_IN_QUILT
                                 =PRO_CURVE_TYPE_OFFSET
.......................................................................................
PRO_E_CRV_OFFS_FEAT_TYPE         see ProOffsetFeatType
                                 PRO_OFFSET_TANGENT same as PRO_CURVE_TYPE_OFFSET_IN_QUILT
                                 PRO_OFFSET_FROM_SURFACE same as PRO_CURVE_TYPE_OFFSET
........................................................................................
PRO_E_CRV_OFFS_SRF_REF           Mandatory, surface or quilt
........................................................................................
PRO_E_CRV_OFFS_DIR_FLIP          Mandatory, see ProOffsetDirFlip
........................................................................................
PRO_E_DATUM_CURVE_OFFSET_VAL     Mandatory constant offset or scale
----------------------------------------------------------------------------------------

Table 2 Notes for  PRO_CURVE_TYPE_OFFSET
-----------------------------------------------------------------------------
Element Id                       Comment
-----------------------------------------------------------------------------
PRO_E_CRV_OFFS_CRV_REF           Mandatory.
.............................................................................
PRO_E_CRV_OFFS_GRAPH_REF         Mandatory. Pass NULL to use the unit graph as a reference.
.............................................................................
PRO_E_CRV_OFFS_ST_END            Mandatory, see ProOffsetStEnd
-----------------------------------------------------------------------------

All other elements in the element tree are ignored when PRO_E_CURVE_TYPE is
PRO_CURVE_TYPE_OFFSET.



Table 3 Notes for  PRO_CURVE_TYPE_OFFSET_IN_QUILT
----------------------------------------------------------------------------------------
Element Id                       Comment
----------------------------------------------------------------------------------------
This curve type contains data not yet accessible in Creo Parametric TOOLKIT.
Creation, access and redefinition are not yet supported.
----------------------------------------------------------------------------------------



////////////////////////////// TANGENT OFFSET //////////////////////////////////////////
Feature - Offset Curve ( aliases: From Curve  )

This curve type is preserved for accessing legacy data created in
previous Creo Parametric releases.  Creation of new Tangent Offset features
is not supported.

(1) Feature element tree

   PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEATURE_TYPE
     |
     |--PRO_E_CURVE_TYPE
     |
     |--PRO_E_STD_FEATURE_NAME
     |
     |--PRO_E_CRV_TANG_OFFSET_CURVE
     |
     |--PRO_E_CRV_TANG_OFFSET_SURF
     |
     |--PRO_E_CRV_TANG_OFFSET_DIST
     |
     |--PRO_E_CRV_TANG_OFFSET_DIR

(2) Feature elements table

--------------------------------------------------------------------------------------
Element Id                        Element Name     Data Type                Valid Values
--------------------------------------------------------------------------------------
PRO_E_FEATURE_TYPE                Feature Type     PRO_VALUE_TYPE_INT       PRO_FEAT_CURVE
PRO_E_CURVE_TYPE                  Curve Type       PRO_VALUE_TYPE_INT       ProCurveType
PRO_E_STD_FEATURE_NAME            Feature Name     PRO_VALUE_TYPE_WSTRING
PRO_E_CRV_TANG_OFFSET_CURVE       Curve Select     PRO_VALUE_TYPE_SELECTION PRO_CURVE
PRO_E_CRV_TANG_OFFSET_SURF        Quilt/Surface    PRO_VALUE_TYPE_SELECTION PRO_QUILT,PRO_SURFACE
PRO_E_CRV_TANG_OFFSET_DIR         Direction Flip   PRO_VALUE_TYPE_INT       ProOffsetDirection
PRO_E_CRV_TANG_OFFSET_DIST        Offset value     PRO_VALUE_TYPE_DOUBLE
-------------------------------------------------------------------------------------

(3) Notes

---------------------------------------------------------------------------------------
Element Id                        Comment
---------------------------------------------------------------------------------------
PRO_E_CURVE_TYPE                 =PRO_CURVE_TYPE_TANGENT_OFFSET
........................................................................................
PRO_E_CRV_TANG_OFFSET_CURVE       Mandatory, curve
........................................................................................
PRO_E_CRV_TANG_OFFSET_SURF        Mandatory, surface or quilt
........................................................................................
PRO_E_CRV_TANG_OFFSET_DIR         Mandatory flip, see ProOffsetDirection
........................................................................................
PRO_E_CRV_TANG_OFFSET_DIST        Mandatory constant offset
----------------------------------------------------------------------------------------

//////////////////// FROM XSEC     /////////////////////////////////////////////////
Feature : Curve from Xsec

(1) Feature element tree

  PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEATURE_TYPE
     |
     |--PRO_E_CURVE_TYPE
     |
     |--PRO_E_STD_FEATURE_NAME
     |
     |--PRO_E_CRV_FROM_XSEC_REF_XSEC

(2) Feature element table

------------------------------------------------------------------------------------------
Element Id                    Element Name        Data Type                  Valid Values
------------------------------------------------------------------------------------------
PRO_E_FEATURE_TYPE            Feature Type        PRO_VALUE_TYPE_INT         PRO_FEAT_CURVE
PRO_E_CURVE_TYPE              Curve Type          PRO_VALUE_TYPE_INT         ProCurveType
PRO_E_STD_FEATURE_NAME        Feature Name        PRO_VALUE_TYPE_WSTRING
PRO_E_CRV_FROM_XSEC_REF_XSEC  Xsec Reference      PRO_VALUE_TYPE_SELECTION   PRO_XSEC
------------------------------------------------------------------------------------------

(3) Notes

-----------------------------------------------------------------------
Element Id                    Comment
-----------------------------------------------------------------------
PRO_E_CRV_FROM_XSEC_REF_XSEC  Mandatory.  Xsec reference
-----------------------------------------------------------------------


//////////////////// FROM EQUATION /////////////////////////////////////////////////
Feature : Curve from equation

(1) Feature element tree

  PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEATURE_TYPE
     |
     |--PRO_E_CURVE_TYPE
     |
     |--PRO_E_STD_FEATURE_NAME
     |
     |--PRO_E_CRV_FR_EQ_REF_CSYS
     |
     |--PRO_E_CRV_FR_EQ_CSYS_TYPE
     |
     |--PRO_E_CRV_FR_EQ_PARAM_MIN
     |
     |--PRO_E_CRV_FR_EQ_PARAM_MAX
     |
     |--PRO_E_CRV_ENTER_EQUATION

(2) Feature element table

---------------------------------------------------------------------------------------
Element Id                  Element Name        Data Type                  Valid Values
---------------------------------------------------------------------------------------
PRO_E_FEATURE_TYPE          Feature Type        PRO_VALUE_TYPE_INT         PRO_FEAT_CURVE
PRO_E_CURVE_TYPE            Curve Type          PRO_VALUE_TYPE_INT         ProCurveType
PRO_E_STD_FEATURE_NAME      Feature Name        PRO_VALUE_TYPE_WSTRING
PRO_E_CRV_FR_EQ_REF_CSYS    CSYS                PRO_VALUE_TYPE_SELECTION   PRO_CSYS
PRO_E_CRV_FR_EQ_CSYS_TYPE   Coord System Type   PRO_VALUE_TYPE_INT         ProCrvFrEquatCsysTypes
PRO_E_CRV_FR_EQ_PARAM_MIN   Parameter minimum   PRO_VALUE_TYPE_DOUBLE
PRO_E_CRV_FR_EQ_PARAM_MAX   Parameter maximum   PRO_VALUE_TYPE_DOUBLE
PRO_E_CRV_ENTER_EQUATION    Equations           PRO_VALUE_TYPE_WSTRING
---------------------------------------------------------------------------------------

(3) Notes

-----------------------------------------------------------------------
Element Id                    Comment
-----------------------------------------------------------------------
PRO_E_CRV_FR_EQ_REF_CSYS      Mandatory.  Curve reference
.......................................................................
PRO_E_CRV_FR_EQ_CSYS_TYPE     Mandatory.  Coordinate system type
.......................................................................
PRO_E_CRV_FR_EQ_PARAM_MIN     Mandatory.  Parameter minimum
.......................................................................
PRO_E_CRV_FR_EQ_PARAM_MAX     Mandatory.  Parameter maximum
.......................................................................
PRO_E_CRV_ENTER_EQUATION      Mandatory.  Curve equations
-----------------------------------------------------------------------


//////////////////// FROM FROM POINT /////////////////////////////////////////
Feature : Curve from point and direction

(1) Feature element tree

  PRO_E_FEATURE_TREE
     |---PRO_E_FEATURE_TYPE 
     |---PRO_E_CURVE_TYPE  
     |---PRO_E_STD_FEATURE_NAME
     |---PRO_E_CFP_REF_POINT  
     |---PRO_E_STD_SURF_COLLECTION_APPL  
     |---PRO_E_DIRECTION_COMPOUND   
     |---PRO_E_CFP_ANGLE  
     |---PRO_E_CFP_TERMINATION1   
     |    |---PRO_E_CFP_TERM1_TYPE  
     |    |---PRO_E_CFP_LENGTH1  
     |    |---PRO_E_STD_CURVE_COLLECTION_APPL  
     |---PRO_E_CFP_TERMINATION2   
          |---PRO_E_CFP_TERM2_TYPE  
          |---PRO_E_CFP_LENGTH2  
          |---PRO_E_STD_CURVE_COLLECTION_APPL  

(2) Feature element table

---------------------------------------------------------------------------------------
Element Id                  Element Name        Data Type                  Valid Values
---------------------------------------------------------------------------------------
PRO_E_FEATURE_TYPE          Feature Type        PRO_VALUE_TYPE_INT         PRO_FEAT_CURVE
PRO_E_CURVE_TYPE            Curve Type          PRO_VALUE_TYPE_INT         PRO_CURVE_TYPE_FROM_PNT
PRO_E_STD_FEATURE_NAME      Feature Name        PRO_VALUE_TYPE_WSTRING
PRO_E_CFP_REF_POINT         Point               PRO_VALUE_TYPE_SELECTION   PRO_POINT
PRO_E_STD_SURF_COLLECTION_APPL Surfaces         PRO_VALUE_TYPE_POINTER     see ProSrfcollection.h
PRO_E_DIRECTION_COMPOUND    Direction           Compound                   see ProDirection.h
PRO_E_CFP_ANGLE             Angle               PRO_VALUE_TYPE_DOUBLE
PRO_E_CFP_TERMINATION1      Extent 1            Compound
PRO_E_CFP_TERM1_TYPE        Extent 1 type       PRO_VALUE_TYPE_INT         ProCrvFrPntExtentType
PRO_E_CFP_LENGTH1           Length 1            PRO_VALUE_TYPE_DOUBLE
PRO_E_STD_CURVE_COLLECTION_APPL  Bounding chain PRO_VALUE_TYPE_POINTER     See ProCrvcollection.h
PRO_E_CFP_TERMINATION2      Extent 2            Compound
PRO_E_CFP_TERM2_TYPE        Extent 2 type       PRO_VALUE_TYPE_INT         ProCrvFrPntExtentType
PRO_E_CFP_LENGTH2           Length 2            PRO_VALUE_TYPE_DOUBLE

---------------------------------------------------------------------------------------

//////////////////////////// CLOSED LOOP ///////////////////////////////////////
Feature - Closed Loop Curve

(1) Feature element tree

   PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEATURE_TYPE
     |
     |--PRO_E_CURVE_TYPE
     |
     |--PRO_E_STD_FEATURE_NAME
     |
     |--PRO_E_LOOP_CRV_DOMAIN
     |
     |--PRO_E_STD_LOOP_COLLECTION_APPL

(2) Feature elements table

-----------------------------------------------------------------------------------
Element Id                  Element Name    Data Type                Valid Values
-----------------------------------------------------------------------------------
PRO_E_FEATURE_TYPE          Feature Type    PRO_VALUE_TYPE_INT       PRO_FEAT_CURVE
PRO_E_CURVE_TYPE            Curve Type      PRO_VALUE_TYPE_INT       PRO_CURVE_TYPE_CLOSED_LOOP
PRO_E_STD_FEATURE_NAME      Feature Name    PRO_VALUE_TYPE_WSTRING
PRO_E_LOOP_CRV_DOMAIN       Placement       PRO_VALUE_TYPE_SELECTION PRO_QUILT,
                                                                     PRO_SURFACE,
                                                                     PRO_BODY
PRO_E_STD_LOOP_COLLECTION_APPL Boundary chains PRO_VALUE_TYPE_POINTER See ProCrvcollection.h
------------------------------------------------------------------------------------

(3) Notes

-----------------------------------------------------------------------
Element Id                    Comment
-----------------------------------------------------------------------
PRO_E_CURVE_TYPE              = PRO_CURVE_TYPE_CLOSED_LOOP
.......................................................................
PRO_E_LOOP_CRV_DOMAIN         Mandatory, placement for the Closed Loop Curve,
                              Quilt, Datum plane or Solid body.
.......................................................................
PRO_E_STD_LOOP_COLLECTION_APPL Mandatory, boundary chains to form the closed loop
                              on the placement, may contain several curve
                              collection instructions as sub chains.


Note:   More types to follow.
\*****************************************************************************/

typedef enum Pro_Curve_Type
{
   PRO_CURVE_TYPE_NONE            = -1,
   PRO_CURVE_TYPE_SKETCHED        =  0,
   PRO_CURVE_TYPE_INTSRF          =  2,
   PRO_CURVE_TYPE_FROM_XSEC       =  6,
   PRO_CURVE_TYPE_WRAP            =  9,
   PRO_CURVE_TYPE_SPLIT           = 12,
   PRO_CURVE_TYPE_OFFSET          = 13,
   PRO_CURVE_TYPE_TWO_PROJ        = 15,
   PRO_CURVE_TYPE_TANGENT_OFFSET  = 18,
   PRO_CURVE_TYPE_FROM_EQUATION   = 27,
   PRO_CURVE_TYPE_OFFSET_IN_QUILT = 52,
   PRO_CURVE_TYPE_FROM_PNT        = 80,
   PRO_CURVE_TYPE_CLOSED_LOOP     = 81
} ProCurveType;

typedef enum pro_split_sides
{
   PRO_SPLIT_SIDES_SIDE_ONE   = 1,
   PRO_SPLIT_SIDES_BOTH_SIDES = 0,
   PRO_SPLIT_SIDES_SIDE_TWO   = -1
} ProSplitSides;

typedef enum pro_offset_start_pnt
{
   PRO_OFFSET_START_PNT_START = 1,
   PRO_OFFSET_START_PNT_END   = -1
} ProOffsetStartPnt;

typedef enum pro_offset_direction
{
   PRO_OFFSET_DIR_SIDE_ONE   = 1,
   PRO_OFFSET_DIR_SIDE_TWO   = -1
} ProOffsetDirection;


typedef enum pro_crv_ip_sel_type
{
   PRO_CURVE_TYPE_MULTIPLE_SEL = 1,
   PRO_CURVE_TYPE_WHOLE = 2
} ProCrvIpSelType;

typedef enum pro_wrap_srf_type
{
   PRO_WRAP_SOLID_SRF = 1,
   PRO_WRAP_QUILT = 2,
   PRO_WRAP_SOLID_BODY = 3
} ProWrapSrfType;

typedef enum pro_wrap_flip
{
   PRO_WRAP_FLIP_POS = 0,
   PRO_WRAP_FLIP_NEG = 1
} ProWrapFlip;

typedef enum pro_wrap_trim
{
   PRO_WRAP_DONT_TRIM = 0,
   PRO_WRAP_TRIM      = 1
} ProWrapTrim;

typedef enum pro_wrap_stay
{
   PRO_WRAP_STAY      = 0,
   PRO_WRAP_DONT_STAY = 1
} ProWrapStay;

typedef enum pro_compst_crv_type
{
   PRO_COMPST_EXACT  = 1,
   PRO_COMPST_APPROX = 2
} ProCompstCrvType;

typedef enum pro_compst_crv_chain_index
{
   PRO_COMPST_CHAIN_INDEX = 0
} ProCompstCrvChainIndex;

typedef enum pro_projcrv_crv_type
{
  PRO_PROJCRV_CURVE       = 0,
  PRO_PROJCRV_SKETCH      = 1,
  PRO_PROJCRV_COSM_SKETCH = 2
} ProProjCrvCrvType;

typedef enum pro_projcrv_follow_srf_opt
{
   PRO_PROJCRV_FOLLOW_SRF_NO   = 0,
   PRO_PROJCRV_FOLLOW_SRF_YES  = 1
} ProProjCrvFollowSrfOpt;

typedef enum pro_proj_sel_dir_type
{
   PRO_PROJ_SEL_DIR_ALONGDIR     = 0,
   PRO_PROJ_SEL_DIR_NORM2SRF     = 1
} ProProjSelDirType;

typedef enum pro_proj_sketch_dir_type
{
   PRO_PROJ_SKETCH_DIR_NORM2SKETCH     = 0,
   PRO_PROJ_SKETCH_DIR_NORM2SRF        = 1
} ProProjSketchDirType;

typedef enum pro_offset_feat_type
{
   PRO_OFFSET_TANGENT        = 0,
   PRO_OFFSET_FROM_SURFACE   = 1,
   PRO_OFFSET_BOUNDARY       = 2
} ProOffsetFeatType;

typedef enum pro_proj_offset_dir_flip
{
   PRO_OFFSET_DIR_FLIP_OK     = 0,
   PRO_OFFSET_DIR_FLIP_FLIP   = 1
} ProOffsetDirFlip;

typedef enum pro_proj_offset_st_end
{
   PRO_OFFSET_ST_GRAPH     = 0,
   PRO_OFFSET_END_GRAPH   = 1
} ProOffsetStEnd;

typedef enum _ProHullDtmcrvRefCurvesOpts
{
    PRO_HULL_DTMCRV_REF_CURVES_OPTS_ONE_CURVE   =  40,
    PRO_HULL_DTMCRV_REF_CURVES_OPTS_TWO_CURVES  =  41
} ProHullDtmcrvRefCurvesOpts;

typedef enum _ProHullDtmcrvMeasureDirOpts
{
    PRO_HULL_DTMCRV_MEASURE_DIR_OPTS_NORMAL_TO_CURVE    =  46,
    PRO_HULL_DTMCRV_MEASURE_DIR_OPTS_ALONG_YOZ_PLANE    =  47,
    PRO_HULL_DTMCRV_MEASURE_DIR_OPTS_PARALLEL_TO_PLANE  =  48
} ProHullDtmcrvMeasureDirOpts;

typedef enum _ProCrvFrEquatCsysTypes
{
    PRO_CRV_FR_EQ_CSYS_TYPE_CARTESIAN   = 0,
    PRO_CRV_FR_EQ_CSYS_TYPE_CYLINDRICAL = 1,
    PRO_CRV_FR_EQ_CSYS_TYPE_SPHERICAL   = 2
}ProCrvFrEquatCsysTypes;

typedef enum _ProCrvFrPntExtentType
{
    PRO_CRV_FR_PNT_EXTENT_NONE   = 0,
    PRO_CRV_FR_PNT_EXTENT_LENGTH = 1,
    PRO_CRV_FR_PNT_EXTENT_REF    = 2,
    PRO_CRV_FR_PNT_EXTENT_DOMAIN = 3
} ProCrvFrPntExtentType;

PRO_END_C_DECLS

#endif