判断面半径,类型轴中心极点坐标

判断面半径,类型轴中心极点坐标
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/



你可能感兴趣的:(判断面半径,类型轴中心极点坐标)