最近更新于 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()
比如打开了一个装配体文件,那么只有装配体文件是完全加载的,它下面的子组件是没有完全加载的,只是也是打开的。当把某个子组件设为工作部件后,这个子组件也会完全加载。
比如打开一个独立的图纸文件,这个图纸文件是完全加载的,而这个图纸关联的模型文件则不是完全加载的。

打开文件和关闭文件
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 秒后关闭文件。

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