NX Journal アセンブリ内の全コンポーネントをパラソリッドにエクスポートするジャーナル

2022/01/03 categories:NX Journal| tags:NX Journal|Python|

NXでアセンブリ内の全コンポーネントをパラソリッドにエクスポートするジャーナルを作成しました。

出力されるパラソリッド

コンポーネントごとに別々のファイルとしてパラソリッドの出力を行います。出力されるパラソリッドファイルはエクスポート元のモデルが保存されているフォルダです。

Pythonコード

from pathlib import Path
import NXOpen
import NXOpen.UF

def main():
    theSession  = NXOpen.Session.GetSession()
    theUfSession  = NXOpen.UF.UFSession.GetUFSession()
    workPart = theSession.Parts.Work
    all_components = get_components(workPart.ComponentAssembly.RootComponent)

    paths = []
    for component in all_components:

        part = component.Prototype.OwningPart
        if part.FullPath in paths:
            continue

        theSession.Parts.SetDisplay(part, False, False)
        bodies = [ obj for obj in part.Views.WorkView.AskVisibleObjects() if type(obj) is NXOpen.Body ]
        body_tags = [ body.Tag for body in bodies ]
        filename = Path(part.FullPath).with_suffix('.x_t')
        theUfSession.Ps.ExportData( body_tags, str(filename) )
        part.Undisplay()
        paths.append(part.FullPath)

    theSession.Parts.SetDisplay(workPart, False, False)

def get_components(component):
    components1 = [component]
    for child in component.GetChildren():
        if not child.IsSuppressed:
            components2 = get_components(child)
            components1.extend(components2)
    return components1

if __name__ == '__main__':
    main()

Share post

Related Posts

コメント