1.属性基本介绍
查看属性,文件->属性
使用VS创建项目,找到do_it(),在do_it()里面进行修改
删除属性,使用UF_ATTR_delete(),第一个参数是部件的TAG,第二个参数是属性的类型,第三个属性名字。
下标是属性类型
类型 |
---|
整型UF_ATTR_integer |
实数类型UF_ATTR_real |
时间类型UF_ATTR_time |
空类型UF_ATTR_null |
字符串类型UF_ATTR_string |
任意类型UF_ATTR_any |
引用类型UF_ATTR_reference |
布尔类型UF_ATTR_bool |
UF_initialize();
//获取当前部件的TAG
tag_t WorkPartTAG = UF_ASSEM_ask_work_part();
//删除指定属性
UF_ATTR_delete(WorkPartTAG, UF_ATTR_any, "APPROVER");
运行结果:
删除所有属性,有一些属性是不能删除的
//删除所有属性
UF_ATTR_delete_all(WorkPartTAG, UF_ATTR_any);
运行结果:
创建或修改属性
使用UF_ATTR_assign()创建,第一个参数是部件的TAG值,第二个是属性名称,第三个是UF_ATTR_value_t类型,用于存储属性的类型和值
//获取部件属性的TAG
tag_t attr = NULL_TAG;
UF_ATTR_ask_part_attribute(&attr);
//创建bool属性
UF_ATTR_value_t value;
value.type = UF_ATTR_bool;
value.value.boolean = false;
UF_ATTR_assign(attr, "布尔型", value);
//创建整型
value.type = UF_ATTR_integer;
value.value.integer = 12;
UF_ATTR_assign(attr, "整型", value);
//创建实数型
value.type = UF_ATTR_real;
value.value.real = 50.3;
UF_ATTR_assign(attr, "实数型", value);
//创建空类型
value.type = UF_ATTR_null;
UF_ATTR_assign(attr, "空类型", value);
//创建字符串类型
value.type = UF_ATTR_string;
value.value.string = "内容";
UF_ATTR_assign(attr, "字符串类型", value);
//创建应用类型
value.type = UF_ATTR_reference;
value.value.reference = "<X0.3@a>";//a=100.5,a是表达式
UF_ATTR_assign(attr, "引用型", value);
//创建时间类型
value.type = UF_ATTR_time;
uc4583("", "", value.value.time);
UF_ATTR_assign(attr, "时间", value);
查找属性
使用UF_ATTR_find_attribute(),第一个是部件的TAG,第二个是类型,第三个是属性名,第四个是输出一个int类型的变量
//得到部件的TAG
tag_t WorkPartTAG = UF_ASSEM_ask_work_part();
//查找属性
int title_type;
UF_ATTR_find_attribute(WorkPartTAG, UF_ATTR_any, "字符串类型", &title_type);
//转换
char msg[256];
sprintf(msg, "%d", title_type);
//打印
UF_UI_open_listing_window();
UF_UI_write_listing_window(msg);
输出的是一个int,对应类型
类型 | 编号 |
---|---|
整型UF_ATTR_integer | 1 |
实数类型UF_ATTR_real | 2 |
时间类型UF_ATTR_time | 3 |
空类型UF_ATTR_null | 4 |
字符串类型UF_ATTR_string | 5 |
任意类型UF_ATTR_any | 6 |
引用类型UF_ATTR_reference | 7 |
布尔类型UF_ATTR_bool | 8 |
没有找到 | 0 |
遍历属性,字符串类型并输出
//打开信息窗口
UF_UI_open_listing_window();
//遍历属性
int index = 0;
char title[UF_ATTR_MAX_TITLE_BUFSIZE + 1];
UF_ATTR_value_t value;
UF_ATTR_cycle(WorkPartTAG, &index, UF_ATTR_any, title, &value);
while (index)
{
if (value.type==UF_ATTR_string)
{
UF_UI_write_listing_window(title);
UF_UI_write_listing_window("=");
UF_UI_write_listing_window(value.value.string);
U