NX二次开发-PK找极限点

PK_BODY_find_extreme()体找极限,PK_FACE_find_extreme()面找极限,PK_EDGE_find_extreme()边找极限,这里介绍一下体找极限,其余同理。输入三个方向XYZ,找到输入的实体在Z方向最远的点(一般会有多个,也可能只有一个),三个方向取反再找一次就是对角的极限点,具体实现效果可以参照UG菜单栏-分析-测量极限-3D极限点。

/*body_tag*/输入
tag_t ps_tag;//输出
double dirx[3];//输入
double diry[3];//输入
double dirz[3];//输入
double rdirx[3]={-dirx[0],-dirx[1],-dir[2]};
double rdiry[3]={-diry[0],-diry[1],-diry[2]};
double rdirz[3]={-dirz[0],-dirz[1],-dirz[2]};
UF_PS_ask_ps_tag_of_object(body_tag,ps_tag);//获取ug对象的Parasolid tag 
PK_CLASS_t pkType=0;
PK_TOPOL_t tp;
PK_VECTOR_t p[2];
PK_BODY_find_extreme_o_t n={true};
//极限点的坐标
double point[2][3];
PK_ENTITY_ask_class(ps_tag,&pkType);
if(pk_Type==PK_CLASS_body)
{
  PK_BODY_find_extreme(ps_tag,dirx,diry,dirz,&n,&p[1],&tp);
  pk_BODY_find_extreme(ps_tag,rdirx,rdiry,rdirz,&n,&p[2],&tp);
  for(int i=0;i<3;i++)
  {
    point[0][i]=p[0].coord[i]*1000.0;
    point[1][i]=p[1].coord[i]*1000.0;
  }
}

你可能感兴趣的:(c++)