最近更新于 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()
打开一个装配体,只有装配体文件是完全加载的,它下面的子组件默认是非完全加载的。

打开文件和关闭文件
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 秒,再关闭所有组件

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