#ifndef PRODTMPNT
#define PRODTMPNT

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



#include <ProToolkit.h>

PRO_BEGIN_C_DECLS

typedef enum Pro_DPoint_Type
{
   PRO_DPOINT_TYPE_GENERAL            = -1,
   PRO_DPOINT_TYPE_OFFSET_CSYS        = 6,
   PRO_DPOINT_TYPE_FIELD              = 21,
   PRO_DPOINT_TYPE_SKETCHED           = 22
} ProDPointType;

typedef enum pro_dtmpnt_constr_type
{
  PRO_DTMPNT_CONSTR_TYPE_NONE         = -1,
  PRO_DTMPNT_CONSTR_TYPE_ON           =  0,
  PRO_DTMPNT_CONSTR_TYPE_OFFSET       =  1,
  PRO_DTMPNT_CONSTR_TYPE_CENTER       =  2,
  PRO_DTMPNT_CONSTR_TYPE_NORMAL       =  3,
  PRO_DTMPNT_CONSTR_TYPE_PARALLEL     =  4,
  PRO_DTMPNT_CONSTR_TYPE_LENGTH       =  5, /* Length From Start */
  PRO_DTMPNT_CONSTR_TYPE_LENGTH_END   =  6, /* Length From End   */
  PRO_DTMPNT_CONSTR_TYPE_RATIO        =  7, /* Ratio  From Start */
  PRO_DTMPNT_CONSTR_TYPE_RATIO_END    =  8, /* Ratio  From End   */
  PRO_DTMPNT_CONSTR_TYPE_ALONG_X      =  9,
  PRO_DTMPNT_CONSTR_TYPE_ALONG_Y      = 10,
  PRO_DTMPNT_CONSTR_TYPE_ALONG_Z      = 11,
  PRO_DTMPNT_CONSTR_TYPE_CARTESIAN    = 12,
  PRO_DTMPNT_CONSTR_TYPE_CYLINDRICAL  = 13,
  PRO_DTMPNT_CONSTR_TYPE_SPHERICAL    = 14,
  PRO_DTMPNT_CONSTR_TYPE_PROJECT      = 15

} ProDtmpntConstrType;

typedef enum pro_dtmpnt_offcsys_type
{
   PRO_DTMPNT_OFFCSYS_CARTESIAN   = 0,
   PRO_DTMPNT_OFFCSYS_CYLINDRICAL = 2,
   PRO_DTMPNT_OFFCSYS_SPHERICAL   = 4
} ProDtmpntOffCsysType;

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

################################################################################
############################# SKETCHED DATUM POINT #############################
################################################################################

Note: The element tree below is only meant for querying purposes.
      Sketched Datum Points migrated to Sketched Curve feature
      starting with Wildfire 5, so users should employ the element tree of
      Sketched Curve feature in ProDtmCrv.h for creating new sketched datum points.

================================================================================
Element Id                     Element Name             Data Type
================================================================================
|--PRO_E_FEATURE_TYPE          Feature Type             PRO_VALUE_TYPE_INT
|--PRO_E_DPOINT_TYPE           Datum Point Type         PRO_VALUE_TYPE_INT
|--PRO_E_STD_FEATURE_NAME      Feature Name             PRO_VALUE_TYPE_WSTRING
|--PRO_E_STD_SECTION           Section                  Compound
================================================================================

================================================================================
Element Id                        Valid Values
================================================================================
PRO_E_FEATURE_TYPE                PRO_FEAT_DATUM_POINT
PRO_E_DPOINT_TYPE                 PRO_DPOINT_TYPE_SKETCHED  
PRO_E_STD_SECTION                 see ProStdSection.h
================================================================================

The following sub-elements of PRO_E_STD_SECTION must be defined to 
complete feature:

|--PRO_E_STD_SECTION
     |--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                      

################################################################################
############################# FIELD   DATUM POINT ##############################
################################################################################
================================================================================
Element Id                     Element Name             Data Type
================================================================================
|--PRO_E_FEATURE_TYPE          Feature Type             PRO_VALUE_TYPE_INT
|--PRO_E_DPOINT_TYPE           Datum Point Type         PRO_VALUE_TYPE_INT
|--PRO_E_STD_FEATURE_NAME      Feature Name             PRO_VALUE_TYPE_WSTRING
|--PRO_E_DPOINT_FIELD_REF      Placement Reference      PRO_VALUE_TYPE_SELECTION
================================================================================

