NX二次开发——基础

news2024/9/20 14:21:46

 1.打开信息窗口并写入

UC1601是将想显示的内容显示在一个UI消息框中,或者是状态栏,如果内容很多的时候,就不适合使用UC1601

使用信息窗口,相关命令:信息->.......

要实现这个功能具有的逻辑,先是要打开信息窗口,在写内容,如果只打开,不写,打开就是一个空的

先添加头文件

#include<uf_ui_ugopen.h>

在do_it()函数里添加

	UF_initialize();
	UF_UI_open_listing_window();
	UF_UI_write_listing_window("UG二次开发");
	UF_terminate();

生成解决方案,打开NX,Ctrl+U,选择生成的.dll文件打开

运行结果:

2.tag_t数据类型的用法

在NX中,tag_t是 NX对象法人句柄,即任何确定存在的NX对象的唯一标识。它是一种不重复的无符号整型数值,主要用于标识应用程序中的对象,如部件、特征、草图、曲线、属性、表达式等。NX应用程序只能访问句柄,而不能直接访问句柄所指示的实际对象。应用程序一般通过调用API函数获取句柄,并且在其它API函数中使用这个句柄,以引用它指示的对象。在此过程中,句柄的实际值对程序来说是无关紧要的。NULL_AG是用来表示暂时不标识任何对象的TAG,相当于初值为0,此外tag_g_t是指tag_t数据类型的指针。

在安装NX的目录下,打开UGII下的ugii_env_ug.data文件里的最后加上UGII_DISPLAY_DEBUG=1

打开NX在菜单—帮助—调试,多了一个调试

创建项目,添加头文件,在do_it()函数里添加代码

#include<uf_part.h>
	UF_initialize();
	tag_t partTAG=NULL_TAG;
	UF_PART_new("c:\\abcd.prt", 1,&partTAG );//新建一个文件
	char msg[256];
	sprintf(msg, "当前创建prt的tag:%d", partTAG);
	uc1601(msg, 1);
	UF_terminate();

生成解决方案,打开NX,Ctrl+U,选择生成的.dll文件打开

在调试—调试工具—移刀可以看到tag,与代码输出的相同

3.创建一个立方体(数组的用法)

 在NXOPEN C里面创建立方体有两个函数

UF_MODL Function UF_MODL_create_block
UF_MODL Function UF_MODL_create_block1

一般情况下,最好使用1结尾的,它比之前一个要新,更新的功能会多一些

创建项目,添加头文件

#include<uf_modl_primitives.h>
	UF_initialize();
	UF_FEATURE_SIGN sign = UF_NULLSIGN;
	double corner[3] = {0.0,0.0,0.0};
	char *edge[3] = { "100","100","100" };//长宽高
	tag_t fTAG = NULL_TAG;
	UF_MODL_create_block1(sign,corner,edge,&fTAG);
	UF_terminate();

生成解决方案,打开NX,Ctrl+U,选择生成的.dll文件

运行结果:

4.底座零件的开发

 底座零件是由一个长方体和两个圆柱组成

创建项目,添加头文件

#include<uf_modl_primitives.h>

    UF_initialize();
	//创建第一个块
	UF_FEATURE_SIGN a1 = UF_NULLSIGN;
	double point1[3] = { 0.0,0.0,0.0 };//坐标
	char *LWD1[3] = { "60","70","20" };//长宽高
	tag_t block1TAG = NULL_TAG;
	UF_MODL_create_block1(a1, point1, LWD1, &block1TAG);
	//创建第二个块并求和
	UF_FEATURE_SIGN a2 = UF_POSITIVE;//求和
	double point2[3] = { 0.0,20.0,0.0 };//坐标
	char *LWD2[3] = { "60","30","70" };
	tag_t block2TAG = NULL_TAG;
	UF_MODL_create_block1(a2, point2, LWD2, &block2TAG);
	//创建圆柱1
	UF_FEATURE_SIGN cy1 = UF_POSITIVE;
	double origin1[3] = { 30.0,20.0,70.0 };
	char *H1 = "30";//高度
	char *D1 = "60";//直径
	double v1[3] = { 0.0,1.0,0.0 };//方向
	tag_t cy1TAG = NULL_TAG;
	UF_MODL_create_cyl1(cy1, origin1, H1, D1, v1, &cy1TAG);
	//创建圆柱2
	UF_FEATURE_SIGN cy2 = UF_NEGATIVE;//求差
	double origin2[3] = { 30.0,20.0,70.0 };
	char *H2 = "30";
	char *D2 = "30";
	double v2[3] = { 0.0,1.0,0.0 };
	tag_t cy2TAG = NULL_TAG;
	UF_MODL_create_cyl1(cy2, origin2, H2, D2, v2, &cy1TAG);
	UF_terminate();

