NX二次开发UF_LAYER(图层相关操作)常用函数

news2024/11/15 19:59:08

目录

一、概述

二、函数的介绍

2.1 UF_LAYER_ask_category_info (查询图层类别信息)

2.2 UF_LAYER_ask_category_tag(查询图层类别TAG)

 2.3 UF_LAYER_ask_status(查询图层的状态)

2.4 UF_LAYER_ask_work_layer(查询工作图层)

 2.5 UF_LAYER_set_status (设置图层状态)

 2.6 UF_LAYER_set_all_but_work(设置除了工作图层的状态)

  2.7 UF_LAYER_set_many_layers_status(设置多个图层的状态)

 2.8 UF_LAYER_create_category(创建图层类别)

  2.9 UF_LAYER_edit_category_descr(编辑图层类别里的描述)

 2.10 UF_LAYER_edit_category_name(编辑图层类别里的名字)

 2.11 UF_LAYER_edit_category_layer(编辑图层类别里的具体成员)

2.12 UF_LAYER_cycle_by_layer(遍历图层)

三、源码文件


一、概述

        NX二次开发UF帮助文档中关于图层操作主要以下几个方面

(1) 查找工作层;
(2)查询图层的分类、名字、描述及分类成员;
(3)查取图层状态;
(4)创建或编辑图层类别、名字、描述及分类成员;
(5)设置图层状态;
(6) 遍历图层。

注意:总是使用NX函数来确定给定名称的类别是否存在。不建议使用字符串比较来验证类别是否存在。以下是检查类别是否存在的一般准则。

(1)UF_LAYER_ask_category_tag根据层名称获得层组tag。下面是一个检查的函数示例是否已创建类别。

//根据层名称获得层组tag
static tag_t ask_category_tag(char name)
{
    tag_t object;
    UF_CALL(UF_LAYER_ask_category_tag(name, &object));
    return object;
}

从上述函数返回的非空标记(NULL_TAG)表明存在该类别,否则类别不存在。所有其他类别相关的函数,如

UF_LAYER_ask_category_info(查询图层类别信息)
UF_LAYER_ask_category_tag(查询图层类别TAG)
UF_LAYER_ask_status(查询图层的状态)
UF_LAYER_ask_work_layer(查询工作图层)
UF_LAYER_create_category(创建图层类别)
UF_LAYER_cycle_by_layer(遍历图层)
UF_LAYER_edit_category_descr(编辑图层类别里的描述)
UF_LAYER_edit_category_layer(编辑图层类别里的具体成员)
UF_LAYER_edit_category_name(编辑图层类别里的名字)
UF_LAYER_set_all_but_work(设置除了工作图层的状态)
UF_LAYER_set_many_layers_status(设置多个图层的状态)
UF_LAYER_set_status(设置某一个图层的状态)

可以利用所获得的标签。使用这种方法的优点是,这个函数返回与传递的名称相同的类别的标记。我们认为两个名字是相同的如果它们传递不区分大小写的比较。通过这种方式,即使使用大写,它的存在仍然可以使用混合大小写字符串查询。

二、函数的介绍

2.1 UF_LAYER_ask_category_info (查询图层类别信息)

(1)概述

        读取类别名称、成员层和描述。

(2)用法说明

tag_t (tag_t类型)	        category	    Input(输入)	图层对象类别的TAG
UF_LAYER_category_info_p_t	category_info	Output(输出)	图层类别信息指针

//UF_LAYER_category_info_p_t
/*
name [MAX_ENTITY_NAME_SIZE+1]
char
这个类别的名称。

layer_mask [UF_LAYER_MAX_LAYER]
bool
包括哪些图层,总体来说就是就是true为存在否则不存在,也就是该类别下的图层。 
每一层的逻辑,是否属于这一类。layer_mask[0]如果层1属于类别,则为TRUE,否则为false。Layer_mask[1]适用于第2层,以此类推。

descr [UF_LAYER_CAT_DESC_LEN+1]
char
该层类别的描。*/	
2.2 UF_LAYER_ask_category_tag(查询图层类别TAG)

(1)概述

        通过类别名字查找该类别的TAG值。

(2)用法说明

char * (字符型指针)	    category_name	Input(输入)	类别名字
tag_t * (tag_t型的指针)	category	    Output(输出)	类别对象TAG。如果为null则类别名不存在

实例:通过类别名称查询类别的名字、包含的图层、描述:

#include<uf_ui.h>
#include <uf_layer.h>


