判断面半径,类型轴中心极点坐标
UF_MODL_ask_face_data
判断面类型 圆柱或圆锥等等轴中心方向 极点坐标 半径 大小
//设置选择的实体类型
static int init_proc( UF_UI_selection_p_t select, void *user_data )
{
int errorCode = 0;
int num_triples = 1; //选择类型 数量
UF_UI_mask_t mask_triples[]={UF_face_type,0,0,}; //定义选择类型
errorCode = UF_UI_set_sel_mask(select, UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,num_triples, mask_triples);
if( errorCode == 0)
{
return UF_UI_SEL_SUCCESS;
}
else
{
return UF_UI_SEL_FAILURE;
}
}
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
{
int errorCode = UF_initialize();
if ( 0 == errorCode )
{
char *message="UGapi提示!请选择表面。";
char *title="UGapi-UGapi";
int scope=UF_UI_SEL_SCOPE_WORK_PART;//UF_UI_SEL_SCOPE_NO_CHANGE
int response;
tag_t object_tag;
double cursor[3]={0.0};
tag_t view=NULL_TAG;
UF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);//加锁
UF_UI_select_with_single_dialog(message,title,scope,init_proc,NULL,&response,&object_tag,cursor,&view); //选择框】
UF_DISP_set_highlight(object_tag,0); //1高亮显示 0不高亮显示
UF_UI_unlock_ug_access (UF_UI_FROM_CUSTOM);//解锁
if (response==UF_UI_OBJECT_SELECTED)
{
UF_MODL_ask_feat_body (object_tag,&object_tag);
// 分析面
int type=0; //判断面类型
int norm_dir=0; //面法向,norm_dir=1 外R
double point[3]; //轴中心 点
double dir[3]; //轴方向
double box[6]; //极点坐标
double radius[1]; //半径 圆锥=最小半径 + 最大半径 /2
double rad_data[1];
UF_MODL_ask_face_data (
object_tag, //输入面
&type,point,dir,box,radius,rad_data,&norm_dir); //分析面
//判断面类型 type值
//16 =圆柱
//17 =圆锥
//18 =球
//19 =旋转(环形)
//20 =挤压
//22 =有界平面
//23 =角(物)
//43 = b级表面
//65 =偏移曲面
//66 =外表面
char msg[64];
UF_UI_open_listing_window(); //打开窗口
sprintf(msg, "判断面类型:%d\n",type);
UF_UI_write_listing_window(msg);
if (norm_dir==1)
UF_UI_write_listing_window("外R\n");
else
UF_UI_write_listing_window("内R\n");
sprintf(msg, "轴中心 点:%.2f,%.2f,%.2f\n",point[0],point[1],point[2]);
UF_UI_write_listing_window(msg);
sprintf(msg, "轴方向:%.2f,%.2f,%.2f\n",dir[0],dir[1],dir[2]);
UF_UI_write_listing_window(msg);
sprintf(msg, "半径 圆锥=最小半径 + 最大半径 /2:%.2f\n",radius[0]);
UF_UI_write_listing_window(msg);
}
errorCode = UF_terminate();
}
return;
}
extern "C" int ufusr_ask_unload( void )
{
return (UF_UNLOAD_IMMEDIATELY);
}
UG二次开发培训,可面授、远程视频指导、手把手教使用NXopen C++ 、UFun进行UG二次开发,入门开始,不懂C语言没有关系,但UG NX软件要会用,系统性的教,深度学会UG二次开发的原理与细节,让你完全可以独立完成复杂的项目开发。有意可联系胡君QQ:85585969
胡君UG二次开发技术论坛: http://www.ugapi.com/