【NX二次开发】属性操作相关函数的使用方法
内容包括:
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二次开发】属性操作相关函数的使用方法的更多相关文章
- NX二次开发-克隆操作
模板文件: 克隆替换字符串: 1 #include "Text.h" 2 extern DllExport void ufsta(char *param, int *returnC ...
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
- NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))
在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...
- C# NX二次开发环境搭建
在网上看到一篇C#二次开发环境搭建的文章:NX二次开发-使用NXOPEN C#手工搭建开发环境配置 ,写得非常好.我按照文章操作,过程中遇到几个问题,把问题分享给大家,希望对各位有帮助. 注意三点: ...
- NX二次开发-基于MFC界面对话框与NX交互的开发
打开VS2013 点击新建,选择MFC DLL 点击确定 点下一步 什么都不改,直接点完成 进来之后先编译一下,看是否编译成功 打开项目属性,更改这几处 $(UGII_BASE_DIR)\ugopen ...
- NX二次开发-BlockUI对话框嵌套MFC对话框制作进度条
半年前在一些QQ群看到有大神NX二次开发做出了进度条,那个时候我还不会弄,也不知道怎么弄得,后来断断续续得研究了一下,直到今天我把它做出来了.内心还是很喜悦的!回想自己这两年当初从没公司肯给我做NX二 ...
- NX二次开发-UDO用户自定义对象(UFUN)【持续完善】
每当提起UDO总是会让我想起大专毕业那会失业找工作,后来有个宝贵机会去了软件公司上班,拿到了我人生中的第一个NX二次开发项目,一个关于测量汽车前后左右摄像头的项目.当时那个项目就用到了UDO,对于只看 ...
- 【NX二次开发】Block UI 目录
Block UI 目录 基本 标签/位图 切换开关 枚举 字符串 多行字符串 操作按钮 列表框 分割线 对象颜色选择器 RGB颜色选择器 绘图区 图层 ...
- 【NX二次开发】Block UI 指定点
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
随机推荐
- 【JavaScript】Leetcode每日一题-青蛙过河
[JavaScript]Leetcode每日一题-青蛙过河 [题目描述] 一只青蛙想要过河. 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有). 青蛙可以跳上石子 ...
- 码农飞升记-03-OpenJDK是什么?
目录 1.OpenJDK 概述 2.OpenJDK 的发展史 3.OpenJDK Community 1.角色定义 Participant(参与者) Contributor(贡献者) OpenJDK ...
- 使用乌龟Git连接github
之前自己是在Gitee+乌龟Git来进行管理项目,因为特殊的需求,需要再Github+乌龟Git来进行管理项目,这盘博客主要讲解的就是这个. 安装环境 Git 安装参考链接:https://www.c ...
- phpstorm 实现分屏显示
- 将文件服务器及域控制器从2003迁移至Windows Server 2008 R2
(一)背景环境: 当前,多数小企业仍然使用windows server2003 系统做域控制器及文件服务器,由于windows server 2003在多年使用之后变得卡顿,且存在异常的系统错误及诟病 ...
- java使用户EasyExcel导入导出excel
使用alibab的EasyExce完成导入导出excel 一.准备工作 1.导包 <!-- poi 相关--> <dependency> <groupId>org. ...
- unapp一键登录
一.整理思路 un-app官网提供多种实现[一键登录](https://uniapp.dcloud.net.cn/uniCloud/univerify "")的方法,这里的选择是 ...
- 测试报告$\alpha$
pytorch可视化编程网站VisualPytorch NAG \(\alpha\)版本发布了!点击网址访问:VisualPytorch 一.测试查虫(bug detection) 测试贯穿了开发.集 ...
- rabbitmq介绍以及初步使用
什么是MQ? MQ(Message Queue):翻译为消息队列,通过典型的生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断地从队列中获取消息.因为消息的生产和消费都是异步的,而且只 ...
- http://www.loongnix.org/index.php/Lbrowser
http://www.loongnix.org/index.php/Lbrowser 浏览器是桌面应用的核心API软件,龙芯中科早在2011年就开始组建浏览器研发团队开展基于gecko.blink等内 ...