运行结果:

5.点与直线的创建方式

创建项目,添加头文件

#include<uf_curve.h>

	UF_initialize();
	//第一个点
	double point1[3] = { 10.0,20.0,30.0 };//点坐标
	tag_t point1TAG = NULL_TAG;
	UF_CURVE_create_point(point1, &point1TAG);
	//第二个点
	double point2[3] = { 100.0,50.0,80.0 };//点坐标
	tag_t point2TAG = NULL_TAG;
	UF_CURVE_create_point(point2, &point2TAG);
	//创建一条直线
	UF_CURVE_line_t line1;
	line1.start_point[0] = 20;
	line1.start_point[1] = 30;
	line1.start_point[2] = 50;
	line1.end_point[0] = 100;
	line1.end_point[1] = 200;
	line1.end_point[2] = 300;
	tag_t line3TAG = NULL_TAG;
	UF_CURVE_create_line(&line1, &line3TAG);
	UF_terminate();

运行结果:

6.分配内存与重新分配内存

指针格式:

_t*或者_p_t

看到这两种格式,一般不用定义成这样,在定义的时候,是直接把*或者p给去掉,然后在后面引用的时候用取址&符号就可以

但是,有些情况下,可能是避免不了使用指针,比如双指针,或者更多指针时

_t** _p_t*

这种情况一般都要分配内存

_t* name=NULL;
name=(_t*)UF_allocate_memory(N*sizeof(_t),&error);//分配内存
name=(_t*)UF_reallocate_memory(name,(N+1)*sizeof(_t),&error);//重新分配
UF_free(name);//释放内存
UF_CURVE_line_t *point1=NULL;
int erro=0;
//分配内存
point1=(UF_CURVE_line_t *)UF_allocate_memory(200*sizeof(UF_CURVE_line_t),&erro);
//重新分配内存
point1=(UF_CURVE_line_t *)UF_reallocate_memory(point1,300*sizeof(UF_CURVE_line_t),&erro);
//释放内存
UF_free(point1);

 7.输出工作图层

头文件:

#include<uf_layer.h>
	UF_initialize();
	int N;
	UF_LAYER_ask_work_layer(&N);
	char msg[256];
	sprintf(msg, "当前的工作图层:%d", N);
	uc1601(msg, 1);
	UF_terminate();

运行结果:

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

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

相关文章

【Kubernetes部署篇】二进制搭建K8s高可用集群1.26.15版本(超详细,可跟做)

文章目录 一、服务器环境信息及部署规划1、K8S服务器信息及网段规划2、服务器部署架构规划3、组件版本信息4、实验架构图 二、初始化环境操作1、关闭防火墙2、配置本地域名解析3、配置服务器时间保持一致4、禁用swap交换分区(K8S强制要求禁用)5、配置主机之间无密码登录6、修改…

ArkUI-状态管理-@Provide、@Consume、@Observed、@ObjectLink

ArkUI-状态管理 Provide装饰器和Consume装饰器&#xff1a;与后代组件双向同步概述观察变化框架行为Provide支持allowOverride参数 Observed装饰器和ObjectLink装饰器&#xff1a;嵌套类对象属性变化概述限制条件观察变化框架行为 Provide装饰器和Consume装饰器&#xff1a;与后…

【python计算机视觉编程——4.照相机模型与增强现实】

python计算机视觉编程——4.照相机模型与增强现实 4.照相机模型与增强现实4.1 真空照相机模型4.1.1 照相机矩阵4.1.2 三维点的投影4.1.3 照相机矩阵的分解4.1.4 计算照相机中心 4.2 照相机标定4.3 以平面和标记物进行姿态估计sift.pyhomography.py主函数homography.pycamera.py…

开源 AI 智能名片 O2O 商城小程序在营销中的应用

摘要&#xff1a;本文探讨了开源 AI 智能名片 O2O 商城小程序在营销中的应用&#xff0c;重点分析了喜好原则、互惠互利和高度认可三个方面对小程序推广和用户忠诚度提升的重要性。通过融入这些原则&#xff0c;开源 AI 智能名片 O2O 商城小程序能够更好地满足用户需求&#xf…

UnsupportedOperation: not readable 解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【操作系统】同步互斥与Golang互斥锁实现

【操作系统】同步互斥问题与Golang互斥锁实现 1 背景1.1 独立线程1.2 合作线程1.3 合作有风险&#xff0c;为什么需要合作1.4 多协程并发执行的风险举例&#xff08;Golang语言&#xff09;1.5 对风险的思考 2 同步互斥2.1 一些概念2.2 解决方案——保护临界区2.3 禁用硬件中断…

【转变之旅】从程序员到AI绘画艺术家,我的月入过万之路