/*获取图层类别中的类别名字、包含的图层、类别描述*/
UF_initialize();
//获取一个图层类别的tag
tag_t categoryTAG = NULL_TAG;
UF_LAYER_ask_category_tag("00_FINAL_DATA", &categoryTAG);
//获得图层类别的信息
UF_LAYER_category_info_t info;
UF_LAYER_ask_category_info(categoryTAG, &info);

//数据转化
UF_UI_open_listing_window();
char msg[256];
for (int i = 0; i < 256; i++)
{
	if (info.layer_mask[i]==true)
	{
		sprintf(msg, "%d", i);
		UF_UI_write_listing_window(msg);
		UF_UI_write_listing_window("	");
	}
}
UF_UI_write_listing_window(info.name);
UF_UI_write_listing_window("\n");
UF_UI_write_listing_window(info.descr);
UF_terminate();

 2.3 UF_LAYER_ask_status(查询图层的状态)

(1)概述

        返回图层的状态。

(2)用法说明

const int	        layer_number	Input(输入)	图层数
int * (整数型指针)	layer_status	Output(输出)	图层的状态
UF_LAYER_WORK_LAYER        工作图层
UF_LAYER_ACTIVE_LAYER      活动图层  
UF_LAYER_REFERENCE_LAYER   引用图层 
UF_LAYER_INACTIVE_LAYER    不活动图层

#define UF_LAYER_WORK_LAYER           1
#define UF_LAYER_ACTIVE_LAYER         2
#define UF_LAYER_REFERENCE_LAYER      3
#define UF_LAYER_INACTIVE_LAYER       4    

实例:分别打印四类工作状态

    int layer_status, layer_status1, layer_status2, layer_status3;
	UF_LAYER_ask_status(1, &layer_status);
	UF_LAYER_ask_status(3, &layer_status1);
	UF_LAYER_ask_status(8, &layer_status2);
	UF_LAYER_ask_status(9, &layer_status3);
	UF_UI_open_listing_window();
	char msg[256], msg1[256], msg2[256], msg3[256];
	sprintf(msg, "%d", layer_status);
	sprintf(msg1, "%d", layer_status1);
	sprintf(msg2, "%d", layer_status2);
	sprintf(msg3, "%d", layer_status3);
	UF_UI_write_listing_window(msg);
	UF_UI_write_listing_window("\n");
	UF_UI_write_listing_window(msg1);
	UF_UI_write_listing_window("\n");
	UF_UI_write_listing_window(msg2);
	UF_UI_write_listing_window("\n");
	UF_UI_write_listing_window(msg3);

2.4 UF_LAYER_ask_work_layer(查询工作图层)

(1)概述

        返回工作图层。

(2)用法说明

int * (整数型指针)	layer_number	Output(输出)	Layer number
 2.5 UF_LAYER_set_status (设置图层状态)

(1)概述

        设置图层状态为:工作层、活动层、参考层、或者说非活动层。当前工作层的状态不能被改变。你必须先设置另一层为工作层,然后更改状态前一个工作层。

(2)用法说明

const int	layer_number	Input(输入)	Layer number
const int	layer_status	Input(输入)	Layer status
UF_LAYER_WORK_LAYER
UF_LAYER_ACTIVE_LAYER
UF_LAYER_REFERENCE_LAYER
UF_LAYER_INACTIVE_LAYER
 2.6 UF_LAYER_set_all_but_work(设置除了工作图层的状态)

(1)概述

        按指定设置除工作层外的所有层的状态。

(2)用法说明

const int	layer_status	Input(输入)	Layer status
UF_LAYER_WORK_LAYER
UF_LAYER_ACTIVE_LAYER
UF_LAYER_REFERENCE_LAYER
UF_LAYER_INACTIVE_LAYER
  2.7 UF_LAYER_set_many_layers_status(设置多个图层的状态)

(1)概述

        将指定层设置为相应的指定状态。工作层不是引用的或不活动的。只有一个层可以是工作层。如果出现任何错误,则不修改任何层的状态。

(2)用法说明

const int	                count_of_layers	Input(输入)	指定图层的数量
UF_LAYER_status_info_p_t	changes	        Input(输入)	一种结构数组,其中数组中的每个元素都是包含层号和状态的结构。
//UF_LAYER_status_info_p_t	
/*
layer_number
int
此状态所对应的层号。有效的层是UF_LAYER_MIN_LAYER到UF_LAYER_MAX_LAYER

layer_status
int
对应图层的状态
UF_LAYER_WORK_LAYER
UF_LAYER_ACTIVE_LAYER
UF_LAYER_REFERENCE_LAYER
UF_LAYER_INACTIVE_LAYER
*/

实例:设置图层4~11为活动图层

int count = 8;
UF_LAYER_status_info_t infox[256];
for (int i = 0; i < count; i++)
{
	infox[i].layer_number = 4 + i;
	infox[i].layer_status = UF_LAYER_ACTIVE_LAYER;
}
UF_LAYER_set_many_layers_status(8, infox);

 2.8 UF_LAYER_create_category(创建图层类别)

(1)概述

        创建类别名称、成员层和描述。

(2)用法说明

UF_LAYER_category_info_p_t	    category_info	Input(输入)	类别消息结构体
tag_t * (tag_t型的指针)	        category	    Output(输出)	类别的TAG
//UF_LAYER_category_info_p_t
/*
name [MAX_ENTITY_NAME_SIZE+1]
char
这个类别的名称。

layer_mask [UF_LAYER_MAX_LAYER]
bool
包括哪些图层,总体来说就是就是true为存在否则不存在,也就是该类别下的图层。 
每一层的逻辑,是否属于这一类。layer_mask[0]如果层1属于类别,则为TRUE,否则为false。Layer_mask[1]适用于第2层,以此类推。

descr [UF_LAYER_CAT_DESC_LEN+1]
char
该层类别的描。*/	

实例:1~5图层进行创建类别,以及命名描述

    UF_LAYER_category_info_t category;
	tag_t categoryTAG = NULL_TAG;
	strcpy(category.name, "图层类别名字");
	strcpy(category.descr, "图层类别描述");

	for (int i = 0; i < 256; i++)
	{
		if (i>=0&&i<8)
		{
			category.layer_mask[i] = true;
		}
		else
		{
			category.layer_mask[i] = false;
		}
	}
	UF_LAYER_create_category(&category, &categoryTAG);

  2.9 UF_LAYER_edit_category_descr(编辑图层类别里的描述)

(1)概述

        编辑图层类别的描述。

(2)用法说明

tag_t (tag_t类型)	category	Input(输入)	图层类别TAG
char * (字符型指针)	cat_descr	Input(输入)	图层类别的新的描述
 2.10 UF_LAYER_edit_category_name(编辑图层类别里的名字)

(1)概述

        编辑图层类别的名字。

(2)用法说明

tag_t (tag_t类型)	category	Input(输入)	图层类别TAG
char * (字符型指针)	cat_name	Input(输入)	图层类别的新名字
 2.11 UF_LAYER_edit_category_layer(编辑图层类别里的具体成员)

(1)概述

        编辑图层类别的名字。

(2)用法说明

tag_t (tag_t类型)	        category	                    Input(输入)	图层类别TAG
logical	                    layer_mask[UF_LAYER_MAX_LAYER]	Input(输入)	A logical for each layer, does it belong to this category or not. layer_mask[0] is TRUE if layer 1 belongs to the category, otherwise it is false. layer_mask[1] applies to layer 2, and so on.

实例:将上述的1~5图层换为6~10

    UF_LAYER_category_info_t category;
	tag_t categoryTAG = NULL_TAG;
	strcpy(category.name, "图层类别名字");
	strcpy(category.descr, "图层类别描述");

	for (int i = 0; i < 256; i++)
	{
		if (i>=0&&i<5)
		{
			category.layer_mask[i] = true;
		}
		else
		{
			category.layer_mask[i] = false;
		}
	}
	UF_LAYER_create_category(&category, &categoryTAG);

	for (int i = 0; i < 256; i++)
	{
		if (i >= 5 && i<10)
		{
			category.layer_mask[i] = true;
			UF_LAYER_edit_category_layer(categoryTAG, category.layer_mask);
		}
		else
		{
			category.layer_mask[i] = false;
		}
	}

2.12 UF_LAYER_cycle_by_layer(遍历图层)

(1)概述

        用来遍历图层的,它可以查找某一个图层下面的所有对象;或者是所有图层的所有对象,得到它的tag值。比如我们想开发一个一键删除所有图层的的所有对象的工具。

(2)用法说明

int (整数型)	            layer_number	Input(输入)	要遍历的图层,如果为0,遍历所有的图层
tag_t * (tag_t型的指针)	object_tag	    Input/Output	图层中对象的TAG,如果没有对象,则object_tag = NULL_TAG 

实例:遍历指定图层,删除图层中所有的对象

#include <uf_object_types.h>
#include <uf_layer.h>
#include <uf_ui.h>
#include <uf_modl.h>
#include <uf_obj.h>



UF_initialize();
tag_t objTAG = NULL_TAG;
char msg[256];
//UF_UI_open_listing_window();
int i = -1;
uf_list_p_t  list;
UF_MODL_create_list(&list);
do
{
	UF_LAYER_cycle_by_layer (0, &objTAG);
	i++;
	UF_MODL_put_list_item (list,objTAG);
	//sprintf (msg, "%d",objTAG);
	//UF_UI_write_listing_window (msg);
	//UF_UI_write_listing_window ("\n");
} while (objTAG !=NULL_TAG);

//删除链表里面的所有对象 
int coutlist;
tag_t objectTAG = NULL_TAG;
UF_MODL_ask_list_count (list,&coutlist);

for (int i = 0; i < coutlist; i++)
{
	UF_MODL_ask_list_item (list,i,&objectTAG);
	UF_OBJ_delete_object (objectTAG);
}
UF_MODL_delete_list(&list);

UF_terminate();

三、源码文件

https://download.csdn.net/download/weixin_47753171/89207997

https://download.csdn.net/download/weixin_47753171/89208115

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1616934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

护眼灯到底有用吗?实用护眼灯十大品牌推荐

护眼灯有用吗&#xff1f;答案无疑是肯定的。选购到一款合适的护眼台灯&#xff0c;益处多多。这些台灯经过精心设计&#xff0c;运用变频电子镇流器技术&#xff0c;显著提高了光线的频率&#xff0c;使之远超人眼的反应速度&#xff0c;从而有效缓解视觉疲劳。此外&#xff0…

适用于手机蓝牙的热敏晶体FA1612AS

EPSON推出的一款1612小尺寸无源热敏晶体:FA1612AS。FA1612AS的额定频率为38.4Mhz的晶体单元&#xff0c;采用无铅材料&#xff0c;符合ROHS标准&#xff0c;内置热敏电阻&#xff0c;可用于移动电话&#xff0c;蓝牙等。热敏晶体FA1612AS的产品特性:额定频率:38.4MHZ外部尺寸规…

Git 仓库内容操作

Git 仓库内容操作 | CoderMast编程桅杆Git 仓库内容操作 添加文件到暂存区 使用如下指令将工作区的文件添加到暂存区&#xff0c;告诉 Git 在下次 commit 时哪些文件做出了修改。 commit 指令详看后续 添加一个或多个文件到暂存区&#xff1a; 添加指定目录到暂存区 添加当前目…

山海鲸电力看板:运维数据一目了然

在信息化高速发展的今天&#xff0c;电力行业的运维管理也迎来了前所未有的变革。山海鲸可视化智慧电力运维可视化看板&#xff0c;以其独特的数据整合能力和直观的可视化效果&#xff0c;成为了电力行业运维管理的得力助手&#xff0c;为电力的稳定运行提供了强大的技术支撑。…

namesilo注册与域名购买教程

namesilo 是目前价格较便宜的国外域名平台&#xff0c;Paypal、Visa 等多种付款方式&#xff0c;还可以免费使用域名隐私保护&#xff0c;性价比非常之高。 1. 访问namesilo.com并注册用户账号。 邮箱可以填 QQ 邮箱&#xff0c;国家选择 China&#xff0c;注册信息尽量真实。…

开发同城O2O跑腿系统源码:构建高效便捷的本地服务平台教程

为了满足用户对便捷的需求&#xff0c;今天我们将一同探讨如何开发一个高效便捷的同城O2O跑腿系统&#xff0c;以构建一个功能全面、操作简单的本地服务平台。 一、确定需求和功能 在开发同城O2O跑腿系统之前&#xff0c;首先需要明确系统的需求和功能。用户可以通过该系统发布…

Mamba模型原理与代码精讲

课程链接&#xff1a;Mamba模型原理与代码精讲_在线视频教程-CSDN程序员研修院 Mamba模型是最近提出的可匹敌甚至超越Transformer的前沿序列模型。 Mamba引入了选择性状态空间模型(SSM), 允许SSM参数成为输入的函数&#xff0c;使得模型能够根据输入token沿着序列长度维度选择…

Ubuntu下使用VisualStudioCode进行Java开发

0-1开始Java语言编程之路 一、Ubuntu下Java语言环境搭建 二、Ubuntu下Docker环境安装 三、使用Docker搭建本地Nexus Maven私有仓库 四、Ubuntu下使用VisualStudioCode进行Java开发 Visual Studio Code 下载 点击这个链接Visual Studio Code&#xff0c;进入VisualStudioCode的…

未来已来:解锁AGI的无限潜能与挑战

未来已来&#xff1a;解锁AGI的无限潜能与挑战 引言 假设你有一天醒来&#xff0c;发现你的智能手机不仅提醒你今天的日程&#xff0c;还把你昨晚做的那个奇怪的梦解释了一番&#xff0c;并建议你可能需要减少咖啡摄入量——这不是科幻电影的情节&#xff0c;而是人工通用智能…

