Siemens-NXUG二次开发-打开与关闭prt文件[Python UF][20231206]

Siemens-NXUG二次开发-打开与关闭prt文件[Python UF][20231206]

  • 1.python uf函数
    • 1.1 NXOpen.UF.Part.Open
    • 1.2 NXOpen.UF.Part.LoadStatus
    • 1.3 NXOpen.UF.Part.Close
    • 1.4 NXOpen.UF.Part.AskUnits
  • 2.示例代码
  • 3.运行结果
    • 3.1 内部模式
    • 3.2 外部模式

1.python uf函数

1.1 NXOpen.UF.Part.Open

# 内部和外部模式可用
"""
官方文档翻译:将现有NX part或Solid Edge part检索到会话中,并使其成为工作和显示part。
通过从Solid Edge part中提取Parasolids数据,然后将该数据导入到扩展名为.prt的新NX part中,可以打开Solid Edge部件(.par、.psm、.pwd或.asm文件扩展名)。
新NX part的文件名具有Solid Edge part名和“.prt”文件扩展名。
如果存在与Solid Edge part同名的现有NX part,则此函数将返回错误。
通过打开Solid Edge part文件创建的NX part文件包含一个或多个未参数化的实体。
可以通过此调用打开其他文件。
以下扩展名有效-.udf、.bkm、.xpk和.jt。
具有以下扩展名的外来文件也可以使用UF_PART_open打开-.igs、.stp、.dxf、.dwg和.model。
返回值:一个元素,0位置元素为打开part的tag(python语言的int类型),1位置元素为NXOpen.UF.Part.LoadStatus类对象
"""
def NXOpen.UF.Part.Open(self, part_name)

1.2 NXOpen.UF.Part.LoadStatus

# 内部和外部模式可用
类:NXOpen.UF.Part.LoadStatus(在NXOpen C API中是struct UF_PART_load_status_s)
对象方法:
# 如果加载失败并回滚,则为True
def NXOpen.UF.Part.LoadStatus.Failed(sel)	
def NXOpen.UF.Part.LoadStatus.Failed(self, value)# (len:n_parts,free:UF_free_string_array)分配的文件名数组
def NXOpen.UF.Part.LoadStatus.FileNames(self)	
def NXOpen.UF.Part.LoadStatus.FileNames(self, value)# 以下两个已分配数组的长度。加载时出现错误或警告的part数目,这是file_names和status数组中的元素个数(范围)。
def NXOpen.UF.Part.LoadStatus.NParts(self)	
def NXOpen.UF.Part.LoadStatus.NParts(self, value)# (len:n_parts)为每个文件名分配的相关状态代码数组。对数组中的每个状态代码使用UF_get_fail_message来获取关联的消息字符串,必须释放已分配的数组
def NXOpen.UF.Part.LoadStatus.Statuses(self)	
def NXOpen.UF.Part.LoadStatus.Statuses(self, value)	# 如果唯一的“失败”是用户中止,则为True	
def NXOpen.UF.Part.LoadStatus.UserAbort(self)	
def NXOpen.UF.Part.LoadStatus.UserAbort(self, value)	

1.3 NXOpen.UF.Part.Close

# 内部和外部模式可用
"""
官方文档翻译:关闭部件树中选定的零件以及它下面的所有零件(可选)。如果您在内部模式下运行此程序,系统会显示一个确认窗口,询问您是否应该关闭修改后的part。如果在外部模式下运行此程序,系统会认为该part应该关闭。
使用UF_part_close关闭part不会删除NX中的撤消标记。因此,如果使用此函数,可能会消耗大量内存。要释放此内存,请在调用UF_PART_close之后调用UF_UNDO_delete_all_marks。
scope指定要关闭的多少part:
0=仅指定部分;
1=part和所有子组件。
mode:
0=询问是否修改了零件(仅限内部,外部假设回答“是,删除”);
1=卸载part,即使已修改
2=仅在未修改的情况下卸载part
"""
def NXOpen.UF.Part.Close(self, part_tag, scope, mode)

1.4 NXOpen.UF.Part.AskUnits

# 内部和外部模式可用
"""
官方文档翻译:返回一个值,该值指示part的单位是英制还是公制。
返回值:
(NXOpen C API宏定义值)UF_PART_METRIC(NXOpen Python UF API:NXOpen.UF.UFConstants.UF_PART_METRIC);
(NXOpen C API宏定义值)UF_PART_ENGLISH(NXOpen Python UF API:NXOpen.UF.UFConstants.UF_PART_ENGLISH)。
"""
def NXOpen.UF.Part.AskUnits(self, part_tag)	

2.示例代码

