#ifndef PROHOLE_H
#define PROHOLE_H

/* 
  Element Tree changes for Release 2002:
  
  1. PRO_E_HLE_SKETCHER element has been replaced by standard sketcher element - PRO_E_SKETCHER.
  2. Multi-valued elements, as in PRO_E_HLE_DIM_REF1 and PRO_E_HLE_DIM_REF2,
     are no longer needed and hence not supported. 
  3. Hole feature has been enhanced by addition of Exit Countersink option. 
*/

/*
   Creo Parametric TOOLKIT declarations related to hole feature.
*/



#include <ProFeature.h>
#include <ProParamval.h>
#include <ProBodyOpts.h>

PRO_BEGIN_C_DECLS


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

Feature element tree

   PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEATURE_TYPE
     |
     |--PRO_E_FEATURE_FORM
     |   
     |--PRO_E_HLE_COM
     |    |--PRO_E_HLE_TYPE_NEW 
     |    |--PRO_E_HLE_STAN_TYPE
     |    |--PRO_E_HLE_THRDSERIS
     |    |--PRO_E_HLE_FITTYPE  
     |    |--PRO_E_HLE_SCREWSIZE
     |    |--PRO_E_HLE_ADD_THREAD 
     |    |--PRO_E_HLE_ADD_CBORE
     |    |--PRO_E_HLE_ADD_CSINK
     |    |--PRO_E_HLE_MAKE_LIGHTWT
     |    |
     |    |--PRO_E_DIAMETER
     |    |
     |    |--PRO_E_HOLE_STD_DEPTH
     |    |    |--PRO_E_HOLE_DEPTH_TO
     |    |    |    |--PRO_E_HOLE_DEPTH_TO_TYPE
     |    |    |    |--PRO_E_EXT_DEPTH_TO_VALUE
     |    |    |    |--PRO_E_EXT_DEPTH_TO_REF
     |    |    |--PRO_E_HOLE_DEPTH_FROM
     |    |         |--PRO_E_HOLE_DEPTH_FROM_TYPE
     |    |         |--PRO_E_EXT_DEPTH_FROM_VALUE
     |    |         |--PRO_E_EXT_DEPTH_FROM_REF
     |    |
     |    |--PRO_E_HLE_HOLEDIAM
     |    |--PRO_E_HLE_DEPTH
     |    |--PRO_E_HLE_CSINKANGLE
     |    |--PRO_E_HLE_CBOREDEPTH
     |    |--PRO_E_HLE_CBOREDIAM
     |    |--PRO_E_HLE_CSINKDIAM
     |    |--PRO_E_HLE_DEPTH_DIM_TYPE
     |    |--PRO_E_HLE_THRD_DEPTH
     |    |--PRO_E_HLE_THRDDEPTH
     |    |--PRO_E_HLE_TAPERED_STRT_DEPTH_OPT
     |    |--PRO_E_HLE_DRILLANGLE
     |    |--PRO_E_HLE_DRILLDEPTH
     |    |--PRO_E_STD_HOLE_DEPTH_REF
     |    |--PRO_E_HLE_ADD_TAPERED_TIP_ANGLE
     |    |--PRO_E_HLE_TAPERED_STRT_DIA
     |    |--PRO_E_HLE_TAPERED_STRT_DEPTH
     |    |--PRO_E_HLE_TAPERED_TIP_ANGLE
     |    |--PRO_E_SKETCHER
     |    |--PRO_E_HLE_CRDIR_FLIP
     |    |--PRO_E_HLE_ADD_EXIT_CSINK
     |    |--PRO_E_HLE_EXIT_CSINKANGLE
     |    |--PRO_E_HLE_EXIT_CSINKDIAM
     |    |--PRO_E_HLE_ADD_PARAMETERS
     |    |--PRO_E_HOLE_PARAMETERS
     |    |--PRO_E_HLE_ADD_NOTE
     |    |--PRO_E_HOLE_NOTE
     |    |--PRO_E_HLE_TOP_CLEARANCE
     |    |--PRO_E_HLE_THRDTOSEL 
     |
     |--PRO_E_HLE_PLACEMENT
     |    |--PRO_E_HLE_PRIM_REF
     |    |--PRO_E_HLE_PL_TYPE  
     |    |--PRO_E_STD_SECTION
     |    |--PRO_E_HOLE_SKDP_OPTIONS
     |    |--PRO_E_HLE_DIM_REF1 
     |    |--PRO_E_HLE_PLC_ALIGN_OPT1
     |    |--PRO_E_HLE_DIM_DIST1
     |    |--PRO_E_HLE_DIM_REF2
     |    |--PRO_E_HLE_PLC_ALIGN_OPT2
     |    |--PRO_E_HLE_DIM_DIST2
     |    |--PRO_E_LIN_HOLE_DIR_REF
     |    |--PRO_E_HLE_AXIS     
     |    |--PRO_E_HLE_REF_PLANE
     |    |--PRO_E_HLE_REF_ANG
     |    |--PRO_E_HLE_DIM_DIA  
     |    |--PRO_E_HLE_DIM_RAD  
     |    |--PRO_E_HLE_DIM_LIN  
     |    |--PRO_E_HLE_NORM_PLA 
     |    |--PRO_E_HLE_NORM_OFFST   
     |    |--PRO_E_HLE_PLCMNT_PLANE   
     |    |--PRO_E_HLE_REF_PLANE_1
     |    |--PRO_E_HLE_REF_ANG_1
     |    |--PRO_E_HLE_FT_DIR_REF
     |    |--PRO_E_HLE_FT_DIR_OPT
     |
     |--PRO_E_INT_PARTS
     |
     |--PRO_E_PATTERN
     |
     |--PRO_E_STD_FEATURE_NAME
     |
     |--PRO_E_BODY
     |    |
     |    |--PRO_E_BODY_USE
     |    |
     |    |--PRO_E_BODY_SELECT
	 

Feature elements table

------------------------------------------------------------------------------
Element Id                       Element Name           Data Type             
------------------------------------------------------------------------------

PRO_E_FEATURE_TYPE               Feature Type           PRO_VALUE_TYPE_INT
PRO_E_FEATURE_FORM               Feature Form           PRO_VALUE_TYPE_INT
PRO_E_HLE_COM                    Hole                   Compound 
PRO_E_HLE_TYPE_NEW               Hole Type              PRO_VALUE_TYPE_INT
PRO_E_HLE_STAN_TYPE              Standard Type          PRO_VALUE_TYPE_INT
PRO_E_HLE_THRDSERIS              Thread Series          PRO_VALUE_TYPE_INT
PRO_E_HLE_FITTYPE                Fit Type               PRO_VALUE_TYPE_INT
PRO_E_HLE_SCREWSIZE              Screw Size             PRO_VALUE_TYPE_INT
PRO_E_HLE_ADD_THREAD             Add Thread             PRO_VALUE_TYPE_INT
PRO_E_HLE_ADD_CBORE              Add Counterbore        PRO_VALUE_TYPE_INT
PRO_E_HLE_ADD_CSINK              Add Countersink        PRO_VALUE_TYPE_INT
PRO_E_HLE_MAKE_LIGHTWT           Make light weight      PRO_VALUE_TYPE_INT
PRO_E_DIAMETER                   Diameter               PRO_VALUE_TYPE_DOUBLE
PRO_E_HOLE_STD_DEPTH             Depth Element          Compound 
PRO_E_HOLE_DEPTH_TO              Depth Two              Compound 
PRO_E_HOLE_DEPTH_TO_TYPE         Depth Two              PRO_VALUE_TYPE_INT
PRO_E_EXT_DEPTH_TO_VALUE         Depth Value            PRO_VALUE_TYPE_DOUBLE
PRO_E_EXT_DEPTH_TO_REF           Reference              PRO_VALUE_TYPE_SELECTION
PRO_E_HOLE_STD_DEPTH             Depth                  Compound
PRO_E_HOLE_DEPTH_FROM            Depth One              Compound 
PRO_E_HOLE_DEPTH_FROM_TYPE       Depth One              PRO_VALUE_TYPE_INT
PRO_E_EXT_DEPTH_FROM_VALUE       Depth Value            PRO_VALUE_TYPE_DOUBLE
PRO_E_EXT_DEPTH_FROM_REF         Reference              PRO_VALUE_TYPE_SELECTION
PRO_E_HLE_HOLEDIAM               Diameter               PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_DRILLANGLE             Drillhead Angle        PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_CSINKANGLE             Csink Angle            PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_CBOREDEPTH             Counterbore Depth      PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_CBOREDIAM              Counterbore Diameter   PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_CSINKDIAM              Csink Diameter         PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_THRDDEPTH              Thread Depth           PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_DRILLDEPTH             Drill Depth            PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_TAPERED_STRT_DEPTH_OPT Straight Depth Options PRO_VALUE_TYPE_INT
PRO_E_HLE_THRD_DEPTH             Thread Depth           PRO_VALUE_TYPE_INT
PRO_E_HLE_DEPTH                  Depth                  PRO_VALUE_TYPE_INT
PRO_E_STD_HOLE_DEPTH_REF         Reference              PRO_VALUE_TYPE_SELECTION
PRO_E_HLE_DEPTH_DIM_TYPE         Depth dim scheme       PRO_VALUE_TYPE_INT
PRO_E_HLE_ADD_TAPERED_TIP_ANGLE  Tapered Tip            PRO_VALUE_TYPE_INT
PRO_E_HLE_TAPERED_STRT_DIA       Straight Diameter      PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_TAPERED_STRT_DEPTH     Straight Depth         PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_TAPERED_TIP_ANGLE      Tapered Tip Angle      PRO_VALUE_TYPE_DOUBLE
PRO_E_SKETCHER                   Sketcher               N/A
PRO_E_HLE_CRDIR_FLIP             Creation Direction     PRO_VALUE_TYPE_INT
PRO_E_HLE_ADD_EXIT_CSINK         Use Exit Countersink   PRO_VALUE_TYPE_INT
PRO_E_HLE_EXIT_CSINKANGLE        Exit Csink Angle       PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_EXIT_CSINKDIAM         Exit Csink Diameter    PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_ADD_PARAMETERS         Add Parameters         PRO_VALUE_TYPE_INT
PRO_E_HOLE_PARAMETERS            Hole Parameters        N/A
PRO_E_HLE_ADD_NOTE               Add Hole Note          PRO_VALUE_TYPE_INT
PRO_E_HOLE_NOTE                  Hole Note              The element is not
                                                        accessible through Creo
                                                        Parametric TOOLKIT