================================================================================
Element Id                        Valid Values
================================================================================
PRO_E_FEATURE_TYPE                PRO_FEAT_DATUM_POINT
PRO_E_DPOINT_TYPE                 PRO_DPOINT_TYPE_FIELD  
PRO_E_DPOINT_FIELD_REF            Surface / Edge / Curve / Quilt.
                                  Note: UV is used to specify exact location.
================================================================================

################################################################################
########################### OFFSET CSYS DATUM POINT ############################
################################################################################
 |--PRO_E_FEATURE_TYPE
 |
 |--PRO_E_DPOINT_TYPE            
 |
 |--PRO_E_STD_FEATURE_NAME
 |
 |--PRO_E_DPOINT_OFST_CSYS_TYPE
 |
 |--PRO_E_DPOINT_OFST_CSYS_REF
 |
 |--PRO_E_DPOINT_OFST_CSYS_WITH_DIMS
 |
 |--PRO_E_DPOINT_OFST_CSYS_PNTS_ARRAY        (Array of points within DP feature)
      |--PRO_E_DPOINT_OFST_CSYS_PNT
           |--PRO_E_DPOINT_OFST_CSYS_PNT_NAME
           |--PRO_E_DPOINT_OFST_CSYS_DIR1_VAL
           |--PRO_E_DPOINT_OFST_CSYS_DIR2_VAL
           |--PRO_E_DPOINT_OFST_CSYS_DIR3_VAL
================================================================================

================================================================================
Element Id                        Element Name          Data Type
================================================================================
PRO_E_FEATURE_TYPE                Feature Type          PRO_VALUE_TYPE_INT
PRO_E_DPOINT_TYPE                 Datum Point Type      PRO_VALUE_TYPE_INT
PRO_E_STD_FEATURE_NAME            Feature Name          PRO_VALUE_TYPE_WSTRING
PRO_E_DPOINT_OFST_CSYS_TYPE       Reference Csys Type   PRO_VALUE_TYPE_INT
PRO_E_DPOINT_OFST_CSYS_REF        Reference Csys        PRO_VALUE_TYPE_SELECTION
PRO_E_DPOINT_OFST_CSYS_WITH_DIMS  Parametric/Explicit   PRO_VALUE_TYPE_INT
                                  with or without dims.
PRO_E_DPOINT_OFST_CSYS_PNTS_ARRAY Points List           Array
PRO_E_DPOINT_OFST_CSYS_PNT        One Point             Compound
PRO_E_DPOINT_OFST_CSYS_PNT_NAME   Point Name            PRO_VALUE_TYPE_WSTRING
PRO_E_DPOINT_OFST_CSYS_DIR1_VAL   X /   R   /  RHO      PRO_VALUE_TYPE_DOUBLE
PRO_E_DPOINT_OFST_CSYS_DIR2_VAL   Y / THETA /  PHI      PRO_VALUE_TYPE_DOUBLE
PRO_E_DPOINT_OFST_CSYS_DIR3_VAL   Z /   Z   / THETA     PRO_VALUE_TYPE_DOUBLE
================================================================================

================================================================================
Element Id                        Valid Values
================================================================================
PRO_E_FEATURE_TYPE                PRO_FEAT_DATUM_POINT
PRO_E_DPOINT_TYPE                 PRO_DPOINT_TYPE_OFFSET_CSYS
PRO_E_DPOINT_OFST_CSYS_TYPE       see ProDtmpntOffCsysType
PRO_E_DPOINT_OFST_CSYS_REF        Csys
PRO_E_DPOINT_OFST_CSYS_WITH_DIMS  PRO_B_TRUE or PRO_B_FALSE
PRO_E_DPOINT_OFST_CSYS_DIR1_VAL   Depend on PRO_E_DPOINT_OFST_CSYS_TYPE
PRO_E_DPOINT_OFST_CSYS_DIR2_VAL   Depend on PRO_E_DPOINT_OFST_CSYS_TYPE
PRO_E_DPOINT_OFST_CSYS_DIR3_VAL   Depend on PRO_E_DPOINT_OFST_CSYS_TYPE
================================================================================