import NXOpen.UF as UFdef get_uf_session():# 获取当前UF会话return UF.UFSession.GetUFSession()def pyuf_open_prt(the_pyuf_session, open_prt_file_name):"""功能:打开一个指定文件路径和文件名的.prt文件"""# 由于要对Part进行操作,因此需要获取Part实例对象pyuf_part_instance = the_pyuf_session.Part# Open方法位于Part类对象中return pyuf_part_instance.Open(open_prt_file_name)def pyuf_close_prt(the_pyuf_session, part_tag, scope, mode):"""功能:关闭当前工作part"""# 由于要对Part进行操作,因此需要获取Part实例对象pyuf_part_instance = the_pyuf_session.Part# Close方法位于Part类对象中return pyuf_part_instance.Close(part_tag, scope, mode)def pyuf_get_prt_units(the_pyuf_session, part_tag):"""功能:查询某prt的单位制"""# 由于要对Part进行操作,因此需要获取Part实例对象pyuf_part_instance = the_pyuf_session.Part# AskUnits方法位于Part类对象中return pyuf_part_instance.AskUnits(part_tag)if __name__ == '__main__':# 获取uf sessionthe_pyuf_session = get_uf_session()# 打开prt文件路径与名称open_prt_file_name = 'D:\\pyuf_open_prt_test.prt'# 打开D盘根目录下的示例.prt文件,并成为工作prt(work part)# 如果是在内部模式运行,则会在NX/UG界面打开一个名为pyuf_open_prt_test.prt的文件窗口# 如果是外部模式运行,则运行时不会有启动ug界面open_prt_file_data = pyuf_open_prt(the_pyuf_session, open_prt_file_name)# 查询prt的单位制unit_type = pyuf_get_prt_units(the_pyuf_session, open_prt_file_data[0])prt_unit_string = ""if unit_type == UF.UFConstants.UF_PART_METRIC:prt_unit_string = "metric"elif unit_type == UF.UFConstants.UF_PART_ENGLISH:prt_unit_string = "english"# 外部模式运行,会在命令行中打印,但内部模式运行则无反应,因在UF.UI类中操作,才可在NX/UG界面显示数据# 由于与NX/UG界面UI操作的方法都在UI类中,因此先获取UF.UI示例对象pyuf_ui_instance = the_pyuf_session.Ui# 判断信息窗口是否打开if pyuf_ui_instance.IsListingWindowOpen() == False:# 信息窗口未打开,先要将其打开# 打开信息窗口pyuf_ui_instance.OpenListingWindow()# 向信息窗口写入内容pyuf_ui_instance.WriteListingWindow('\nopen_prt_file_name is:' + str(open_prt_file_name))pyuf_ui_instance.WriteListingWindow('\nopen_prt_file_tag type is:' + str(type(open_prt_file_data)))pyuf_ui_instance.WriteListingWindow('\nopen_prt_file_tag is:{}'.format(open_prt_file_data))pyuf_ui_instance.WriteListingWindow('\nunit_type type is:{}'.format(type(unit_type)))pyuf_ui_instance.WriteListingWindow('\nunit_type is:{}'.format(unit_type))pyuf_ui_instance.WriteListingWindow('\nprt_unit_string is:{}'.format(prt_unit_string))# 将信息窗口的内容保存到指定文件中pyuf_ui_instance.SaveListingWindow('D:\\pyuf_listingwindow_content_test.txt')# 关闭信息窗口#pyuf_ui_instance.ExitListingWindow()

3.运行结果

3.1 内部模式

选中要运行的.py文件后,点击“管道通路”即可。

运行结果:
在这里插入图片描述

3.2 外部模式

cmd命令:“D:\Siemens\NX 12.0\NXBIN\run_journal.exe” pyuf_open_prt.py
powershell命令:&“D:\Siemens\NX 12.0\NXBIN\run_journal.exe” pyuf_open_prt.py

运行结果(内存访问违例,不知道为什!!!):
在这里插入图片描述

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

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

相关文章

财报解读:立足海外音视频直播战场,欢聚的BIGO盾牌还需加强?

如今,音视频社交平台出海早已不是新鲜事,随着时间推移,一批“坚定全球化不动摇”的企业也实现突围,站在出海舞台中心。 若提到中国企业出海范本,欢聚集团定是绕不开的存在。作为最早一批出海的中国互联网企业&#xf…

Socket和Http通信原理

Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议,主要利用三元组【ip地址,协议,端口】。 Http协议即超文本传输协议&a…

ATECLOUD电源自动测试系统打破传统 助力新能源汽车电源测试

随着新能源汽车市场的逐步扩大,技术不断完善提升,新能源汽车测试变得越来越复杂,测试要求也越来越严格。作为新能源汽车的关键部件之一,电源为各个器件和整个电路提供稳定的电源,满足需求,确保新能源汽车的…

[CAD]接下来导出一张高清大图

选择输出-范围,点击右侧绿色画框,划区一个范围 点击输出区域并设置右侧选项。 下图,大大大 页面设置替代-大大大 输出即可,可以说是非常的清晰了

学习springcloud时遇到java: 找不到符号 符号: 方法 getPname()

学习springcloud时异常-java: 找不到符号 符号: 方法 getPname() 学习springcloud时,遇到获取实体类属性值时出现异常。 项目目前分为两个子模块,一个是实体类模块,另一个是应用层。 在查询数据后,打印pname属性时报错&#xff…

LeetCode 每日一题 Day 4

