利用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

相关文章

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

Java Multimap实现类与操作的具体示例

《JavaMultimap实现类与操作的具体示例》Multimap出现在Google的Guava库中,它为Java提供了更加灵活的集合操作,:本文主要介绍JavaMultimap实现类与操作的... 目录一、Multimap 概述Multimap 主要特点:二、Multimap 实现类1. ListMult

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.