iCAx开思工具箱

标题: api 中如何读取一个part的属性 [打印本页]

作者: hunglau    时间: 2007-3-13 15:01
标题: api 中如何读取一个part的属性
api 中如何读取一个part的属性? 请问UF_ATTR_cycle()要怎么用?
作者: mizzle    时间: 2007-3-13 20:34
例如当前打开的零件


char attr_name[MAX_FSPEC_SIZE+1];
        UF_ATTR_value_t value;

for(int indx = 0;;)
                        {
                                ret = UF_ATTR_cycle (part_tag//当前打开零件的tag值,
                                                                    &indx, //UF_ATTR_real,
                                                                UF_ATTR_any,
                                                                attr_name,
                                                                &value);
                                UF_get_fail_message(ret, fail_message);
                                if(indx!=0)
                                {
                                        if(0 == strcmp(attr_name,"ASS_TIME"))
                                        {
                                                temp_part.m_ass_time = atof(value.value.string);
                                        }
                                        if(0 == strcmp(attr_name,"TOOL"))
                                        {
                                                temp_part.tool_type = atoi(value.value.string);
                                        }
                                        if(0==strcmp(attr_name,"VOLUM"))
                                        {
                                                temp_part.set_volum(value.value.real);
                                                //2006.9.4,给零件设置质量。
                                        }
                                        if(0==strcmp(attr_name,"MASS"))
                                        {
                                                temp_part.set_mass(value.value.real);
                                        }
                                        if(0 == strcmp(attr_name,"CLASS"))
                                        {
                                                string value_str(value.value.string);
                                                const char *value_char = value_str.c_str();

                                                if(0==strcmp(value_char,"connector"))
                                                        temp_part.set_std_f(true);
                                                else
                                                        temp_part.set_std_f(false);
                                        }
                                        if(0 == strcmp(attr_name,"FUNCTION"))
                                        {
                                                string value_str(value.value.string);
                                                const char *value_char = value_str.c_str();
                                                if(0==strcmp(value_char,"accessory"))
                                                        temp_part.set_accessroy(true);
                                                else
                                                        temp_part.set_accessroy(false);
                                                if(0 == strcmp(value_char,"贵重件"))
                                                        temp_part.set_precious(true);
                                                else
                                                        temp_part.set_precious(false);
                                        }
                                }
               
                                else
                                {
                                        break;
                                }
                        }
作者: hunglau    时间: 2007-3-15 10:04
老兄可以可以再详细一点,谢谢啦,我的意思是想读一个part 中已写好的attr_name,如果存在就读他的值,没有则跳出,我照你的方法做,老是说indx=0跳出去了,
作者: missing914    时间: 2007-3-21 16:45
可以用下面的函数去实现,说明很详细,具体代码就自己去写吧!

extern int UF_ATTR_ask_part_attrs (
const tag_t part_tag,
int * n_attributes,
UF_ATTR_part_attr_p_t * attributes );

const tag_t  part_tag Input part tag of the part from which to read attributes.
int *  n_attributes Output Count of attributes returned.
UF_ATTR_part_attr_p_t *  attributes Output to be freed Allocated array of structures holding
attribute titles and values. This must
be freed by the caller using UF_free.




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