iCAx开思工具箱

标题: 帮忙看看下面程序中feature_disp_props.layer返回值为什么不正确?谢谢! [打印本页]

作者: vcspring    时间: 2006-2-13 20:52
标题: 帮忙看看下面程序中feature_disp_props.layer返回值为什么不正确?谢谢!
char part_fspec[MAX_FSPEC_SIZE+1]="";
        char title[] = "\nPart %s\n";
        int curr_part,num_parts;
        int feature_type,solid_type;
        int count_l;
        int count_feature[100];
        int count_solid[100];
    tag_t obj_p;
//        tag_t obj_f[10];
        tag_t feature;
        tag_t feature_save[100];
        tag_t solid_save[100];
        char num_of_part_c[100];
        char num_of_curr_part_c[100];
        char num_of_curr_feature_c[100];
        char layer_of_curr_obj_c[100];
//        char num_of_exps_c[100];
        UF_OBJ_disp_props_t feature_disp_props;
    UF_OBJ_disp_props_t solid_disp_props;


        tag_t *exps;
        int number_of_exps=0,i,j;//与当前特征有关的表达式数量


        //获取当前会话中part的数量
        num_parts = UF_PART_ask_num_parts();

        sprintf(num_of_part_c,"PART文件数量 %d\n",num_parts);

    UF_UI_open_listing_window();
       
        UF_UI_write_listing_window(num_of_part_c);

        for (curr_part=0;curr_part < num_parts;curr_part++)
        {
                //获取当前会话中当前部件的标识
        obj_p = UF_PART_ask_nth_part(curr_part);
                //获得当前部件的名称
                UF_PART_ask_part_name(obj_p,part_fspec);

                sprintf(num_of_curr_part_c,"PART顺序号:%d\nPART名称为:%s\n",curr_part,part_fspec);
                UF_UI_write_listing_window(num_of_curr_part_c);
       
                count_l = 0;
                feature_type = UF_feature_type;
                feature = NULL_TAG;
               
                //开始遍历当前部件中的特征/对象。遍历过程的起点是NULL_TAG
                feature_save[0] = feature;
                //遍历终点是NULL_TAG
                do
                {
                        count_l++;
                        UF_OBJ_cycle_objs_in_part(obj_p,feature_type,&feature);
                        solid_save[count_l] = feature;
                        //查询对象属性
                    int result = UF_OBJ_ask_display_properties(feature,&feature_disp_props);

                        if(result) UF_UI_write_listing_window("fail");

                    sprintf(layer_of_curr_obj_c,"特征所在层:%d\n",feature_disp_props.layer);
            UF_UI_write_listing_window(layer_of_curr_obj_c);
                                               
                }while (feature != NULL_TAG);
                count_feature[curr_part] = count_l;
                sprintf(num_of_curr_feature_c,"特征数量:%d\n",count_l);
                UF_UI_write_listing_window(num_of_curr_feature_c);

        }
作者: vcspring    时间: 2006-2-14 21:55
好象是特征的属性没有意义,换成UF_solid_type就可以了.
作者: Afang    时间: 2006-2-15 09:42
你这段代码本身就有问题,特征的层是与对应object的层相关的,比如你是在3层做的特征操作,但是因为得到的object是在1层的,那么在特征树上特征显示就是1层的,也就是说你需要问特征对应的object的层。。。,不过问特征对应的object还是比较麻烦的,尤其是象你这样遍历整个part的特征
作者: vcspring    时间: 2006-2-15 20:32
谢谢AFANG.我就是想得到不同层的实体body的层属性,但是在经过布尔运算之后,比如在1层的实体减去2层的实体,那么就无法得到2层实体的属性.现在就是在对各层的实体进行布尔操作之前,先将各层特征对应实体的层进行记录,也就是特征的层了.这个办法怎么样?还有好办法没?




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3