利用ufun对部件进行操作(新建、打开、保存、另存、关闭等)

一、概述

        在NX二次开发中我们常常会用到新建、打开、保存、另存为和关闭命令,这些函数一般放在UF_part.h头文件下,下面针对以上有关功能结合案例进行说明。

二、功能函数结合案例说明

2.1新建文件+创建块+保存功能

1)NXOpenC++代码

#include <uf_defs.h>
#include <NXOpen/NXException.hxx>
#include <NXOpen/Session.hxx>
#include <NXOpen/Builder.hxx>
#include <NXOpen/FileNew.hxx>
#include <NXOpen/NXObject.hxx>
#include <NXOpen/Part.hxx>
#include <NXOpen/PartCollection.hxx>
#include <NXOpen/Session.hxx>//初始化
NXOpen::Session *theSession = NXOpen::Session::GetSession();
NXOpen::Part *workPart(theSession->Parts()->Work());
NXOpen::Part *displayPart(theSession->Parts()->Display());Menu: 文件(F)->新建(N)...
//创建一个新文件
NXOpen::FileNew *fileNew1;
fileNew1 = theSession->Parts()->FileNew();
//调用模版文件并配置相关参数
fileNew1->SetTemplateFileName("model-plain-1-mm-template.prt");
fileNew1->SetApplicationName("ModelTemplate");
fileNew1->SetUnits(NXOpen::Part::UnitsMillimeters);
fileNew1->SetTemplateType(NXOpen::FileNewTemplateTypeItem);
//设置创建文件的名字
fileNew1->SetNewFileName("C:\\Users\\NINGMEI\\Desktop\\part\\model2.prt");
fileNew1->SetMakeDisplayedPart(true);//设置控制是否将新文件作为显示部件的属性
fileNew1->SetDisplayPartOption(NXOpen::DisplayPartOptionAllowAdditional);//设置显示部件选项
//创建并销毁
NXOpen::NXObject *nXObject1;
nXObject1 = fileNew1->Commit();
fileNew1->Destroy();//创建块
UF_FEATURE_SIGN Sign = UF_NULLSIGN;//设置布尔
double Corner_pt[3] = { 0.0, 0.0, 0.0 };//设置原点
char *Edge_Len[3] = { "100", "100", "100" };//设置长宽高
tag_t BlkTag = NULL_TAG;
UF_MODL_create_block1(Sign, Corner_pt, Edge_Len, &BlkTag);//保存SaveComponentsTrue保存修改后的部件;CloseAfterSaveFalse用于指定部分保存后是否应关闭。
NXOpen::PartSaveStatus *partSaveStatus1;
partSaveStatus1 = workPart->Save(NXOpen::BasePart::SaveComponentsTrue, NXOpen::BasePart::CloseAfterSaveFalse);delete partSaveStatus1;

2)NXOpenC代码

#include <uf_part.h>UF_initialize();
tag_t partTAG = NULL_TAG;
//第二个参数1为工制,2为英制
UF_PART_new("C:\\Users\\NINGMEI\\Desktop\\part\\model2.prt", 1, &partTAG);
//切换到建模模块
theSession->ApplicationSwitchImmediate("UG_APP_MODELING");//创建块
UF_FEATURE_SIGN Sign = UF_NULLSIGN;//设置布尔
double Corner_pt[3] = { 0.0, 0.0, 0.0 };//设置原点
char *Edge_Len[3] = { "100", "100", "100" };//设置长宽高
tag_t BlkTag = NULL_TAG;
UF_MODL_create_block1(Sign, Corner_pt, Edge_Len, &BlkTag);//保存
UF_PART_save();UF_terminate();

注意:唐康林老师的视频中也讲到UF_PART_new函数只是在基本环境中建立,需要添加theSession->ApplicationSwitchImmediate("UG_APP_MODELING")切换到建模环境中。

2.2关闭文件

1)NXOpenC++代码

//删除文件
NXOpen::Session *theSession = NXOpen::Session::GetSession();
NXOpen::Part *workPart(theSession->Parts()->Work());
NXOpen::Part *displayPart(theSession->Parts()->Display());NXOpen::PartCloseResponses *partCloseResponses1;
partCloseResponses1 = theSession->Parts()->NewPartCloseResponses();workPart->Close(NXOpen::BasePart::CloseWholeTreeTrue, NXOpen::BasePart::CloseModifiedUseResponses, partCloseResponses1);workPart = NULL;
displayPart = NULL;
delete partCloseResponses1;
/*
//将内存中的下一个文件进行显示
NXOpen::Part *part1(dynamic_cast<NXOpen::Part *>(theSession->Parts()->FindObject("asm-20-BASE")));
NXOpen::PartLoadStatus *partLoadStatus1;
NXOpen::PartCollection::SdpsStatus status1;
status1 = theSession->Parts()->SetActiveDisplay(part1, NXOpen::DisplayPartOptionAllowAdditional, NXOpen::PartDisplayPartWorkPartOptionUseLast, &partLoadStatus1);workPart = theSession->Parts()->Work(); // asm-20-BASE
displayPart = theSession->Parts()->Display(); // asm-20-BASE
delete partLoadStatus1;
*/

