• 打印面的法向



    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, " 面的法向方向为:X:%.5f Y:%.5f Z:%.5f 面法线方向:%d 类型:%d 子类型:%d", Dir[0], Dir[1], Dir[2], NormDir, type, subtype);
    sprintf_s(smg, " 大半径1=%.5f 小半径1=%.5f ", 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();

    }

  • 相关阅读:
    胖虎都看得懂的CSS入门
    Python-ORM之sqlalchemy的简单使用
    类似fabric主机管理demo
    Redis 数据库学习
    sublime 3插件安装记录
    斐波那契数列—java实现
    mysql基础操作记录
    [转]修改github已提交的用户名和邮箱
    python nose的html报告优化
    python report中文显示乱码
  • 原文地址:https://www.cnblogs.com/liuxiaoqing1/p/12626517.html
Copyright © 2020-2023  润新知