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

2023-12-31 18:52

本文主要是介绍利用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");

这篇关于利用ufun对部件进行操作(新建、打开、保存、另存、关闭等)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/556881

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

Python使用openpyxl读取Excel的操作详解

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作... 目录1 概述1.1 图示1.2 安装第三方库2 工作簿 workbook2.1 创建:Workboo

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配