Pro/E數據獲取之一:獲取圓弧直徑值

/*=======================================================*\
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,"Message.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(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(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(status);
}
posted @ 2010-04-07 22:10  samyangvs05  阅读(249)  评论(0编辑  收藏  举报