PRO_E_HLE_TOP_CLEARANCE          Top Clearance          PRO_VALUE_TYPE_INT
PRO_E_HLE_PLACEMENT              Placement              Compound
PRO_E_HLE_PRIM_REF               Primary Reference      PRO_VALUE_TYPE_SELECTION
PRO_E_HLE_PL_TYPE                Placement Options      PRO_VALUE_TYPE_INT
PRO_E_STD_SECTION                Section                Compound
PRO_E_HOLE_SKDP_OPTIONS          Use Options            PRO_VALUE_TYPE_INT
PRO_E_HLE_DIM_REF1               Dimension  Ref 1       PRO_VALUE_TYPE_SELECTION
PRO_E_HLE_PLC_ALIGN_OPT1         Ref Align option1      PRO_VALUE_TYPE_INT
PRO_E_HLE_DIM_DIST1              Distance 1             PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_DIM_REF2               Dimension  Ref 2       PRO_VALUE_TYPE_SELECTION
PRO_E_HLE_PLC_ALIGN_OPT2         Ref Align option2      PRO_VALUE_TYPE_INT
PRO_E_HLE_DIM_DIST2              Distance 2             PRO_VALUE_TYPE_DOUBLE
PRO_E_LIN_HOLE_DIR_REF           Ref Dir Reference      PRO_VALUE_TYPE_SELECTION
PRO_E_HLE_AXIS                   Axis                   PRO_VALUE_TYPE_SELECTION
PRO_E_HLE_REF_PLANE              Reference Plane        PRO_VALUE_TYPE_SELECTION
PRO_E_HLE_REF_ANG                Angle                  PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_DIM_DIA                Diameter               PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_DIM_RAD                Radius                 PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_DIM_LIN                Linear Distance        PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_NORM_PLA               Normal Plane           PRO_VALUE_TYPE_SELECTION
PRO_E_HLE_NORM_OFFST             Offset                 PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_PLCMNT_PLANE           Placement Plane        PRO_VALUE_TYPE_SELECTION
PRO_E_HLE_REF_PLANE_1            Reference Plane        PRO_VALUE_TYPE_SELECTION
PRO_E_HLE_REF_ANG_1              Angle                  PRO_VALUE_TYPE_DOUBLE
PRO_E_HLE_FT_DIR_REF             Direction reference    PRO_VALUE_TYPE_SELECTION
PRO_E_HLE_FT_DIR_OPT             Direction option       PRO_VALUE_TYPE_INT
PRO_E_INT_PARTS                  Intsct Parts           N/A
PRO_E_PATTERN                    Pattern                N/A
PRO_E_STD_FEATURE_NAME           Feature Name           PRO_VALUE_TYPE_WSTRING
PRO_E_BODY                       Body options           Compound
PRO_E_BODY_USE                   Body use option        PRO_VALUE_TYPE_INT
PRO_E_BODY_SELECT                Selected body ref      PRO_VALUE_TYPE_SELECTION
PRO_E_HLE_THRDTOSEL              Reference              PRO_VALUE_TYPE_SELECTION

--------------------------------------------------------------------------------
Table Hole:1 : Common element for all type of hole and it's value
-------------------------------------------------------------------
| Element Id               | Value                                |
-------------------------------------------------------------------
| PRO_E_FEATURE_TYPE       | PRO_FEAT_HOLE                        |
|.................................................................|
| PRO_E_FEATURE_FORM       | of type ProHleType                   |
|                          | = PRO_HLE_TYPE_STRAIGHT              |
|                          |        for straight hole             |
|                          | = PRO_HLE_TYPE_SKETCHED              |
|                          |        for other type of hole        |
|.................................................................|
| PRO_E_BODY_USE               | PRO_BODY_USE_ALL , PRO_BODY_USE_SELECTED |
| PRO_E_BODY                 | Compound                           |
| PRO_E_HLE_TYPE_NEW         | ProHleNewType                      |
| PRO_E_HLE_STAN_TYPE        | ProHleStandType                    |
| PRO_E_HLE_FITTYPE          | ProHleFittype                      |
| PRO_E_HLE_ADD_THREAD       | ProHleAddThrdFlag                  |
| PRO_E_HLE_ADD_CBORE        | ProHleAddCboreFlag                 |
| PRO_E_HLE_ADD_CSINK        | ProHleAddCsinkFlag                 |
| PRO_E_HLE_MAKE_LIGHTWT     | ProHleLightWtFlag                  |
| PRO_E_HOLE_DEPTH_FROM_TYPE | ProHleStraightDepType              |
| PRO_E_HOLE_DEPTH_TO_TYPE   | ProHleStraightDepType              |
| PRO_E_HLE_THRD_DEPTH       | ProHleThrdDepType                  |
| PRO_E_HLE_DEPTH            | ProHleStdDepType                   |
| PRO_E_HLE_DEPTH_DIM_TYPE   | ProHleDepDimScheme                 |
| PRO_E_HLE_CRDIR_FLIP       | ProHleCrDir                        |
| PRO_E_HLE_ADD_EXIT_CSINK   | ProHleAddExitCsinkFlag             |
| PRO_E_HLE_ADD_NOTE         | ProHleAddNoteFlag                  |
| PRO_E_HLE_TOP_CLEARANCE    | ProHleTopClrncFlag                 |
| PRO_E_HLE_PLC_ALIGN_OPT1   | ProHlePlcAlgnFlag                  |
| PRO_E_HLE_PLC_ALIGN_OPT2   | ProHlePlcAlgnFlag                  |
| PRO_E_HLE_PL_TYPE          | ProHlePlType                       |
| PRO_E_HLE_FT_DIR_OPT       | ProHleDirOption                    |
| PRO_E_STD_SECTION          | Please refer ProStdSection.h       |
| PRO_E_HOLE_SKDP_OPTIONS    | ProHleSkdpOption                   |
-------------------------------------------------------------------
--------------------------------------------------------------------------------
Table Hole:2 Elements required for PRO_E_HLE_COM compound element for
             different type of holes 
