#ifndef PROREVOLVEH #define PROREVOLVEH #include <ProToolkit.h> #include <ProBodyOpts.h> PRO_BEGIN_C_DECLS /*****************************************************************************\ 1 Summary of Element Tree Changes as compared to pre- Pro/E Wildfire releases : ==================================================== The Element tree for Revolve has been updated to incorporate the following feature creation using the same element tree. 1] Solid Protrusion 2] Thin Protrusion 3] Solid Cut 4] Thin Cut 5] Surface 6] Surface Trim 7] Thin Surface Trim 8] Solid Protrusion as First Feature 9] Thin Protrusion as First Feature 10] Smt unattached wall \*****************************************************************************/ /*****************************************************************************\ 2 Feature element tree: ======================== PRO_E_FEATURE_TREE | |--PRO_E_STD_FEATURE_NAME | |--PRO_E_EXT_SURF_CUT_SOLID_TYPE | |--PRO_E_REMOVE_MATERIAL | |--PRO_E_BODY | | | |--PRO_E_BODY_USE | | | |--PRO_E_BODY_SELECT | |--PRO_E_FEATURE_FORM | |--PRO_E_STD_SECTION ( Sketch ) | |--PRO_E_FEAT_FORM_IS_THIN ( Feature Form ) | |--PRO_E_STD_MATRLSIDE ( Material Side ) | |--PRO_E_THICKNESS ( Thickness ) | |--PRO_E_SRF_END_ATTRIBUTES | |--PRO_E_TRIM_QLT_SIDE | |--PRO_E_TRIM_QUILT | |--PRO_E_STD_DIRECTION | |--PRO_E_REVOLVE_AXIS | |--PRO_E_REVOLVE_AXIS_OPT | |--PRO_E_REV_ANGLE | | | |--PRO_E_REV_ANGLE_FROM | |--PRO_E_REV_ANGLE_FROM_TYPE | |--PRO_E_REV_ANGLE_FROM_REF | |--PRO_E_REV_ANGLE_FROM_VAL | | | |--PRO_E_REV_ANGLE_TO | |--PRO_E_REV_ANGLE_TO_TYPE | |--PRO_E_REV_ANGLE_TO_REF | |--PRO_E_REV_ANGLE_TO_VAL | |--PRO_E_STD_SMT_THICKNESS ( applicable only in sheetmetal parts ) | |--PRO_E_STD_SMT_SWAP_DRV_SIDE ( applicable only in sheetmetal parts ) | |--PRO_E_SMT_WALL_SHARPS_TO_BENDS ( applicable only in sheetmetal parts ) | |--PRO_E_SMT_FILLETS ( applicable only in sheetmetal parts ) | | | |--PRO_E_SMT_FILLETS_SIDE | | | |--PRO_E_SMT_FILLETS_VALUE | |--PRO_E_SMT_DEV_LEN_CALCULATION ( applicable only in sheetmetal parts ) | | | |--PRO_E_SMT_DEV_LEN_SOURCE | | | |--PRO_E_SMT_DEV_LEN_Y_FACTOR | | | | | |--PRO_E_SMT_DEV_LEN_Y_FACTOR_TYPE | | | | | |--PRO_E_SMT_DEV_LEN_Y_FACTOR_VALUE | | | |--PRO_E_SMT_DEV_LEN_BEND_TABLE | |--PRO_E_SMT_MERGE_DATA ( applicable only in sheetmetal parts ) | | | |--PRO_E_SMT_MERGE_AUTO | | | |--PRO_E_SMT_MERGE_KEEP_LINES | |--PRO_E_FEAT_THIN | | | |--PRO_E_FEAT_THIN_STRT | | | | | |--PRO_E_FEAT_THIN_STRT_OPT | | | | | |--PRO_E_FEAT_THIN_STRT_REF | | | |--PRO_E_FEAT_THIN_END | | | | | |--PRO_E_FEAT_THIN_END_OPT | | | | | |--PRO_E_FEAT_THIN_END_REF | |--PRO_E_SMT_NEW_BODY_LINKED ( applicable only in sheetmetal parts ) | \*****************************************************************************/ /*****************************************************************************\ 3. Feature elements table and Mapping with Old Element Tree: ============================================================ ------------------------------------------------------------------------------ Element Id Element Name Data Type ------------------------------------------------------------------------------ PRO_E_STD_FEATURE_NAME Feature Name PRO_VALUE_TYPE_WSTRING PRO_E_EXT_SURF_CUT_SOLID_TYPE Feature Type PRO_VALUE_TYPE_INT PRO_E_REMOVE_MATERIAL Material PRO_VALUE_TYPE_INT 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_FEATURE_FORM Feature Form PRO_VALUE_TYPE_INT PRO_E_STD_SECTION Section Compound PRO_E_FEAT_FORM_IS_THIN Feature Form PRO_VALUE_TYPE_INT PRO_E_STD_MATRLSIDE Material Side PRO_VALUE_TYPE_INT PRO_E_THICKNESS Thin width PRO_VALUE_TYPE_DOUBLE PRO_E_SRF_END_ATTRIBUTES End Cap PRO_VALUE_TYPE_INT PRO_E_TRIM_QLT_SIDE Quilt Side PRO_VALUE_TYPE_INT PRO_E_TRIM_QUILT Trim Quilt PRO_VALUE_TYPE_SELECTION PRO_E_STD_DIRECTION Direction PRO_VALUE_TYPE_INT PRO_E_REVOLVE_AXIS Revolve Axis PRO_VALUE_TYPE_SELECTION PRO_E_REVOLVE_AXIS_OPT Axis Type PRO_VALUE_TYPE_INT PRO_E_REV_ANGLE Angle Compound PRO_E_REV_ANGLE_FROM Angle From Compound PRO_E_REV_ANGLE_FROM_TYPE Type PRO_VALUE_TYPE_INT PRO_E_REV_ANGLE_FROM_REF References PRO_VALUE_TYPE_SELECTION PRO_E_REV_ANGLE_FROM_VAL Value PRO_VALUE_TYPE_DOUBLE PRO_E_REV_ANGLE_TO Angle To Compound PRO_E_REV_ANGLE_TO_TYPE Type PRO_VALUE_TYPE_INT PRO_E_REV_ANGLE_TO_REF References PRO_VALUE_TYPE_SELECTION PRO_E_REV_ANGLE_TO_VAL Value PRO_VALUE_TYPE_DOUBLE PRO_E_INT_PARTS Intsct Parts Compound PRO_E_PATTERN Pattern Compound PRO_E_STD_SMT_THICKNESS Smt Thickness PRO_VALUE_TYPE_DOUBLE PRO_E_STD_SMT_SWAP_DRV_SIDE Smt Swap Side PRO_VALUE_TYPE_INT PRO_E_SMT_WALL_SHARPS_TO_BENDS Edges to Bends PRO_VALUE_TYPE_INT PRO_E_SMT_FILLETS Smt Fillets Compound PRO_E_SMT_FILLETS_SIDE Smt Radius Side PRO_VALUE_TYPE_INT PRO_E_SMT_FILLETS_VALUE Smt Radius Value PRO_VALUE_TYPE_DOUBLE PRO_E_SMT_DEV_LEN_CALCULATION Smt Develop Length Compound PRO_E_SMT_DEV_LEN_SOURCE Smt Dev Len Source PRO_VALUE_TYPE_INT PRO_E_SMT_DEV_LEN_Y_FACTOR Smt Dev Len Y Fact Compound PRO_E_SMT_DEV_LEN_Y_FACTOR_VALUE Y Factor Value PRO_VALUE_TYPE_DOUBLE PRO_E_SMT_DEV_LEN_Y_FACTOR_TYPE Y Factor Type PRO_VALUE_TYPE_INT PRO_E_SMT_DEV_LEN_BEND_TABLE Smt Dev Bend Table PRO_VALUE_TYPE_INT PRO_E_SMT_MERGE_DATA Smt Merge Wall Data Compound PRO_E_SMT_MERGE_AUTO Auto Merge Wall PRO_VALUE_INT PRO_E_SMT_MERGE_KEEP_LINES Keep Merged Lines PRO_VALUE_INT PRO_E_FEAT_THIN Thin Def Compound PRO_E_FEAT_THIN_STRT Thin Start Compound PRO_E_FEAT_THIN_STRT_OPT Thin Option PRO_VALUE_TYPE_INT PRO_E_FEAT_THIN_STRT_REF Reference PRO_VALUE_TYPE_SELECTION PRO_E_FEAT_THIN_END Thin Start Compound PRO_E_FEAT_THIN_END_OPT Thin Option PRO_VALUE_TYPE_INT PRO_E_FEAT_THIN_END_REF Reference PRO_VALUE_TYPE_SELECTION PRO_E_SMT_NEW_BODY_LINKED Link Smt Body to Part PRO_VALUE_TYPE_OPTION ----------------------------------------------------------------------------- 3.1 Mapping given only for changed Element Ids. ------------------------------------------------------------------------------ New Element Id Old Element ID ------------------------------------------------------------------------------ PRO_E_EXT_SURF_CUT_SOLID_TYPE PRO_E_FEATURE_TYPE PRO_E_SRF_END_ATTRIBUTES PRO_E_ATTRIBUTES->PRO_E_ATTR_SRF_END_COND ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- 3.2 New Element IDs in the element tree . ------------------------------------------------------------------------------ New Element Id ------------------------------------------------------------------------------ PRO_E_EXT_SURF_CUT_SOLID_TYPE PRO_E_SRF_END_ATTRIBUTES PRO_E_THICKNESS PRO_E_STD_MATRLSIDE PRO_E_REMOVE_MATERIAL PRO_E_STD_FEATURE_NAME PRO_E_TRIM_QUILT PRO_E_TRIM_QLT_SIDE PRO_E_STD_DIRECTION PRO_E_REVOLVE_AXIS PRO_E_REVOLVE_AXIS_OPT PRO_E_BODY ----------------------------------------------------------------------------- \*****************************************************************************/ /*****************************************************************************\ The Elements mentioned in the table below are for Solid Protrusion. For other features, additional elements required, are mentioned below in table 4.2. ----------------------------------------------------------------------------- Table 4.1 : Common elements for all type of Revolve and their values ----------------------------------------------------------------------------- | Element Id | Valid Values | --------------------------------------------------------------------- |PRO_E_EXT_SURF_CUT_SOLID_TYPE| Mandatory, Of type ProRevFeatType | | | | | | = PRO_REV_FEAT_TYPE_SOLID | | | for Solid feat type | | | = PRO_REV_FEAT_TYPE_SURFACE | | | for Surface feat type | |.............................|........................................| | PRO_E_REMOVE_MATERIAL | Material Removal Of type ProRevRemMaterial | | | | | | = PRO_REV_MATERIAL_ADD | | | for Protruded feature | | | = PRO_REV_MATERIAL_REMOVE | | | for Cut feature | |.............................|........................................| | PRO_E_FEATURE_FORM | Valid Value : PRO_REVOLVE | | | Feature Form | |.............................|........................................| | PRO_E_STD_SECTION | For more details refer ProStdSection.h | |.............................|........................................| | PRO_E_STD_DIRECTION | Direction of creation.(ProRevDirection)| | | Depends on PRO_E_STD_SECTION | | | See note 3 for details . | | Of type ProRevDirection | | | = PRO_REV_CR_IN_SIDE_ONE | | | for angle in side one | | | = PRO_REV_CR_IN_SIDE_TWO | | | for angle in side two | |.............................|........................................| | PRO_E_STD_MATRLSIDE | Of type ProRevMatlSide | | | Required if open section and if | | | ProRevFeatType is | | | PRO_REV_FEAT_TYPE_SOLID | | | Depends on PRO_E_STD_SECTION | | | See note 3 for details | |.............................|........................................| | PRO_E_REVOLVE_AXIS | Optional | | | Depends on ProRevAxisOptAttr | | | External Axis reference should be | | | specified if ProRevAxisOptAttr is set | | | to PRO_REV_AXIS_EXT_REF | | | Axis reference may be of the type | | | Axis, Straight Edge, Straight Curve, | | | Coordinate system axis | |.............................|........................................| | PRO_E_REVOLVE_AXIS_OPT | Optional, Of type ProRevAxisOptAttr | | | | |.............................|........................................| | PRO_E_REV_ANGLE | Compound Element | | | | |.............................|........................................| | PRO_E_REV_ANGLE_TO | Compound Element | | | | |.............................|........................................| | PRO_E_REV_ANGLE_TO_TYPE | Mandatory, Of type ProRevAngleToType | | | | |.............................|........................................| | PRO_E_REV_ANGLE_TO_VAL | Depends on PRO_E_REV_ANGLE_TO_TYPE | | | Of type PRO_VALUE_TYPE_DOUBLE | |.............................|........................................| | PRO_E_REV_ANGLE_TO_REF | Depends on PRO_E_REV_ANGLE_TO_TYPE | | | Of type See Note 1. | |.............................|........................................| | PRO_E_REV_ANGLE_FROM | Compound Element | | | | |.............................|........................................| | PRO_E_REV_ANGLE_FROM_TYPE | Mandatory, Of type ProRevAngleFromType | | | | |.............................|........................................| | PRO_E_REV_ANGLE_FROM_VAL | Depends on PRO_E_REV_ANGLE_FROM_TYPE | | | Of type PRO_VALUE_TYPE_DOUBLE | |.............................|........................................| | PRO_E_REV_ANGLE_FROM_REF | Depends on PRO_E_REV_ANGLE_FROM_TYPE | | | Of type See Note 1. | |.............................|........................................| | PRO_E_STD_FEATURE_NAME | Default given by application depending | | | on feature type.Can be modified by user| |.............................|........................................| ----------------------------------------------------------------------------- Table Revolve:4.2 : Elements required for each feature in addition to those mentioned above. ----------------------------------------------------------------------------- | | Element Id | Comment | ------------------------------------------------------------------------------ | Solid : : | | : PRO_E_BODY : Compound element | | : PRO_E_BODY_USE : Mandatory | | | : : To which body feature adds | | : : geometry | | : : Valid values: | | : : PRO_BODY_USE_NEW | | : : Feature stores it's geometry | | : : in new body | | : : PRO_BODY_USE_SELECTED | | : : Feature adds it's geometry to | | : : single selected body | | : PRO_E_BODY_SELECTED : Reference to selected body | | : : Mandatory if PRO_E_BODY_USE | | : : is set to | | : : PRO_BODY_USE_SELECTED | | : : Ignored otherwise | | : : Single reference allowed | |..........:................................:.................................| | Thin : : | | : PRO_E_STD_MATRLSIDE : Mandatory | | : : Of type ProRevMatlSide | | : PRO_E_BODY : Compound element | | : PRO_E_BODY_USE : Same as Solid | | : PRO_E_BODY_SELECTED : Same as Solid | | : PRO_E_THICKNESS : Mandatory >= 0.0 | | : : Of type PRO_VALUE_TYPE_DOUBLE | | : : | | : PRO_E_FEAT_FORM_IS_THIN : Of type ProRevFeatForm | | : : = PRO_REV_FEAT_FORM_NO_THIN | | : : for feature not having Thin | | : : = PRO_REV_FEAT_FORM_THIN | | : : for Thin feature | | : : | | : PRO_E_FEAT_THIN : Compound Element | | : : Available only for open section | | : PRO_E_FEAT_THIN_STRT : Compound Element | | : PRO_E_FEAT_THIN_END : Compound Element | | : PRO_E_FEAT_THIN_STRT_OPT : Of type ProFeatThinOpt | | : : = PRO_FEAT_THIN_IGNORE | | : : for feature ignoring solution | | : : = PRO_FEAT_THIN_DEFAULT | | : : for feature using default | | : : solution. | | : PRO_E_FEAT_THIN_END_OPT : Of type ProFeatThinOpt | | : : = PRO_FEAT_THIN_IGNORE | | : : for feature ignoring solution | | : : = PRO_FEAT_THIN_DEFAULT | | : : for feature using default | | : : solution. | | : PRO_E_FEAT_THIN_STRT_REF : Stores the reference found from | | : : the start section point when | | : : PRO_E_FEAT_THIN_STRT_OPT = | | : : PRO_FEAT_THIN_DEFAULT | | : PRO_E_FEAT_THIN_END_REF : Stores the reference found from | | : : the end section point when | | : : PRO_E_FEAT_THIN_END_OPT = | | : : PRO_FEAT_THIN_DEFAULT | |..........:................................:.................................| | Solid Cut: : | | : PRO_E_BODY : Compound element | | : PRO_E_BODY_USE : Mandatory | | | : : from what body(ies) feature cuts| | : : geometry | | : : Valid values: | | : : PRO_BODY_USE_ALL | | : : Feature cuts from all existing| | : : bodies | | : : PRO_BODY_USE_SELECTED | | : : Feature adds it's geometry to | | : : 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 | | : PRO_E_STD_MATRLSIDE : Mandatory | | : : Of type ProRevMatlSide | | : : | | : PRO_E_FEAT_FORM_IS_THIN : Of type ProRevFeatForm | | : : = PRO_REV_FEAT_FORM_NO_THIN | | : : for feature not having Thin | | : : = PRO_REV_FEAT_FORM_THIN | | : : for Thin feature | |..........:................................:.................................| | Thin Cut : : | | : PRO_E_BODY : Compound element | | : PRO_E_BODY_USE : Same as Solid Cut | | : PRO_E_BODY_SELECTED : Same as Solid Cut | | : PRO_E_STD_MATRLSIDE : Mandatory | | : : Of type ProRevMatlSide | | : PRO_E_THICKNESS : Mandatory >= 0.0 | | : : Of type PRO_VALUE_TYPE_DOUBLE | | : : | | : PRO_E_FEAT_FORM_IS_THIN : Of type ProRevFeatForm | | : : = PRO_REV_FEAT_FORM_NO_THIN | | : : for feature not having Thin | | : : = PRO_REV_FEAT_FORM_THIN | | : : for Thin feature | | : : | | : PRO_E_FEAT_THIN : Compound Element | | : : See: Table Revolve:4.2, Thin | |..........:................................:.................................| | Surface : : | | : : | | : PRO_E_SRF_END_ATTRIBUTES : Of type ProRevSurfEndAttr | | : : Depends on PRO_E_STD_SECTION | | : : See Note 3 for details. | | : : Required only for closed section| | : : | | : PRO_E_FEAT_FORM_IS_THIN : Of type ProRevFeatForm | | : : = PRO_REV_FEAT_FORM_NO_THIN | | : : for feature not having Thin | | : : = PRO_REV_FEAT_FORM_THIN | | : : for Thin feature | |..........:................................:.................................| | Surface : : | | Trim : PRO_E_STD_MATRLSIDE : Mandatory | | : : Of type ProRevMatlSide | | : PRO_E_TRIM_QUILT : Mandatory | | : : Of type Quilt. | | : : | | : PRO_E_TRIM_QLT_SIDE : Of type ProRevTrimQltSide | | : : Depends on PRO_E_STD_MATRLSIDE | | : : See Note 3 for details. | | : : Required only if ProRevMatlSide | | : : is PRO_REV_MATERIAL_BOTH_SIDES | | : : | | : PRO_E_FEAT_FORM_IS_THIN : Of type ProRevFeatForm | | : : = PRO_REV_FEAT_FORM_NO_THIN | | : : for feature not having Thin | | : : = PRO_REV_FEAT_FORM_THIN | | : : for Thin feature | |..........:................................:.................................| | Thin : : | | Surface : PRO_E_STD_MATRLSIDE : Mandatory | | Trim : : Of type ProRevMatlSide | | : PRO_E_THICKNESS : Mandatory >= 0.0 | | : : Of type PRO_VALUE_TYPE_DOUBLE | | : PRO_E_TRIM_QUILT : Mandatory | | : : Of type Quilt. | | : PRO_E_TRIM_QLT_SIDE : | | : : Of type ProRevTrimQltSide | | : : Depends on PRO_E_STD_MATRLSIDE | | : : See Note 3 for details. | | : : Required only if ProRevMatlSide | | : : is PRO_REV_MATERIAL_BOTH_SIDES | | : : | | : PRO_E_FEAT_FORM_IS_THIN : Of type ProRevFeatForm | | : : = PRO_REV_FEAT_FORM_NO_THIN | | : : for feature not having Thin | | : : = PRO_REV_FEAT_FORM_THIN | | : : for Thin feature | |..........:................................:.................................| | SMT : : | |Unattached: PRO_E_STD_SMT_THICKNESS : Non-relevant for non first wall.| | Wall : : DOUBLE >= 0.0 | | : PRO_E_STD_SMT_SWAP_DRV_SIDE : PRO_B_TRUE, PRO_B_FALSE | | : : | | : PRO_E_SMT_WALL_SHARPS_TO_BENDS : PRO_B_TRUE, PRO_B_FALSE | | : : | | : PRO_E_SMT_FILLETS_SIDE : ProSmdRadType | | : : | | : PRO_E_SMT_FILLETS_VALUE : DOUBLE | | : : | | : PRO_E_SMT_DEV_LEN_SOURCE : see :ProDvlLenSrcType | | : : | | : PRO_E_SMT_DEV_LEN_Y_FACTOR_TYPE: see :ProDvlLenFactor | | : : | | : PRO_E_SMT_DEV_LEN_BEND_TABLE : int (bend table ID) | | : : | | : PRO_E_SMT_MERGE_AUTO : PRO_B_TRUE, PRO_B_FALSE | | : : | | : PRO_E_SMT_MERGE_KEEP_LINES : PRO_B_TRUE, PRO_B_FALSE | | : : | | : PRO_E_BODY : Compound element | | : : | | : PRO_E_BODY_USE : Same as Solid | | : :PRO_BODY_USE_NEW marks first wall| | : PRO_E_BODY_SELECTED : Same as Solid | | : : | | : PRO_E_SMT_NEW_BODY_LINKED : PRO_B_TRUE, PRO_B_FALSE | | : : whether created smt body is | | : : linked to part | | : : Mandatory if PRO_E_BODY_USE | | : : is set to | | : : PRO_BODY_USE_NEW | |..........:................................:.................................| ------------------------------------------------------------------------------ Table Revolve:4.3 : Which subelements of Angle compound element are valid and when? ------------------------------------------------------------------------------ | | Element Id | Comment | ------------------------------------------------------------------------------ | Angle : : | | Elements :.................................................................| | : PRO_E_REV_ANGLE : Angle compound Element | | : :....................................| | : PRO_E_REV_ANGLE_TO : Info of First side angle in UI | | : : ( compound element ) | | : : | | : PRO_E_REV_ANGLE_TO_TYPE : of type ProRevAngleToType | | : : | | : PRO_E_REV_ANGLE_TO_VAL : Variable angle double value >= 0.0 | | : : when PRO_E_REV_ANGLE_TO_TYPE | | : : == PRO_REV_ANG_TO_ANGLE OR| | : : == PRO_REV_ANG_SYMMETRIC | | : : | | : PRO_E_REV_ANGLE_TO_REF : Stores the upto reference | | : : when PRO_E_REV_ANGLE_TO_TYPE | | : : == PRO_REV_ANG_TO_REF | | : :....................................| | : PRO_E_REV_ANGLE_FROM : Info of Second side angle in UI | | : : ( Compound Element ) | | : : | | : PRO_E_REV_ANGLE_FROM_TYPE : of ProRevAngleFromType | | : : | | : PRO_E_REV_ANGLE_FROM_VAL : Stores Variable angle double value | | : : when PRO_E_REV_ANGLE_FROM_TYPE | | : : == PRO_REV_ANG_FROM_ANGLE | | : : | | : PRO_E_REV_ANGLE_FROM_REF : stores the upto reference | | : : when PRO_E_REV_ANGLE_FROM_TYPE | | : : == PRO_REV_ANG_FROM_REF | |..........:............................:....................................| ------------------------------------------------------------------------------- Table Revolve:4.4 : Values of Specific Elements for each feature ------------------------------------------------------------------------------- | | Element Id | Value | ------------------------------------------------------------------------------- | Solid : : | | : PRO_E_EXT_SURF_CUT_SOLID_TYPE : PRO_REV_FEAT_TYPE_SOLID | | : PRO_E_FEAT_FORM_IS_THIN : PRO_REV_FEAT_FORM_NO_THIN | | : PRO_E_REMOVE_MATERIAL : PRO_REV_MATERIAL_ADD | | : PRO_E_BODY_USE : PRO_BODY_USE_NEW / | | : : PRO_BODY_USE_SELECTED | |..........:................................:.................................| | Thin : : | | : PRO_E_EXT_SURF_CUT_SOLID_TYPE : PRO_REV_FEAT_TYPE_SOLID | | : PRO_E_FEAT_FORM_IS_THIN : PRO_REV_FEAT_FORM_THIN | | : PRO_E_REMOVE_MATERIAL : PRO_REV_MATERIAL_ADD | | : PRO_E_BODY_USE : PRO_BODY_USE_NEW / | | : : PRO_BODY_USE_SELECTED | |..........:................................:.................................| | Solid Cut: : | | : PRO_E_EXT_SURF_CUT_SOLID_TYPE : PRO_REV_FEAT_TYPE_SOLID | | : PRO_E_FEAT_FORM_IS_THIN : PRO_REV_FEAT_FORM_NO_THIN | | : PRO_E_REMOVE_MATERIAL : PRO_REV_MATERIAL_REMOVE | | : PRO_E_BODY_USE : PRO_BODY_USE_ALL / | | : : PRO_BODY_USE_SELECTED | |..........:................................:.................................| | Thin Cut : : | | : PRO_E_EXT_SURF_CUT_SOLID_TYPE : PRO_REV_FEAT_TYPE_SOLID | | : PRO_E_FEAT_FORM_IS_THIN : PRO_REV_FEAT_FORM_THIN | | : PRO_E_REMOVE_MATERIAL : PRO_REV_MATERIAL_REMOVE | | : PRO_E_BODY_USE : PRO_BODY_USE_ALL / | | : : PRO_BODY_USE_SELECTED | |..........:................................:.................................| | Surface : : | | : PRO_E_EXT_SURF_CUT_SOLID_TYPE : PRO_REV_FEAT_TYPE_SURFACE | | : PRO_E_FEAT_FORM_IS_THIN : PRO_REV_FEAT_FORM_NO_THIN | | : PRO_E_REMOVE_MATERIAL : PRO_REV_MATERIAL_ADD | |..........:................................:.................................| | Surface : : | | Trim : PRO_E_EXT_SURF_CUT_SOLID_TYPE : PRO_REV_FEAT_TYPE_SURFACE | | : PRO_E_FEAT_FORM_IS_THIN : PRO_REV_FEAT_FORM_NO_THIN | | : PRO_E_REMOVE_MATERIAL : PRO_REV_MATERIAL_REMOVE | |..........:................................:.................................| | Thin : : | | Surface : PRO_E_EXT_SURF_CUT_SOLID_TYPE : PRO_REV_FEAT_TYPE_SURFACE | | Trim : PRO_E_FEAT_FORM_IS_THIN : PRO_REV_FEAT_FORM_THIN | | : PRO_E_REMOVE_MATERIAL : PRO_REV_MATERIAL_REMOVE | |..........:................................:.................................| | SMT : : | |Unattached: PRO_E_EXT_SURF_CUT_SOLID_TYPE : PRO_EXT_FEAT_TYPE_SOLID | | Wall : PRO_E_FEAT_FORM_IS_THIN : Non-relevant | | : PRO_E_REMOVE_MATERIAL : PRO_EXT_MATERIAL_ADD | |..........:................................:.................................| ------------------------------------------------------------------------------- Table Revolve:4.5 : Non SMT Revolve Vs. Sheet Metal Revolve (Unattached Wall)| ------------------------------------------------------------------------------- | Elements that are common to both features | |-----------------------------------------------------------------------------| | PRO_E_STD_FEATURE_NAME | | PRO_E_EXT_SURF_CUT_SOLID_TYPE | | PRO_E_REMOVE_MATERIAL | | PRO_E_BODY | | PRO_E_FEATURE_FORM | | PRO_E_STD_SECTION | | PRO_E_STD_MATRLSIDE | | PRO_E_STD_DIRECTION | | PRO_E_REVOLVE_AXIS | | PRO_E_REVOLVE_AXIS_OPT | | PRO_E_REV_ANGLE | |.............................................................................| | Revolve specific | Wall specific | |-----------------------------------------------------------------------------| |.......................................:.....................................| | PRO_E_FEAT_FORM_IS_THIN : PRO_E_STD_SMT_THICKNESS | | PRO_E_THICKNESS : PRO_E_STD_SMT_SWAP_DRV_SIDE | | PRO_E_SRF_END_ATTRIBUTES : PRO_E_SMT_WALL_SHARPS_TO_BENDS | | PRO_E_TRIM_QLT_SIDE : PRO_E_SMT_FILLETS | | PRO_E_TRIM_QUILT : PRO_E_SMT_DEV_LEN_CALCULATION | | : PRO_E_SMT_MERGE_DATA | | : PRO_E_SMT_NEW_BODY_LINKED | |.......................................:.....................................| 5 Feature element tree for first feat: ======================================= PRO_E_FEATURE_TREE | |--PRO_E_STD_FEATURE_NAME | |--PRO_E_FEATURE_TYPE | |--PRO_E_EXT_SURF_CUT_SOLID_TYPE | |--PRO_E_BODY | | | |--PRO_E_BODY_USE | | | |--PRO_E_BODY_SELECT | |--PRO_E_FEATURE_FORM | |--PRO_E_SKETCHER ( Section ) | |--PRO_E_FEAT_FORM_IS_THIN ( Feature Form ) | |--PRO_E_STD_MATRLSIDE ( Material Side ) | |--PRO_E_THICKNESS ( Thickness ) | |--PRO_E_REV_ANGLE | | | |--PRO_E_REV_ANGLE_FROM | |--PRO_E_REV_ANGLE_FROM_TYPE | |--PRO_E_REV_ANGLE_FROM_VAL ----------------------------------------------------------------------------- Table 5.1: Common elements for all First feat Revolve features and their values ------------------------------------------------------------------------------ | Element Id | Value | ---------------------------------------------------------------------- | PRO_E_FEATURE_FORM | Feature Form | | | Valid Value : PRO_REVOLVE | |..............................|........................................| | PRO_E_FEATURE_TYPE | Feature type | | | Valid Value : PRO_FEAT_FIRST_FEAT | |..............................|........................................| | PRO_E_EXT_SURF_CUT_SOLID_TYPE| Feature type | | | Valid Value : PRO_EXT_FEAT_TYPE_SOLID | |..............................|........................................| | PRO_E_BODY_USE | Mandatory | | | | | | To which body feature adds geometry | | | Valid values: | | | PRO_BODY_USE_NEW | | | Feature stores it's geometry in new | | | body | | | PRO_BODY_USE_SELECTED | | | Feature adds it's geometry to single | | | selected body | | | | |..............................|........................................| | PRO_E_BODY_SELECTED | Reference to signle selected body | | | Mandatory if PRO_E_BODY_USE is set to | | | PRO_BODY_USE_SELECTED | | | Ignored otherwise | |..............................|........................................| | PRO_E_SKETCHER | 2d Section. Must be closed for first | | | features. | |..............................|........................................| | PRO_E_FEAT_FORM_IS_THIN | Feature Form | | | Of type ProRevFeatForm | | | = PRO_REV_FEAT_FORM_NO_THIN | | | for Solid feature | | | = PRO_REV_FEAT_FORM_THIN | | | for Thin feature | |..............................|........................................| | PRO_E_REV_ANGLE | Compound Element | | | | |..............................|........................................| | PRO_E_REV_ANGLE_FROM | Compound Element | | | | |..............................|........................................| | PRO_E_REV_ANGLE_FROM_TYPE | Mandatory | | | = PRO_REV_ANG_FROM_ANGLE | |..............................|........................................| | PRO_E_REV_ANGLE_FROM_VAL | Of type PRO_VALUE_TYPE_DOUBLE | |..............................|........................................| | PRO_E_STD_FEATURE_NAME | Default given by application depending | | | on feature type.Can be modified by user| |..............................|........................................| ----------------------------------------------------------------------------- Table Revolve:5.2 : Elements required for each First feature in addition to those mentioned above. ----------------------------------------------------------------------------- | | Element Id | Comment | ------------------------------------------------------------------------------ | Solid : : No Additional Elements Required | |..........:................................:.................................| | Thin : : | | : PRO_E_STD_MATRLSIDE : Mandatory | | : : Of type ProRevMatlSide | | : : Dependent on PRO_E_SKETCHER | | : : See Note 4 for details. | | : : | | : PRO_E_THICKNESS : Mandatory >= 0.0 | | : : Of type PRO_VALUE_TYPE_DOUBLE | | : : Dependent on PRO_E_SKETCHER | | : : See Note 4 for details. | | : : | |..........:................................:.................................| \*****************************************************************************/ /*****************************************************************************/ /* 1. PRO_E_REV_ANGLE_FROM_TYPE */ typedef enum pro_rev_angle_from_type { PRO_REV_ANG_FROM_ANGLE = (1<<12), PRO_REV_ANG_FROM_90 = (1<<13), /* Obsoleted */ PRO_REV_ANG_FROM_180 = (1<<14), /* Obsoleted */ PRO_REV_ANG_FROM_270 = (1<<15), /* Obsoleted */ PRO_REV_ANG_FROM_360 = (1<<16), /* Obsoleted */ PRO_REV_ANG_FROM_REF = (1<<17), PRO_REV_ANG_FROM_NONE = (1<<18) } ProRevAngleFromType; /* 2. PRO_E_REV_ANGLE_TO_TYPE */ typedef enum pro_rev_angle_to_type { PRO_REV_ANG_TO_ANGLE = (1<<22), PRO_REV_ANG_TO_90 = (1<<23), /* Obsoleted */ PRO_REV_ANG_TO_180 = (1<<24), /* Obsoleted */ PRO_REV_ANG_TO_270 = (1<<25), /* Obsoleted */ PRO_REV_ANG_TO_REF = (1<<27), PRO_REV_ANG_TO_NONE = (1<<28), /* Obsoleted. See Note Below. */ PRO_REV_ANG_SYMMETRIC = (1<<29) } ProRevAngleToType; /* PRO_REV_ANG_TO_NONE should not be used as depth type. Instead use PRO_REV_ANG_FROM_NONE and proper PRO_E_STD_DIRECTION */ /* 3. PRO_E_TRIM_QLT_SIDE */ typedef enum pro_rev_trimqlt_side { PRO_REV_TRIMQLT_SIDE_ONE = -1, /* Side 1 */ PRO_REV_TRIMQLT_SIDE_TWO = 1 /* Side 2 */ } ProRevTrimQltSide; /* 4. PRO_E_STD_MATRLSIDE */ typedef enum pro_rev_material_side { PRO_REV_MATERIAL_SIDE_ONE = 1, /* Side 1 */ PRO_REV_MATERIAL_SIDE_TWO = 2, /* Side 2 */ PRO_REV_MATERIAL_BOTH_SIDES = 3 /* Both sides */ } ProRevMatlSide; /* Important : PRO_REV_MATERIAL_BOTH_SIDES should be used with Thin and trim features only. */ /* 5. PRO_E_EXT_SURF_CUT_SOLID_TYPE */ typedef enum pro_rev_feat_type { PRO_REV_FEAT_TYPE_SOLID = 917, /* Solid Protrusion */ PRO_REV_FEAT_TYPE_SURFACE = 942 /* Surface Protrusion */ } ProRevFeatType; /* 6. PRO_E_REMOVE_MATERIAL */ typedef enum pro_rev_rem_material { PRO_REV_MATERIAL_ADD = -1, /* Solid protrusion */ PRO_REV_MATERIAL_REMOVE = 916 /* Solid Cut protrusion */ } ProRevRemMaterial; /* 7. PRO_E_STD_DIRECTION */ typedef enum pro_rev_direction { PRO_REV_CR_IN_SIDE_ONE = -1, /* Protrusion in Side 1 */ PRO_REV_CR_IN_SIDE_TWO = 1 /* Protrusion in Side 2 */ } ProRevDirection; /* 8. PRO_E_FEAT_FORM_IS_THIN */ typedef enum pro_rev_feat_form { PRO_REV_FEAT_FORM_NO_THIN = 0, /* Solid protrusion */ PRO_REV_FEAT_FORM_THIN = 128 /* Thin protrusion */ } ProRevFeatForm; /* 9. PRO_E_SRF_END_ATTRIBUTES */ typedef enum pro_rev_surf_end_attr { PRO_REV_SURF_END_ATTR_OPEN = 1, PRO_REV_SURF_END_ATTR_CAPPED = 14 } ProRevSurfEndAttr; /* 10. PRO_E_REVOLVE_AXIS_OPT */ typedef enum pro_rev_axis_opt { PRO_REV_AXIS_EXT_REF = -1, PRO_REV_AXIS_INT_REF = 1 } ProRevAxisOptAttr; /*****************************************************************************/ /*****************************************************************************\ Note 1. Angle reference types: Angle Type Valid Reference Types --------------------------------------------------------------------- PRO_REV_ANGLE_FROM_REF PRO_POINT, PRO_EDGE_START, PRO_EDGE_END, PRO_CRV_START,PRO_CRV_END PRO_SURFACE (Plane) PRO_REV_ANGLE_TO_REF PRO_POINT, PRO_EDGE_START, PRO_EDGE_END, PRO_CRV_START,PRO_CRV_END PRO_SURFACE (Plane) IMPORTANT: For PRO_SURFACE type of ProSelection object using datum planes For PRO_SURFACE type of ProSelection object, when datum planes passing through the revolve axis are selected, since two possible solutions will exist for creation, the direction will be decided on the basis of the location from the ProSelection object. Use ProSelectionPoint3dSet() for setting it programmatically. The selection object has to pass through the revolve axis Note 2. Revolve with symetric depth option Following elements needs to be set: PRO_E_REV_ANGLE_FROM_TYPE -> PRO_REV_ANG_FROM_NONE PRO_E_REV_ANGLE_TO_TYPE -> PRO_REV_ANG_SYMMETRIC PRO_E_REV_ANGLE_TO_VAL -> The symmetric angle double value. Other angle related elements are ignored. Note 3. Important: The elements PRO_E_STD_DIRECTION, PRO_E_STD_MATRLSIDE, PRO_E_TRIM_QLT_SIDE and PRO_E_SRF_END_ATTRIBUTES, are directly dependent upon the presence of a fully defined PRO_E_STD_SECTION element tree (including PRO_E_SKETCHER). Values assigned to these elements before fully defining the PRO_E_STD_SECTION will be ignored. Note 4. Important: In First feature, the elements PRO_E_STD_MATRLSIDE and PRO_E_THICKNESS, are directly dependent upon the presence of a defined PRO_E_SKETCHER element. Values assigned to these elements before fully defining the PRO_E_SKETCHER will be ignored. Note 5. For more info on Body elements refer ProBodyOpts.h \*****************************************************************************/ /*========= OLD IMPLEMENTATION prior to Pro/E Wildfire 1.0 ==================*/ /*****************************************************************************\ Feature element tree PRO_E_FEATURE_TREE | |--PRO_E_FEATURE_TYPE | |--PRO_E_FEATURE_FORM | |--PRO_E_ATTRIBUTES | |--PRO_E_ATTR_SRF_END_COND | |--PRO_E_STD_SECTION | |--PRO_E_REV_ANGLE | |--PRO_E_REV_ANGLE_FROM | |--PRO_E_REV_ANGLE_FROM_TYPE | |--PRO_E_REV_ANGLE_FROM_VAL If Type = Angle | |--PRO_E_REV_ANGLE_FROM_REF If Type = To Reference | |--PRO_E_REV_ANGLE_FROM_LIMIT If Reference = datum-plane. | | |--PRO_E_REV_ANGLE_TO | |--PRO_E_REV_ANGLE_TO_TYPE | |--PRO_E_REV_ANGLE_TO_VAL If Type = Angle | |--PRO_E_REV_ANGLE_TO_REF If Type = To Reference | |--PRO_E_REV_ANGLE_TO_LIMIT If Reference = datum-plane. 3. Feature elements table -------------------------------------------------------------------------------------------- Element Id Element Name Data Type Valid Values -------------------------------------------------------------------------------------------- PRO_E_FEATURE_TYPE Feature Type PRO_VALUE_TYPE_INT PRO_FEAT_PROTRUSION PRO_FEAT_FIRST_FEAT, PRO_FEAT_CUT, PRO_FEAT_SLOT PRO_E_FEATURE_FORM Feature Form PRO_VALUE_TYPE_INT PRO_REVOLVE PRO_E_ATTRIBUTES Attributes Compound PRO_E_ATTR_SRF_END_COND EndCond PRO_VALUE_TYPE_INT ProSrfEndCond PRO_E_STD_SECTION Section Compound PRO_E_REV_ANGLE Angle Compound PRO_E_REV_ANGLE_FROM Angle From Compound PRO_E_REV_ANGLE_TO Angle To Compound PRO_E_REV_ANGLE_FROM_TYPE Type PRO_VALUE_TYPE_INT ProRevAngleType PRO_E_REV_ANGLE_TO_TYPE Type PRO_VALUE_TYPE_INT ProRevAngleType PRO_E_REV_ANGLE_FROM_REF References PRO_VALUE_TYPE_SELECTION See Note 1 PRO_E_REV_ANGLE_TO_REF References PRO_VALUE_TYPE_SELECTION See Note 1 PRO_E_REV_ANGLE_FROM_LIMIT Type PRO_VALUE_TYPE_INT ProRevAngleLimit PRO_E_REV_ANGLE_TO_LIMIT Type PRO_VALUE_TYPE_INT ProRevAngleLimit PRO_E_REV_ANGLE_FROM_VAL Value PRO_VALUE_TYPE_DOUBLE >= 0.0 PRO_E_REV_ANGLE_TO_VAL Value PRO_VALUE_TYPE_DOUBLE >= 0.0 -------------------------------------------------------------------------------------------- Note 1. PRO_E_REV_ANGLE_FROM_LIMIT and PRO_E_REV_ANGLE_TO_LIMIT To determine the side of the datum plane to end the revolution. Called only if the Reference is a datum plane. \*****************************************************************************/ /* 3. PRO_E_REV_ANGLE_FROM_LIMIT and PRO_E_REV_ANGLE_TO_LIMIT */ typedef enum pro_rev_angle_limit { PRO_REV_ANG_LIMIT_SIDE1 = 1, PRO_REV_ANG_LIMIT_SIDE2 = -1 } ProRevAngleLimit; PRO_END_C_DECLS #endif