2)NXOpenC代码

UF_initialize();//仅关闭当前显示部件界面
//tag_t partTag1 = UF_PART_ask_display_part();//关闭当前显示部件界面
//int scope = 1;//关闭部件和组件
//int mode = 1;
//UF_PART_close(partTag1, scope, mode);//关闭所有窗口
UF_PART_close_all();UF_terminate();

存在的问题如图1所示,如果打开多个文件时,关闭一个后应该将下一个作为工作部件显示在窗口中,下图可以明显的看出不对,在参考录制的代码时的思路是查找内存中的文件名,然后将其作为工作部件进行显示,很显然我们在开发功能模块时不可能知道下一个文件是什么,我想应该遍历内存中的名字,将下一个文件进行显示。

2.3保存和另存为文件

1)NXOpenC++代码

//另存为
NXOpen::Session *theSession = NXOpen::Session::GetSession();
NXOpen::Part *workPart(theSession->Parts()->Work());
NXOpen::Part *displayPart(theSession->Parts()->Display());NXOpen::PartSaveStatus *partSaveStatus1;
partSaveStatus1 = workPart->SaveAs("C:\\Users\\NINGMEI\\Desktop\\asm1.prt");delete partSaveStatus1;//保存SaveComponentsTrue保存修改后的部件;CloseAfterSaveFalse用于指定部分保存后是否应关闭。
NXOpen::PartSaveStatus *partSaveStatus1;
partSaveStatus1 = workPart->Save(NXOpen::BasePart::SaveComponentsTrue, NXOpen::BasePart::CloseAfterSaveFalse);delete partSaveStatus1;

2)NXOpenC代码

//保存
UF_PART_save();
//另存为
UF_PART_save_as("C:\\Users\\NINGMEI\\Desktop\\asm1.prt");

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

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

相关文章

4.32 构建onnx结构模型-Erf

前言 构建onnx方式通常有两种&#xff1a; 1、通过代码转换成onnx结构&#xff0c;比如pytorch —> onnx 2、通过onnx 自定义结点&#xff0c;图&#xff0c;生成onnx结构 本文主要是简单学习和使用两种不同onnx结构&#xff0c; 下面以 Erf 结点进行分析 方式 方法一&…

抖音详情API:从零开始构建抖音应用

随着短视频的兴起&#xff0c;抖音已经成为了一个全球范围内的热门平台。对于开发人员而言&#xff0c;利用抖音详情API从零开始构建抖音应用具有巨大的潜力和机会。本文将为你提供从零开始构建抖音应用的指南&#xff0c;包括开发环境搭建、API请求格式、用户认证等关键环节&a…

移动硬盘打不开怎么办?没有比这更好的办法了

移动硬盘打不开是常见故障&#xff0c;可能的原因有很多&#xff0c;例如硬盘驱动器故障、文件系统损坏、分区表错误等。本文将详细分析这些原因&#xff0c;并提供相应的解决方法&#xff0c;帮助您解决移动硬盘打不开的问题。 当移动硬盘打不开时&#xff0c;为了保留其中的文…

[LitCTF 2023]Vim yyds

[LitCTF 2023]Vim yyds wp 题目页面如下&#xff1a; 搜索一番&#xff0c;没有发现任何信息。题目描述中说到了源码泄露&#xff0c;那么先进行目录扫描。 dirsearch 目录扫描 命令&#xff1a; dirsearch -u "http://node4.anna.nssctf.cn:28588/"返回结果&…

使用docker轻量化部署snmp agent(SNMPv2访问)

文章目录 服务器环境说明单机部署&#xff08;非挂载conf文件版&#xff09;debian:buster-slim容器简介实现步骤创建Dockerfile创建SNMP配置文件 (snmpd.conf)构建Docker镜像运行Docker容器 注意补充复制容器文件到本地容器、镜像操作 单机部署&#xff08;挂载conf文件版&…

12.30序列检测(重叠、不重叠、连续、不连续、含无关项)——移位寄存器,状态机;状态机(二段式,三段式)

状态机-重叠序列检测 timescale 1ns/1nsmodule sequence_test2(input wire clk ,input wire rst ,input wire data ,output reg flag ); //*************code***********//parameter S00, S11, S22, S33, S44;reg [2:0] state, nstate;always(posedge clk or negedge rst) b…

CLion Nova:全新的C/C++ IDE

CLion Nova是一款备受期待的集成开发环境&#xff08;IDE&#xff09;&#xff0c;由JetBrains专门为C/C开发者设计。这款IDE提供了许多新的功能和改进&#xff0c;使用 ReSharper C/Rider C 语言引擎而不是 CLion “传统” 引擎&#xff0c;以满足C/C开发者的需求。目前预览版…

