【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 ...
随机推荐
- 如何在jQuery的Ajax调用后管理一个重定向请求
1 success:function(data){ 2 if(data.xx == "xx") 3 { 4 //code... 5 window.location.href =&q ...
- 攻防世界Web刷题记录(进阶区)
攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...
- Day008 数组的使用
数组的使用 For-Each循环 数组作方法入参 数组作返回值 用普通for循环遍历 int[] arrays={1,2,3,4,5}; //打印全部的数组元素 for (int i = 0; i & ...
- Activity,Tasks
常见的一些Activity的打开方式: //1.拨打电话 // 给移动客服10086拨打电话 Uri uri = Uri.parse("tel:10086"); Intent in ...
- 【js】Leetcode每日一题-子数组异或查询
[js]Leetcode每日一题-子数组异或查询 [题目描述] 有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]. 对于每个查询 i ...
- Masm32sdk安装指南
上一年学习win32汇编时用的masm32sdk不是最新版本的.因为最近准备继续学习win32汇编,所以准备安装最新的masm32sdk软件包.其中遇到了一些问题,从网上找了2个小时才搞定(宝宝心里苦 ...
- KMP算法以及优化(代码分析以及求解next数组和nextval数组)
KMP算法以及优化(代码分析以及求解next数组和nextval数组) 来了,数据结构及算法的内容来了,这才是我们的专攻,前面写的都是开胃小菜,本篇文章,侧重考研408方向,所以保证了你只要看懂了,题 ...
- [java] 转型
A为父类,子类B.C 第20行发生向上转型,a对象调用C覆写过的print()方法 若为A a = new B(); 则调用B覆写过的print()方法 创建对象时使用向上转型,能够统一参数类型(23 ...
- 在linux下把jsp文件 打包war格式(centos7)
在linux下把jsp文件 打成war包 chmod -R 777 /data/jdk8u242-b08/bincd /data/TongWeb61712/deployment/TestCase//d ...
- 诸神之眼-Nmap 教程 2
|>>>简版先附上<<<| Nmap基础学习 语法 nmap + [空格] + <选项|多选项|协议> + [空格]+ <目标> 如 nma ...