/*
Copyright (c) 2024 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/
/*---------------------- Pro/Toolkit Includes ------------------------*/
#include "ProToolkit.h"
#include "ProFeature.h"
#include "ProElemId.h"
#include "ProExtrude.h"
#include "ProModFeat.h"
#include "ProStdSection.h"
#include "ProElement.h"
#include "ProElempath.h"
#include "ProFeatType.h"
#include "ProFeatForm.h"
#include "ProSelection.h"
#include "ProSection.h"
#include "ProModelitem.h"
#include "ProSrfcollection.h"
#include "ProCrvcollection.h"
#include "ProDraft.h"
#include "ProDirection.h"
static ProFileName message_file;
#define C_LOG(a) ProTKPrintf ("Status for %s is = %d\n", a, status ); \
ERROR_CHECK( a, "UgDraftCreate.c", status );
#define C_PRINT(a) ProTKPrintf ( "%s\n", a);
/*===============================================================*\
FUNCTION : UserDraftTemplate()
PURPOSE : Template function for creation of Draft features.
\*===============================================================*/
ProError UserDraftTemplate()
{
ProErrorlist errors;
ProMdl model;
ProSelection model_sel;
ProFeature feature;
ProFeatureCreateOptions *opts = 0;
ProElempath path;
ProElempathItem path_items[2];
ProSection section;
ProAsmcomppath comp_path;
ProAsmcomppath *p_comp_path = NULL;
ProCollection collection;
ProCrvcollinstr crv_instr;
ProModelitem model_item;
ProReference reference;
ProName wide_string;
ProSrfcollinstr srf_instr;
ProSrfcollref isntr_ref;
ProBoolean is_interactive = PRO_B_TRUE;
ProElement pro_e_feature_tree;
ProElement pro_e_feature_type;
ProElement pro_e_std_feature_name;
ProElement pro_e_draft_tweak_or_intersec;
ProElement pro_e_draft_extend;
ProElement pro_e_draft_split;
ProElement pro_e_std_surf_collection_appl;
ProElement pro_e_direction_compound;
ProElement pro_e_direction_reference;
ProElement pro_e_direction_flip;
ProElement pro_e_std_section;
ProElement pro_e_std_sec_method;
ProElement pro_e_std_sec_select;
ProElement pro_e_std_curve_collection_appl;
ProElement pro_e_surf_chain_cmpnd;
ProElement pro_e_surf_chain_method;
ProElement pro_e_surf_chain_ref_surfs;
ProElement pro_e_surf_chain_surf;
ProElement pro_e_std_sec_setup_plane;
ProElement pro_e_std_sec_plane_view_dir;
ProElement pro_e_std_sec_plane_orient_dir;
ProElement pro_e_draft_constant_or_variable;
ProElement pro_e_draft_include_tangent;
ProElement pro_e_draft_side_1;
ProElement pro_e_draft_neutral_object_type_1;
ProElement pro_e_draft_dependent_1;
ProElement pro_e_draft_angle_1;
ProElement pro_e_draft_angles;
ProElement pro_e_draft_side_2;
ProElement pro_e_draft_neutral_object_type_2;
ProElement pro_e_draft_dependent_2;
ProElement pro_e_draft_angle_2;
ProStringToWstring ( message_file, "utilities.txt" );
status = ProMdlCurrentGet (&model);
if ( status != PRO_TK_NO_ERROR ) return ( status );
/*---------------------------------------------------------------*\
Populating root element PRO_E_FEATURE_TREE
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_FEATURE_TREE *** " );
status = ProElementAlloc ( PRO_E_FEATURE_TREE, &pro_e_feature_tree );
C_LOG( " ProElementAlloc " );
/*---------------------------------------------------------------*\
Populating element PRO_E_FEATURE_TYPE
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_FEATURE_TYPE *** " );
status = ProElementAlloc ( PRO_E_FEATURE_TYPE, &pro_e_feature_type );
C_LOG( " ProElementAlloc " );
status = ProElementIntegerSet ( pro_e_feature_type, PRO_FEAT_DRAFT );
C_LOG( " ProElementIntegerSet" );
status = ProElemtreeElementAdd ( pro_e_feature_tree, NULL, pro_e_feature_type );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_STD_FEATURE_NAME
- Optional
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_STD_FEATURE_NAME *** " );
status = ProElementAlloc ( PRO_E_STD_FEATURE_NAME, &pro_e_std_feature_name );
C_LOG( " ProElementAlloc " );
ProStringToWstring ( wide_string, "DRAFT_ID_XXX" );
status = ProElementWstringSet ( pro_e_std_feature_name, wide_string );
C_LOG( " ProElementWstringSet" );
status = ProElemtreeElementAdd ( pro_e_feature_tree, NULL, pro_e_std_feature_name );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_TWEAK_OR_INTERSEC
- Optional ( valid for pre Pro/E WildFire 2.0 draft features
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_TWEAK_OR_INTERSEC *** " );
status = ProElementAlloc ( PRO_E_DRAFT_TWEAK_OR_INTERSEC, &pro_e_draft_tweak_or_intersec );
C_LOG( " ProElementAlloc " );
status = ProElementIntegerSet ( pro_e_draft_tweak_or_intersec, PRO_DRAFT_UI_TWEAK );
C_LOG( " ProElementIntegerSet" );
status = ProElemtreeElementAdd ( pro_e_feature_tree, NULL, pro_e_draft_tweak_or_intersec );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_EXTEND
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_EXTEND *** " );
status = ProElementAlloc ( PRO_E_DRAFT_EXTEND, &pro_e_draft_extend );
C_LOG( " ProElementAlloc " );
status = ProElementIntegerSet ( pro_e_draft_extend, PRO_DRAFT_UI_NO_EXTEND );
C_LOG( " ProElementIntegerSet" );
status = ProElemtreeElementAdd ( pro_e_feature_tree, NULL, pro_e_draft_extend );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_SPLIT
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_SPLIT *** " );
status = ProElementAlloc ( PRO_E_DRAFT_SPLIT, &pro_e_draft_split );
C_LOG( " ProElementAlloc " );
status = ProElementIntegerSet ( pro_e_draft_split, PRO_DRAFT_UI_SPLIT_NONE );
C_LOG( " ProElementIntegerSet" );
status = ProElemtreeElementAdd ( pro_e_feature_tree, NULL, pro_e_draft_split );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_STD_SURF_COLLECTION_APPL
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_STD_SURF_COLLECTION_APPL *** " );
status = ProElementAlloc ( PRO_E_STD_SURF_COLLECTION_APPL, &pro_e_std_surf_collection_appl );
C_LOG( " ProElementAlloc " );
status = ProSrfcollectionAlloc ( &collection );
C_LOG( " ProSrfcollectionAlloc" );
status = ProSrfcollinstrAlloc ( 1, PRO_B_FALSE, &srf_instr );
C_LOG( " ProSrfcollinstrAlloc" );
status = ProSrfcollinstrIncludeSet ( srf_instr, 1 );
C_LOG( " ProSrfcollinstrIncludeSet" );
if ( is_interactive == PRO_B_TRUE )
{
ProSelection *sel_array;
int n_sel_array;
ProTKPrintf(" Please select surface,sldface,qltface SURFACE to be drafted \n");
status = ProMessageDisplay ( message_file, "USER Select reference." );
C_LOG( " ProMessageDisplay" );
status = ProSelect ( "surface,sldface,qltface", 1, NULL, NULL, NULL, NULL,
&sel_array, &n_sel_array );
C_LOG( " ProSelect" );
if ( n_sel_array <= 0 )
return PRO_TK_GENERAL_ERROR;
status = ProSelectionToReference ( sel_array[0], &reference );
C_LOG( " ProSelectionToReference" );
}
else
{
status = ProModelitemInit ( model, 117, PRO_SURFACE, &model_item );
C_LOG( " ProModelitemInit" );
status = ProReferenceAlloc ( &reference );
C_LOG( " ProReferenceAlloc" );
status = ProReferenceSet ( reference, NULL, &model_item );
C_LOG( " ProReferenceSet" );
}
status = ProSrfcollrefAlloc ( PRO_SURFCOLL_REF_SINGLE, reference, &isntr_ref );
C_LOG( " ProSrfcollrefAlloc" );
status = ProSrfcollinstrReferenceAdd ( srf_instr, isntr_ref );
C_LOG( " ProSrfcollinstrReferenceAdd" );
status = ProSrfcollectionInstructionAdd ( collection, srf_instr );
C_LOG( " ProSrfcollectionInstructionAdd" );
status = ProElementCollectionSet( pro_e_std_surf_collection_appl, collection );
C_LOG( " ProElementCollectionSet " );
status = ProElemtreeElementAdd ( pro_e_feature_tree, NULL, pro_e_std_surf_collection_appl );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DIRECTION_COMPOUND
|-- PRO_E_DIRECTION_REFERENCE
|-- PRO_E_DIRECTION_FLIP
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DIRECTION_COMPOUND *** " );
status = ProElementAlloc ( PRO_E_DIRECTION_COMPOUND, &pro_e_direction_compound );
C_LOG( " ProElementAlloc " );
status = ProElemtreeElementAdd ( pro_e_feature_tree, NULL, pro_e_direction_compound );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DIRECTION_REFERENCE
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DIRECTION_REFERENCE *** " );
status = ProElementAlloc ( PRO_E_DIRECTION_REFERENCE, &pro_e_direction_reference );
C_LOG( " ProElementAlloc " );
if ( is_interactive == PRO_B_TRUE )
{
ProSelection *sel_array;
int n_sel_array;
ProTKPrintf(" Please select edge,curve,axis DRAFT DIRECTION \n");
status = ProMessageDisplay ( message_file, "USER Select reference." );
C_LOG( " ProMessageDisplay" );
status = ProSelect ( "edge,curve,axis", 1, NULL, NULL, NULL, NULL,
&sel_array, &n_sel_array );
C_LOG( " ProSelect" );
if ( n_sel_array <= 0 )
return PRO_TK_GENERAL_ERROR;
status = ProSelectionToReference ( sel_array[0], &reference );
C_LOG( " ProSelectionToReference" );
}
else
{
status = ProModelitemInit ( model, 118, PRO_EDGE, &model_item );
C_LOG( " ProModelitemInit" );
status = ProReferenceAlloc ( &reference );
C_LOG( " ProReferenceAlloc" );
status = ProReferenceSet ( reference, NULL, &model_item );
C_LOG( " ProReferenceSet" );
}
status = ProElementReferenceSet( pro_e_direction_reference, reference );
C_LOG( " ProElementReferenceSet " );
status = ProElemtreeElementAdd ( pro_e_direction_compound, NULL, pro_e_direction_reference );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DIRECTION_FLIP
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DIRECTION_FLIP *** " );
status = ProElementAlloc ( PRO_E_DIRECTION_FLIP, &pro_e_direction_flip );
C_LOG( " ProElementAlloc " );
status = ProElementIntegerSet ( pro_e_direction_flip,
PRO_DIRECTION_FLIP_ALONG );
/* ProDirectionFlipOption :: ProDirection.h */
C_LOG( " ProElementIntegerSet" );
status = ProElemtreeElementAdd ( pro_e_direction_compound, NULL, pro_e_direction_flip );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_STD_SECTION
|-- PRO_E_SEC_USE_SKETCH
- Optional for the current feature ( no split )
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_STD_SECTION *** " );
status = ProElementAlloc ( PRO_E_STD_SECTION, &pro_e_std_section );
C_LOG( " ProElementAlloc " );
status = ProElemtreeElementAdd ( pro_e_feature_tree, NULL, pro_e_std_section );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_CONSTANT_OR_VARIABLE
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_CONSTANT_OR_VARIABLE *** " );
status = ProElementAlloc ( PRO_E_DRAFT_CONSTANT_OR_VARIABLE, &pro_e_draft_constant_or_variable );
C_LOG( " ProElementAlloc " );
status = ProElementIntegerSet ( pro_e_draft_constant_or_variable, PRO_DRAFT_UI_CONSTANT );
C_LOG( " ProElementIntegerSet" );
status = ProElemtreeElementAdd ( pro_e_feature_tree, NULL, pro_e_draft_constant_or_variable );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_STD_CURVE_COLLECTION_APPL
- Optional
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_STD_CURVE_COLLECTION_APPL *** " );
status = ProElementAlloc ( PRO_E_STD_CURVE_COLLECTION_APPL, &pro_e_std_curve_collection_appl );
C_LOG( " ProElementAlloc " );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_INCLUDE_TANGENT
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_INCLUDE_TANGENT *** " );
status = ProElementAlloc ( PRO_E_DRAFT_INCLUDE_TANGENT, &pro_e_draft_include_tangent );
C_LOG( " ProElementAlloc " );
status = ProElementIntegerSet ( pro_e_draft_include_tangent, PRO_DRAFT_UI_INC_TANG );
C_LOG( " ProElementIntegerSet" );
status = ProElemtreeElementAdd ( pro_e_feature_tree, NULL, pro_e_draft_include_tangent );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_SIDE_1
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_SIDE_1 *** " );
status = ProElementAlloc ( PRO_E_DRAFT_SIDE_1, &pro_e_draft_side_1 );
C_LOG( " ProElementAlloc " );
status = ProElemtreeElementAdd ( pro_e_feature_tree, NULL, pro_e_draft_side_1 );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_NEUTRAL_OBJECT_TYPE_1
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_NEUTRAL_OBJECT_TYPE_1 *** " );
status = ProElementAlloc ( PRO_E_DRAFT_NEUTRAL_OBJECT_TYPE_1, &pro_e_draft_neutral_object_type_1 );
C_LOG( " ProElementAlloc " );
status = ProElementIntegerSet ( pro_e_draft_neutral_object_type_1, PRO_DRAFT_UI_CURVE );
C_LOG( " ProElementIntegerSet" );
status = ProElemtreeElementAdd ( pro_e_draft_side_1, NULL, pro_e_draft_neutral_object_type_1 );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_STD_CURVE_COLLECTION_APPL
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_STD_CURVE_COLLECTION_APPL *** " );
status = ProElementAlloc ( PRO_E_STD_CURVE_COLLECTION_APPL, &pro_e_std_curve_collection_appl );
C_LOG( " ProElementAlloc " );
status = ProCrvcollectionAlloc ( &collection );
C_LOG( " ProCrvcollectionAlloc" );
status = ProCrvcollinstrAlloc ( PRO_CURVCOLL_ADD_ONE_INSTR, &crv_instr );
C_LOG( " ProCrvcollinstrAlloc" );
status = ProCrvcollinstrAttributeSet ( crv_instr, 0 );
C_LOG( " ProCrvcollinstrAttributeSet" );
if ( is_interactive == PRO_B_TRUE )
{
ProSelection *sel_array;
int n_sel_array;
ProTKPrintf(" Please select edge,curve,axis DRAFT HINGE \n");
status = ProMessageDisplay ( message_file, "USER Select reference." );
C_LOG( " ProMessageDisplay" );
status = ProSelect ( "edge,curve", 1, NULL, NULL, NULL, NULL,
&sel_array, &n_sel_array );
C_LOG( " ProSelect" );
if ( n_sel_array <= 0 )
return PRO_TK_GENERAL_ERROR;
status = ProSelectionToReference ( sel_array[0], &reference );
C_LOG( " ProSelectionToReference" );
}
else
{
status = ProModelitemInit ( model, 99, PRO_EDGE, &model_item );
C_LOG( " ProModelitemInit" );
status = ProReferenceAlloc ( &reference );
C_LOG( " ProReferenceAlloc" );
status = ProReferenceSet ( reference, NULL, &model_item );
C_LOG( " ProReferenceSet" );
}
status = ProCrvcollinstrReferenceAdd ( crv_instr, reference );
C_LOG( " ProCrvcollinstrReferenceAdd" );
status = ProCrvcollectionInstructionAdd ( collection, crv_instr );
C_LOG( " ProCrvcollectionInstructionAdd" );
status = ProElementCollectionSet( pro_e_std_curve_collection_appl, collection );
C_LOG( " ProElementCollectionSet " );
status = ProElemtreeElementAdd ( pro_e_draft_side_1, NULL, pro_e_std_curve_collection_appl );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_DEPENDENT_1
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_DEPENDENT_1 *** " );
status = ProElementAlloc ( PRO_E_DRAFT_DEPENDENT_1, &pro_e_draft_dependent_1 );
C_LOG( " ProElementAlloc " );
status = ProElementIntegerSet ( pro_e_draft_dependent_1, PRO_DRAFT_UI_INDEPENDENT );
C_LOG( " ProElementIntegerSet" );
status = ProElemtreeElementAdd ( pro_e_draft_side_1, NULL, pro_e_draft_dependent_1 );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_ANGLE_1
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_ANGLE_1 *** " );
status = ProElementAlloc ( PRO_E_DRAFT_ANGLE_1, &pro_e_draft_angle_1 );
C_LOG( " ProElementAlloc " );
status = ProElementDoubleSet ( pro_e_draft_angle_1, 10.000000 );
C_LOG( " ProElementDoubleSet" );
status = ProElemtreeElementAdd ( pro_e_draft_side_1, NULL, pro_e_draft_angle_1 );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_ANGLES
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_ANGLES *** " );
status = ProElementAlloc ( PRO_E_DRAFT_ANGLES, &pro_e_draft_angles );
C_LOG( " ProElementAlloc " );
status = ProElemtreeElementAdd ( pro_e_draft_side_1, NULL, pro_e_draft_angles );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_SIDE_2
- Optional
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_SIDE_2 *** " );
status = ProElementAlloc ( PRO_E_DRAFT_SIDE_2, &pro_e_draft_side_2 );
C_LOG( " ProElementAlloc " );
status = ProElemtreeElementAdd ( pro_e_feature_tree, NULL, pro_e_draft_side_2 );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_NEUTRAL_OBJECT_TYPE_2
- Optional
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_NEUTRAL_OBJECT_TYPE_2 *** " );
status = ProElementAlloc ( PRO_E_DRAFT_NEUTRAL_OBJECT_TYPE_2, &pro_e_draft_neutral_object_type_2 );
C_LOG( " ProElementAlloc " );
status = ProElementIntegerSet ( pro_e_draft_neutral_object_type_2, PRO_DRAFT_UI_NO_NEUT );
C_LOG( " ProElementIntegerSet" );
status = ProElemtreeElementAdd ( pro_e_draft_side_2, NULL, pro_e_draft_neutral_object_type_2 );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_STD_CURVE_COLLECTION_APPL
- Optional
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_STD_CURVE_COLLECTION_APPL *** " );
status = ProElementAlloc ( PRO_E_STD_CURVE_COLLECTION_APPL, &pro_e_std_curve_collection_appl );
C_LOG( " ProElementAlloc " );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_DEPENDENT_2
- Optional
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_DEPENDENT_2 *** " );
status = ProElementAlloc ( PRO_E_DRAFT_DEPENDENT_2, &pro_e_draft_dependent_2 );
C_LOG( " ProElementAlloc " );
status = ProElementIntegerSet ( pro_e_draft_dependent_2, PRO_DRAFT_UI_INDEPENDENT );
C_LOG( " ProElementIntegerSet" );
status = ProElemtreeElementAdd ( pro_e_draft_side_2, NULL, pro_e_draft_dependent_2 );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_ANGLE_2
- Optional
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_ANGLE_2 *** " );
status = ProElementAlloc ( PRO_E_DRAFT_ANGLE_2, &pro_e_draft_angle_2 );
C_LOG( " ProElementAlloc " );
status = ProElementDoubleSet ( pro_e_draft_angle_2, 1.000000 );
C_LOG( " ProElementDoubleSet" );
status = ProElemtreeElementAdd ( pro_e_draft_side_2, NULL, pro_e_draft_angle_2 );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Populating element PRO_E_DRAFT_ANGLES
- Optional
\*---------------------------------------------------------------*/
C_PRINT( " *** Processing Element PRO_E_DRAFT_ANGLES *** " );
status = ProElementAlloc ( PRO_E_DRAFT_ANGLES, &pro_e_draft_angles );
C_LOG( " ProElementAlloc " );
status = ProElemtreeElementAdd ( pro_e_draft_side_2, NULL, pro_e_draft_angles );
C_LOG( " ProElemtreeElementAdd" );
/*---------------------------------------------------------------*\
Creating feature in the current model.
\*---------------------------------------------------------------*/
status = ProMdlToModelitem( model, &model_item );
status = ProSelectionAlloc (p_comp_path, &model_item,
&model_sel);
status = ProArrayAlloc(1,sizeof(ProFeatureCreateOptions),
1, (ProArray*)&opts);
opts[0]= PRO_FEAT_CR_DEFINE_MISS_ELEMS;
status = ProFeatureWithoptionsCreate (model_sel, pro_e_feature_tree,
opts, PRO_REGEN_NO_FLAGS, &feature, &errors);
C_LOG (" ProFeatureWithoptionsCreate");
status = ProArrayFree((ProArray*)&opts);
/*---------------------------------------------------------------*\
Free up the allocated memory.
\*---------------------------------------------------------------*/
status = ProElementFree (&pro_e_feature_tree );
C_LOG (" ProElementFree");
return (status);
}
#undef C_LOG
#undef C_PRINT