• 选择零件实体加入到选择的操作里


      1 #include <stdarg.h>
      2 //#include <stdio.h>
      3 #include <uf.h>
      4 #include <uf_object_types.h>
      5 #include <uf_part.h>
      6 #include <uf_ui.h>
      7 #include <uf_ui_ont.h>
      8 #include <uf_disp.h>
      9 #include <uf_retiring.h>
     10 #include <uf_obj.h>
     11 #include <uf_cam.h>
     12 #include <uf_camgeom.h>
     13 #include <uf_param.h>
     14 #include <string.h>
     15 #include <vector>
     16 
     17 //#define  MAX_CAMGEOM   200
     18 
     19 static int init_proc_body(UF_UI_selection_p_t select, void *user_data);
     20 static void init_camgeom_app_data(UF_CAMGEOM_app_data_p_t app_data);
     21 
     22 void ugdebugep(int line, const char* format, ...)
     23 {
     24     static char buf[1024];
     25     va_list     ap;
     26 
     27     sprintf(buf, "(%03d)", line);
     28     UF_UI_open_listing_window();
     29     UF_UI_write_listing_window(buf);
     30     va_start(ap, format);
     31     vsprintf(buf, format, ap);
     32     
     33     va_end(ap);
     34     UF_UI_write_listing_window(buf);
     35     UF_UI_write_listing_window("
    ");
     36     
     37 }
     38 void pauseMsgbox(int line)
     39 {
     40     static char buf[16];
     41     sprintf(buf, "at line %d", line);
     42     uc1601(buf, 1);
     43 }
     44 #define  dp(...) ugdebugep(__LINE__ ,__VA_ARGS__);
     45 #define  markline ugdebugep(__LINE__ ,"at line");
     46 #define  dpause pauseMsgbox(__LINE__)
     47 
     48 
     49 static void do_camgeom_api(void)
     50 {
     51     //UF_CAMGEOM_app_data_p_t app_data_list[MAX_CAMGEOM] = { NULL };
     52     UF_CAMGEOM_app_data_p_t* app_data_list=NULL;
     53     tag_t                   *oper_tag = NULL , *entity_list = NULL;
     54     //entity_list[MAX_CAMGEOM] = { NULL_TAG };
     55     int                            i,entity_count = 0, oper_count = 0, err_code = 0, type = 0, subtype = 0;
     56     tag_t                   *entity_eid = NULL_TAG, view = NULL_TAG;
     57     logical                 auto_wall_selection = FALSE;
     58 
     59     //for (i = 0; i < MAX_CAMGEOM; i++) app_data_list[i] = NULL;
     60     if (UF_PART_ask_display_part() != null_tag)
     61     {        
     62         UF_UI_ONT_ask_selected_nodes(&oper_count, &oper_tag);        
     63         if (oper_count > 0)
     64         {
     65 
     66             
     67             
     68             char Cue[] = "选择";
     69             char Title[] = "功能测试";
     70             int Scope = UF_UI_SEL_SCOPE_NO_CHANGE;
     71             int Response, entity_count = 0;            
     72             UF_UI_select_with_class_dialog(Cue, Title, Scope, init_proc_body, NULL, &Response, &entity_count, &entity_eid);            
     73 
     74             //申请内存 
     75             app_data_list = new UF_CAMGEOM_app_data_p_t[entity_count];        
     76 
     77             
     78 
     79             for (size_t m = 0; m < entity_count; m++)
     80             {    
     81                 //entity_list[m] = entity_eid[m];
     82 
     83                 app_data_list[m] = new UF_CAMGEOM_app_data_t;
     84 
     85                 init_camgeom_app_data(app_data_list[m]);
     86 
     87                 UF_DISP_set_highlight(entity_eid[m], 0);
     88             
     89             }
     90 
     91             
     92 
     93             if (entity_count > 0)
     94             {
     95                 
     96                 for (i = 0; i < oper_count; i++)
     97                 {
     98                     
     99                     UF_OBJ_ask_type_and_subtype(oper_tag[i], &type, &subtype);
    100                     if (type == UF_machining_operation_type)
    101                     {                        
    102                         UF_CAMGEOM_append_items(oper_tag[i], UF_CAM_part, entity_count, entity_eid, app_data_list);
    103                     }
    104                 }
    105             }
    106 
    107             
    108 
    109             for (size_t m = 0; m < entity_count; m++)
    110             {
    111                 delete app_data_list[m];
    112             }
    113             delete []app_data_list;
    114 
    115             UF_free(entity_eid);
    116         }
    117     }
    118 }
    119 
    120 static int init_proc_body(    UF_UI_selection_p_t select,    void* user_data)
    121 {
    122     int nums = 1;
    123     UF_UI_mask_t masks[] = {     UF_solid_type, 0, UF_UI_SEL_FEATURE_BODY };
    124 
    125     if ((UF_UI_set_sel_mask(select,    UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,    nums, masks)) == 0)
    126     {
    127         return (UF_UI_SEL_SUCCESS);
    128     }
    129     else
    130     {
    131         return (UF_UI_SEL_FAILURE);
    132     }
    133 }
    134 
    135 static void init_camgeom_app_data(UF_CAMGEOM_app_data_p_t app_data)
    136 {
    137     if (app_data)
    138     {
    139         app_data->has_stock = 0;
    140         app_data->has_cut_stock = 0;
    141         app_data->has_tolerances = 0;
    142         app_data->has_feedrate = 0;
    143         app_data->has_offset = 0;
    144         app_data->has_avoidance_type = 0;
    145         app_data->stock = 0.0;
    146         app_data->cut_stock[0] = 0.0;
    147         app_data->cut_stock[1] = 0.0;
    148         app_data->cut_stock[2] = 0.0;
    149         app_data->tolerances[0] = 0.0;
    150         app_data->tolerances[1] = 0.0;
    151         app_data->feedrate_unit = UF_CAM_feedrate_unit_per_minute;
    152         app_data->feedrate_value = 10.0;
    153         app_data->offset = 0.0;
    154         app_data->avoidance_type = UF_CAM_avoidance_type_warning;
    155     }
    156 }
    157 
    158 
    159 void ufusr(char *param, int *retcode, int param_len)
    160 {
    161     UF_initialize();
    162 
    163     do_camgeom_api();
    164 
    165     UF_terminate();
    166 }
    167 
    168 int ufusr_ask_unload(void)
    169 {
    170     return (UF_UNLOAD_IMMEDIATELY);
    171 }
    172 /************************************************************/

    特别感谢"梅子酱"同学的改进

  • 相关阅读:
    Android Studio:layout-sw600dp文件夹中创建activity_main.xml
    Android Studio提示忽略大小写
    学习进度条-3
    二维数组
    人月神话阅读笔记01
    作业-数组
    学习进度条-2
    周四测试
    家庭家长本-微信小程序
    第一周开课博客园
  • 原文地址:https://www.cnblogs.com/liuxiaoqing1/p/12869493.html
Copyright © 2020-2023  润新知