网络层解读

基本介绍 概述 当两台主机之间的距离较远(如相隔几十或几百公里&#xff0c;甚至几千公里)时&#xff0c;就需要另一种结构的网络&#xff0c;即广域网。广域网尚无严格的定义。通常是指覆盖范围很广(远超过一个城市的范围)的长距离的单个网络。它由一些结点交换机以及连接这些…

多输入多输出 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多输入多输出预测

多输入多输出 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多输入多输出预测 目录 多输入多输出 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多输入多输出预测预测效果基本介绍模型背景程序设计参考资料 预测效果 基本介绍 MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多输入…

Mastercam各版本安装指南

Mastercam下载链接 https://pan.baidu.com/s/1OldNR0ERqJFrEN24uu3j0Q?pwd0531 1.鼠标右击【Mastercam2024(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 Mastercam2024(64bit)】。 2.打开解压后的文件夹&#xff0c;鼠标右击【…

5G阅信助力互联网行业:XX出行-出票通知,案例分析

XX出行日常有大量业务通知短信下发&#xff0c;用户触达频次和用户打开率都比较高&#xff0c;但原短信无法带来附加营销增值&#xff0c;通过阅信增值服务消息将两者结合起来&#xff0c;可实现业务的多渠道引流&#xff0c;开拓了新的渠道和方式。 项目概述&#xff1a; 1. 项…

Github项目推荐-vocal-separate

项目地址 vocal-separate: 项目简述 这是一个音乐和人声分离的项目&#xff0c;基于python开发。有图形化操作界面&#xff0c;看起来还不错。 项目截图

C练习——判断三角形并求面积

题目&#xff1a;从健盘任意输入三角形的三边长为a,b,c,编程判断a,b,c的值能否构成一个三角形&#xff0c;若能构成三角形&#xff0c;则计算并输出三角形的面积&#xff0c;否则提示不能构成三角形。 已知构成三角形的条件是&#xff1a;任意两边之和大于第三边。 解析&#…

再见2023,你好2024

再见2023&#xff0c;你好2024 生活1月 悲伤与治愈2~4月 运动与偏爱5月 体验与美食6月 婚礼与热爱7~8月 就医与别离9~11月 陪伴与暖房12月 体验&新生 运动追剧读书总结 生活 生活是一个修罗场&#xff0c;来世间一场&#xff0c;要经历丰腴有趣的人生。去体验各种滋味&…

Android : 使用GestureDetector 进行手势识别—简单应用

示例图&#xff1a; GestureDetector 介绍&#xff1a; GestureDetector 是 Android 开发中用于识别和处理手势的一个类。它允许开发者检测用户在触摸屏上的各种手势&#xff0c;如滑动、长按、双击等。通过使用 GestureDetector&#xff0c;您可以轻松地为应用程序添加手势识…

【Web API系列】使用异步剪贴板API(async clipboard)的图像的编程复制和粘贴

文章目录 前言一、将数据写入剪切板1. WriteText()2. Write()3. 监听复制事件 二、从剪切板读取数据1.readText()2.read()3. 处理粘贴的文件4. 监听读剪切板事件 三、申请权限政策集成 四、功能检测五、处理多个 MIME 类型 前言 访问系统剪贴板的传统方法是通过 document.exec…

考研后SpringBoot复习1

考研后SpringBoot复习 Hello World入门 复习的版本为SpringBoot2的版本 创建maven项目 在pom文件中导入SpringBoot的依赖同时引入web开发的启动器 <!--声明springboot父项目--><parent><groupId>org.springframework.boot</groupId><artifactId>…

【大模型的前世今生】从自然语言处理说起

自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&#xff09;被誉为人工智能皇冠上的明珠&#xff0c;是计算机科学和人工智能领域的一个重要方向。它主要研究人与计算机之间&#xff0c;使用自然语言进行有效通信的各种理论和方法。简单来说&#xf…

AcWing算法提高课-2.3.1矩阵距离

算法提高课整理 CSDN个人主页&#xff1a;更好的阅读体验 本文同步发表于 CSDN | 洛谷 | AcWing | 个人博客 原题链接 题目描述 给定一个 01 矩阵&#xff0c;求矩阵中每个元素离 1 的最短曼哈顿距离。 输入格式 第一行两个整数 n , m n,m n,m。 接下来一个 n n n 行 …

hadoop hive spark flink 安装

下载地址 Index of /dist ubuntu安装hadoop集群 准备 IP地址主机名称192.168.1.21node1192.168.1.22node2192.168.1.23node3 上传 hadoop-3.3.5.tar.gz、jdk-8u391-linux-x64.tar.gz JDK环境 node1、node2、node3三个节点 解压 tar -zxvf jdk-8u391-linux-x64.tar.gz…