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

最近更新于 2025-11-02 18:39

环境

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

工作部件和显示部件

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

    workPart = session.Parts.Work
    if workPart:
        lw.WriteLine(f'工作部件:{workPart.FullPath}')
    else:
        lw.WriteLine('没有工作部件')

    displayPart = session.Parts.Display
    if displayPart:
        lw.WriteLine(f'显示部件:{displayPart.FullPath}')
    else:
        lw.WriteLine('没有显示部件')

if __name__ == '__main__':
    main()

比如打开一个装配体文件后,显示部件就是装配体文件,装配体或里面的某个部件被设为工作部件,这就是工作部件。如果是单独打开了一个部件,那么显示部件和工作部件都是这个部件。

遍历已打开的文件

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'<文件路径>'

    lw.WriteLine(f'正在打开文件:{filePath}')
    status = None
    try:
        part, status = parts.OpenBaseDisplay(filePath)
    except NXOpen.NXException as e:
        for p in parts:
            if p.FullPath.lower() == filePath.lower():
                lw.WriteLine(f'文件已经打开:{p.FullPath}')
                part = p
                break
    else:
        lw.WriteLine(f'成功打开文件:{part.FullPath}')

    time.sleep(3)

    lw.WriteLine(f'准备关闭文件:{part.FullPath}')
    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 秒后关闭。如果指定的文件没有打开,则先打开,再等 3 秒后关闭文件。
file

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