------------------------------------------------------------------------------
|          | Element Id                 | Comment                            |
------------------------------------------------------------------------------
| Straight : PRO_E_HLE_TYPE_NEW         : Mandatory                          |
|   Hole   : PRO_E_HLE_MAKE_LIGHTWT     : Mandatory                          |
|          : PRO_E_DIAMETER             : Mandatory                          |
|          : PRO_E_HOLE_STD_DEPTH       : Mandatory                          |
|          : PRO_E_HOLE_DEPTH_TO        : Mandatory                          |
|          : PRO_E_HOLE_DEPTH_TO_TYPE   : Mandatory                          |
|          : PRO_E_EXT_DEPTH_TO_VALUE   : Depends on PRO_E_HOLE_DEPTH_TO_TYPE|
|          : PRO_E_EXT_DEPTH_TO_REF     : Depends on PRO_E_HOLE_DEPTH_TO_TYPE|
|          : PRO_E_HOLE_DEPTH_FROM      : Mandatory                          |
|          : PRO_E_HOLE_DEPTH_FROM_TYPE : Mandatory                          |
|          : PRO_E_EXT_DEPTH_FROM_VALUE : Depends on PRO_E_HOLE_DEPTH_FROM_TYPE
|          : PRO_E_EXT_DEPTH_FROM_REF   : Depends on PRO_E_HOLE_DEPTH_FROM_TYPE
|          : PRO_E_HLE_TOP_CLEARANCE    : Mandatory                          |
|          : PRO_E_HLE_ADD_PARAMETERS   : Mandatory                          |
|          : PRO_E_HLE_ADD_NOTE         : Mandatory                          |
|          : PRO_E_HOLE_NOTE            : Depends on PRO_E_HLE_ADD_NOTE      |
|..........:............................:....................................|
| Sketch   : PRO_E_HLE_TYPE_NEW         : Mandatory                          |
|  Hole    : PRO_E_SKETCHER             : Mandatory                          |
|          : PRO_E_HLE_CRDIR_FLIP       : Mandatory                          |
|          : PRO_E_HLE_TOP_CLEARANCE    : Mandatory                          |
|..........:............................:....................................|
| Standard : PRO_E_HLE_TYPE_NEW         : Mandatory                          |
|  Tapped  : PRO_E_HLE_STAN_TYPE        : Mandatory                          |
|   Hole   : PRO_E_HLE_THRDSERIS        : Mandatory                          |
|          : PRO_E_HLE_FITTYPE          : Mandatory == PRO_HLE_CLOSE_FIT     |
|          : PRO_E_HLE_SCREWSIZE        : Mandatory                          |
|          : PRO_E_HLE_ADD_THREAD       : Mandatory                          |
|          : PRO_E_HLE_ADD_CBORE        : Mandatory                          |
|          : PRO_E_HLE_ADD_CSINK        : Mandatory                          |
|          : PRO_E_HLE_HOLEDIAM         : Mandatory                          |
|          : PRO_E_HLE_DRILLANGLE       : Required for variable depth hole   |
|          : PRO_E_HLE_CSINKANGLE       : Required for countersink option    |
|          : PRO_E_HLE_CBOREDEPTH       : Required for counterbore option    |
|          : PRO_E_HLE_CBOREDIAM        : Required for counterbore option    |
|          : PRO_E_HLE_CSINKDIAM        : Required for countersink option    |
|          : PRO_E_HLE_THRDDEPTH        : Mandatory ( even for a non threaded|
|          :                            : hole, or a thru threaded hole, for |
|          :                            : above two cases, element may not   |
|          :                            : have vaild value,required for UI ) |
|          : PRO_E_HLE_DRILLDEPTH       : Mandatory ( even for a thruall hole|
|          :                            : for this case, element may not     |
|          :                            : have vaild value,required for UI ) |
|          : PRO_E_HLE_THRD_DEPTH       : Required for threaded hole         |
|          : PRO_E_HLE_DEPTH            : Mandatory                          |
|          : PRO_E_STD_HOLE_DEPTH_REF   : Depends on PRO_E_HLE_DEPTH         |
|          : PRO_E_HLE_DEPTH_DIM_TYPE   : Depends on PRO_E_HLE_DEPTH         |
|          : PRO_E_HLE_CRDIR_FLIP       : Mandatory                          |
|          : PRO_E_HLE_ADD_EXIT_CSINK   : Required for Thru all hole         |
|          : PRO_E_HLE_EXIT_CSINKANGLE  : Required for exit countersink option
|          : PRO_E_HLE_EXIT_CSINKDIAM   : Required for exit countersink option
|          : PRO_E_HLE_ADD_NOTE         : Required for Hole note             |
|          : PRO_E_HOLE_NOTE            : Depends on PRO_E_HLE_ADD_NOTE      |
|          : PRO_E_HLE_TOP_CLEARANCE    : Mandatory                          |
|..........:............................:....................................|
| Standard : PRO_E_HLE_TYPE_NEW         : Mandatory                          |
| Clearance: PRO_E_HLE_STAN_TYPE        : Mandatory                          |
|   Hole   : PRO_E_HLE_THRDSERIS        : Mandatory                          |
|          : PRO_E_HLE_FITTYPE          : Mandatory                          |
|          : PRO_E_HLE_SCREWSIZE        : Mandatory                          |
|          : PRO_E_HLE_ADD_THREAD       : Mandatory                          |
|          : PRO_E_HLE_ADD_CBORE        : Mandatory                          |
|          : PRO_E_HLE_ADD_CSINK        : Mandatory                          |
|          : PRO_E_HLE_HOLEDIAM         : Mandatory                          |
|          : PRO_E_HLE_DRILLANGLE       : Required for variable depth hole   |
|          : PRO_E_HLE_CSINKANGLE       : Required for countersink option    |
|          : PRO_E_HLE_CBOREDEPTH       : Required for counterbore option    |
|          : PRO_E_HLE_CBOREDIAM        : Required for counterbore option    |
|          : PRO_E_HLE_CSINKDIAM        : Required for countersink option    |
|          : PRO_E_HLE_DEPTH            : Mandatory                          |
|          : PRO_E_HLE_CRDIR_FLIP       : Mandatory                          |
|          : PRO_E_HLE_ADD_EXIT_CSINK   : Required for Thru all hole         |
|          : PRO_E_HLE_EXIT_CSINKANGLE  : Required for exit countersink option
|          : PRO_E_HLE_EXIT_CSINKDIAM   : Required for exit countersink option
|          : PRO_E_HLE_ADD_NOTE         : Required for Hole note             |
|          : PRO_E_HOLE_NOTE            : Depends on PRO_E_HLE_ADD_NOTE      |
|          : PRO_E_HLE_TOP_CLEARANCE    : Mandatory                          |
|..........:............................:....................................|
| Custom   : PRO_E_HLE_TYPE_NEW         : Mandatory                          |
|  Hole    : PRO_E_HLE_ADD_CBORE        : Mandatory                          |
|          : PRO_E_HLE_ADD_CSINK        : Mandatory                          |
|          : PRO_E_HLE_HOLEDIAM         : Mandatory                          |
|          : PRO_E_HLE_DRILLANGLE       : Required for variable depth hole   |
|          : PRO_E_HLE_CSINKANGLE       : Required for countersink option    |
|          : PRO_E_HLE_CBOREDEPTH       : Required for counterbore option    |
|          : PRO_E_HLE_CBOREDIAM        : Required for counterbore option    |
|          : PRO_E_HLE_CSINKDIAM        : Required for countersink option    |
|          : PRO_E_HLE_DEPTH            : Mandatory                          |
|          : PRO_E_HLE_DEPTH_DIM_TYPE   : Depends on PRO_E_HLE_DEPTH         |
|          : PRO_E_HLE_CRDIR_FLIP       : Mandatory                          |
|          : PRO_E_HLE_ADD_EXIT_CSINK   : Required for Thru all hole         |
|          : PRO_E_HLE_EXIT_CSINKANGLE  : Required for exit countersink option
|          : PRO_E_HLE_EXIT_CSINKDIAM   : Required for exit countersink option
|          : PRO_E_HLE_TOP_CLEARANCE    : Mandatory                          |
|          : PRO_E_HLE_ADD_PARAMETERS   : Mandatory                          |
|          : PRO_E_HLE_ADD_NOTE         : Mandatory                          |
|          : PRO_E_HOLE_NOTE            : Depends on PRO_E_HLE_ADD_NOTE      |
|..........:............................:....................................|
| Standard : PRO_E_HLE_TYPE_NEW         : Mandatory                          |
| Tapered  : PRO_E_HLE_STAN_TYPE        : Mandatory                          |
|  Hole    : PRO_E_HLE_THRDSERIS        : Mandatory                          |
|          : PRO_E_HLE_SCREWSIZE        : Mandatory                          |
|          : PRO_E_HLE_ADD_THREAD       : Mandatory                          |
|          : PRO_E_HLE_ADD_CBORE        : Mandatory                          |
|          : PRO_E_HLE_ADD_CSINK        : Mandatory                          |
|          : PRO_E_HLE_HOLEDIAM         : Mandatory                          |
|          : PRO_E_HLE_DRILLANGLE       : Required for variable depth hole   |
|          : PRO_E_HLE_CSINKANGLE       : Required for countersink option    |
|          : PRO_E_HLE_CBOREDEPTH       : Required for counterbore option    |
|          : PRO_E_HLE_CBOREDIAM        : Required for counterbore option    |
|          : PRO_E_HLE_CSINKDIAM        : Required for countersink option    |
|          : PRO_E_HLE_THRDDEPTH        : Mandatory                          |
|          : PRO_E_HLE_DRILLDEPTH       : Mandatory                          |
|          : PRO_E_HLE_TAPERED_STRT_DEPTH_OPT : Mandatory                    |
|          : PRO_E_HLE_THRD_DEPTH       : Required for threaded hole         |
|          : PRO_E_HLE_DEPTH            : Mandatory                          |
|          : PRO_E_STD_HOLE_DEPTH_REF   : Depends on PRO_E_HLE_DEPTH         |
|          : PRO_E_HLE_ADD_TAPERED_TIP_ANGLE : Mandatory                     |
|          : PRO_E_HLE_TAPERED_STRT_DIA : Depends on                         |
|          :                              PRO_E_HLE_TAPERED_STRT_DEPTH_OPT   |
|          : PRO_E_HLE_TAPERED_STRT_DEPTH : Depends on                       |
|          :                                PRO_E_HLE_TAPERED_STRT_DEPTH_OPT |
|          : PRO_E_HLE_TAPERED_TIP_ANGLE : Depends on                        |
|          :                               PRO_E_HLE_ADD_TAPERED_TIP_ANGLE   |
|          : PRO_E_HLE_CRDIR_FLIP       : Mandatory                          |
|          : PRO_E_HLE_ADD_EXIT_CSINK   : Required for Thru all hole         |
|          : PRO_E_HLE_EXIT_CSINKANGLE  : Required for exit countersink option
|          : PRO_E_HLE_EXIT_CSINKDIAM   : Required for exit countersink option
|          : PRO_E_HLE_ADD_NOTE         : Required for Hole note             |
|          : PRO_E_HOLE_NOTE            : Depends on PRO_E_HLE_ADD_NOTE      |
|          : PRO_E_HLE_TOP_CLEARANCE    : Mandatory                          |
|----------------------------------------------------------------------------|

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