################################################################################
############################# GENERAL DATUM POINT ##############################
################################################################################
 |--PRO_E_FEATURE_TYPE
 |
 |--PRO_E_DPOINT_TYPE
 |
 |--PRO_E_STD_FEATURE_NAME
 |
 |--PRO_E_DPOINT_POINTS_ARRAY                (Array of points within DP feature)
 |    |--PRO_E_DPOINT_POINT
 |         |--PRO_E_DPOINT_POINT_NAME
 |         |--PRO_E_DPOINT_PLA_CONSTRAINTS   (Array of placement constraints   )
 |              |--PRO_E_DPOINT_PLA_CONSTRAINT
 |                   |--PRO_E_DPOINT_PLA_CONSTR_REF
 |                   |--PRO_E_DPOINT_PLA_CONSTR_TYPE
 |                   |--PRO_E_DPOINT_PLA_CONSTR_VAL
 |         |--PRO_E_DPOINT_DIM_CONSTRAINTS   (Array of dimension constraints   )
 |              |--PRO_E_DPOINT_DIM_CONSTRAINT
 |                   |--PRO_E_DPOINT_DIM_CONSTR_REF
 |                   |--PRO_E_DPOINT_DIM_CONSTR_TYPE
 |                   |--PRO_E_DPOINT_DIM_CONSTR_VAL
================================================================================

================================================================================
Element Id                     Element Name             Data Type
================================================================================
PRO_E_FEATURE_TYPE             Feature Type             PRO_VALUE_TYPE_INT
PRO_E_DPOINT_TYPE              Datum Point Type         PRO_VALUE_TYPE_INT
PRO_E_STD_FEATURE_NAME         Feature Name             PRO_VALUE_TYPE_WSTRING
PRO_E_DPOINT_POINTS_ARRAY      Points List              Array
PRO_E_DPOINT_POINT             One Point                Compound
PRO_E_DPOINT_POINT_NAME        Point Name               PRO_VALUE_TYPE_WSTRING
PRO_E_DPOINT_PLA_CONSTRAINTS   Placement Constraints    Array
PRO_E_DPOINT_PLA_CONSTRAINT    One Placement Constraint Compound
PRO_E_DPOINT_PLA_CONSTR_REF    Placement Ref.           PRO_VALUE_TYPE_SELECTION
PRO_E_DPOINT_PLA_CONSTR_TYPE   Constraint Type          PRO_VALUE_TYPE_INT
PRO_E_DPOINT_PLA_CONSTR_VAL    Value                    PRO_VALUE_TYPE_DOUBLE
PRO_E_DPOINT_DIM_CONSTRAINTS   Dim. Constraints         Array
PRO_E_DPOINT_DIM_CONSTRAINT    One Dim. Constraint      Compound
PRO_E_DPOINT_DIM_CONSTR_REF    Dim. Ref.                PRO_VALUE_TYPE_SELECTION
PRO_E_DPOINT_DIM_CONSTR_TYPE   Constraint Type          PRO_VALUE_TYPE_INT
PRO_E_DPOINT_DIM_CONSTR_VAL    Value                    PRO_VALUE_TYPE_DOUBLE
================================================================================

================================================================================
Element Id                     Valid Values
================================================================================
PRO_E_FEATURE_TYPE             PRO_FEAT_DATUM_POINT
PRO_E_DPOINT_TYPE              PRO_DPOINT_TYPE_GENERAL
PRO_E_STD_FEATURE_NAME
PRO_E_DPOINT_POINTS_ARRAY      N/A
PRO_E_DPOINT_POINT             N/A
PRO_E_DPOINT_POINT_NAME
PRO_E_DPOINT_PLA_CONSTRAINTS   N/A
PRO_E_DPOINT_PLA_CONSTRAINT    N/A
PRO_E_DPOINT_PLA_CONSTR_REF    Depend on context. See below.
PRO_E_DPOINT_PLA_CONSTR_TYPE   See ProDtmpntConstrType
PRO_E_DPOINT_PLA_CONSTR_VAL
PRO_E_DPOINT_DIM_CONSTRAINTS   N/A
PRO_E_DPOINT_DIM_CONSTRAINT    N/A
PRO_E_DPOINT_DIM_CONSTR_REF    Depend on context. See below.
PRO_E_DPOINT_DIM_CONSTR_TYPE   See ProDtmpntConstrType
PRO_E_DPOINT_DIM_CONSTR_VAL
================================================================================
  *************************************************************************** */

