📄 ugfundvisit.c
字号:
/*----------------------------------------------------------------------------- File: UgFundVisit.c Description: demo visit functionality (new for Pro/TOOLKIT) PTC File Date Version Author Vers Comment--------- ------- -------- ----- ---------------------------------------------04-dec-97 H-02-02 AWY/CHI $$1 setup-----------------------------------------------------------------------------*//*---------------------- Pro/Toolkit Includes ------------------------*/#include "ProToolkit.h"#include "ProAxis.h"#include "ProFeature.h"#include "ProFeatType.h"#include "ProGeomitem.h"#include "ProMdl.h"#include "ProModelitem.h"#include "ProObjects.h"#include "ProSelection.h"#include "ProSizeConst.h"#include "ProSolid.h"#include "ProUtil.h"/*---------------------- Application Includes ------------------------*/#include "TestError.h"/*---------------------- Global Data ------------------------*/typedef struct surface_visit_data{ FILE *fp; ProSolid part;} AxisVisitData_t;/*---------------------- Function Prototypes -------------------------*/ProError UserDemoAxisAct();ProError UserDemoHoleList();int UserVisitDemo();/*====================================================================*\ FUNCTION : UserDemoAxisAct() PURPOSE : Axis-visit action function, to write the axis name to a file.\*====================================================================*/ProError UserDemoAxisAct( ProAxis axis, ProError filt_status, ProAppData app_data){ ProError status; AxisVisitData_t *p_data = (AxisVisitData_t*)app_data; ProSolid part=p_data->part; FILE *fp=p_data->fp; int id; ProModelitem modelitem; ProFeature feature; ProFeattype ftype; ProName wname; char name[PRO_NAME_SIZE]; ProSelection selection;/*--------------------------------------------------------------------*\ Get the axis id\*--------------------------------------------------------------------*/ status = ProAxisIdGet(axis, &id); if(status != PRO_TK_NO_ERROR) return(status);/*--------------------------------------------------------------------*\ Make a Modelitem handle for the axis\*--------------------------------------------------------------------*/ status = ProModelitemInit(part, id, PRO_AXIS, &modelitem); if(status != PRO_TK_NO_ERROR) return(status);/*--------------------------------------------------------------------*\ Get the feature the axis belongs to\*--------------------------------------------------------------------*/ status = ProGeomitemFeatureGet(&modelitem, &feature); if(status != PRO_TK_NO_ERROR) return(status);/*--------------------------------------------------------------------*\ Get the type of the feature\*--------------------------------------------------------------------*/ status = ProFeatureTypeGet(&feature, &ftype); if(status != PRO_TK_NO_ERROR) return(status); /*--------------------------------------------------------------------*\ If the type was not HOLE, skip\*--------------------------------------------------------------------*/ if(ftype != PRO_FEAT_HOLE) return(PRO_TK_NO_ERROR);/*--------------------------------------------------------------------*\ Get the name of the axis\*--------------------------------------------------------------------*/ status = ProModelitemNameGet(&modelitem, wname); if(status != PRO_TK_NO_ERROR) return(status); ProWstringToString(name,wname);/*--------------------------------------------------------------------*\ Print out the axis name and hole id\*--------------------------------------------------------------------*/ fprintf(fp, "Axis %s belongs to hole feature %d\n", name, feature.id);/*--------------------------------------------------------------------*\ Highlight the owning hole\*--------------------------------------------------------------------*/ ProSelectionAlloc(NULL, &feature, &selection); ProSelectionHighlight(selection, PRO_COLOR_HIGHLITE); ProSelectionFree(&selection); return(PRO_TK_NO_ERROR);}/*====================================================================*\ FUNCTION : UserDemoHoleList() PURPOSE : Function to list the axes which belong to hole features in a part, and report their names\*====================================================================*/ProError UserDemoHoleList( ProSolid part){ ProError status; AxisVisitData_t data; data.part = part;/*--------------------------------------------------------------------*\ Open the text file\*--------------------------------------------------------------------*/ data.fp = fopen("holelist.dat","w");/*--------------------------------------------------------------------*\ Visit all the axes using the visit and filter functions above. Pass the owning sold, and the text file pointer using the app_data argument.\*--------------------------------------------------------------------*/ status = ProSolidAxisVisit(part, UserDemoAxisAct, NULL, (ProAppData)&data); ERROR_CHECK("UserDemoHoleList","ProSolidAxisVisit",status);/*--------------------------------------------------------------------*\ Close the file\*--------------------------------------------------------------------*/ fclose(data.fp);
return( PRO_TK_NO_ERROR );}/*====================================================================*\ FUNCTION : UserVisitDemo PURPOSE : call UserDemoHoleList on current model\*====================================================================*/int UserVisitDemo( ){ ProMdl model; ProError status; status = ProMdlCurrentGet( &model ); ERROR_CHECK( "UserDemoVisit", "ProMdlCurrentGet", status ); if ( status == PRO_TK_NO_ERROR ) status = UserDemoHoleList( (ProSolid)model ); return( (int)status );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -