【NX二次开发】属性操作总结
内容包括:
1.属相创建
2.判断属性是否存在
3.读取属性值
4.时间属性转换成字符串
5.统计属性的数量
6.删除指定属性
7.删除全部属性
源码:
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <uf.h>
4 #include <uf_attr.h>
5 #include <uf_cfi.h>
6 #include <uf_curve.h>
7
8 #define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X)))
9 static int report(char *file, int line, char *call, int irc)
10 {
11 if (irc)
12 {
13 char messg[133];
14 printf("%s, line %d: %s\n", file, line, call);
15 (UF_get_fail_message(irc, messg)) ?
16 printf(" returned a %d\n", irc) :
17 printf(" returned error %d: %s\n", irc, messg);
18 }
19 return(irc);
20 }
21 static void do_ugopen_api(void)
22 {
23 //声明变量
24 tag_t pnt;
25 double zero[3] = { 0,0,0 };
26 UF_ATTR_value_t value;
27 //创建一个点来分配属性
28 UF_CALL(UF_CURVE_create_point(zero, &pnt));
29 //分配一个“整型”属性给对象
30 value.type = UF_ATTR_integer;
31 value.value.integer = 1;
32 UF_CALL(UF_ATTR_assign(pnt, "INTEGER_ATTRIBUTE", value));
33 //分配一个“数字”属性给对象
34 value.type = UF_ATTR_real;
35 value.value.real = 1.5;
36 UF_CALL(UF_ATTR_assign(pnt, "REAL_ATTRIBUTE", value));
37 //分配一个“日期”属性给对象
38 value.type = UF_ATTR_time;
39 //初始化到当前日期和时间
40 //uc4583 将字符串转换为NX能读取的日期格式
41 //第一个参数:输入日期字符串,如果为空则为当前日期(样式有多种)
42 //第二个参数:输入时间字符串,如果为空则为当前日期(样式有多种)
43 UF_CALL(uc4583("", "", value.value.time));
44 UF_CALL(UF_ATTR_assign(pnt, "DATE_AND_TIME_ATTRIBUTE", value));
45 //分配一个“空”属性给对象
46 value.type = UF_ATTR_null;
47 UF_CALL(UF_ATTR_assign(pnt, "NULL_ATTRIBUTE", value));
48 //分配一个“字符串”属性给对象
49 value.type = UF_ATTR_string;
50 value.value.string = "这是个字符串";
51 UF_CALL(UF_ATTR_assign(pnt, "STRING_ATTRIBUTE", value));
52 //分配一个“布尔”属性给对象
53 value.type = UF_ATTR_bool;
54 value.value.string = "这是个布尔";
55 UF_CALL(UF_ATTR_assign(pnt, "BOOL_ATTRIBUTE", value));
56
57 //读取属性值 判断属性是否存在
58 UF_ATTR_value_t valueTemp;
59 int iAttrType = UF_ATTR_any;
60 UF_CALL(UF_ATTR_read_value(pnt, "STRING_ATTRIBUTE", iAttrType, &valueTemp));
61 if (valueTemp.type == 0)
62 {
63 //此属性不存在
64 }
65
66 //valueTemp.type 5
67 //valueTemp.value.string 字符串值abc
68 UF_free(valueTemp.value.string);
69
70 //读取属性值
71 UF_ATTR_value_t valueTemp2;
72 UF_CALL(UF_ATTR_read_value(pnt, "DATE_AND_TIME_ATTRIBUTE", iAttrType, &valueTemp2));
73 char cDate[20] = "";
74 char cTime[20] = "";
75 //uc4582 将NX的日期格式转换为字符串
76 //第一个参数输入{-1,-1}则为当前日期时间
77 //第二个参数为日期样式
78 UF_CALL(uc4582(valueTemp2.value.time, 1, cDate, cTime));
79 //cDate 08/04/20
80 //cTime 15:48
81
82 //按类型统计属性的数量
83 int iAttrCount = 0;
84 UF_CALL(UF_ATTR_count_attributes(pnt, UF_ATTR_any, &iAttrCount));
85
86 return;
87 //删除指定属性
88 UF_CALL(UF_ATTR_delete(pnt, iAttrType, "STRING_ATTRIBUTE"));
89
90 //删除所有属性
91 UF_CALL(UF_ATTR_delete_all(pnt, iAttrType));
92 return;
93 }
94
95 void ufusr(char *param, int *retcode, int param_len)
96 {
97 if (!UF_CALL(UF_initialize()))
98 {
99 do_ugopen_api();
100 UF_CALL(UF_terminate());
101 }
102 }
103 int ufusr_ask_unload(void)
104 {
105 return (UF_UNLOAD_IMMEDIATELY);
106 }
效果:

【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 ...
- 【NX二次开发】Block UI 指定矢量
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
随机推荐
- (邹博ML)数学分析与概率论
机器学习入门 深度学习和机器学习? 深度学习在某种意义上可以认为是机器学习的一个分支,只是这个分支非常全面且重要,以至于可以单独作为一门学科来进行研究. 回忆知识 求解S. 对数函数的上升速度 我们使 ...
- gitlab + php自动部署
功能简介 本地往服务器推送代码之后,触发web钩子,服务器拉取刚刚推送的代码 步骤 1.在gitlab后台配置钩子 项目->编辑项目->Web钩子->新增钩子 2.在服务器端为www ...
- 【TensorFlow】Win7下使用Object Detection API 训练自己的数据集,并视频实时检测
说明: 图片:自己开的摄像头,截取的图片.选择了200张图片.下面会有截取的脚本. 使用labelImg工具进行图片进行标注.产生PascalVOC格式的XML文件.[labelImg工具的安装和使用 ...
- layui中的多图上传
效果展示: 1.html部分: 注:<input> 作为隐藏域,用于保存多图上传的资源数组,方便后期进行 form 表单的提交 <input type="hidden&qu ...
- 如何在centos上配置802.1Q VLAN标记,linux单网卡多vlan多网段Ip配置案例
介绍 VLAN使将大型网络分成较小且易于管理的网络成为可能.802.1Q是所有供应商都在其网络设备中实施的标准.某些交换机能够将多个VLAN分配给单个网络端口.使用此功能,您可以将多个VLAN分配给单 ...
- 简单聊聊VisualStudio的断点调试
这节聊聊如何使用VisualStudio进行断点调试. 在debug过程中,我们有时需要查看程序在运行到某一行代码时,上下文中的变量或者一些其他的数据是什么样的,我们就要设置断点(Breakpoint ...
- 推荐一个不得不知道的 Visual Studio 快捷键
不得不说,Visual Studio 内置了很多非常棒的快捷键,借助于这些快捷键我们甚至不需要再使用鼠标,就可以快速高效的编写代码,因此学习和熟悉这些快捷键是值得的. 其中有一个快捷键是我非常喜欢,也 ...
- Codeforces Round #697 (Div. 3)
A.Odd Divisor 题意:问一个数是不是含有奇数因子 思路:就直接给这个数循环除以2,看看最后剩下的数是不是0,如果不是就有奇数因子,如果是就没有 想不到:1)当时想着用log2来解决问题,后 ...
- Java on Visual Studio Code的更新 – 2021年4月
杨尧今 from Microsoft VS Code Java Team 欢迎来到这一期的VS Code Java更新.又是一个忙碌而富有成效的月份. Java调试器和Java测试扩展获得了新功能.在 ...
- [DB] Spark Core (1)
生态 Spark Core:最重要,其中最重要的是RDD(弹性分布式数据集) Spark SQL Spark Streaming Spark MLLib:机器学习算法 Spark Graphx:图计算 ...