/*============================================================================*/
/*                                                                            */
/* PRO_E_DPOINT_PLA_CONSTR_REF                                                */
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                */
/* Valid values for the placement reference are as following:                 */
/*                                                                            */
/* Curve   -    SEL_3D_CURVE, SEL_3D_CABLE, SEL_IGES_WF                       */
/* Edge     | - SEL_3D_EDG                                                    */
/* Axis    -    SEL_3D_AXIS                                                   */
/* Vertex     - SEL_3D_VERT or SEL_CURVE_END                                  */
/* CSYS       - SEL_3D_CSYS                                                   */
/* CSYS_AXIS  - SEL_3D_CSYS_AXIS                                              */
/* Surface    - SEL_3D_SRF, SEL_3D_SRF_LIST                                   */
/* Datum Pnt  - SEL_3D_PNT                                                    */
/*                                                                            */
/* PRO_E_DPOINT_PLA_CONSTR_TYPE                                               */
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                               */
/* Valid values for PRO_E_DPOINT_PLA_CONSTR_TYPE are as following:            */
/*                                                                            */
/* PRO_DTMPNT_CONSTR_TYPE_ON                                                  */
/* PRO_DTMPNT_CONSTR_TYPE_OFFSET                                              */
/* PRO_DTMPNT_CONSTR_TYPE_CENTER                                              */
/* PRO_DTMPNT_CONSTR_TYPE_PARALLEL                                            */
/* PRO_DTMPNT_CONSTR_TYPE_NORMAL                                              */
/* PRO_DTMPNT_CONSTR_TYPE_CARTESIAN                                           */
/* PRO_DTMPNT_CONSTR_TYPE_CYLINDRICAL                                         */
/* PRO_DTMPNT_CONSTR_TYPE_SPHERICAL                                           */
/* PRO_DTMPNT_CONSTR_TYPE_PROJECT                                             */
/*                                                                            */
/* PRO_E_DPOINT_DIM_CONSTR_REF                                                */
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                */
/* Valid values for the dimension references are as following:                */
/*                                                                            */
/* Curve   -    SEL_3D_CURVE, SEL_3D_CABLE, SEL_CRV_PNT, SEL_IGES_WF          */
/* Edge     | - SEL_3D_EDG, SEL_EDG_PNT                                       */
/* Axis    -    SEL_3D_AXIS                                                   */
/* CSYS       - SEL_3D_CSYS                                                   */
/* Surface    - SEL_3D_SRF, SEL_SRF_PNT, SEL_3D_SRF_LIST                      */
/*                                                                            */
/* PRO_E_DPOINT_DIM_CONSTR_TYPE                                               */
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                */
/* Valid values for PRO_E_DPOINT_DIM_CONSTR_TYPE are as following:            */
/*                                                                            */
/* PRO_DTMPNT_CONSTR_TYPE_OFFSET                                              */
/* PRO_DTMPNT_CONSTR_TYPE_LENGTH                                              */
/* PRO_DTMPNT_CONSTR_TYPE_RATIO                                               */
/* PRO_DTMPNT_CONSTR_TYPE_LENGTH_END                                          */
/* PRO_DTMPNT_CONSTR_TYPE_RATIO                                               */
/* PRO_DTMPNT_CONSTR_TYPE_RATIO_END                                           */
/* PRO_DTMPNT_CONSTR_TYPE_ALONG_X                                             */
/* PRO_DTMPNT_CONSTR_TYPE_ALONG_Y                                             */
/* PRO_DTMPNT_CONSTR_TYPE_ALONG_Z                                             */
/*                                                                            */
/*============================================================================*/

