Siemens-NXUG二次开发-创建块(长方体)特征、圆柱特征、圆锥或圆台特征、球体特征、管道特征[Python UF][20240504]

news2025/1/12 22:48:31

Siemens-NXUG二次开发-创建块(长方体)特征、圆柱特征、圆锥或圆台特征、球体特征、管道特征[Python UF][20240504]

  • 1.python uf函数
    • 1.1 NXOpen.UF.ModlFeatures.CreateBlock1
    • 1.2 NXOpen.UF.ModlFeatures.CreateCyl1
    • 1.3 NXOpen.UF.ModlFeatures.CreateCone1
    • 1.4 NXOpen.UF.ModlFeatures.CreateSphere1
    • 1.5 NXOpen.UF.Modl.CreateTube
  • 2.示例代码
    • 2.1 pyuf_block_cylinder_cone_sphere_tube.py
  • 3.运行结果
    • 3.1 内部模式
    • 3.2 外部模式

1.python uf函数

1.1 NXOpen.UF.ModlFeatures.CreateBlock1

# 内部和外部模式可用
"""
官方文档翻译:创建块。角点指示要创建的块的原点,X、Y和Z长度控制边长度的大小,sign参数控制执行的布尔运算,此函数的输出是与块相关联的对象标识符,原点是相对于绝对CSYS的,但是,边长度的方向是相对于WCS的。
返回值:一个tag,元素类型为python的int类型,块特征的feature tag标识。
"""             
def NXOpen.UF.ModlFeatures.CreateBlock1	(self, sign, corner_pt, medge_len)
	'''
	sign(NXOpen.UF.Modl.FeatureSigns) 指示创建的同时执行某种布尔运算, UF_NULLSIGN:创建新的目标体、UF_POSITIVE:合并、target solid UF_NEGATIVE:减去、UF_UNSIGNED:相交
	corner_pt:float list-块的角点位置(角点是值距离原点最近的点)
	edge_len:str list-分别在XYZ三个轴上的尺寸长度
	'''

1.2 NXOpen.UF.ModlFeatures.CreateCyl1

# 内部和外部模式可用
官方文档翻译:创建圆柱体,原点指示圆柱体底面的中心所在的位置,方向矢量控制在其上创建圆柱体的轴,直径和高度控制圆柱体的大小,sign参数控制执行的布尔运算,此函数的输出是与圆柱体相关联的对象标识符。
返回值:一个tag,元素类型为python的int类型,圆柱特征的feature tag标识。
"""             
def NXOpen.UF.ModlFeatures.CreateCyl1(self, sign, origin, height, diam, direction)
	'''
	sign(NXOpen.UF.Modl.FeatureSigns) 指示创建的同时执行某种布尔运算, UF_NULLSIGN:创建新的目标体、UF_POSITIVE:合并、target solid UF_NEGATIVE:减去、UF_UNSIGNED:相交
	origin:float list-底面圆心位置
	height:str-圆柱高度
	diam:str-圆柱直径
	direction:float list-圆柱建模方向(朝向:从底面朝着某个方向建立高度为height的圆柱特征)
	'''

1.3 NXOpen.UF.ModlFeatures.CreateCone1

# 内部和外部模式可用
官方文档翻译:创建圆锥体或圆台体,原点指示圆锥体底面的中心所在的位置,方向矢量控制在哪个轴上创建圆锥体,底部和顶部直径(直径)以及高度控制圆锥体的大小,sign参数控制执行的布尔运算,此函数的输出是与该圆锥体相关联的对象标识符。
返回值:一个tag,元素类型为python的int类型,圆锥或圆台特征的feature tag标识。
"""             
def NXOpen.UF.ModlFeatures.CreateCyl1(self, sign, origin, height, diam, direction)
	'''
	sign(NXOpen.UF.Modl.FeatureSigns) 指示创建的同时执行某种布尔运算, UF_NULLSIGN:创建新的目标体、UF_POSITIVE:合并、target solid UF_NEGATIVE:减去、UF_UNSIGNED:相交
	origin:float list-底面圆心位置
	height:str-圆锥或圆台高度
	diam:str list-[0]圆锥底面直径(大直径)、[1]圆台上表面直径(小直径),其中小直径为'0.0'时绘制出来的是圆锥否则是圆台
	direction:float list-圆柱建模方向(朝向:从底面朝着某个方向建立高度为height的圆锥或圆台特征)
	'''

