zoukankan      html  css  js  c++  java
  • 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);
    }
     
  • 相关阅读:
    Linux上天之路(十七)之Shell编程二
    Linux上天之路(十六)之Shell编程一
    Linux上天之路(十五)之文件查找
    Elasticsearch搜索调优权威指南 (1/3)
    【大数据】SparkSql 连接查询中的谓词下推处理 (二)
    【大数据】SparkSql 连接查询中的谓词下推处理 (一)
    搜索和其他机器学习问题有什么不同?
    Searching with Deep Learning 深度学习的搜索应用
    翻译 | The Principles of OOD 面向对象设计原则
    400+节点的 Elasticsearch 集群运维
  • 原文地址:https://www.cnblogs.com/KMould/p/12560150.html
Copyright © 2011-2022 走看看