打印面的法向


static int select_filter_proc_fn(tag_t object, int type[1], void* user_data, UF_UI_selection_p_t select)
{
if (object == NULL)
{
return UF_UI_SEL_REJECT;
}
else
{
return UF_UI_SEL_ACCEPT;
}
}

static int init_proc(UF_UI_selection_p_t select, void* user_data)
{
int num_triples = 1;//可选类型的数量
UF_UI_mask_t mask_triples[] =
{ UF_face_type, UF_all_subtype, UF_UI_SEL_NOT_A_FEATURE };//可选对象类型
UF_UI_set_sel_mask(select, UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC, num_triples, mask_triples);
if ((UF_UI_set_sel_procs(select, select_filter_proc_fn, NULL, user_data)) == 0)
{
return UF_UI_SEL_SUCCESS;
}
else
{
return UF_UI_SEL_FAILURE;
}
}

//------------------------------------------------------------------------------
// Do something
//------------------------------------------------------------------------------
void MyClass::do_it()
{
UF_initialize();
// TODO: add your code here
//单对象选择对话框
AA:
char sCue[] = "单对象选择对话框";
char sTitle[] = "单对象选择对话框";
int iScope = UF_UI_SEL_SCOPE_NO_CHANGE;
int iResponse;
tag_t *tObject;
//tag_t tView;
//double adCursor[3];
int count = 0;
UF_UI_select_with_class_dialog(sCue, sTitle, iScope, init_proc, NULL, &iResponse, &count, &tObject);

for (int i = 0; i < count; i++)
{

UF_DISP_set_highlight(tObject[i], 0);
//获取面的法向
int Type, type, subtype;
double Point[3];
double Dir[3];
double Box[6];
double Radius[3];
double RadData[3];
int NormDir;
UF_MODL_ask_face_data(tObject[i], &Type, Point, Dir, Box, Radius, RadData, &NormDir);
UF_OBJ_ask_type_and_subtype(tObject[i], &type, &subtype);
UF_CSYS_map_point(UF_CSYS_WORK_COORDS, Point, UF_CSYS_ROOT_WCS_COORDS, Point);
//打印面的法向方向
char msg[256], smg[256];
sprintf_s(msg, "\n面的法向方向为:X:%.5f Y:%.5f Z:%.5f\n面法线方向:%d\n类型:%d\n子类型:%d", Dir[0], Dir[1], Dir[2], NormDir, type, subtype);
sprintf_s(smg, "\n大半径1=%.5f\n小半径1=%.5f\n", Radius[0], RadData[0]);
strcat(msg, smg);
if (Type == 16)
{
strcat(msg, "NX表面类型代码16:圆柱");
uf_list_p_t edge_list;
int edge_count = 0;
UF_MODL_ask_face_edges(tObject[i], &edge_list);
UF_MODL_ask_list_count(edge_list, &edge_count);
if (edge_count == 4)
{
UF_OBJ_set_color(tObject[i], 186);
}

}
else if (Type == 17)
{
strcat(msg, "NX表面类型代码17:圆锥");
uf_list_p_t edge_list;
int edge_count = 0;
UF_MODL_ask_face_edges(tObject[i], &edge_list);
UF_MODL_ask_list_count(edge_list, &edge_count);
if (edge_count == 2)
{
UF_OBJ_set_color(tObject[i], 36);
UF_DISP_set_highlight(tObject[i], 0);
}

}
else if (Type == 18)
{
strcat(msg, "NX表面类型代码18:球");
uf_list_p_t edge_list;
int edge_count = 0;
UF_MODL_ask_face_edges(tObject[i], &edge_list);
UF_MODL_ask_list_count(edge_list, &edge_count);
if (edge_count == 3)
{
UF_OBJ_set_color(tObject[i], 186);
}

}
else if (Type == 19)
{
strcat(msg, "NX表面类型代码19:旋转(环形)");
uf_list_p_t edge_list;
int edge_count = 0;
UF_MODL_ask_face_edges(tObject[i], &edge_list);
UF_MODL_ask_list_count(edge_list, &edge_count);
if (edge_count >= 2)
{
UF_OBJ_set_color(tObject[i], 186);
}

}
else if (Type == 20)
{
strcat(msg, "NX表面类型代码20:挤压");
}
else if (Type == 22)
{
strcat(msg, "NX表面类型代码22:有界平面");
}
else if (Type == 23)
{
strcat(msg, "NX表面类型代码23:圆角(混合)");
UF_OBJ_set_color(tObject[i], 186);
}
else if (Type == 43)
{
strcat(msg, "NX表面类型代码43:b表面");
uf_list_p_t edge_list;
int edge_count = 0;
UF_MODL_ask_face_edges(tObject[i], &edge_list);
UF_MODL_ask_list_count(edge_list, &edge_count);
if (edge_count >= 2)
{
UF_OBJ_set_color(tObject[i], 186);
}
}
else if (Type == 65)
{
strcat(msg, "NX表面类型代码65:偏移表面");
}
else if (Type == 66)
{
strcat(msg, "NX表面类型代码66:外表面");
}
if (iResponse == UF_UI_CANCEL)
{
return;
}
else
{
lw->Open();
lw->WriteLine(msg);
//goto AA;
}

}

UF_terminate();

}

posted @ 2020-04-04 23:28  老婆饼里有老婆  阅读(335)  评论(1编辑  收藏  举报