内容包括:
1.属性创建
2.判断属性是否存在
3.读取属性值
4.时间属性转换成字符串
5.统计属性的数量
6.删除指定属性
7.删除全部属性
效果:
源码:
#include <stdlib.h> #include <stdio.h> #include <uf.h> #include <uf_attr.h> #include <uf_cfi.h> #include <uf_curve.h> #define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X))) static int report(char *file, int line, char *call, int irc) { if (irc) { char messg[133]; printf("%s, line %d: %s\n", file, line, call); (UF_get_fail_message(irc, messg)) ? printf(" returned a %d\n", irc) : printf(" returned error %d: %s\n", irc, messg); } return(irc); } static void do_ugopen_api(void) { //声明变量 tag_t pnt; double zero[3] = { 0,0,0 }; UF_ATTR_value_t value; //创建一个点来分配属性 UF_CALL(UF_CURVE_create_point(zero, &pnt)); //分配一个“整型”属性给对象 value.type = UF_ATTR_integer; value.value.integer = 1; UF_CALL(UF_ATTR_assign(pnt, "INTEGER_ATTRIBUTE", value)); //分配一个“数字”属性给对象 value.type = UF_ATTR_real; value.value.real = 1.5; UF_CALL(UF_ATTR_assign(pnt, "REAL_ATTRIBUTE", value)); //分配一个“日期”属性给对象 value.type = UF_ATTR_time; //初始化到当前日期和时间 //uc4583 将字符串转换为NX能读取的日期格式 //第一个参数:输入日期字符串,如果为空则为当前日期(样式有多种) //第二个参数:输入时间字符串,如果为空则为当前日期(样式有多种) UF_CALL(uc4583("", "", value.value.time)); UF_CALL(UF_ATTR_assign(pnt, "DATE_AND_TIME_ATTRIBUTE", value)); //分配一个“空”属性给对象 value.type = UF_ATTR_null; UF_CALL(UF_ATTR_assign(pnt, "NULL_ATTRIBUTE", value)); //分配一个“字符串”属性给对象 value.type = UF_ATTR_string; value.value.string = "这是个字符串"; UF_CALL(UF_ATTR_assign(pnt, "STRING_ATTRIBUTE", value)); //分配一个“布尔”属性给对象 value.type = UF_ATTR_bool; value.value.string = "这是个布尔"; UF_CALL(UF_ATTR_assign(pnt, "BOOL_ATTRIBUTE", value)); //读取属性值 判断属性是否存在 UF_ATTR_value_t valueTemp; int iAttrType = UF_ATTR_any; UF_CALL(UF_ATTR_read_value(pnt, "STRING_ATTRIBUTE", iAttrType, &valueTemp)); if (valueTemp.type == 0) { //此属性不存在 } //valueTemp.type 5 //valueTemp.value.string 字符串值abc UF_free(valueTemp.value.string); //读取属性值 UF_ATTR_value_t valueTemp2; UF_CALL(UF_ATTR_read_value(pnt, "DATE_AND_TIME_ATTRIBUTE", iAttrType, &valueTemp2)); char cDate[20] = ""; char cTime[20] = ""; //uc4582 将NX的日期格式转换为字符串 //第一个参数输入{-1,-1}则为当前日期时间 //第二个参数为日期样式 UF_CALL(uc4582(valueTemp2.value.time, 1, cDate, cTime)); //cDate 08/04/20 //cTime 15:48 //按类型统计属性的数量 int iAttrCount = 0; UF_CALL(UF_ATTR_count_attributes(pnt, UF_ATTR_any, &iAttrCount)); return; //删除指定属性 UF_CALL(UF_ATTR_delete(pnt, iAttrType, "STRING_ATTRIBUTE")); //删除所有属性 UF_CALL(UF_ATTR_delete_all(pnt, iAttrType)); return; } void ufusr(char *param, int *retcode, int param_len) { if (!UF_CALL(UF_initialize())) { do_ugopen_api(); UF_CALL(UF_terminate()); } } int ufusr_ask_unload(void) { return (UF_UNLOAD_IMMEDIATELY); }