【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 ...
随机推荐
- <JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- 【vue-05】vue-cli
Vue-router官网 安装 vue-router是一个插件包,所以我们还是需要用npm 来进行安装.打开命令行工具,进入你的项目目录,输入下面命令. npm install vue-router ...
- HashSet添加操作底层判读(Object类型)
Object类型添加操作判读 第一步:程序首先创建一个Object泛型的Set数组,这里用到了上转型: 第二步:执行object里面的add添加方法,传进的值为"JAVA": 首先 ...
- 改善c++程序的150个建议(读后总结)-------0-9
0. 不要让main 函数返回 void 入口函数main()返回类型应该为 int, 即程序结束时return 0 表示程序正常返回,函数结束时 return -1 值表示程序异常返回, 如果不显式 ...
- 在Visual Studio 中使用git——文件管理-中(五)
在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...
- 前端必读:Vue响应式系统大PK
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文参考:https://www.sitepoint.com/vue-3-reactivity-system ...
- SaaS模式的CRM系统有哪些优势?
早在10年前(2010年),就出现了SaaS模式的CRM系统.SaaS CRM一经面世,便迅速受到广大企业的青睐. SaaS CRM是指CRM厂家把CRM软件部署在自己的服务器上,有需要的客户能够根据 ...
- 《Spring 手撸专栏》第 3 章:初显身手,运用设计模式,实现 Bean 的定义、注册、获取
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你是否能预见复杂内容的设计问题? 讲道理,无论产品功能是否复杂,都有很大一部分程序员 ...
- [Java] 数据分析 -- NoSQL数据库
MongoDB概念:与关系型数据库对应 database(数据库):数据库 collection(集合):表 document(文档):行 field(域):列/字段 注意事项 文档是一组键值(key ...
- [Java] Spring 示例
(一)IoC/DI 功能 配置解析:将配置文件解析为BeanDefinition结构,便于BeansFactory创建对象 对象创建:BeansFactory 根据配置文件通过反射创建对象,所有类对象 ...