Table Hole:3 : Which subelements of PRO_E_HLE_COMP is valid and when ?
------------------------------------------------------------------------------
|          | Element Id                 | Comment                            |
------------------------------------------------------------------------------
| Straight : PRO_E_HLE_TYPE_NEW         : = PRO_HLE_NEW_TYPE_STRAIGHT        |
|   Hole   :.................................................................| 
|          : PRO_E_HLE_MAKE_LIGHTWT     : = PRO_HLE_REGULAR                  |
|          :                            : ( For regular hole )               |
|          :                            : = PRO_HLE_LIGHTWT                  |
|          :                            : ( For lightweight hole )           |
|          :.................................................................|
|          : PRO_E_DIAMETER             : Stores the diameter double value   |
|          :.................................................................|
|          : PRO_E_HOLE_STD_DEPTH       : Depth compound Element             |
|          :                            :....................................|
|          : PRO_E_HOLE_DEPTH_TO        : First Side depth info              |
|          :                            : ( compound element )               |
|          : PRO_E_HOLE_DEPTH_TO_TYPE   : of type ProHleStraightDepType      |
|          : PRO_E_EXT_DEPTH_TO_VALUE   : Stores variable depth double value |
|          :                            : when PRO_E_HOLE_DEPTH_TO_TYPE      |
|          :                            :      == PRO_HLE_STRGHT_BLIND_DEPTH |
|          : PRO_E_EXT_DEPTH_TO_REF     : Stores the upto reference          |
|          :                            : when PRO_E_HOLE_DEPTH_TO_TYPE      |
|          :                            :  != PRO_HLE_STRGHT_BLIND_DEPTH and |
|          :                            :  != PRO_HLE_STRGHT_NONE_DEPTH      |
|          :                            :....................................|
|          : PRO_E_HOLE_DEPTH_FROM      : Second Side depth info             |
|          :                            : ( Compound Element  )              |
|          : PRO_E_HOLE_DEPTH_FROM_TYPE : of ProHleStraightDepType           |
|          : PRO_E_EXT_DEPTH_FROM_VALUE : Stores variable depth double value |
|          :                            : when PRO_E_HOLE_DEPTH_FROM_TYPE    |
|          :                            :      == PRO_HLE_STRGHT_BLIND_DEPTH |
|          : PRO_E_EXT_DEPTH_FROM_REF   : stores the upto reference          |
|          :                            : when PRO_E_HOLE_DEPTH_FROM_TYPE    |
|          :                            :  != PRO_HLE_STRGHT_BLIND_DEPTH  and|
|          :                            :  != PRO_HLE_STRGHT_NONE_DEPTH   and|
|          :                            :  != PRO_HLE_STRGHT_SYM_DEPTH       |
|..........:............................:....................................|
|          : PRO_E_HLE_ADD_PARAMETERS   : It is an option to add parameters. |
|          :                            : Of type ProHleAddParametersFlag    |
|          :                            : The default value is no params,    |
|          :                            : i.e. PRO_HOLE_NO_PARAMETERS_FLAG.  |
|          :                            : For add parameters the value is    |
|          :                            : PRO_HOLE_ADD_PARAMETERS_FLAG       |
|          :............................:....................................|
|          : PRO_E_HOLE_PARAMETERS      : This element is not accessible     |
|          :                            : through Creo Parametric TOOLKIT.   |
|..........:............................:....................................|
|          : PRO_E_HLE_ADD_NOTE         : It is an option for add note.      |
|          :                            : Of type ProHleAddNoteFlag          |
|          :                            : The default value is no note, i.e. |
|          :                            : PRO_HOLE_NO_NOTE_FLAG. For add note|
|          :                            : the value is PRO_HOLE_ADD_NOTE_FLAG|
|          :............................:....................................|
|          : PRO_E_HOLE_NOTE            : This element is not accessible     |
|          :                            : through Creo Parametric TOOLKIT.   |
|          :                            : Default note will be created, when |
|          :                            : PRO_E_HLE_ADD_NOTE ==              |
|          :                            : PRO_HOLE_ADD_NOTE_FLAG             |
|..........:............................:....................................|
| Sketch   : PRO_E_HLE_TYPE_NEW         : = PRO_HLE_NEW_TYPE_SKETCH          |
|  Hole    :.................................................................|
|          : PRO_E_SKETCHER             : It is a 2D Sketcher Element        |
|          :.................................................................|
|          : PRO_E_HLE_CRDIR_FLIP       : Direction of creation.             |
|          :                            : Of type ProHleCrDir                |
|..........:............................:....................................|
| Standard : PRO_E_HLE_TYPE_NEW         : = PRO_HLE_NEW_TYPE_STANDARD        |
|   Hole   :............................:....................................|
|          : PRO_E_HLE_STAN_TYPE        : Of type ProHleStandType            |
|          :............................:....................................| 
|          : PRO_E_HLE_THRDSERIS        : It is an integer. The *.hol files  |
|          :                            : get loaded as specified in Notes(1)|
|          :                            : From the *.hol files, different    |
|          :                            : THREAD_SERIES information are gath-|
|          :                            : ered and a list is formed.This ele-|
|          :                            : ment stores the current index to   |
|          :                            : the list.                          |
|          :............................:....................................|
|          : PRO_E_HLE_FITTYPE          : Of type ProHleFittype              |
|          :                            : Available for clearance hole       |
|          :                            : i.e. When PRO_E_HLE_STAN_TYPE ==   |
|          :                            : PRO_HLE_CLEARANCE_TYPE             |
|          :............................:....................................|
|          : PRO_E_HLE_SCREWSIZE        : It is an integer.It stores an index|
|          :                            : to the screw_size list. Selecting  |
|          :                            : a thread series, choose one of the |
|          :                            : .hol files. From that file screw-  |
|          :                            : size list is extracted.            |
|          :............................:....................................|
|          : PRO_E_HLE_ADD_THREAD       : It is an option for addding thread.|
|          :                            : Available for tapped hole,i.e when |
|          :                            : PRO_E_HLE_STAN_TYPE ==             |
|          :                            : PRO_HLE_TAPPED_TYPE                |
|          :                            : Of type ProHleAddThrdFlag.         |
|          :                            : For add thread option it's value is|
|          :                            : PRO_HLE_ADD_THREAD. For no thread  |
|          :                            : option,  the value  is             |
|          :                            : PRO_HLE_NO_THREAD.                 |
|          :............................:....................................|
|          : PRO_E_HLE_ADD_CBORE        : It is an option for Counter Bore.  |
|          :                            : Of type ProHleAddCboreFlag.        |
|          :                            : For counter bore it's value is     |
|          :                            : PRO_HLE_ADD_CBORE. For no counter  |
|          :                            : bore option,  the value is         |
|          :                            : PRO_HLE_NO_CBORE  .                |
|          :............................:....................................|
|          : PRO_E_HLE_ADD_CSINK        : It is an option for Counter Sink.  |
|          :                            : Of type ProHleAddCsinkFlag         |
|          :                            : For counter sink it's value is     |
|          :                            : PRO_HLE_ADD_CSINK. For no counter  |
|          :                            : sink, value is PRO_HLE_NO_CSINK    |
|          :............................:....................................|
|          : PRO_E_HLE_HOLEDIAM         : Stores Drill Diameter double value.|
|          :                            : Refer Note # 5                     |
|          :............................:....................................|
|          : PRO_E_HLE_DRILLANGLE       : Stores Drill Angle double value.   |
|          :                            : Avaialable for tapped hole with    |
|          :                            : variable depth. i.e. when          |
|          :                            : PRO_E_HLE_STAN_TYPE ==             |
|          :                            :       PRO_HLE_TAPPED_TYPE      and |
|          :                            : PRO_E_HLE_DEPTH ==                 |
|          :                            :       PRO_HLE_STD_VAR_DEPTH        |
|          :............................:....................................|
|          : PRO_E_HLE_CSINKANGLE       : Stores counter sink angle double   |
|          :                            : value. Available for countersink   |
|          :                            : option i.e. PRO_E_HLE_ADD_CSINK == |
|          :                            : PRO_HLE_ADD_CSINK .                |
|          :............................:....................................|
|          : PRO_E_HLE_CBOREDEPTH       : Stores counter bore depth double   |
|          :                            : value. Available for counterbore   |
|          :                            : option i.e. PRO_E_HLE_ADD_CBORE == |
|          :                            : PRO_HLE_ADD_CBORE.                 |
|          :............................:....................................|
|          : PRO_E_HLE_CBOREDIAM        : Stores counterbore diameter double |
|          :                            : value. Available for counterbore   |
|          :                            : option i.e. PRO_E_HLE_ADD_CBORE == |
|          :                            : PRO_HLE_ADD_CBORE.                 |
|          :............................:....................................|
|          : PRO_E_HLE_CSINKDIAM        : Stores countersink diameter double |
|          :                            : value. Available for countersink   |
|          :                            : option i.e. PRO_E_HLE_ADD_CSINK == |
|          :                            : PRO_HLE_ADD_CSINK .                |
|          :............................:....................................|
|          : PRO_E_HLE_THRDDEPTH        : Stores thread depth double value.  |
|          :                            : Available for tapped hole, with    |
|          :                            : variable thread option. i.e.       |
|          :                            : PRO_E_HLE_STAN_TYPE ==             |
|          :                            :       PRO_HLE_TAPPED_TYPE      and |
|          :                            : PRO_E_HLE_ADD_THREAD ==            |
|          :                            :       PRO_HLE_ADD_THREAD       and |
|          :                            : PRO_E_HLE_THRD_DEPTH ==            |
|          :                            :       PRO_HLE_VARIABLE_THREAD.     |
|          :............................:....................................|
|          : PRO_E_HLE_DRILLDEPTH       : Stores drill depth double value.   |
|          :                            : Available for tapped hole , with   |
|          :                            : variable depth option. i.e.        |
|          :                            : PRO_E_HLE_STAN_TYPE ==             |
|          :                            :       PRO_HLE_TAPPED_TYPE      and |
|          :                            : PRO_E_HLE_DEPTH ==                 |
|          :                            :       PRO_HLE_STD_VAR_DEPTH        |
|          :............................:....................................|
|          : PRO_E_HLE_TAPERED_STRT_DEPTH_OPT : It is an option for different|
|          :                            : straight drill depth types.        |
|          :                            : Of type ProHleTaperStrDepType      |
|          :............................:....................................|
|          : PRO_E_HLE_THRD_DEPTH       : It is an option for different type |
|          :                            : of thread depth.                   |
|          :                            : Of type ProHleThrdDepType          |
|          :                            : Available for tapped hole with     |
|          :                            : thread option.i.e.                 |
|          :                            : PRO_E_HLE_STAN_TYPE ==             |
|          :                            :       PRO_HLE_TAPPED_TYPE      and |
|          :                            : PRO_E_HLE_ADD_THREAD ==            |
|          :                            :       PRO_HLE_ADD_THREAD           |
|          :                            : Note :All options are avilable in  |
|          :                            : both assembly & part level.        |
|          :............................:....................................|
|          : PRO_E_HLE_DEPTH            : It is an option for different type |
|          :                            : drill depth type.                  |
|          :                            : Of type ProHleStdDepType           |
|          :                            : Note : PRO_HLE_STD_VAR_DEPTH is not|
|          :                            : available for clearance hole i.e   |
|          :                            : not for PRO_E_HLE_STAN_TYPE ==     |
|          :                            : PRO_HLE_CLEARANCE_TYPE             |
|          :............................:....................................|
|          : PRO_E_STD_HOLE_DEPTH_REF   : Stores reference ,                 |
|          :                            : when PRO_E_HLE_DEPTH               |
|          :                            :   == PRO_HLE_STD_THRU_UNTIL_DEPTH  |
|          :                            :                 OR                 |
|          :                            :   == PRO_HLE_STD_TO_SEL_DEPTH      |
|          :............................:....................................|
|          : PRO_E_HLE_DEPTH_DIM_TYPE   : Available when PRO_E_HLE_DEPTH is  |
|          :                            : PRO_HLE_STD_VAR_DEPTH              |
|          :                            : Stores the information of blind    |
|          :                            : drill depth dimensioning scheme.   |
|          :                            : PRO_HLE_DEP_SHOULDER_DIM_SCHEME is |
|          :                            : default. PRO_HLE_DEP_TIP_DIM_SCHEME|
|          :                            : can be used to dimension till tip. |
|          :............................:....................................|
|          : PRO_E_HLE_ADD_TAPERED_TIP_ANGLE : An option for Tapered Tip.    |
|          :                            : Of type ProHleAddTaperedTipAngFlag |
|          :                            : For Tapered Tip it's value is      |
|          :                            : PRO_HLE_ADD_TAPERED_TIP_ANGLE.     |
|          :                            : For No Tapered Tip, value is       |
|          :                            : PRO_HLE_NO_TAPERED_TIP_ANGLE       |
|          :............................:....................................|
|          : PRO_E_HLE_TAPERED_STRT_DIA : Stores taper straight hole diameter|
|          :                            : double value.                      |
|          :............................:....................................|
|          : PRO_E_HLE_TAPERED_STRT_DEPTH : Stores taper straight depth      |
|          :                            : double value. Available for tapered|
|          :                            : hole, with blind depth option. i.e.|
|          :                            : PRO_E_HLE_STAN_TYPE ==             |
|          :                            :       PRO_HLE_TAPERED_TYPE     and |
|          :                            : PRO_E_HLE_TAPERED_STRT_DEPTH_OPT ==|
|          :                            :       HOLE_BLIND_DEPTH_TYPE        |
|          :............................:....................................|
|          : PRO_E_HLE_TAPERED_TIP_ANGLE: Stores tapered tip angle           |
|          :                            : double value. Available for        |
|          :                            : Tapered Tip option i.e.            |
|          :                              PRO_E_HLE_ADD_TAPERED_TIP_ANGLE == |
|          :                            : PRO_HLE_ADD_TAPERED_TIP_ANGLE .    |
|          :............................:....................................|
|          : PRO_E_HLE_CRDIR_FLIP       : Direction of creation.             |
|          :                            : Of type ProHleCrDir                |
|          :............................:....................................|
|          : PRO_E_HLE_ADD_EXIT_CSINK   : An option for Exit Counter Sink.   |
|          :                            : Of type ProHleAddExitCsinkFlag     |
|          :                            : For exit counter sink it's value is|
|          :                            : PRO_HLE_ADD_EXIT_CSINK. For no     |
|          :                            : countersink, value is              |
|          :                            : PRO_HLE_NO_EXIT_CSINK              |
|          :                            : Not available for assembly mode.   |
|          :                            : In part mode will fail if entry and 
|          :                            : exit surfaces of hole are non-planar 
|          :                            : and non-parallel                   |
|          :............................:....................................|
|          : PRO_E_HLE_EXIT_CSINKANGLE  : Stores exit countersink angle double
|          :                            : value. Available for exit countersink
|          :                            : option i.e.                        |
|          :                            : PRO_E_HLE_ADD_EXIT_CSINK ==        |
|          :                            : PRO_HLE_ADD_EXIT_CSINK             |
|          :............................:....................................|
|          : PRO_E_HLE_EXIT_CSINKDIAM   : Stores exit countersink diameter   |
|          :                            : double value. Available for exit   |
|          :                            : countersink option i.e.            |
|          :                            : PRO_E_HLE_ADD_EXIT_CSINK ==        |
|          :                            : PRO_HLE_ADD_EXIT_CSINK             |
|          :............................:....................................|
|          : PRO_E_HOLE_PARAMETERS      : This element is not accessible     |
|          :                            : through Creo Parametric TOOLKIT.   |
|..........:............................:....................................|
|          : PRO_E_HLE_ADD_NOTE         : It is an option for add note.      |
|          :                            : Of type ProHleAddNoteFlag          |
|          :                            : The default value is add note, i.e.|
|          :                            : PRO_HOLE_ADD_NOTE_FLAG. For no note|
|          :                            : the value is PRO_HOLE_NO_NOTE_FLAG.|
|          :............................:....................................|
|          : PRO_E_HOLE_NOTE            : This element is not accessible     |
|          :                            : through Creo Parametric TOOLKIT.   |
|          :                            : Default note will be created, when |
|          :                            : PRO_E_HLE_ADD_NOTE ==              |
|          :                            : PRO_HOLE_ADD_NOTE_FLAG             |
|..........:............................:....................................|
|          : PRO_E_HLE_THRDTOSEL        : Stores reference ,                 |
|          :                            : when PRO_E_HLE_THRD_DEPTH          |
|          :                            :   == PRO_HLE_TO_SELECTED_THREAD    |
|..........:............................:....................................|
| Custom   : PRO_E_HLE_TYPE_NEW         : = PRO_HLE_CUSTOM_TYPE              |
|   Hole   :............................:....................................|
|          : PRO_E_HLE_ADD_CBORE        : The description of these           |
|          :............................: items are same as                  |
|          : PRO_E_HLE_ADD_CSINK        : described in                       |
|          :............................: Standard hole section.             |
|          : PRO_E_HLE_HOLEDIAM         :                                    |
|          :............................:                                    |
|          : PRO_E_HLE_DRILLANGLE       :                                    |
|          :............................:                                    |
|          : PRO_E_HLE_CSINKANGLE       :                                    |
|          :............................:                                    |
|          : PRO_E_HLE_CBOREDEPTH       :                                    |
|          :............................:                                    |
|          : PRO_E_HLE_CBOREDIAM        :                                    |
|          :............................:                                    |
|          : PRO_E_HLE_CSINKDIAM        :                                    |
|          :............................:                                    |
|          : PRO_E_HLE_DRILLDEPTH       :                                    |
|          :............................:                                    |
|          : PRO_E_HLE_DEPTH            :                                    |
|          :............................:                                    |
|          : PRO_E_STD_HOLE_DEPTH_REF   :                                    |
|          :............................:                                    |
|          : PRO_E_HLE_DEPTH_DIM_TYPE   :                                    |
|          :............................:                                    |
|          : PRO_E_HLE_CRDIR_FLIP       :                                    |
|          :............................:                                    |
|          : PRO_E_HLE_ADD_EXIT_CSINK   :                                    |
|          :............................:                                    |
|          : PRO_E_HLE_EXIT_CSINKANGLE  :                                    |
|          :............................:                                    |
|          : PRO_E_HLE_EXIT_CSINKDIAM   :                                    |
|..........:............................:....................................|
|          : PRO_E_HLE_ADD_PARAMETERS   : The description of these items     |
|          :............................:.are same, as described in        ..|
|..........:............................:....................................|
|          : PRO_E_HOLE_PARAMETERS      : This element is not accessible     |
|          :                            : through Creo Parametric TOOLKIT.   |
|..........:............................:....................................|
|          : PRO_E_HLE_ADD_NOTE         : Straight Hole section.             |
|          :                            :                                    |
|          : PRO_E_HOLE_NOTE            :                                    |
|          :............................:....................................|
------------------------------------------------------------------------------