曾经&#xff0c;我的生活平淡如水&#xff0c;作为一名程序员&#xff0c;每天重复着朝九晚五的工作。然而&#xff0c;一场突如其来的裁员&#xff0c;让我陷入了失业的深渊。为了生活&#xff0c;我选择了开滴滴谋生。没想到&#xff0c;这个看似权宜之计的决定&#xff0c;…

计算机网络——ARP篇

最近在学习计算机网络&#xff0c;做一下学习笔记&#xff1a; 抛出疑问&#xff1f;什么是ARP&#xff1f;ARP协议的作用是什么&#xff1f;ARP的工作原理是什么&#xff1f;ARP有哪些类型&#xff1f; 首先&#xff0c;我们要了解ARP的概念&#xff0c;ARP&#xff08;Addre…

python计算机视觉编程——照相机模型与增强现实

一、针孔照相机模型 针孔照相机模型(有时称为射影照相机模型)是计算机视觉中广泛使用的照相机模型。针孔照相机模型简单,并且具有足够的精确度。这个名字来源于一种类似暗箱机的照相机。该照相机从一个小孔采集射到暗箱内部的光线。在针孔照相机模型中,在光线投影到图像平面之…

Windows 11 下使用 MSVC 2022 编译64位Nginx

一、软件准备 1、安装 Visual Studio 2022 包含单个组件&#xff1a; .NET Framework 4.6.1 目标包.NET Framework 4.6.1 SDKWindows 通用 C 运行时Windows 通用 CRT SDKMSVC v142 - VS 2019 C x64/x86 生成工具(v14.26)对 v142 生成工具(14.21)的 C/CLI 支持Clang compile fo…

Linux中MFS分布式文件系统(实战教程)全网最详细

MFS架构图 元数据服务器&#xff08;Master&#xff09;&#xff1a;在整个体系中负责管理文件系统&#xff0c;维护元数据。 元数据日志服务器&#xff08;MetaLogger&#xff09;&#xff1a;备份Master服务器的变化日志文件&#xff0c;文件类型为 changelog_ml.*.mfs。当 …

第六届机器学习、大数据与商务智能国际会议(MLBDBI 2024)

目录 主办单位 大会简介 会议组委会 征稿主题 参会方式 会议日程 重要信息 大会官网&#xff1a;www.mlbdbi.org 会议时间&#xff1a;2024年11月1-3日 会议地点&#xff1a;中国-杭州 收录检索&#xff1a;EI Compendex&#xff0c;Scopus 主办单位 大会简介 由…

SSD300模型总结

1、SSD网络结构 SSD以VGG16作为特征提取特征的基础模型&#xff0c;然后在VGG16的基础上增加了额外的卷积和池化操作来获得更多不同尺度的特征图用来检测不同大小的目标 本文主要是SSD300作为例子进行分析 整体主要分为3个部分 backbone网络&#xff1a;VGG16Extra网络&…

使用Mid360进行FAST_LIO建图,并使用Octomap在线转栅格地图

在之前的教程中&#xff0c;我们已经成功的安装了激光雷达驱动&#xff0c;成功复现了FAST_LIO&#xff0c;并使用OCtomap将点云地图转为栅格地图。 但是之前我们是建图生成了.PCD文件后&#xff0c;读取pcd文件进行离线octomap转栅格地图&#xff0c;这样在实际的场景中并不完…

Python实现贝叶斯优化器(Bayes_opt)优化卷积神经网络-双向长短时记忆循环神经网络分类模型(CNN-BiLSTM分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 随着深度学习技术的发展&#xff0c;卷积神经网络&#xff08;Convolutional Neural Networks, CNNs&a…

Linux驱动基础 | sys文件系统

前言思考sys文件系统简介 sys文件系统是什么sys文件系统功能描述sysfs与objectsysfs接口使用 sysfs读写操作例子sysfs常用的接口sysfs常用的结构体代码实验总结 前言 上篇介绍了Linux驱动中procfs接口的创建&#xff0c;今天介绍sysfs接口的创建&#xff0c;本篇内核采用5.10版…

分支电路导体的尺寸确定和保护

本文旨在确定为分支电路负载供电的导体的尺寸和保护。 支路额定电流 NEC 第 210 条规定了分支电路导体尺寸和过流保护的一般要求。 允许额定电流或过流保护装置的设置确定了分支电路额定值 (210.18)。电路的安培额定值取决于保护导体的断路器或保险丝的额定值&#xff0c;而…

传统CV算法——图像基本操作与形态学操作

环境配置地址 图像显示 import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB imgcv2.imread(cat.jpg) img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) img_gray.shape cv2.imshow("img_gray", img_gray) cv2…

SprinBoot+Vue实验室考勤管理微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…