【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 ...
随机推荐
- Portswigger web security academy:OAth authentication vulnerable
Portswigger web security academy:OAth authentication vulnerable 目录 Portswigger web security academy: ...
- React 代码共享最佳实践方式
任何一个项目发展到一定复杂性的时候,必然会面临逻辑复用的问题.在React中实现逻辑复用通常有以下几种方式:Mixin.高阶组件(HOC).修饰器(decorator).Render Props.Ho ...
- 更好的滚动体验>better-scroll
认识better-scroll better-scroll是一款重点用于解决移动端(已支持PC)各种滚动场景需求的插件,可使页面滚动效果更加流畅且富有弹性 better-scroll是用纯JavaSc ...
- 腾讯暑期 前后七面 + hr(已拿offer面经)
以下是时间线 魔方 魔术师工作室 3.19 一面(120mins) c++ struct和union区别? 指针和引用的区别? 左值和右值? 字节对齐的作用? 什么情况下需要自定义new? mallo ...
- 使用MindSpore的线性神经网络拟合非线性函数
技术背景 在前面的几篇博客中,我们分别介绍了MindSpore的CPU版本在Docker下的安装与配置方案.MindSpore的线性函数拟合以及MindSpore后来新推出的GPU版本的Docker编 ...
- 剑指offer 数组中的重复数字
问题描述: 在长度为n的数组中,所有的元素都是0到n-1的范围内. 数组中的某些数字是重复的,但不知道有几个重复的数字,也不知道重复了几次,请找出任意重复的数字. 例如,输入长度为7的数组{2,3,1 ...
- [bug] VMvare 虚拟机磁盘空间耗尽
问题 VMvare虚拟机文件默认创建在C盘,装大程序的时,空间用尽就会报错,此时补救的办法是把虚拟机文件复制到空间足够的盘,再重新打开 最好一开始就选再有足够空间的盘里创建虚拟机 参考 https:/ ...
- 039.Python使用TCP实现多用户并发
使用TCP实现多用户并发 在前面的实验中,TCP建立连接时,只能允许一个用户连接,当第二个用户建立连接时,发送的信息,服务端是没有办法接受,只有当第一个用户退出时,才能接受到第二个用户的请求,并实现通 ...
- 034.Python的__str__,__repr__,__bool__ ,__add__和__len__魔术方法
Python的其他方法 1 __str__方法 触发时机: 使用print(对象)或者str(对象)的时候触发 功能: 查看对象信息 参数: 一个self接受当前对象 返回值: 必须返回字符串类型 基 ...
- node.js module初步理解-(转载)
在开发一个复杂的应用程序的时候,我们需要把各个功能拆分.封装到不同的文件,在需要的时候引用该文件.没人会写一个几万行代码的文件,这样在可读性.复用性和维护性上都很差,几乎所有的编程语言都有自己的模块组 ...