Table Hole:4 : Which subelements of PRO_E_HLE_PLACEMENT is valid and when ?
   The following type of placements are possible
      Case A: A linear Hole on a plane
      Case B: A Radial hole on a plane with radial dimensioning
      Case C: A Radial hole on a plane with diameter dimensoining
      Case D: A Radial hole on a plane with linear dimensioning
              Available under the config option
              radial_hole_linear_dim "YES"
      Case E: A Radial hole on a conic ( Cone or Cylinder )
      Case F: A Coaxial hole ,whose primary reference is an axis
      case G: A Coaxial hole ,whose primary reference is not an axis
      Case H: An onpoint hole,whose primary reference is 
              a surface datum point
      Case I: An onpoint hole,whose primary reference is any type of datum point
              and it also require a surface, to which the point will be projected.
              The hole depth is measured from the projected point.
      Case J: An onpoint hole,whose primary reference is any type of datum point.
              The direction of the hole is defined using direction elements.
              The hole depth is measured from datum point as it is in case H.
      Case K: A sketch datum point hole using sketch
--------------------------------------------------------------------------------
|       | Element Id             | Comment                                     |
--------------------------------------------------------------------------------
|Case A :PRO_E_HLE_PRIM_REF      :Primary Selection,planar surface/datum plane |
|       :                        :                                             |
|       :PRO_E_HLE_PL_TYPE       := PRO_HLE_PL_TYPE_LIN                        |
|       :                        :                                             |
|       :PRO_E_HLE_DIM_REF1      :First Secondary selection.Plane,edge,axis    |
|       :                        :If edge/axis is normal to placement plane    |
|       :                        :another selection is required for dimension- |
|       :                        :ing it. Hence this can be take two selections|
|       :                        :                                             |
|       :PRO_E_HLE_PLC_ALIGN_OPT1:Aligned Flag wrt PRO_E_HLE_DIM_REF1.         |
|       :                        :With default value PRO_HLE_PLC_NOT_ALIGN.    |
|       :                        :Optional for not aligned linear hole, where  |
|       :                        :offset is specified by PRO_E_HLE_DIM_DIST1.  |
|       :                        :If set to PRO_HLE_PLC_ALIGN, takes precedence|
|       :                        :over PRO_E_HLE_DIM_DIST1.                    |
|       :                        :                                             |
|       :PRO_E_HLE_DIM_DIST1     :Distance wrt PRO_E_HLE_DIM_REF1              |
|       :                        :                                             |
|       :PRO_E_HLE_DIM_REF2      :Second Secondary selection.Plane,edge,axis   |
|       :                        :If edge/axis is normal to placement plane    |
|       :                        :another selection is required for dimension- |
|       :                        :ing it. Hence this can be take two selections|
|       :                        :                                             |
|       :PRO_E_HLE_PLC_ALIGN_OPT2:Aligned Flag wrt PRO_E_HLE_DIM_REF2.         |
|       :                        :With default value PRO_HLE_PLC_NOT_ALIGN.    |
|       :                        :Optional for not aligned linear hole, where  |
|       :                        :offset is specified by PRO_E_HLE_DIM_DIST2.  |
|       :                        :If set to PRO_HLE_PLC_ALIGN, takes precedence|
|       :                        :over PRO_E_HLE_DIM_DIST2.                    |
|       :                        :                                             |
|       :PRO_E_HLE_DIM_DIST2     :Distance wrt PRO_E_HLE_DIM_REF2              |
|       :                        :                                             |
|       :PRO_E_LIN_HOLE_DIR_REF  :Uses the reference for direction.            |
|       :                        :This element is available if the secondary   |
|       :                        :element contains ONE reference and           |
|       :                        :reference is an axis, which is normal to     |
|       :                        :current hole's primary reference.            |
|       :                        :                                             |
|.......:........................:.............................................|
|Case B :PRO_E_HLE_PRIM_REF      :Primary Selection,planar surface/datum plane |
|       :                        :                                             |
|       :PRO_E_HLE_PL_TYPE       := PRO_HLE_PL_TYPE_RAD                        |
|       :                        :                                             |
|       :PRO_E_HLE_AXIS          :Axis for radial hole                         |
|       :                        :                                             |
|       :PRO_E_HLE_DIM_RAD       :Radial distance wrt PRO_E_HLE_AXIS           |
|       :                        :                                             |
|       :PRO_E_HLE_REF_PLANE_1   :Reference plane against which angular        |
|       :                        :distance will be measured                    |
|       :                        :                                             |
|       :PRO_E_HLE_REF_ANG_1     :Angular distance wrt PRO_E_HLE_REF_PLANE_1   |
|.......:........................:.............................................|
|Case C :PRO_E_HLE_PRIM_REF      :Primary Selection,planar surface/datum plane |
|       :                        :                                             |
|       :PRO_E_HLE_PL_TYPE       := PRO_HLE_PL_TYPE_RAD_DIA_DIM                |
|       :                        :                                             |
|       :PRO_E_HLE_AXIS          :Axis for radial hole                         |
|       :                        :                                             |
|       :PRO_E_HLE_DIM_DIA       :Diameter distance wrt PRO_E_HLE_AXIS         |
|       :                        :                                             |
|       :PRO_E_HLE_REF_PLANE_1   :Reference plane against which angular        |
|       :                        :distance will be measured                    |
|       :                        :                                             |
|       :PRO_E_HLE_REF_ANG_1     :Angular distance wrt PRO_E_HLE_REF_PLANE_1   |
|.......:........................:.............................................|
|Case D :PRO_E_HLE_PRIM_REF      :Primary Selection,planar surface/datum plane |
|       :                        :                                             |
|       :PRO_E_HLE_PL_TYPE       := PRO_HLE_PL_TYPE_RAD_LIN_DIM                |
|       :                        :                                             |
|       :PRO_E_HLE_AXIS          :Axis for radial hole                         |
|       :                        :                                             |
|       :PRO_E_HLE_DIM_LIN       :Linear distance wrt PRO_E_HLE_AXIS           |
|       :                        :                                             |
|       :PRO_E_HLE_REF_PLANE_1   :Reference plane against which angular        |
|       :                        :distance will be measured                    |
|       :                        :                                             |
|       :PRO_E_HLE_REF_ANG_1     :Angular distance wrt PRO_E_HLE_REF_PLANE_1   |
|.......:........................:.............................................|
|Case E :PRO_E_HLE_PRIM_REF      :Primary Selection,Cone or Cylinder           |
|       :                        :                                             |
|       :PRO_E_HLE_PL_TYPE       := PRO_HLE_PL_TYPE_RAD                        |
|       :                        :                                             |
|       :PRO_E_HLE_REF_PLANE     :Reference plane against which angular        |
|       :                        :distance will be measured                    |
|       :                        :                                             |
|       :PRO_E_HLE_REF_ANG       :Angular distance wrt PRO_E_HLE_REF_PLANE     |
|       :                        :                                             |
|       :PRO_E_HLE_NORM_PLA      :Reference plane for linear measurement       |
|       :                        :                                             |
|       :PRO_E_HLE_NORM_OFFST    :Distance wrt PRO_E_HLE_NORM_PLA              |
|.......:........................:.............................................|
|Case F :PRO_E_HLE_PRIM_REF      :Primary Selection,Axis                       |
|       :                        :                                             |
|       :PRO_E_HLE_PL_TYPE       := PRO_HLE_PL_TYPE_COAX                       |
|       :                        :                                             |
|       :PRO_E_HLE_PLCMNT_PLANE  :Placement surface                            |
|.......:........................:.............................................|
|Case G :PRO_E_HLE_PRIM_REF      :Primary Selection, a surface                 |
|       :                        :                                             |
|       :PRO_E_HLE_PL_TYPE       := PRO_HLE_PL_TYPE_COAX                       |
|       :                        :                                             |
|       :PRO_E_HLE_AXIS          :Axis                                         |
|.......:........................:.............................................|
|Case H :PRO_E_HLE_PRIM_REF      :Primary Selection,                           |
|       :                        :On Surface Created Datum Point               |
|       :                        :                                             |
|       :PRO_E_HLE_PL_TYPE       := PRO_HLE_PL_TYPE_ON_PNT                     |
|       :                        :                                             |
|.......:........................:.............................................|
|Case I :PRO_E_HLE_PRIM_REF      :Primary Selection,Datum Point                |
|       :                        :                                             |
|       :PRO_E_HLE_PL_TYPE       := PRO_HLE_PL_TYPE_ON_PNT                     |
|       :                        :                                             |
|       :PRO_E_HLE_PLCMNT_PLANE  :Placement surface                            |
|       :                        :                                             |
|.......:........................:.............................................|
|Case J :PRO_E_HLE_PRIM_REF      :Primary Selection,Datum Point                |
|       :                        :                                             |
|       :PRO_E_HLE_PL_TYPE       := PRO_HLE_PL_TYPE_ON_PNT                     |
|       :                        :                                             |
|       :PRO_E_HLE_FT_DIR_REF    :Orientation reference                        |
|       :                        :                                             |
|       :PRO_E_HLE_FT_DIR_OPT    :Orientation option                           |
|       :                        :                                             |
|.......:........................:.............................................|
|Case K :PRO_E_STD_SECTION       :Primary Selection, sketch                    |
|       :                        :                                             |
|       :PRO_E_HLE_PL_TYPE       := PRO_HLE_PL_TYPE_SKT_DTM_PNT                |
|       :                        :                                             |
|       :PRO_E_HOLE_SKDP_OPTIONS := sketched datum point hole option           |
|       :                        :                                             |
|------------------------------------------------------------------------------|
Table Hole:5 : subelements of PRO_E_BODY
|.................................................................|
| PRO_E_BODY_USE           | Mandatory                            |
|                          | on what body(ies) hole feature       |
|                          | created                              |
|                          | Valid values:                        |
|                          |        PRO_BODY_USE_ALL              |
|                          |        hole created on ALL existing  |
|                          |        bodies.                       |
|                          |        This is not available for     |
|                          |        hole depth options:           |
|                          |        To Next and Through Until     |
|                          |                                      |
|                          |        PRO_BODY_USE_SELECTED         |
|                          |        hole created on selected      |
|                          |        bodies                        |
|.................................................................|
| PRO_E_BODY_SELECTED      | Reference to selected bodies         |
|                          |  Mandatory if PRO_E_BODY_USE         |
|                          |  is set to                           |
|                          |  PRO_BODY_USE_SELECTED               |
|                          |  Ignored otherwise                   |
|                          |  Multiple references allowed         |
-------------------------------------------------------------------

