zoukankan      html  css  js  c++  java
  • NX二次开发-UF_DRF_ask_dim_info获得图纸尺寸属于哪个视图和图纸页

    需求:获得图纸上的尺寸属于哪个视图和图纸页

    今天看到有个兄弟问了这个问题,这个需求,我以前给公司开发的工具中用到过。

    但以前好像是忘记写到博客上了,今天专门记录一下。

    NX9+VS2012
    
    #include <uf.h>
    #include <uf_draw.h>
    #include <uf_drf.h>
    #include <uf_assem.h>
    #include <uf_obj.h>
    
    
    UF_initialize();
    
    //假设已知当前只有两张图纸页
    //获得所有图纸页tag
    int num_drawings = 0;
    tag_p_t drawing_tags = NULL_TAG;
    UF_DRAW_ask_drawings(&num_drawings, &drawing_tags);
    
    tag_t workPartTag = UF_ASSEM_ask_work_part();
    //遍历所有尺寸
    NXString ExpName;
    string FeatureExpNameStr;
    string StrRight;
    tag_t dimTag = NULL_TAG;
    while (!(UF_OBJ_cycle_objs_in_part(workPartTag, UF_dimension_type, &dimTag)) && dimTag)
    {
        //获取尺寸值
        int dim_subtype = 0;
        double dim_origin[3];
        UF_DRF_dim_info_p_t dim_info;
        UF_DRF_ask_dim_info(dimTag, &dim_subtype, dim_origin, &dim_info);
        string DimValue = dim_info->text_info->text->full_string;
    
        //找尺寸属于哪个视图
        tag_t FindViewTag = dim_info->dim_line_info->assoc_objs->assoc_object_view_tag;
    
        //找视图属于哪个图纸页
        tag_t FindDrawTag = NULL_TAG;
        UF_DRAW_ask_drawing_of_view(FindViewTag, &FindDrawTag);
    
        if (FindDrawTag == drawing_tags[0])//第一张图纸页里面的所有尺寸
        {
            //获取尺寸原点位置
            double DimOrigin[3];
            DimOrigin[0] = dim_info->text_info->origin[0];
            DimOrigin[1] = dim_info->text_info->origin[1];
            DimOrigin[2] = dim_info->text_info->origin[2];
    
            //重置原点位置
            double NewDimOrigin[3] = {10, 10, 10};
            UF_DRF_set_origin(dimTag, NewDimOrigin);
    
        }
        else if(FindDrawTag == drawing_tags[1])//第二张图纸页里面的所有尺寸
        {
            //获取尺寸原点位置
            double DimOrigin[3];
            DimOrigin[0] = dim_info->text_info->origin[0];
            DimOrigin[1] = dim_info->text_info->origin[1];
            DimOrigin[2] = dim_info->text_info->origin[2];
    
            //重置原点位置
            double NewDimOrigin[3] = {50, 50, 50};
            UF_DRF_set_origin(dimTag, NewDimOrigin);
        }
    
    }
    
    
    UF_terminate();
    
    阿飞
    2021年6月16日

    阿飞

    2021年6月16日

    作者: 阿飞

    出处: https://www.cnblogs.com/nxopen2018/>

    关于作者:专注NX开发、VC++开发、数据库、三维建模领域,请多多赐教!

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可留言(博客文章底部留言)咨询.

  • 相关阅读:
    Linux内存分析
    mysql 分表
    安装YCM
    c/c++ 之静态库
    ubuntu20 宽带连接
    数据对齐
    计算机中浮点数的表示
    整数的表示
    信息的储存
    SparseTable ST表
  • 原文地址:https://www.cnblogs.com/nxopen2018/p/14891532.html
Copyright © 2011-2022 走看看