1.4 NXOpen.UF.ModlFeatures.CreateSphere1

# 内部和外部模式可用
官方文档翻译:创建球体,“原点”表示球体的中心,Diameter控制大小,sign参数控制执行的布尔运算,此函数的输出是与球体关联的特征标记。
返回值:一个tag,元素类型为python的int类型,球体特征的feature tag标识。
"""             
def NXOpen.UF.ModlFeatures.CreateSphere1(self, sign, center, diam)
	'''
	sign(NXOpen.UF.Modl.FeatureSigns) 指示创建的同时执行某种布尔运算, UF_NULLSIGN:创建新的目标体、UF_POSITIVE:合并、target solid UF_NEGATIVE:减去、UF_UNSIGNED:相交
	center:float list-球心位置
	diam:str-球直径
	'''

1.5 NXOpen.UF.Modl.CreateTube

# 内部和外部模式可用
官方文档翻译:根据指定的内径和外径创建卡套管或电缆,如果内径设置为零,则会产生电缆(实心体无空心部分),此函数的输出是一个特征对象标识符列表,限制变量的类型为字符,以允许表达式使用。
返回值:一个tag,元素类型为python的int类型,管道特征的feature tag标识。
def NXOpen.UF.Modl.CreateTube(self, path_list, limit, sign)
	'''
	path_list-int list:构成管道中心线的边或曲线类型tag列表
	limit:str lis-[0]管道外直、 [1]管道内直径,其中当[1]为‘0.0’时创建的就是实心圆柱体管道
	sign(NXOpen.UF.Modl.FeatureSigns) 指示创建的同时执行某种布尔运算, UF_NULLSIGN:创建新的目标体、UF_POSITIVE:合并、target solid UF_NEGATIVE:减去、UF_UNSIGNED:相交
	'''

2.示例代码

2.1 pyuf_block_cylinder_cone_sphere_tube.py

import NXOpen
import NXOpen.UF as UF


def get_uf_session():
    # 获取当前python UF会话
    return UF.UFSession.GetUFSession()

def get_py_session():
    # 获取当前python会话
    return NXOpen.Session.GetSession()

def pyuf_new_prt(the_pyuf_session, new_prt_file_name, units = 1):
    """
    功能:创建一个指定文件路径和文件名的.prt文件,默认单位制是米(m)
    """

    # 由于要对Part进行操作,因此需要获取Part实例对象
    pyuf_part_instance = the_pyuf_session.Part

    # New方法位于Part类对象中
    new_prt_file_tag = pyuf_part_instance.New(new_prt_file_name, units)
    return new_prt_file_tag

def pyuf_save_prt(the_pyuf_session):
    """
    功能:保存当前工作part
    """
    # 由于要对Part进行操作,因此需要获取Part实例对象
    pyuf_part_instance = the_pyuf_session.Part

    # Save方法位于Part类对象中
    return pyuf_part_instance.Save()

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 get_solid_body_face_tags(the_pyuf_session, solid_body_tag):
    """
    功能:获取一个solidbody实体中的所有面的tag标识
    """
    uf_modling_instance = the_pyuf_session.Modeling

    face_tag_list = uf_modling_instance.AskBodyFaces(solid_body_tag)
    return face_tag_list

def get_solid_body_face_edge_tags(the_pyuf_session, solid_body_face_tag):
    """
    功能:获取一个实体面中的所有实体边的tag标识
    """
    uf_modling_instance = the_pyuf_session.Modeling

    edge_tag_list = uf_modling_instance.AskFaceEdges(solid_body_face_tag)
    return edge_tag_list


def createBlock(the_pyuf_session, corner_point, size, signs = 0):
	"""
	python uf创建块(长方体)

	corner_point-float list[x,y,z]:长方体角点坐标,size-str list[x_size, y_size,z_size]:块长宽高尺寸

	返回值是一个整数:块的feature tag标识
	
	signs意义:
	UF_NULLSIGN = 0
	create new target solid

	UF_POSITIVE = 1
	add to target solid

	UF_NEGATIVE = 2
	subtract from target solid

	UF_UNSIGNED = 3
	intersect with target solid

	UF_NO_BOOLEAN = 4
	feature has not been booleaned

	UF_TOP_TARGET = 5
	feature is the "top target" feature, it has no
	"parent" features but does have tool features

	UF_UNITE = 6
	feature has been united to target solid

	UF_SUBTRACT = 7
	feature has been subtracted from target solid

	UF_INTERSECT = 8
	feature has been intersected with target solid

	UF_DEFORM_POSITIVE = 9
	feature used to deform the positive side
	of the target sheet

	UF_DEFORM_NEGATIVE = 10
	feature used to deform the negative side
	of the target sheet
	"""

	uf_modlFeatures_instance = the_pyuf_session.ModlFeatures
	modl_feature_signs = UF.Modl.FeatureSigns.ValueOf(signs)
	return uf_modlFeatures_instance.CreateBlock1(modl_feature_signs, corner_point, size)

def createCylinder(the_pyuf_session, origin, height, diam, direction, signs = 0):
	"""
	python uf创建圆柱

	origin-float list[x,y,z]:圆柱底端面中心点坐标,height-str:圆柱高度,diam-str:圆柱直径,
	direction-float list[x,y,z]:圆柱建模方向向量(从中心点开始朝某个方向建模)

	返回值一个整数:圆柱的feature tag标识
	"""

	uf_modlFeatures_instance = the_pyuf_session.ModlFeatures
	modl_feature_signs = UF.Modl.FeatureSigns.ValueOf(signs)
	return uf_modlFeatures_instance.CreateCyl1(modl_feature_signs, origin, height, diam, direction)


def createCone(the_pyuf_session, origin, height, diam, direction, signs = 0):
	"""
	[python uf创建圆锥或圆锥台

	origin-float list[x,y,z]:圆锥底端面中心点坐标,height-str:圆锥高度,
	diam-str list[大直径,小直径(圆锥-0.0,圆锥台-大于0.0)]:圆锥直径,direction-float list[x,y,z]:圆锥建模方向向量(从中心点开始朝某个方向建模)

	返回值一个整数:圆锥或圆锥台的feature tag标识
	"""
	uf_modlFeatures_instance = the_pyuf_session.ModlFeatures
	modl_feature_signs = UF.Modl.FeatureSigns.ValueOf(signs)
	return uf_modlFeatures_instance.CreateCone1(modl_feature_signs, origin, height, diam, direction)

def createSphere(the_pyuf_session, origin, diam, signs = 0):
	"""
	python uf创建球

	origin-float list[x,y,z]:球中心点坐标,diam-str:球直径

	返回值一个整数:球的feature tag标识
	"""
	uf_modlFeatures_instance = the_pyuf_session.ModlFeatures
	modl_feature_signs = UF.Modl.FeatureSigns.ValueOf(signs)
	return uf_modlFeatures_instance.CreateSphere1(modl_feature_signs, origin, diam)

def createTube(the_pyuf_session, path_list, diam, signs = 0):
	"""
	创建管体
	center  (list of float) Center of sphere to be created.
	diam    (str) Diameter of sphere to be created.
	"""
	uf_modl_instance = the_pyuf_session.Modl
	modl_feature_signs = UF.Modl.FeatureSigns.ValueOf(signs)
	return uf_modl_instance.CreateTube(path_list, diam, modl_feature_signs)

def getFeatureBody(the_pyuf_session, feature_tag):
	"""
	查询特征所属body的tag
	"""
	uf_modeling_instance = the_pyuf_session.Modeling
	return uf_modeling_instance.AskFeatBody(feature_tag)


if __name__ == '__main__':
    # 获取uf session
    the_pyuf_session = get_uf_session()

    # 获取python session
    the_py_session = get_py_session()

    # 打开prt文件路径与名称
    new_prt_file_name = 'D:\\pyuf_block_cylinder_cone_sphere_tube.prt'
    
    new_prt_file_tag = pyuf_new_prt(the_pyuf_session, new_prt_file_name)

    # 外部模式运行,会在命令行中打印,但内部模式运行则无反应,因在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()
        
    # 创建长方体
    block_feature_tag = createBlock(the_pyuf_session, [100.0, 100.0, 100.0], ['200.0', '400.0', '50.0'])
    
    # 创建圆柱体(朝X轴正向建模)
    createCylinder(the_pyuf_session, [50.0, 50.0, 50.0], '55.0', '100.0', [1.0, 0.0, 0.0])
    
    # 创建圆锥(朝Z轴负向建模)(带布尔减去,会自动将与之接触的实体中减去该圆锥体)
    createCone(the_pyuf_session, [50.0, 50.0, 50.0], '120.0', ['100.0', '0.0'], [0.0, 0.0, -1.0], 2)
    
    # 创建圆台(朝Z轴正向建模)
    createCone(the_pyuf_session, [150.0, 50.0, 50.0], '120.0', ['100.0', '55.0'], [0.0, 0.0, 1.0])
    
    # 创建球体
    createSphere(the_pyuf_session, [200.0, 300.0, 125.0], '100.0')
    
    # 从某个特征上查询该特征所属的实体
    block_body_tag = getFeatureBody(the_pyuf_session, block_feature_tag)
    block_body_face_tag_list = get_solid_body_face_tags(the_pyuf_session, block_body_tag)
    temp_face_edge_tag_list = get_solid_body_face_edge_tags(the_pyuf_session, block_body_face_tag_list[0])
    
    # 创建管道(控制外壁直径和内孔壁直径)
    createTube(the_pyuf_session, [temp_face_edge_tag_list[0]], ['10.0', '5.0'])
    
    # 创建管道(控制外壁直径和内孔壁直径)
    createTube(the_pyuf_session, [temp_face_edge_tag_list[1]], ['20.0', '0.0'])
    
    # 向信息窗口写入内容
    pyuf_ui_instance.WriteListingWindow('\nnew_prt_file_tag is:' + str(new_prt_file_tag))
    # 将信息窗口的内容保存到指定文件中
    pyuf_ui_instance.SaveListingWindow('D:\\pyuf_listingwindow_content_test.txt')

    # 关闭信息窗口
    #pyuf_ui_instance.ExitListingWindow()
    
    pyuf_save_prt(the_pyuf_session)
    
    pyuf_close_prt(the_pyuf_session, new_prt_file_tag, 0, 1)

3.运行结果

3.1 内部模式

选中要运行的.py文件后,点击“管道通路”即可。
在这里插入图片描述

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

3.2 外部模式

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

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

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

同上

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

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

相关文章

缓存雪崩、击穿、击穿

缓存雪崩: 就是大量数据在同一时间过期或者redis宕机时,这时候有大量的用户请求无法在redis中进行处理,而去直接访问数据库,从而导致数据库压力剧增,甚至有可能导致数据库宕机,从而引发的一些列连锁反应&a…

ORACLE 19C RAC DIAG进程消耗大量内存的分析

近期一个ORACLE 19C的RAC环境,多次出现数据库实例的后台进程DIAG消耗很多内存(达到20G),节点1、节点2都出现过次问题。 问题分析:通过对DIAG进程TRACE分析,结合在ORACLE官方后台进行问题、BUG查询匹配&…

什么样的行业适合做私域?

私域营销适用于各种行业,但以下几个行业尤其适合进行私域营销: 1、零售行业:私域营销可以帮助零售企业建立与顾客的直接联系,提高顾客忠诚度和复购率。通过私域营销,零售企业可以进行个性化推荐、定制化服务&#xff…

VALSE 2024 Workshop报告分享┆面向实际场景体验的多模态大模型DeepSeek VL

2024年视觉与学习青年学者研讨会(VALSE 2024)于5月5日到7日在重庆悦来国际会议中心举行。本公众号将全方位地对会议的热点进行报道,方便广大读者跟踪和了解人工智能的前沿理论和技术。欢迎广大读者对文章进行关注、阅读和转发。文章是对报告人…

视频改字祝福/豪车装X系统源码/小程序uniapp前端源码

uniapp视频改字祝福小程序源码,全开源。创意无限!AI视频改字祝福,豪车装X系统源码开源,打造个性化祝福视频不再难! 想要为你的朋友或家人送上一份特别的祝福,让他们感受到你的真诚与关怀吗?现在…

通过Nginx转发admin连接licloud-api-develop接口

1.需求配置 在本地环境部署一套开发环境,方便开发金磊调试功能 所使用到的服务有nginx,mysql,rabbitmq,redis,docker 服务安装网上都有教程这里就不一一列举出来了,服务都配置好之后 开始组建开发环境 2…

Java进阶05 时间API异常

Java进阶05 一、递归算法 方法直接(自己调自己)或间接(方法调其他方法,其他方法又回调自己)调用自身 1、递归思想 把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。需要注意,设计递…

商务分析方法与工具(五):Python的趣味快捷-文件和文件夹操作自动化

Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊! 喜欢我的博客的话,记得…

考情分析 | 2025年西北工业大学计算机考研考情分析!

西北工业简称西工大(英文缩写NPU),大学坐落于古都西安,是我国唯一一所以同时发展航空、航天、航海工程教育和科学研究为特色,以工理为主,管、文、经、法协调发展的研究型、多科性和开放式的科学技术大学。十…

如果出现一个工具,可以让前端开发彻底不用再手写UI,这个工具意义大吗?干货!

求这样的一个工具,可以让后端开发、嵌入式开发、产品经理、UI设计师都能用,注意,不是在一个简单的静态页生成,也不是类似飞冰那种 generator ,而是真正让设计师和开发者在各自的那侧达成自治,可以做到吗&am…

电-热耦合市场联合出清!考虑均衡约束的综合能源系统电-热分配方法程序代码!

前言 随着现代城市面临环境问题,原来燃煤的水和空间供暖设备已逐渐被电锅炉和热泵等电气设备所取代。此外,集中生产热能并通过管网分配热能的区域供暖系统,由于其更高的效率,在冬季漫长寒冷的国家和地区越来越受欢迎。供暖设备的…

牛客题-链表内区间反转

链表内区间反转 这是代码 typedef struct ListNode listnode; struct ListNode* reverseBetween(struct ListNode* head, int m, int n ) {if (head NULL) {return NULL;}listnode* findhead head;listnode* findtail head;listnode* prev NULL;int count1 m;int count2…

CTF-reverse二维四向迷宫路径求解

二维四向迷宫是一个re中的常考点,说不上难,但也不简单,本篇记录了常规的二维四向迷宫解题套路以及帮助快速解题的脚本 可能你看我的教程会觉得十分繁琐,但实际只要你用了一次熟练之后,基本都是拿到迷宫就一题一分钟解决…

深入学习Linux内核页框回收

目录 算法 1.选择目标页 2.PFRA设计 3.反向映射 3.1.匿名页的反向映射 3.2.try_to_unmap_anon()函数 3.3.try_to_unmap_one()函数 映射页的反向映射 优先搜索树 try_to_unmap_file()函数 PFRA实现 最近最少使用(LRU)链表 在LRU链表之间移动页 mark_page_accessed(…

【优选算法】——双指针——Leetcode——283.移动零

目录 ​编辑 1.题目 2. 解法(快排的思想:数组划分区间-数组分两块): 1.算法思路: 2.算法流程: 3.代码实现 1.C语言 2.C 1.题目 283. 移动零 提示 给定一个数组 nums,编写一个函数将所有…

每日一题 非对称之美

题目描述 I-非对称之美_牛客小白月赛31 (nowcoder.com) 题目解析 贪心算法的应用 考虑以下情况:当字符串中的字符全部相同时,即使删除任意一个字符,也无法使其成为一个回文串。这种情况下,我们无法直接套用上述的逐步比较方法。…

【Android】Room数据库的简单使用方法

Room数据库的使用方法 目录 1、添加Room数据库的依赖2、Entity——定义实体类 2.1 定义主键——PrimaryKey2.2 字段注解——ColumnInfo 3、Dao——定义数据访问对象4、Database——数据库 4.1 通过回调观察数据库是否创建成功 5、使用时注意点6、编写异步 DAO 查询 6.1 写异步…

LabVIEW波浪发电平台浮筒取能效率数据采集系统

LabVIEW波浪发电平台浮筒取能效率数据采集系统 随着化石能源的逐渐减少以及能源价格的上升,寻找可替代的、可再生的、清洁的能源成为了世界各国的共识。波浪能作为一种重要的海洋能源,因其巨大的潜力和清洁性,近年来受到了广泛关注。开发了一…

数据结构学习——二叉树

1. 树概念及结构 1.1 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点&…

基于Springboot的校园健康驿站管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园健康驿站管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…