#ifndef PROCHAMFERH
#define PROCHAMFERH
#include <ProToolkit.h>
PRO_BEGIN_C_DECLS
/*
Feature element tree for Chamfer
PRO_E_FEATURE_TREE
|
|--PRO_E_FEATURE_TYPE
|
|--PRO_E_STD_FEATURE_NAME
|--PRO_E_RNDCH_SETS
| |
| |--PRO_E_RNDCH_SET
| |
| |--PRO_E_RNDCH_DIMENSIONAL_SCHEMA
| |--PRO_E_RNDCH_CHAMFER_SHAPE
| |--PRO_E_RNDCH_REFERENCES
| | |
| | |--PRO_E_RNDCH_REFERENCE_TYPE
| | |--PRO_E_STD_CURVE_COLLECTION_APPL
| | |--PRO_E_RNDCH_REFERENCE_SURFACE1
| | |--PRO_E_RNDCH_REFERENCE_SURFACE2
| | |--PRO_E_RNDCH_REFERENCE_EDGE1
| | |--PRO_E_RNDCH_REFERENCE_SURFACE
| |
| |--PRO_E_RNDCH_COMPOUND_EXT_OPTIONS
| | |
| | |--PRO_E_RNDCH_AUTO_BLEND
| | |--PRO_E_RNDCH_TERM_SURFACE
| |
| |--PRO_E_RNDCH_RADII
| | |
| | |--PRO_E_RNDCH_RADIUS
| | |
| | |--PRO_E_RNDCH_LEG1
| | | |
| | | |--PRO_E_RNDCH_LEG_TYPE
| | | |--PRO_E_RNDCH_LEG_VALUE
| | | |--PRO_E_RNDCH_REFERENCE_EDGE
| | | |--PRO_E_RNDCH_REFERENCE_POINT
| | |
| | |--PRO_E_RNDCH_LEG2
| | |
| | |--PRO_E_RNDCH_LEG_TYPE
| | |--PRO_E_RNDCH_LEG_VALUE
| | |--PRO_E_RNDCH_REFERENCE_EDGE
| | |--PRO_E_RNDCH_REFERENCE_POINT
| |
| |--PRO_E_RNDCH_AMBIGUITY
|
|--PRO_E_RNDCH_ATTACH_TYPE
|--PRO_E_RNDCH_TRANSITIONS
|
|--PRO_E_RNDCH_TRANSITION
|
|--PRO_E_RNDCH_TRANS_TYPE
|--PRO_E_RNDCH_TRANS_CAP
|
|--PRO_E_RNDCH_TRANS_PATCH_DATA
| |
| |--PRO_E_RNDCH_TRANS_PATCH_REF_SURF
| |--PRO_E_RNDCH_TRANS_PATCH_RAD_OPT
| |--PRO_E_RNDCH_TRANS_ARC_RADIUS
|
|--PRO_E_RNDCH_TRANS_STOP_DATA
|
|--PRO_E_RNDCH_TRANS_STOP_REF_TYPE
|--PRO_E_RNDCH_TRANS_STOP_REFERENCE
---------------------------------------------------------------------------------------------------
Element Id Element Name Data Type Valid Values
---------------------------------------------------------------------------------------------------
PRO_E_FEATURE_TYPE Feature Type PRO_VALUE_TYPE_INT PRO_FEAT_CHAMFER
PRO_E_STD_FEATURE_NAME Feature Name PRO_VALUE_TYPE_WSTRING Wide character string
PRO_E_RNDCH_SETS Sets Array
PRO_E_RNDCH_SET Set Compound
PRO_E_RNDCH_DIMENSIONAL_SCHEMA Dimensional Schema PRO_VALUE_TYPE_INT See below (ProChmSchema)
PRO_E_RNDCH_CHAMFER_SHAPE Chamfer shape PRO_VALUE_TYPE_INT See below (ProChamferShape)
PRO_E_RNDCH_REFERENCES References Compound
PRO_E_RNDCH_REFERENCE_TYPE Reference type PRO_VALUE_TYPE_INT See ProRound.h
PRO_E_STD_CURVE_COLLECTION_APPL Reference Edges Chain Collection
PRO_E_RNDCH_REFERENCE_SURFACE1 Reference Surface1 PRO_VALUE_TYPE_SELECTION PRO_SURFACE
PRO_E_RNDCH_REFERENCE_SURFACE2 Reference Surface2 PRO_VALUE_TYPE_SELECTION PRO_SURFACE
PRO_E_RNDCH_REFERENCE_EDGE1 Reference Edge1 PRO_VALUE_TYPE_SELECTION PRO_EDGE
PRO_E_RNDCH_REFERENCE_SURFACE Reference Surface PRO_VALUE_TYPE_SELECTION PRO_SURFACE
PRO_E_RNDCH_COMPOUND_EXT_OPTIONS Ext options Compound
PRO_E_RNDCH_AUTO_BLEND Auto Blend PRO_VALUE_TYPE_INT See ProRound.h
PRO_E_RNDCH_TERM_SURFACE Terminating Surface PRO_VALUE_TYPE_SELECTION See ProRound.h
PRO_E_RNDCH_RADII Radii Array
PRO_E_RNDCH_RADIUS Radius Compound
PRO_E_RNDCH_LEG1 Leg1 Compound
PRO_E_RNDCH_LEG2 Leg2 Compound
PRO_E_RNDCH_LEG_TYPE Leg Type PRO_VALUE_TYPE_INT See ProRound.h
PRO_E_RNDCH_LEG_VALUE Leg Value PRO_VALUE_TYPE_DOUBLE
PRO_E_RNDCH_REFERENCE_EDGE Reference Edge PRO_VALUE_TYPE_SELECTION PRO_EDGE
PRO_E_RNDCH_REFERENCE_POINT Reference Point PRO_VALUE_TYPE_SELECTION PRO_POINT
PRO_E_RNDCH_AMBIGUITY Ambiguity
PRO_E_RNDCH_ATTACH_TYPE Attach type PRO_VALUE_TYPE_INT See ProRound.h
PRO_E_RNDCH_TRANSITIONS Transitions Array
PRO_E_RNDCH_TRANSITION Transition Compound
PRO_E_RNDCH_TRANS_TYPE Type PRO_VALUE_TYPE_INT See ProRound.h
PRO_E_RNDCH_TRANS_CAP Capping surface PRO_VALUE_TYPE_INT See ProRound.h
PRO_E_RNDCH_TRANS_PATCH_DATA Patch Data Compound
PRO_E_RNDCH_TRANS_PATCH_REF_SURF Arc Surface PRO_VALUE_TYPE_SELECTION PRO_SURFACE
PRO_E_RNDCH_TRANS_PATCH_RAD_OPT Arc Radius options PRO_VALUE_TYPE_INT See ProNewRound.h
PRO_E_RNDCH_TRANS_ARC_RADIUS Arc Radius PRO_VALUE_TYPE_DOUBLE
PRO_E_RNDCH_TRANS_STOP_DATA Capping surface Compound
PRO_E_RNDCH_TRANS_STOP_REF_TYPE Reference Type PRO_VALUE_TYPE_INT See ProRound.h
PRO_E_RNDCH_TRANS_STOP_REFERENCE Stop Reference PRO_VALUE_TYPE_SELECTION PRO_SURFACE,
PRO_POINT,
PRO_DATUM_PLANE
*****************************************************************************
DIFFERENT TYPES OF CHAMFERS AND ELEMENTS REQUIRED FOR THEM
*****************************************************************************
Elements required for all types of chamfer
-------------------------------------------------------------------------------
| Element Id | Value |
-------------------------------------------------------------------------------
| PRO_E_FEATURE_TYPE | PRO_FEAT_CHAMFER |
| PRO_E_STD_FEATURE_NAME | Name of the feature |
| PRO_E_RNDCH_SETS | Array element |
| PRO_E_RNDCH_SET | Compound element |
| | One element per set present in |
| | PRO_E_RNDCH_SETS |
| PRO_E_RNDCH_ATTACH_TYPE | Attachment type |
| PRO_E_RNDCH_TRANSITIONS | Array element |
-------------------------------------------------------------------------------
Each set (PRO_E_RNDCH_SET) should have the following elements
-------------------------------------------------------------------------------
| Element Id | Value |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_DIMENSIONAL_SCHEMA | Chamfer type |
| PRO_E_RNDCH_CHAMFER_SHAPE | Chamfer shape |
| PRO_E_RNDCH_REFERENCES | Compound element |
| PRO_E_RNDCH_RADII | Array element |
| PRO_E_RNDCH_RADIUS | Compound element. Only one should be |
| | present in each set |
| PRO_E_RNDCH_AMBIGUITY | |
-------------------------------------------------------------------------------
Each PRO_E_RNDCH_REFERENCES should have the following elements
-------------------------------------------------------------------------------
| Element Id | Value |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_REFERENCE_TYPE | Mandatory |
| PRO_E_STD_CURVE_COLLECTION_APPL | Required for edge chamfer |
| | Mixed selection from different solid |
| | bodies and/or quilts is supported. |
| | Resulting geometry will be attached |
| | back to the same solid body or quilt |
| | where the referenced edges came from.|
| PRO_E_RNDCH_REFERENCE_SURFACE1 | Required for surf surf chamfer |
| | Required if |
| | PRO_E_RNDCH_REFERENCE_TYPE == |
| | PRO_ROUND_REF_SURF_SURF |
| PRO_E_RNDCH_REFERENCE_SURFACE2 | Required for edge surf or surf surf |
| | chamfer |
| | Required if |
| | ( PRO_E_RNDCH_REFERENCE_TYPE == |
| | PRO_ROUND_REF_SURF_SURF || |
| | PRO_E_RNDCH_REFERENCE_TYPE == |
| | PRO_ROUND_REF_EDGE_SURF ) |
| PRO_E_RNDCH_REFERENCE_EDGE1 | Required for edge surf chamfer |
| | Required if |
| | ( PRO_E_RNDCH_REFERENCE_TYPE == |
| | PRO_ROUND_REF_EDGE_SURF) |
| PRO_E_RNDCH_REFERENCE_SURFACE | Required if |
| | ( PRO_E_RNDCH_DIMENSIONAL_SCHEMA == |
| | PRO_CHM_D1_X_D2 || |
| | ( PRO_E_RNDCH_DIMENSIONAL_SCHEMA == |
| | PRO_CHM_ANG_X_D ) || |
| | ( PRO_E_RNDCH_DIMENSIONAL_SCHEMA == |
| | PRO_CHM_O1_X_O2 ) |
-------------------------------------------------------------------------------
Each PRO_E_RNDCH_RADIUS should have the following elements
-------------------------------------------------------------------------------
| Element Id | Value |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_LEG1 | Compound |
| PRO_E_RNDCH_LEG2 | Required for D1xD2 and AnglexD || | chamfers |
| | Required if |
| | ( PRO_E_RNDCH_DIMENSIONAL_SCHEMA == |
| | PRO_CHM_D1_X_D2 || |
| | ( PRO_E_RNDCH_DIMENSIONAL_SCHEMA == |
| | PRO_CHM_ANG_X_D ) || |
| | ( PRO_E_RNDCH_DIMENSIONAL_SCHEMA == |
| | PRO_CHM_O1_X_O2 ) |
-------------------------------------------------------------------------------
Each PRO_E_RNDCH_LEG1 or PRO_E_RNDCH_LEG2 should have the following elements
-------------------------------------------------------------------------------
| Element Id | Value |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_LEG_TYPE | Mandatory |
| PRO_E_RNDCH_LEG_VALUE | Required if PRO_E_RNDCH_LEG_TYPE == |
| | PRO_ROUND_RADIUS_TYPE_VALUE |
| PRO_E_RNDCH_REFERENCE_EDGE | Required if PRO_E_RNDCH_LEG_TYPE == |
| | PRO_ROUND_RADIUS_THROUGH_POINT |
| PRO_E_RNDCH_REFERENCE_POINT | Required if PRO_E_RNDCH_LEG_TYPE == |
| | PRO_ROUND_RADIUS_THROUGH_POINT |
-------------------------------------------------------------------------------
Each PRO_E_RNDCH_TRANSITIONS can have the following elements
-------------------------------------------------------------------------------
| Element Id | Value |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_TRANSITION | One element for each user defined |
| | transition |
-------------------------------------------------------------------------------
Each PRO_E_RNDCH_TRANSITION should have the following elements
-------------------------------------------------------------------------------
| Element Id | Value |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_TRANS_TYPE | Mandatory |
| PRO_E_RNDCH_TRANS_CAP | Mandatory |
| PRO_E_RNDCH_TRANS_PATCH_DATA | Required if PRO_E_RNDCH_TRANS_TYPE ==|
| | PRO_ROUND_TRANS_PATCH |
| PRO_E_RNDCH_TRANS_STOP_DATA | Required if PRO_E_RNDCH_TRANS_TYPE ==|
| | PRO_ROUND_TRANS_STOP_AT_REF |
-------------------------------------------------------------------------------
Each PRO_E_RNDCH_TRANS_PATCH_DATA should have the following elements
-------------------------------------------------------------------------------
| Element Id | Value |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_TRANS_PATCH_REF_SURF | Mandatory |
| PRO_E_RNDCH_TRANS_PATCH_RAD_OPT | Mandatory |
| PRO_E_RNDCH_TRANS_ARC_RADIUS | Required if |
| | PRO_E_RNDCH_TRANS_PATCH_RAD_OPT == |
| | PRO_ROUND_TRANS_RADIUS_ENTER_VALUE |
-------------------------------------------------------------------------------
Each PRO_E_RNDCH_TRANS_STOP_DATA should have the following elements
-------------------------------------------------------------------------------
| Element Id | Value |
-------------------------------------------------------------------------------
| PRO_E_RNDCH_TRANS_STOP_REF_TYPE | Mandatory |
| PRO_E_RNDCH_TRANS_STOP_REFERENCE | Mandatory |
-------------------------------------------------------------------------------
*/
/* Valid values for PRO_E_RNDCH_DIMENSIONAL_SCHEMA */
typedef enum pro_chamfer_schema
{
PRO_CHM_45_X_D = 601,
PRO_CHM_D_X_D = 602,
PRO_CHM_D1_X_D2 = 603,
PRO_CHM_ANG_X_D = 604,
PRO_CHM_O_X_O = 607,
PRO_CHM_O1_X_O2 = 608
} ProChmSchema;
/* Valid values for PRO_E_RNDCH_CHAMFER_SHAPE */
typedef enum pro_chamfer_shape
{
PRO_CHM_TANGENT_LEGS = PRO_B_FALSE,
PRO_CHM_OFFSET_SURFACE = PRO_B_TRUE
} ProChamferShape;
PRO_END_C_DECLS
#endif