/*============================================================================*/
/*                             EXAMPLES                                       */
/*                             ========                                       */
/*                                                                            */
/*                           At Vertex                                        */
/*                           ~~~~~~~~~                                        */
/* PRO_E_DPOINT_PLA_CONSTRAINTS                                               */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Vertex                                  */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ON               */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*                                                                            */
/*                           Offset Point                                     */
/*                           ~~~~~~~~~~~~                                     */
/* PRO_E_DPOINT_PLA_CONSTRAINTS                                               */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Vertex / CSys / DPnt                    */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_OFFSET           */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    Offset Value                            */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Curve / Edge / Axis                     */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_PARALLEL         */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*                                                                            */
/*                                 OR                                         */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Surface                                 */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_NORMAL           */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*                                                                            */
/*                                 OR                                         */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Csys Axis                               */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_PARALLEL         */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*                                                                            */
/*                                 OR                                         */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Csys                                    */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_CARTESIAN or     */
/*                                    PRO_DTMPNT_CONSTR_TYPE_CYLINDRICAL or   */
/*                                    PRO_DTMPNT_CONSTR_TYPE_SPHERICAL        */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*   PRO_E_DPOINT_DIM_CONSTRAINT                                              */
/*     PRO_E_DPOINT_DIM_CONSTR_REF    N/A                                     */
/*     PRO_E_DPOINT_DIM_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ALONG_X          */
/*     PRO_E_DPOINT_DIM_CONSTR_VAL    Offset Value                            */
/*   PRO_E_DPOINT_DIM_CONSTRAINT                                              */
/*     PRO_E_DPOINT_DIM_CONSTR_REF    N/A                                     */
/*     PRO_E_DPOINT_DIM_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ALONG_Y          */
/*     PRO_E_DPOINT_DIM_CONSTR_VAL    Offset Value                            */
/*   PRO_E_DPOINT_DIM_CONSTRAINT                                              */
/*     PRO_E_DPOINT_DIM_CONSTR_REF    N/A                                     */
/*     PRO_E_DPOINT_DIM_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ALONG_Z          */
/*     PRO_E_DPOINT_DIM_CONSTR_VAL    Offset Value                            */
/*                                                                            */
/*     Note:  The ALONG_X/Y/Z above would be used as :                        */
/*            X,   Y,     Z     when offset type is CARTESIAN;                */
/*            R,   THETA, Z     when offset type is CYLINDRICAL;              */
/*            RHO, PHI,   THETA when offset type is SPHERICAL offsting type.  */
/*                                                                            */
/*                                                                            */
/*                           Project Point                                    */
/*                           ~~~~~~~~~~~~~                                    */
/* PRO_E_DPOINT_PLA_CONSTRAINTS                                               */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    DPnt / Curve End / Vertex               */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_PROJECT          */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Axis / Curve / Edge                     */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ON               */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*                                                                            */
/*                                 OR                                         */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Surface                                 */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ON               */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*                                                                            */
/*                                                                            */
/*                           Three Surfaces                                   */
/*                           ~~~~~~~~~~~~~~                                   */
/* PRO_E_DPOINT_PLA_CONSTRAINTS                                               */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Surface                                 */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ON               */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Surface                                 */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ON               */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Surface                                 */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ON               */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*                                                                            */
/*                           On/Offset Surface                                */
/*                           ~~~~~~~~~~~~~~~~~                                */
/* PRO_E_DPOINT_PLA_CONSTRAINTS                                               */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Surface                                 */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ON or            */
/*                                    PRO_DTMPNT_CONSTR_TYPE_OFFSET           */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A - for ON, offset value - for OFFSET */
/* PRO_E_DPOINT_DIM_CONSTRAINTS                                               */
/*   PRO_E_DPOINT_DIM_CONSTRAINT                                              */
/*     PRO_E_DPOINT_DIM_CONSTR_REF    Edge/Surface                            */
/*     PRO_E_DPOINT_DIM_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_OFFSET           */
/*     PRO_E_DPOINT_DIM_CONSTR_VAL    Offset Value                            */
/*   PRO_E_DPOINT_DIM_CONSTRAINT                                              */
/*     PRO_E_DPOINT_DIM_CONSTR_REF    Edge/Surface                            */
/*     PRO_E_DPOINT_DIM_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_OFFSET           */
/*     PRO_E_DPOINT_DIM_CONSTR_VAL    Offset Value                            */
/*                                                                            */
/*                           Curve  X  Surface                                */
/*                           ~~~~~~~~~~~~~~~~~                                */
/* PRO_E_DPOINT_PLA_CONSTRAINTS                                               */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Curve / Axis / Edge or Surface          */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ON               */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Surface or Curve / Axis / Edge          */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ON               */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*                                                                            */
/* Note: If MORE than one intersections exist - The point will be             */
/*       created at the intersection nearest to the curve reference           */
/*       t-parameter value from the ProSelection object. use                  */
/*       ProSelectionUvParamSet() for setting it programmatically.            */
/*                                                                            */
/*                           At Curve's / Surface's Center                    */
/*                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    */
/* PRO_E_DPOINT_PLA_CONSTRAINTS                                               */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Curve / Edge / Surface (Sphere)         */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_CENTER           */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*                                                                            */
/*                           Curve X Curve                                    */
/*                           ~~~~~~~~~~~~~                                    */
/* PRO_E_DPOINT_PLA_CONSTRAINTS                                               */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Curve / Edge / Axis                     */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ON               */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Curve / Edge / Axis                     */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ON               */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/*                                                                            */
/* Note: If MORE than one intersections exist - The point will be             */
/*       created at the intersection nearest to the SECOND reference          */
/*       t-parameter value from the ProSelection object. use                  */
/*       ProSelectionUvParamSet() for setting it programmatically.            */
/*                                                                            */
/*                           On Curve                                         */
/*                           ~~~~~~~~                                         */
/* PRO_E_DPOINT_PLA_CONSTRAINTS                                               */
/*   PRO_E_DPOINT_PLA_CONSTRAINT                                              */
/*     PRO_E_DPOINT_PLA_CONSTR_REF    Curve / Edge/ Axis(valid with ofst pln) */
/*     PRO_E_DPOINT_PLA_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_ON               */
/*     PRO_E_DPOINT_PLA_CONSTR_VAL    N/A                                     */
/* PRO_E_DPOINT_DIM_CONSTRAINTS                                               */
/*                                    [Length on Curve]:                      */
/*   PRO_E_DPOINT_DIM_CONSTRAINT                                              */
/*     PRO_E_DPOINT_DIM_CONSTR_REF    Curve (THE SAME)                        */
/*     PRO_E_DPOINT_DIM_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_LENGTH  or       */
/*                                    PRO_DTMPNT_CONSTR_TYPE_LENGTH_END       */
/*     PRO_E_DPOINT_DIM_CONSTR_VAL    Length Value (from curve start or end)  */
/*                                                                            */
/*                                 OR [Ratio on Curve]:                       */
/*   PRO_E_DPOINT_DIM_CONSTRAINT                                              */
/*     PRO_E_DPOINT_DIM_CONSTR_REF    Curve (THE SAME)                        */
/*     PRO_E_DPOINT_DIM_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_RATIO  or        */
/*                                    PRO_DTMPNT_CONSTR_TYPE_RATIO_END        */
/*     PRO_E_DPOINT_DIM_CONSTR_VAL    Ratio Value (from curve start or end)   */
/*                                                                            */
/*                                 OR [On curve, offset plane]:               */
/*   PRO_E_DPOINT_DIM_CONSTRAINT                                              */
/*     PRO_E_DPOINT_DIM_CONSTR_REF    Surface                                 */
/*     PRO_E_DPOINT_DIM_CONSTR_TYPE   PRO_DTMPNT_CONSTR_TYPE_OFFSET           */
/*     PRO_E_DPOINT_DIM_CONSTR_VAL    Offset Value                            */
/*                                                                            */
/*                                                                            */
/*                   *** ADD MORE EXAMPLES ***                                */
/*                                                                            */
/*============================================================================*/


