内容包括:
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);
}

【NX二次开发】属性操作相关函数的使用方法的更多相关文章

  1. NX二次开发-克隆操作

    模板文件: 克隆替换字符串: 1 #include "Text.h" 2 extern DllExport void ufsta(char *param, int *returnC ...

  2. NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))

    NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...

  3. NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))

    在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...

  4. C# NX二次开发环境搭建

    在网上看到一篇C#二次开发环境搭建的文章:NX二次开发-使用NXOPEN C#手工搭建开发环境配置 ,写得非常好.我按照文章操作,过程中遇到几个问题,把问题分享给大家,希望对各位有帮助. 注意三点: ...

  5. NX二次开发-基于MFC界面对话框与NX交互的开发

    打开VS2013 点击新建,选择MFC DLL 点击确定 点下一步 什么都不改,直接点完成 进来之后先编译一下,看是否编译成功 打开项目属性,更改这几处 $(UGII_BASE_DIR)\ugopen ...

  6. NX二次开发-BlockUI对话框嵌套MFC对话框制作进度条

    半年前在一些QQ群看到有大神NX二次开发做出了进度条,那个时候我还不会弄,也不知道怎么弄得,后来断断续续得研究了一下,直到今天我把它做出来了.内心还是很喜悦的!回想自己这两年当初从没公司肯给我做NX二 ...

  7. NX二次开发-UDO用户自定义对象(UFUN)【持续完善】

    每当提起UDO总是会让我想起大专毕业那会失业找工作,后来有个宝贵机会去了软件公司上班,拿到了我人生中的第一个NX二次开发项目,一个关于测量汽车前后左右摄像头的项目.当时那个项目就用到了UDO,对于只看 ...

  8. 【NX二次开发】Block UI 目录

    Block UI 目录  基本   标签/位图   切换开关   枚举   字符串   多行字符串   操作按钮   列表框   分割线   对象颜色选择器   RGB颜色选择器   绘图区   图层 ...

  9. 【NX二次开发】Block UI 指定点

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

随机推荐

  1. 手把手教你部署验证freeswitch(避免踩坑)

    前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 介绍:freeswitch可集成ASR(语音识别)和TTS(文本转语音)创建智能电话机器人和用户通话,可用于问卷调查,自动催缴等业务,电 ...

  2. 从effective C++中窥探C++11特性

    这几天在看effective C++3rd,这本书算是比较经典的一本入门C++的书了.虽然年代比较久远书中讲的好多模式已经被的新特性取代了,但是从这些旧的模式中可以了解到一些C++新特性设计的初衷,也 ...

  3. mac SSH私钥取消密码(passphrase)

    取消私钥中的密码: 1.使用openssl命令去掉私钥的密码openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa_new 2.备份旧私钥mv ~/.ssh/ ...

  4. Visual Studio/VS中任务列表的妙用

    一.任务列表开启方法 首先说下开启的方法:视图-任务列表,即可打开任务列表. 快捷键Ctrl+'\'+T,熟练了可以快速开启.注意,'\'键是回车键上面的'',不要按成了'/' 二.任务列表标签设置 ...

  5. C++知识点案例 笔记-1

    1.重载函数 2.内联函数 3.New.Delete 4.重载与.const形参 5.常数据成员 6.静态成员函数 ==重载函数== #include <iostream> using n ...

  6. Python 简单的龟鱼游戏

    游戏编程:按一下要求定义一个乌龟类和鱼类并尝试编程 假设游戏场景为范围(x,y)为 0<=x<=10,0<=y<=10 游戏生成1只乌龟和10条鱼 他们的移动方向均随机 乌龟的 ...

  7. IDEA 全局搜索 Jar 包中源码内容

    引言 项目开发过程中,经常遇到需要在依赖的 Jar 包查看源码,查找类方法和属性,介绍两种在 IDEA 中搜索 Jar 包内容的方式 方式一:双击 SHIFT 快捷键 输入需要查询的类名或方法名 方式 ...

  8. docker命令补全

    安装docker自带包: source /usr/share/bash-completion/completions/docker 缺少下面的包,TAB会报错 yum install -y bash- ...

  9. STM32 SWD下载口无法下载的原因和解决办法

    1.SWD的下载口在程序中被禁用,IO口被设置为普通IO口 2.芯片被锁,原因有可能是程序执行了不正确的访问导致芯片被锁 3.供电不正常 4.SWD烧了 解锁原因: 在下载程序的时候有时候会发生错误导 ...

  10. CGI开发-(转自 jemofh159)

    随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流,这种程序结构也就是大家非常熟悉的B/S结构,即在嵌入式设备上运行一个支持脚本或CGI功能的Web服务器, ...