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

最近更新于 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()

这是创建的装配体
file

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

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

目录

打开目录