/* Copyright (c) 2024 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved. */ /*---------------------- Pro/Toolkit Includes ------------------------*/ #include <ProToolkit.h> #include <ProSelection.h> #include <ProGeomitem.h> #include <ProUtil.h> #include <ProMessage.h> #include <ProEdge.h> /*---------------------- Application Includes ------------------------*/ #include <TestError.h> /*---------------------- Function Prototypes -------------------------*/ ProError UserArcDiaDisp(); /*============================================================================*\ Function: UserArcDiaDisp() Purpose: Display Diameter of Selected Arc \*============================================================================*/ ProError UserArcDiaDisp() { int sel_count; double diameter; ProError status; ProModelitem p_mdl_item; ProFileName msgfile; ProGeomitemdata *geom_data=NULL; ProArcdata *p_arc=NULL; ProEdge edge; ProEnttype edge_type; ProSelection *psels=NULL; /*----------------------------------------------------------------------------*\ Prompt user for selection of arc \*----------------------------------------------------------------------------*/ ProStringToWstring(msgfile,"msg_uggeom.txt"); status = ProMessageDisplay(msgfile,"USER Select Arc to Evaluate:"); ERROR_CHECK("UserArcDiaDisp","ProMessageDisplay(Select Arc)",status); if((ProSelect("edge",1,NULL,NULL,NULL,NULL,&psels, &sel_count) != PRO_TK_NO_ERROR) || (sel_count < 1)) return((int)PRO_TK_GENERAL_ERROR); status = ProSelectionModelitemGet(psels[0],&p_mdl_item); ERROR_CHECK( "UserArcDiaDisp", "ProSelectionModelitemGet", status ); status = ProGeomitemToEdge(&p_mdl_item,&edge); ERROR_CHECK("UserArcDiaDisp","ProGeomitemToEdge",status); status = ProEdgeTypeGet(edge,&edge_type); ERROR_CHECK("UserArcDiaDisp","ProEdgeTypeGet",status); if((edge_type != PRO_ENT_ARC) && (edge_type != PRO_ENT_CIRCLE)) { status = ProMessageDisplay(msgfile,"USER Invalid Arc Selection"); ERROR_CHECK("UserArcDiaDisp","ProMessageDisplay(Invalid Arc)",status); return((int)PRO_TK_GENERAL_ERROR); } status = ProGeomitemdataGet(&p_mdl_item,&geom_data); ERROR_CHECK("UserArcDiaDisp","ProGeomitemdataGet",status); diameter = geom_data->data.p_curve_data->arc.radius*2.0; status = ProMessageDisplay(msgfile,"USER Arc Diameter = %0f",&diameter); ERROR_CHECK("UserArcDiaDisp","ProMessageDisplay(Arc Diameter)",status); ProGeomitemdataFree(&geom_data); return((int)status); }