typedef enum pro_dtmpnt_type
{
   PRO_DTMPNT_TYPE_ON_SURF        = 3,
   PRO_DTMPNT_TYPE_ONVERTEX       = 5,
   PRO_DTMPNT_TYPE_OFFSET_CSYS    = 6,
   PRO_DTMPNT_TYPE_OFFS_SURF      = 14
} ProDtmpntType;

typedef enum pro_dtmpnt_csystype
{
   PRO_DTMPNT_CSYSTYPE_CARTESIAN   = 0,
   PRO_DTMPNT_CSYSTYPE_CYLINDRICAL = 1,
   PRO_DTMPNT_CSYSTYPE_SPHERICAL   = 2
} ProDtmpntCsystype;

typedef enum pro_dtmpnt_dimensions
{
   PRO_DTMPNT_DIMENSIONS_WITH      = 0,
   PRO_DTMPNT_DIMENSIONS_WITHOUT   = 47
} ProDtmpntDimensions;

/*############################################################################*/
/*   The following element tree was used in release 2001 and earlier          */
/*   and is provided for reference purposes only.  Users are advised          */
/*   not to use this element tree for feature creation or modification        */
/*   activities anymore beginning in this release.                            */
/*############################################################################*/

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

Feature element tree

   PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEATURE_TYPE
     |
     |--PRO_E_DTMPNT_PNTS            Array of PRO_E_DTMPNT_PNT
          |--PRO_E_DTMPNT_PNT
               |--PRO_E_DTMPNT_TYPE
         if PRO_E_DTMPNT_TYPE = PRO_DTMPNT_TYPE_ONSURF
                   |--PRO_E_DTMPNT_PLACE_SURF
                   |--PRO_E_DTMPNT_DIM_REF1
                   |--PRO_E_DTMPNT_DIM_REF2
                   |--PRO_E_DTMPNT_DIM_DIST1
                   |--PRO_E_DTMPNT_DIM_DIST2
         if PRO_E_DTMPNT_TYPE = PRO_DTMPNT_TYPE_OFFS_SURF
                   |--PRO_E_DTMPNT_PLACE_SURF
                   |--PRO_E_DTMPNT_DIM_REF1
                   |--PRO_E_DTMPNT_DIM_REF2
                   |--PRO_E_DTMPNT_DIM_DIST1
                   |--PRO_E_DTMPNT_DIM_DIST2
                   |--PRO_E_DTMPNT_OFFSET_DIST
         if PRO_E_DTMPNT_TYPE = PRO_DTMPNT_TYPE_OFFSET_CSYS
                   |--PRO_E_DTMPNT_CSYSTYPE
                   |--PRO_E_DTMPNT_DIMENSIONS
                   |--PRO_E_DTMPNT_CSYS
                   |--PRO_E_DTMPNT_X
                   |--PRO_E_DTMPNT_Y
                   |--PRO_E_DTMPNT_RADIUS
                   |--PRO_E_DTMPNT_THETA
                   |--PRO_E_DTMPNT_Z
                   |--PRO_E_DTMPNT_PHI
         if PRO_E_DTMPNT_TYPE = PRO_DTMPNT_TYPE_ONVERTEX
                   |--PRO_E_DTMPNT_ONV_VTX


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_DTMPNT_PNTS           Points List    Array
PRO_E_DTMPNT_PNT            Point          Compound
PRO_E_DTMPNT_TYPE           Point Type     PRO_VALUE_TYPE_INT       See ProDtmpntType
PRO_E_DTMPNT_PLACE_SURF     Placement Surf PRO_VALUE_TYPE_SELECTION
PRO_E_DTMPNT_DIM_REF1       Dim Ref1       PRO_VALUE_TYPE_SELECTION
PRO_E_DTMPNT_DIM_REF2       Dim Ref2       PRO_VALUE_TYPE_SELECTION
PRO_E_DTMPNT_DIM_DIST1      Ref1 Dist      PRO_VALUE_TYPE_DOUBLE    Any
PRO_E_DTMPNT_DIM_DIST2      Ref2 Dist      PRO_VALUE_TYPE_DOUBLE    Any
PRO_E_DTMPNT_OFFSET_DIST    Offset Dist    PRO_VALUE_TYPE_DOUBLE    Any
PRO_E_DTMPNT_CSYSTYPE       Csys Type      PRO_VALUE_TYPE_INT       See ProDtmpntCsystype
PRO_E_DTMPNT_DIMENSIONS     Dimensions     PRO_VALUE_TYPE_INT       See ProDtmpntDimensions
PRO_E_DTMPNT_CSYS           Ref Csys       PRO_VALUE_TYPE_SELECTION
PRO_E_DTMPNT_X              X              PRO_VALUE_TYPE_DOUBLE
PRO_E_DTMPNT_Y       	    Y              PRO_VALUE_TYPE_DOUBLE
PRO_E_DTMPNT_RADIUS         Radius         PRO_VALUE_TYPE_DOUBLE
PRO_E_DTMPNT_THETA          Theta          PRO_VALUE_TYPE_DOUBLE
PRO_E_DTMPNT_Z              Z              PRO_VALUE_TYPE_DOUBLE
PRO_E_DTMPNT_PHI            Phi            PRO_VALUE_TYPE_DOUBLE
PRO_E_DTMPNT_ONV_VTX        Vertex         PRO_VALUE_TYPE_SELECTION
--------------------------------------------------------------------------------


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

PRO_END_C_DECLS

#endif