内容包括:
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二次开发】属性操作总结的更多相关文章

  1. NX二次开发-克隆操作

    模板文件: 克隆替换字符串: 1 #include "Text.h" 2 extern DllExport void ufsta(char *param, int *returnC ...

  2. NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))

    NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...

  3. NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))

    在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...

  4. C# NX二次开发环境搭建

    在网上看到一篇C#二次开发环境搭建的文章:NX二次开发-使用NXOPEN C#手工搭建开发环境配置 ,写得非常好.我按照文章操作,过程中遇到几个问题,把问题分享给大家,希望对各位有帮助. 注意三点: ...

  5. NX二次开发-基于MFC界面对话框与NX交互的开发

    打开VS2013 点击新建,选择MFC DLL 点击确定 点下一步 什么都不改,直接点完成 进来之后先编译一下,看是否编译成功 打开项目属性,更改这几处 $(UGII_BASE_DIR)\ugopen ...

  6. NX二次开发-BlockUI对话框嵌套MFC对话框制作进度条

    半年前在一些QQ群看到有大神NX二次开发做出了进度条,那个时候我还不会弄,也不知道怎么弄得,后来断断续续得研究了一下,直到今天我把它做出来了.内心还是很喜悦的!回想自己这两年当初从没公司肯给我做NX二 ...

  7. NX二次开发-UDO用户自定义对象(UFUN)【持续完善】

    每当提起UDO总是会让我想起大专毕业那会失业找工作,后来有个宝贵机会去了软件公司上班,拿到了我人生中的第一个NX二次开发项目,一个关于测量汽车前后左右摄像头的项目.当时那个项目就用到了UDO,对于只看 ...

  8. 【NX二次开发】Block UI 目录

    Block UI 目录  基本   标签/位图   切换开关   枚举   字符串   多行字符串   操作按钮   列表框   分割线   对象颜色选择器   RGB颜色选择器   绘图区   图层 ...

  9. 【NX二次开发】Block UI 指定点

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  10. 【NX二次开发】Block UI 指定矢量

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

随机推荐

  1. Day002 Java特性和优势

    Java特性和优势 简单性(摒弃了c++的指针和内存分配释放) 面向对象(万物皆对象) 可移植性(write once run anywhere) 高性能 分布式 动态性(反射机制) 多线程 安全性 ...

  2. phpstorm中加上符号($,括号等)后搜索不到

    Ctrl+F右边选中这个Regex后带上符号就搜索不到,不要勾选这个就可以带符搜索了

  3. Kafka源码分析(一) - 概述

    系列文章目录 https://zhuanlan.zhihu.com/p/367683572 目录 系列文章目录 一. 实际问题 二. 什么是Kafka, 如何解决这些问题的 三. 基本原理 1. 基本 ...

  4. python工业互联网应用实战14——单元测试覆盖率

    前面的章节我们完成了任务管理主要功能的开发及单元测试编写,可如何知道单元测试效果怎么样呢?测试充分吗?还有没有没有测到的地方呢? 本章节我们介绍一个统计测试代码覆盖率的利器Coverage,Cover ...

  5. 如何使用flask将模型部署为服务

    在某些场景下,我们需要将机器学习或者深度学习模型部署为服务给其它地方调用,本文接下来就讲解使用python的flask部署服务的基本过程. 1. 加载保存好的模型 为了方便起见,这里我们就使用简单的分 ...

  6. Asp.NetCore Web开发之初始文件解析

    在写代码之前,有必要了解一下.net帮我们生成的文件都是干什么用的,在开发过程中他们都负责那些地方(下面以MVC模板举例). 先简单介绍一下什么是MVC,MVC(model-view-controll ...

  7. php中输出函数的区别

    isset() .empty()与is_null的区别 1.当变量未定义时,is_null() 和"参数本身"是不允许作为参数判断的,会报Notice警告错误: 2.empty , ...

  8. [刷题] 79 Word Search

    要求 给定一个二维平面的字母和一个单词,从一个字母出发,横向或纵向连接二维平面上的其他字母 同一位置的字母只能使用一次 示例 board = [   ['A','B','C','E'],   ['S' ...

  9. 1.消息队列(queue)

    版权声明:本文为博主原创文章,未经博主允许不得转载.https://www.cnblogs.com/Dana-gx/p/9724545.html 一.基本概念 IPC:Linux下的进程通信.包括6种 ...

  10. CentOS7开放端口以及常用的使用命令记录整理

    CentOS7与以前常用的CentOS6还是有一些不同之处的,比如在设置开放端口的时候稍许有些不同,常用的iptables命令已经被firewalld代替.这几天正好有在CentOS7系统中玩Seaf ...