2477. 到达首都的最少油耗 给你一棵 n 个节点的树(一个无向、连通、无环图),每个节点表示一个城市,编号从 0 到 n - 1 ,且恰好有 n - 1 条路。0 是首都。给你一个二维整数数组 roads ,其中 roads[i] [ai,…

【matlab程序】matlab画太极图|阴阳

【matlab程序】matlab画太极图|阴阳 %% 海洋与大气科学; % 时间:20231205; % clear;clc;close all; t=0:1/100000:2pi+0.00001; t1=-pi/2:1/100000:pi/2+0.00001; t2=pi/2:1/100000:3pi/2+0.00001; R=10; r=1; figure plot(Rcos(t),Rsin(t),‘color’,‘k’,‘lin…

Python爬虫技术:如何利用ip地址爬取动态网页

目录 一、引言 二、Python爬虫基础 三、动态网页结构分析 四、利用ip地址爬取动态网页 1、找到需要爬取的动态网页的URL结构 2、构造请求参数 3、发送请求并获取响应 4、解析响应内容 五、实例代码 六、注意事项 七、总结 一、引言 随着互联网的快速发展&#xff0…

并发集合框架

目录 前言 正文 1.集合框架结构 2. ConcurrentHashMap (1)验证 HashMap 不是线程安全的 (2)验证 Hashtable 是线程安全的 (3)验证 Hashtable 不支持并发 remove 操作 (4&#xff09…

Windows XP安装SVN软件

SVN全称为SubVersion,是Apache开源软件协议下,一个用于代码分布式管理的工具,其孵化的软件产品是TortoiseSVN,该软件是带图形界面的代码管理工具,类似于Git,多了一个图形界面,方便鼠标操作。  …

加密挖矿、AI发展刺激算力需求激增!去中心化算力时代已来临!

2009年1月3日,中本聪在芬兰赫尔辛基的一个小型服务器上挖出了比特币的创世区块,并获得了50BTC的出块奖励。自加密货币诞生第一天起,算力一直在行业扮演非常重要的角色。行业对算力的真实需求,也极大推动了芯片厂商的发展&#xff…

Redis系列之keys命令和scan命令性能对比

项目场景 Redis的keys *命令在生产环境是慎用的,特别是一些并发量很大的项目,原因是Redis是单线程的,keys *会引发Redis锁,占用reids CPU,如果key数量很大而且并发是比较大的情况,效率是很慢的&#xff0c…

WSL2+tensorflow-gpu 2.3.0 C++ 源码编译(Linux)

一. gcc版本 wsl2已有gcc 版本为9.4.0,但tensorflow2.3.0需对应gcc7.3.1 tensorflow与cuda cudnn python bazel gcc版本对应关系 故需下载一个低版本的gcc,但同时还想保留较高版本的gcc,那么参考文章:深度学习环境搭建(二): Ubuntu不同版本gcc,CUDA,cuDNN共存,切换解…

【每日OJ —— 145. 二叉树的后序遍历】

每日OJ —— 145. 二叉树的后序遍历 1.题目:145. 二叉树的后序遍历2.解法2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目:145. 二叉树的后序遍历 2.解法 2.1.算法讲解 1.首先如果在每次每个节点遍历的时候都去为数组开辟空间,这样的效率太…

JavaScript基础知识21——for循环

哈喽,大家好,我是雷工! 今天学习for循环,以下为学习笔记。 1、while循环和for循环有啥不同? 1.1、在实际开发中,while循环用来解决循环次数不确定时使用,当一个循环不确定会循环多少次时&#…

探索人工智能领域——每日20个名词详解【day9】

目录 前言 正文 总结 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Filotimo__✍️原创,首发于CSDN📚。 📣如需转载,请事先与我联系以…

HttpRunner4 Python版(十二)自动化测试平台 实战开发接入案例 技术实现 功能逻辑大致梳理 实行方案初稿

前言 通过之前的文档相信你对HttpRunner 4.x Python版本以后有较为深入的理解和认识了,本文主要讲解 动化测试平台 实战开发接入案例 技术实现 功能逻辑大致梳理 实行方案初稿,后续具体案例需要根据自身项目组的功能去具体实现,并在日常维护工作中逐步完善并增加其健壮性。 …

【Unity3D】Android打包报错AAPT2:xxx Linkxxx

Gradle Plugin 与Gradle版本不匹配问题 或 相关依赖库下载不完全问题; 使用镜像即可解决 也可以离线(离线过于复杂 你能找到方法那最好是离线Maven) 仓库服务 找最新可用的镜像url,替换google()和jcenter(), 可以直接使用publ…

css处理 纯英文数据不换行问题 - word-break、word-wrap

问题图 解决 添加 css 样式 word-break: break-all;补充 还有一个 word-wrap 样式,可以看下 参考 : word-wrap: normal 只在允许的断字点换行(浏览器保持默认处理)。word-wrap: break-word 在长单词或 URL 地址内部进行换行。

获得矩阵对角线元素的索引 numpy.diag_indices_from()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 获得矩阵对角线元素的索引 numpy.diag_indices_from() [太阳]选择题 请问关于以下代码的选项表述错误的是? import numpy as np a np.array([[1, 2, 3], [4, 5, 6…