最近更新于 2025-11-08 20:04
环境
- Windows 11 25H2
- NX 2506
- 内置 Python 3.12.8
实现
import NXOpen
from NXOpen.Assemblies import Component
def processComponentRecursive(component: Component, lw: NXOpen.ListingWindow, prefix: str = ''):
"""递归处理组件及其子组件
Args:
component (Component): 当前处理的组件
lw (NXOpen.ListingWindow): 列表窗口,用于输出信息
prefix (str, optional): 前缀,用于打印组件的层级关系.
"""
try:
part = component.Prototype # 获取组件的原始零件
if part is not None:
# 这里放处理每个组件的逻辑
# 示例就打印组件名称
lw.WriteLine(f'{prefix} {part.Name}')
except Exception as e:
lw.WriteLine(f'处理组件 {component.Name} 时发生错误: {e}')
for child in component.GetChildren():
processComponentRecursive(child, lw, '-' + prefix)
def main():
session = NXOpen.Session.GetSession()
lw = session.ListingWindow
lw.Open()
# 获取当前显示的零件(在装配体中就是最顶层的装配体零件)
displayPart = session.Parts.Display
if displayPart is None:
lw.WriteLine('没有打开的零件')
return
# 获取根组件
rootComponent = displayPart.ComponentAssembly.RootComponent
if rootComponent is None:
lw.WriteLine(f'当前零件 {rootComponent.Name} 不是装配体')
else:
processComponentRecursive(rootComponent, lw)
if __name__ == '__main__':
main()
这是创建的装配体

执行代码会打印出组件,每下一层组件增加一个前缀“-”,便于体现层级关系。如果要执行其它操作,可以把打印名称换成需要的实现

Siemens NX(UG)Python 开发 – 遍历装配体组件
