Siemens NX(UG)Python 开发 – 打开文件

最近更新于 2025-11-08 22:47

环境

  • Windows 11 25H2
  • NX 2506
  • 内置 Python 3.12.8

遍历已打开的文件

import NXOpen
def main():
    session = NXOpen.Session.GetSession()
    lw = session.ListingWindow
    lw.Open()

    if session.Parts is None:
        lw.WriteLine('没有打开的文件')
        return

    for part in session.Parts:
        if part.IsFullyLoaded:
            lw.WriteLine(f'☆完全加载的文件:{part.FullPath}')
        else:
            lw.WriteLine(f'✹未完全加载的文件:{part.FullPath}')

if __name__ == '__main__':
    main()

打开一个装配体,只有装配体文件是完全加载的,它下面的子组件默认是非完全加载的。
file

打开文件和关闭文件

import NXOpen
import time
def main():
    session = NXOpen.Session.GetSession()
    parts = session.Parts
    lw = session.ListingWindow
    lw.Open()

    filePath = r'C:\work\基础资料\NX文件\测试装配体\0001 装配体.prt'
    lw.WriteLine(f'正在打开文件:{filePath}')
    status = None
    try:
        part, status = parts.OpenBaseDisplay(filePath)
        for part in parts:
            if part.IsFullyLoaded:
                lw.WriteLine(f'{part.Name} 已完全加载')
            else:
                lw.WriteLine(f'{part.Name} 未完全加载,尝试完全加载')
                part.LoadFully()
                if part.IsFullyLoaded:
                    lw.WriteLine(f'{part.Name} 已完全加载')
                else:
                    lw.WriteLine(f'{part.Name} 无法完全加载')
    except NXOpen.NXException as e:
        lw.WriteLine(f'打开文件失败:{e}')
        return

    time.sleep(3)

    lw.WriteLine(f'准备关闭文件:{part.FullPath}')
    # CloseModified 直接关闭已修改的零件,不提示、不保存
    # UseResponses 按默认响应策略
    # DontCloseModified 不关闭发生修改的零件
    part.Close(
        NXOpen.BasePart.CloseWholeTree.TrueValue,
        NXOpen.BasePart.CloseModified.CloseModified,
        None
    )
    if status is not None:
        status.Dispose()
    lw.WriteLine("文件已关闭")
if __name__ == "__main__":
    main()

可以看到,我指定打开一个装配体文件,只有装配体文件默认完全加载的,子组件都没有完全加载,检查到没有完全加载的组件,就尝试完全加载。
最后都加载了,等待 3 秒,再关闭所有组件
file

Siemens NX(UG)Python 开发 – 打开文件
Scroll to top
打开目录