Notes:
1) The *.hol file, hole parameter file gets loaded in following order :-
     -  Directory , specified in config option "hole_parameter_file_path"
     -  Current Directory
     -  System hole parameter directory i.e. {PROE DIR}/text/hole
2) Please follow, the order of adding elements as given in the table-2 or 
   as mentioned in the main element tree.
3) All the angle elements are in degree.
4) The drill diameter ( PRO_E_HLE_HOLEDIAM ) has to be smaller than 
   the thread diameter  calculated from the .hol file for the threaded hole. 
   ( Thread diameter is the element corresponding to BASIC_DIAM column and 
     selected screw size row in the table,specified in the selected .hol file)
5) There are some differences in placement of hole created 
   using UI and Creo Parametric TOOLKIT, for PLACEMENT CASES for 
   Radial Placement :  B,C,D, & E.

   Hence the result may not be consistent, if a feature is created 
   programmatically , using the same references as used in 
   UI, for radial placement of the hole. 

   In Creo Parametric TOOLKIT, the angle will be measured with respect to 
   a vector (VEC1 ) , obtained by cross product of axis vector and 
   the normal to the reference plane vector.

   In UI, since the pick position is ALWAYS one of the parameter, the
   angle is measured with respect to +ve VEC1 or -ve VEC1 
   to obtain an acute angle.

