• NX二次开发-曲线或边分析函数


    UF_EVAL_is_arc   判断是圆形曲线或边
    UF_EVAL_ask_arc 圆形曲线或边分析,得到曲线或边的信息

    类似的函数还有以下这些:

    UF_EVAL_is_ellipse // 椭圆
    UF_EVAL_ask_ellipse

    UF_EVAL_is_hyperbola //双曲线
    UF_EVAL_ask_hyperbola

    UF_EVAL_is_line  //直线
    UF_EVAL_ask_line //起点终点长度

    UF_EVAL_is_parabola //抛物线
    UF_EVAL_ask_parabola

    UF_EVAL_is_spline  //样条曲线
    UF_EVAL_ask_spline

    下面以UF_EVAL_ask_arc 为例:

    #include "Text.h"
    static int init_proc_select_edges(UF_UI_selection_p_t select, void *user_data)
    {
        int  errorCode = 0;
        //只是选择面
        int  num_triples = 1; //选择类型 数量
        UF_UI_mask_t mask_triples[] = { UF_solid_type,UF_solid_edge_subtype,1 }; //定义选择类型
    
        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;
        }
    }
    int Text_UI_select_edges(vector<tag_t> *vecFaces)
    {
        //调用API
        char *message = "提示:选择边";
        char *title = "标题:选择边";
        int scope = UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY;//选取范围
        int response;
        int count = 0;
        tag_p_t object;
        UF_UI_select_with_class_dialog(message, title, scope, init_proc_select_edges, NULL, &response, &count, &object);
        for (int i = 0; i < count; i++)
        {
            tag_t tagObj = object[i];
            //取消高亮显示
            UF_DISP_set_highlight(tagObj, 0);
            (*vecFaces).push_back(tagObj);
        }
        return 0;
    }
    
    extern DllExport void ufusr(char *param, int *returnCode, int rlen)
    {
        UF_initialize();
        vector<tag_t> vecEdges;
        Text_UI_select_edges(&vecEdges);
        for (int i = 0; i < vecEdges.size(); i++)
        {
            UF_EVAL_p_t evaluator;
            UF_EVAL_initialize(vecEdges[i], &evaluator);
            //确定给定的数据是否来自圆形曲线或边缘
            bool boolIsArc;
            UF_EVAL_is_arc(evaluator, &boolIsArc);
            if (boolIsArc)
            {
                //返回圆形曲线或边的数据
                UF_EVAL_arc_t arc;
                UF_EVAL_ask_arc(evaluator, &arc);//arc结构体中有曲线的参数
                if (fabs(arc.limits[0]) < 0.001 && fabs(arc.limits[1] - 2 * PI) < 0.001)
                {
                    bool boolVal = true;//此圆是整圆
                }
            }
        }
    
        UF_terminate();
    }
    
    extern int ufusr_ask_unload(void)
    {
        return (UF_UNLOAD_IMMEDIATELY);
    }
     
  • 相关阅读:
    Python--day61--Django ORM单表操作之展示用户列表
    Python--day61 PyCharm连接MySQL工具的使用
    Python--day61--ORM介绍及Django使用ORM创建表
    Python--day49--ORM框架SQLAlchemy之relationship的使用(有时间要从新看,这里状态不好,没有仔细听)
    Python--day48--ORM框架SQLAlchemy之子查询
    Python--day48--ORM框架SQLAlchemy操作表
    Python--day48--ORM框架SQLAlchemy
    Python--day48--面向对象回顾
    web api 限制单个IP在一定时间内访问次数
    前端常用js插件
  • 原文地址:https://www.cnblogs.com/KMould/p/12560150.html
Copyright © 2020-2023  润新知