Siemens-NXUG二次开发-新建与保存prt文件[Python UF][20231204]

1.python uf函数

1.1 NXOpen.UF.Part.New

# 内部和外部模式可用
"""
官方文档翻译:在当前任务中创建一个新的NX零件,并使其成为工作零件。
part_name(str)新部件的名称。此部件名称对于会话必须是唯一的。同一会话中两个部分的叶名称不能相同。
units(int)指定英制或公制单位。1=公制2=英制
"""
def NXOpen.UF.Part.New(self, part_name, units)

1.2 NXOpen.UF.Part.Save

# 内部和外部模式可用
"""
官方文档翻译:将当前工作零件及其所有修改的子零件(如果是部件)保存到磁盘。
"""
def NXOpen.UF.Part.Save(self)

1.3 NXOpen.UF.Ui.OpenListingWindow

# 内部和外部模式可用
"""
官方文档翻译:如果处于内部打开API模式,则打开并管理(显示)主题样式的信息窗口。第一次打开此窗口时,它将是空的。进一步的调用将显示先前在窗口中显示的信息。
如果处于外部打开API模式,则将列表窗口标志设置为打开。
"""
def NXOpen.UF.Ui.OpenListingWindow(self)

1.4 NXOpen.UF.Ui.IsListingWindowOpen

# 内部和外部模式可用
"""
官方文档翻译:查询“信息”窗口是打开还是关闭。如果“信息”窗口从未打开,已通过“文件-->退出”、“文件-->关闭”关闭,或已通过调用UF_UI_Close_listing_window或选择“信息”按钮关闭,则此函数返回值FALSE。
"""
def NXOpen.UF.Ui.IsListingWindowOpen(self)

1.5 NXOpen.UF.Ui.WriteListingWindow

# 内部和外部模式可用
"""
官方文档翻译:将字符串写入“信息”窗口。您应该在放置字符串后添加自己的新行。
如果在内部Open API中,文本将显示在信息窗口中。如果在外部Open API中,文本将打印为标准输出。
必须先打开“信息”窗口,然后才能对其进行写入。
一旦在外部程序中完成UF_terminate,就不能再向控制台窗口写入。必须使用系统调用对其进行重新初始化。
注意:当运行内部Open API程序(例如带有预定义入口点的dll,而不是主可执行文件)时,代码不知道启动用户功能程序的应用程序或进程。
因此,所有内部API都被视为内部NX程序,并将标准输出设置为列表窗口。任何对UF_UI_write_listing_window的调用都将尝试写入列表窗口。
因此,如果GRIP批处理程序调用使用UF_UI_write_listing_window的内部Open应用程序,它将无法找到列表窗口,并将引发错误。
如果GRIP批处理将调用内部程序,请使用UF_print_syslog将输出写入系统日志。
"""
def NXOpen.UF.Ui.WriteListingWindow(self, string)

1.6 NXOpen.UF.Ui.SaveListingWindow

# 内部和外部模式可用
"""
官方文档翻译:将“信息”窗口的内容保存到参数指定的文件中。
注意:保存的列表窗口信息限制为每行256个字符。如果一行的长度超过256个字符,它将被换行到保存文件中的多行。
"""
def NXOpen.UF.Ui.SaveListingWindow(self, filename)

1.7 NXOpen.UF.Ui.ExitListingWindow

# 内部和外部模式可用
"""
官方文档翻译:关闭并清除列表窗口。如果在内部Open API中,则窗口将关闭并清除。如果在外部Open API中,则设备设置为关闭
"""
def NXOpen.UF.Ui.ExitListingWindow(self)

2.示例代码

import NXOpen.UF as UF

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

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)

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

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

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

    # 新prt文件路径与名称
    new_prt_file_name = 'D:\\pyuf_new_prt_test.prt'
    
    # 在D盘根目录下创建一个示例.prt文件,并成为工作prt(work part)
    # 如果是在内部模式运行,则会在NX/UG界面创建一个名为pyuf_new_prt_test.prt的文件窗口
    # 如果是外部模式运行,则运行过后不会有任何文件存在,因为没有执行保存操作
    new_prt_file_tag = pyuf_new_prt(the_pyuf_session, new_prt_file_name)

    # 保存当前工作part
    pyuf_save_prt(the_pyuf_session)

    # 外部模式或内部模式运行标识
    flag = 'internal'

    # 外部模式运行,会在命令行中打印,但内部模式运行则无反应,因在UF.UI类中操作,才可在NX/UG界面显示数据
    if flag == 'external':
        print('\nnew_prt_file_tag type is:{}, new_prt_file_tag value is:{}'.format(type(new_prt_file_tag), new_prt_file_tag))
    elif flag == 'internal':
        # 由于与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('\nnew_prt_file_name is:{}'.format(new_prt_file_name))
        pyuf_ui_instance.WriteListingWindow('\nnew_prt_file_tag type is:{}'.format(type(new_prt_file_tag)))
        pyuf_ui_instance.WriteListingWindow('\nnew_prt_file_tag type is:{}'.format(new_prt_file_tag))

        # 将信息窗口的内容保存到指定文件中
        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_new_prt.py
powershell命令:&“D:\Siemens\NX 12.0\NXBIN\run_journal.exe” pyuf_new_prt.py

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

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值