6) Straight hole with symmetric depth option has changed 
   in Pro/ENGINEER Wildfire 1.0.

   The following elements need to be set: 
   PRO_E_HOLE_DEPTH_TO_TYPE   -> PRO_HLE_STRGHT_SYM_DEPTH
   PRO_E_HOLE_DEPTH_FROM_TYPE -> PRO_HLE_STRGHT_NONE_DEPTH
   PRO_E_EXT_DEPTH_FROM_VALUE -> The symmetric depth double value
   Other depth related elements are ignored.

7) Hole's orientation will depend on optional direction elements:
   PRO_E_HLE_FT_DIR_REF, PRO_E_HLE_FT_DIR_OPT.

8) Hole's orientation elements (as described in Note 7), is not available
   for co-axial hole.

9) For more info on Body elements refer ProBodyOpts.h

11)Body element(PRO_E_BODY) is not available for assembly level hole.

12) More types are enumerated below:

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

  /* PRO_E_FEATURE_FORM */
typedef enum pro_hle_type
{
   PRO_HLE_TYPE_STRAIGHT = PRO_EXTRUDE,
   PRO_HLE_TYPE_SKETCHED = PRO_REVOLVE
} ProHleType;


 /* PRO_E_HLE_TYPE_NEW */
 typedef enum pro_hle_new_type
 {
   PRO_HLE_NEW_TYPE_SKETCH   =  6,  /* Sketch hole   */
   PRO_HLE_CUSTOM_TYPE       =  7,  /* Custom hole   */
   PRO_HLE_NEW_TYPE_STRAIGHT = 16,  /* Straight hole */
   PRO_HLE_NEW_TYPE_STANDARD = 24   /* Standard hole */
 } ProHleNewType;


 /* PRO_E_HLE_STAN_TYPE , standard type of hole */
 typedef enum pro_hle_stand_type
 {
   PRO_HLE_TAPPED_TYPE    = 14,    /* Tapped hole */
   PRO_HLE_CLEARANCE_TYPE = 15,    /* Clearance hole */
   PRO_HLE_DRILLED_TYPE   = 17,    /* Drilled hole */
   PRO_HLE_TAPERED_TYPE   = 25     /* Tapered  hole */
 }ProHleStandType;

 /* PRO_E_HLE_FITTYPE */
 typedef enum pro_hle_fittype
 {
   PRO_HLE_CLOSE_FIT  = 0,  /* Close Fit */
   PRO_HLE_FREE_FIT   = 1,  /* Free Fit  */
   PRO_HLE_MEDIUM_FIT = 2   /* Medium Fit */
 } ProHleFittype;

 /* PRO_E_HLE_ADD_THREAD */
 typedef enum pro_hle_add_thrd_flag
 {
   PRO_HLE_NO_THREAD   = -1, /* No thread for standard hole  */
   PRO_HLE_ADD_THREAD  = 26  /* Add thread for standard hole */
 }ProHleAddThrdFlag;


 /* PRO_E_HLE_ADD_CBORE */
 typedef enum pro_hle_add_cbore_flag
 {
   PRO_HLE_NO_CBORE   = -1,  /* No cbore for standard hole */
   PRO_HLE_ADD_CBORE  = 27   /* Add cbore for standard hole */
 }ProHleAddCboreFlag;

 /* PRO_E_HLE_ADD_CSINK */
 typedef enum pro_hle_add_csink_flag
 {
   PRO_HLE_NO_CSINK  = -1,  /* No csink for standard hole */
   PRO_HLE_ADD_CSINK = 28   /* Add csink for standard hole */
 }ProHleAddCsinkFlag;

 /* PRO_E_HLE_MAKE_LIGHTWT */
 typedef enum pro_hle_light_wt_flag
 {
   PRO_HLE_REGULAR = -1,    /* Regular hole */
   PRO_HLE_LIGHTWT = 10     /* Light weight hole */ 
 }ProHleLightWtFlag;

 /* PRO_E_HOLE_DEPTH_TO_TYPE , PRO_E_HOLE_DEPTH_FROM_TYPE */
 typedef enum pro_hle_straight_dep_type
 {
   PRO_HLE_STRGHT_BLIND_DEPTH      = 1, /* Blind */
   PRO_HLE_STRGHT_THRU_NEXT_DEPTH  = 2, /* Thru Next */
   PRO_HLE_STRGHT_THRU_ALL_DEPTH   = 3, /* Thru All */
   PRO_HLE_STRGHT_THRU_UNTIL_DEPTH = 4, /* Thru Until */
   PRO_HLE_STRGHT_UPTO_REF_DEPTH   = 5, /* Upto Ref */
   PRO_HLE_STRGHT_NONE_DEPTH       = 6, /* None  */ 
   PRO_HLE_STRGHT_SYM_DEPTH        = 7  /* Symetric */
 }ProHleStraightDepType;

/* PRO_E_HLE_THRD_DEPTH */
typedef enum pro_hle_thrd_dep_type
{
   PRO_HLE_THRU_THREAD     = 32,  /* Thru thread */
   PRO_HLE_VARIABLE_THREAD = 33,   /* Variable thread */
   PRO_HLE_TO_SELECTED_THREAD = 52     /* to selected thread */
}ProHleThrdDepType;

/* PRO_E_HLE_DEPTH */
typedef enum pro_hle_std_dep_type
{
   PRO_HLE_STD_VAR_DEPTH       = 29, /* Blind std hole */
   PRO_HLE_STD_THRU_NEXT_DEPTH = 30, /* Thru Next std hole */
   PRO_HLE_STD_THRU_ALL_DEPTH  = 31, /* thru all std hole */
   PRO_HLE_STD_THRU_UNTIL_DEPTH = 40,/* Thru until std hole */
   PRO_HLE_STD_TO_SEL_DEPTH     = 41 /* To selected std hole */
}ProHleStdDepType;

/* PRO_E_HLE_DEPTH_DIM_TYPE */
typedef enum pro_hle_dep_dim_scheme
{
  PRO_HLE_DEP_SHOULDER_DIM_SCHEME = -1, /* Dimension till shoulder */
  PRO_HLE_DEP_TIP_DIM_SCHEME      = 18  /* Dimension till tip */
}ProHleDepDimScheme;

/* PRO_E_HLE_CRDIR_FLIP */
typedef enum pro_hle_cr_dir
{
  PRO_HLE_CR_IN_SIDE_ONE = -1,     /* Std/sketch hole creation in side 1 */
  PRO_HLE_CR_IN_SIDE_TWO = 34      /* Std/sketch hole creation in side 2 */
}ProHleCrDir;

/* PRO_E_HLE_ADD_EXIT_CSINK */
 typedef enum pro_hle_add_exit_csink_flag
 {
   PRO_HLE_NO_EXIT_CSINK = -1, /* No exit csink for standard hole */
   PRO_HLE_ADD_EXIT_CSINK = 38 /* Add exit csink for standard hole */
 }ProHleAddExitCsinkFlag;

/* PRO_E_HLE_ADD_NOTE */
 typedef enum pro_hle_add_note_flag
 {
   PRO_HOLE_ADD_NOTE_FLAG = -1, /* Standard hole can have note */
   PRO_HOLE_NO_NOTE_FLAG  = 9   /* No note for standard hole   */
 }ProHleAddNoteFlag;