ubuntu apt update:The repository ‘xxx‘ is not signed.报错解决办法(未解决)

文章目录 报错原因及解决办法 报错 rootjax:~# apt update Get:1 file:/var/cuda-repo-l4t-11-4-local InRelease [1575 B] Get:2 file:/var/cudnn-local-repo-ubuntu2004-8.4.1.50 InRelease [1575 B] Get:1 file:/var/cuda-repo-l4t-11-4-local InRelease [1575 B] Get:2 …

C/C++ 入门(7)string类(STL)

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;C 请多多指教&#xff01; 目录 一、标准库中的string 1、了解 2、string类常用接口说明 1、常见的构造函数 2、容量操作 ​编辑 3、访问及遍历操作 4、修改操作 5、非成员函数 二、string类实现 …

电脑回收站恢复,3个靠谱方法(2024版)

“想问问大家&#xff0c;回收站里丢失的文件还能恢复吗&#xff1f;我一不小心就把电脑回收站里的重要数据丢失了&#xff0c;现在不知道怎么操作才能恢复它了。希望大家帮帮我。” 在日常使用电脑的过程中&#xff0c;回收站是我们经常打交道的一个功能&#xff0c;它能帮助我…

【Python创建专属二维码】

1、在PyCharm | Settings | Python Interpreter中添加PDL、PILLOW(注意解释器版本) 2、代码 from PIL import Image import qrcodedef main():# QRCode&#xff08;&#xff09;创建一个对象&#xff1a;qr qrcode.QRCode(version5, error_correctionqrcode.constants.ERROR_…

前端框架技术革新历程:从原生DOM操作、数据双向绑定到虚拟DOM等框架原理深度解析,Web开发与用户体验的共赢

前端的发展与前端框架的发展相辅相成&#xff0c;形成了相互驱动、共同演进的关系。前端技术的进步不仅催生了前端框架的产生&#xff0c;也为其发展提供了源源不断的动力。 前端的发展 前端&#xff0c;即Web前端&#xff0c;是指在创建Web应用程序或网站过程中负责用户界面…

Docker之注册中心的使用与操作

一、Docker注册中心与仓库 Reastry 可译为注册中心或注册服务器&#xff0c;是存放仓库的地方&#xff0c;一个注册中心往往有很多仓库。Docker默认的注册中心是Docker Hub&#xff0c;其可以通过浏览器访问&#xff0c;也可以使用docker search命令访问。 仓库是集中存放镜像…

[图解]软件开发中的糊涂用语-04-为什么要追究糊涂用语

0 00:00:00,030 --> 00:00:05,620 今天呢&#xff0c;我们来说一个为什么要追究糊涂用语的问题 1 00:00:06,310 --> 00:00:06,548 2 00:00:06,548 --> 00:00:11,077 大家知道我们前些天都发了好几个视频 3 00:00:11,077 --> 00:00:13,461 追究这个糊涂用语 4 00…

Python中capstone实现反汇编可执行文件

1、基本案例——disasm函数 capstone有非常简单的API&#xff0c;所以使用该框架编写工具非常简单。接下来&#xff0c;下面的代码实现的功能是反汇编一些X86二进制文件&#xff0c;并打印出其对应的汇编语句。 代码展示&#xff1a; from capstone import * #将capstone模块…

列车tcn网络mvb从站接收代码流程解析

TCN-列车通信网络概述 机车车辆通信网络&#xff08;TCN-列车通信网络&#xff09;的基本组件是在整个列车单元中提供数据通信的有线列车总线&#xff08;WTB&#xff09;和用于在车辆或固定连接车辆组&#xff08;组成&#xff09;内进行数据交换&#xff08;通信&#xff09…

免费https证书申请及部署教程

目前随着https访问的普及度逐渐提高&#xff0c;https证书的使用率也与日俱增&#xff0c;多数网站都会通过实现https来保障自身网站的数据传输安全&#xff0c;这时候就离不开SSL证书了&#xff0c;如何获取SSL证书&#xff0c;又如何将SSL证书部署在域名上&#xff0c;今天为…

外贸客户开发有用的软件

外贸客户开发过程中&#xff0c;选择合适的软件工具能够显著提升效率和效果。以下是一些对外贸客户开发非常有用的软件&#xff1a; CRM系统&#xff1a; Salesforce&#xff1a;全球领先的CRM平台&#xff0c;提供强大的客户关系管理、市场分析、销售自动化等功能&#xff0c;…