/* PRO_E_HLE_TOP_CLEARANCE */
 typedef enum pro_hle_top_clrnc_flag
 {
   PRO_HOLE_GEN_CLRNCE        = -1, /* No specific hole entry clearance */
   PRO_HOLE_EXPLICIT_CLRNCE   = 43  /* Explicit hole entry clearance    */
 }ProHleTopClrncFlag;


/* ProHoleProperty */
typedef enum
{
    PRO_HOLE_METRIC_SIZE = 1,
    PRO_HOLE_THREAD_SERIES = 2
} ProHoleProperty;

/* PRO_E_HLE_PLC_ALIGN_OPT1, PRO_E_HLE_PLC_ALIGN_OPT2 */
 typedef enum pro_hle_plc_algn_flag
 {
   PRO_HLE_PLC_NOT_ALIGN = 0,  /* Not Align with given reference   */
   PRO_HLE_PLC_ALIGN     = 1   /* Aligned with the given reference */
 }ProHlePlcAlgnFlag;


  /* PRO_E_HLE_ADD_TAPERED_TIP_ANGLE */
 typedef enum pro_hle_add_tapered_tip_ang
 {
   PRO_HLE_NO_TAPERED_TIP_ANGLE   = 0,  /* No tip angle in the tapered hole */
   PRO_HLE_ADD_TAPERED_TIP_ANGLE  = 1   /* Add tip angle to the tapered hole */
 }ProHleAddTaperedTipAngFlag;

/**********************************************************************
 * Because of change in the element tree and change in the placement type
 * of the hole the following new type of enums are used 
 * Previously only PRO_HLE_PL_TYPE_LIN = 1, PRO_HLE_PL_TYPE_COAX = 3,
 * PRO_HLE_PL_TYPE_ON_PNT = 4 was used 
 **********************************************************************/
 /* PRO_E_HLE_PL_TYPE */
typedef enum pro_hle_pl_type
{
   PRO_HLE_PL_TYPE_LIN         = 1, /* linear */
   PRO_HLE_PL_TYPE_RAD         = 2, /* Radial hole on a conic, or a radial hole
                                       on a plane with radial dimension */
   PRO_HLE_PL_TYPE_RAD_DIA_DIM = 3, /* Radial hole on a plane with 
                                       dia dimension */
   PRO_HLE_PL_TYPE_ON_PNT      = 4, /* on point */
   PRO_HLE_PL_TYPE_COAX        = 5, /* coaxial */
   PRO_HLE_PL_TYPE_RAD_LIN_DIM = 6, /* Radial hole on a plane with linear
                                       dimension */
   PRO_HLE_PL_TYPE_SKT_DTM_PNT = 9 /*Sketched datum point hole*/

} ProHlePlType;

/* PRO_E_HOLE_SKDP_OPTIONS */
typedef enum pro_hle_skdp_option
{
	PRO_HLE_SKDP_POINT_OPT    =(1 << 0),  /*Point option for instance*/
	PRO_HLE_SKDP_ENDPT_OPT    =(1 << 1),  /*Endpoint option for instance*/
	PRO_HLE_SKDP_MID_OPT      =(1 << 2)   /*Midpoint option for instance*/

}ProHleSkdpOption;

 /* PRO_E_HLE_FT_DIR_OPT */
typedef enum pro_hle_dir_option
{
  PRO_HLE_FT_PARALLEL_DIR = 0,
  PRO_HLE_FT_PERPENDICULAR_DIR
}ProHleDirOption;

/* PRO_E_HLE_TAPERED_STRT_DEPTH_OPT */
typedef enum pro_hle_taper_str_dep_type
{
  PRO_HOLE_NONE_DEPTH_TYPE = 0,       /* None  */
  PRO_HOLE_BLIND_DEPTH_TYPE = 1,      /* Blind */
  PRO_HOLE_THRUNEXT_DEPTH_TYPE = 2,   /* Thru Next */
  PRO_HOLE_THRUALL_DEPTH_TYPE = 3,    /* Thru All */
  PRO_HOLE_THRUNTIL_DEPTH_TYPE = 4,   /* Thru Until */
  PRO_HOLE_TOREF_DEPTH_TYPE = 5      /* Upto Ref */
  }ProHleTaperStrDepType;

/* PRO_E_HLE_ADD_PARAMETERS */
typedef enum pro_hle_add_parameters_flag
{
  PRO_HOLE_NO_PARAMETERS_FLAG = -1,
  PRO_HOLE_ADD_PARAMETERS_FLAG = 55
}ProHleAddParametersFlag;

/* API */

extern ProError ProHolePropertyGet (ProFeature* hole, ProHoleProperty property,
                             ProParamvalue* value);
/*
    Purpose: Retrieves the value of the indicated hole feature property.

    Input Arguments:
        hole - The hole feature.
        property - The hole property type to retrieve.

    Output Arguments:
        value - The property value.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments was invalid.

*/

extern ProError ProElementHoleThreadSeriesGet ( ProElement   elemtree,
                                                ProMdl       model,
                                                wchar_t    **r_thread_name );
/*
    Purpose: Retrieves the thread name from the element tree.

    Input Arguments:
        elemtree - The hole element tree
        model - Handle to the model

    Output Arguments:
        r_thread_name - The thread name in wide-string. This should be freed 
                        using ProWstringFree().

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_NOT_EXIST - The hole file that is referred in the element with 
                           id PRO_E_HLE_THRDSERIS did not exist.
        PRO_TK_INCOMPLETE - The element tree did not have a valid element with 
                            id PRO_E_HLE_THRDSERIS.
        PRO_TK_BAD_INPUTS - One or more input arguments was invalid.

*/

extern ProError ProElementHoleThreadSeriesSet ( ProElement  elemtree,
                                                ProMdl      model,
                                                wchar_t    *thread_name );
/*
    Purpose: Updates the thread name in the element tree. This updates 
             PRO_E_HLE_THRDSERIS element. After this call, use 
             ProElementHoleScrewSizeSet() to set the screw size ( fastener id 
             ).

    Input Arguments:
        elemtree - The hole element tree
        model - Handle to the model
        thread_name - The thread name in wide-string.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_NOT_EXIST - The hole file that is referred in thread_name did 
                           not exist.
        PRO_TK_INCOMPLETE - The element tree did not have a valid element with 
                            id PRO_E_HLE_THRDSERIS.
        PRO_TK_BAD_INPUTS - One or more input arguments was invalid.

*/


extern ProError ProElementHoleScrewSizeGet ( ProElement   elemtree,
                                             ProMdl       model,
                                             wchar_t    **r_screw_size_name );
/*
    Purpose: Retrieves the screw size ( fastener id) from the element tree. 
             This uses PRO_E_HLE_THRDSERIS and PRO_E_HLE_SCREWSIZE elements.

    Input Arguments:
        elemtree - The hole element tree
        model - Handle to the model

    Output Arguments:
        r_screw_size_name - The screw size ( fastener id) in wide-string. This 
                            should be freed using ProWstringFree().

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_NOT_EXIST - The hole file that is referred in the element with 
                           id PRO_E_HLE_THRDSERIS did not exist.
        PRO_TK_INCOMPLETE - The element tree did not have valid elements with 
                            id PRO_E_HLE_THRDSERIS and PRO_E_HLE_SCREWSIZE.
        PRO_TK_INVALID_ITEM - The screw size that is referred in the element 
                              with element id PRO_E_HLE_SCREWSIZE did not exist 
                              in the hole file which is mentioned in the 
                              element with id PRO_E_HLE_THRDSERIS.
        PRO_TK_BAD_INPUTS - One or more input arguments was invalid.

*/

extern ProError ProElementHoleScrewSizeSet  ( ProElement   elemtree,
                                              ProMdl       model,
                                              wchar_t     *screw_size_name );
/*
    Purpose: Updates the screw size ( fasten id ) in the element tree. This 
             updates PRO_E_HLE_SCREWSIZE element. This depends on the value in 
             PRO_E_HLE_THRDSERIS element.i Hence the value in 
             PRO_E_HLE_THRDSERIS should be set using 
             ProElementHoleThreadSeriesSet, prior to this call.

    Input Arguments:
        elemtree - The hole element tree
        model - Handle to the model
        screw_size_name - The screw size ( fasten id ) in wide-string.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_NOT_EXIST - The hole file that is referred in the element with 
                           id PRO_E_HLE_THRDSERIS did not exist.
        PRO_TK_INCOMPLETE - The element tree did not have valid elements with 
                            id PRO_E_HLE_THRDSERIS and PRO_E_HLE_SCREWSIZE.
        PRO_TK_INVALID_NAME - The screw size that is referred in 
                              screw_size_name did not exist in the hole file 
                              which is mentioned in the element with id 
                              PRO_E_HLE_THRDSERIS.
        PRO_TK_BAD_INPUTS - One or more input arguments was invalid.

*/
 
extern ProError ProHoleNoteReset (ProFeature *hole);
/*
    Purpose: Reset the note of the hole feature.

    Input Arguments:
        hole - The handle of the hole feature.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function successfully updated the hole note.
        PRO_TK_BAD_INPUTS - One or more input arguments is invalid.
        PRO_TK_E_NOT_FOUND - The hole feature does not have a note.
        PRO_TK_GENERAL_ERROR - A general error occurred and the function 
                               failed.

*/

PRO_END_C_DECLS

#endif