NX Journal 子部品の属性をテキスト出力
2019/12/08 categories:NX Journal| tags:NX Journal|Python|
子部品の属性をテキストで出力するプログラムを作成しました。
attribute_idとかattribute_name、attribute_materialは環境に合わせて書き換えます。結果はfilenameの場所にカンマ区切りのテキストとして保存されます。
Pythonコード
import NXOpen
filename = "D:/tree.txt"
dict_attr = { "attribute_id":"ID", "attribute_name":"名前", "attribute_material":"材質" }
titles = ["階層", "抑制", "ID", "名前", "材質"]
def main():
theSession = NXOpen.Session.GetSession()
workPart = theSession.Parts.Work
theComponent = workPart.ComponentAssembly.RootComponent
rank1 = 0
# アセンブリトップの属性取得
dicts1 = [ componentToDict( theComponent, rank1 ) ]
# 子部品の属性を再帰で取得
recursion( theComponent, rank1 + 1, dicts1 )
# タイトルをテキストで出力
with open(filename, mode='a') as f:
f.write( ','.join(titles) )
# 取得結果をテキストで出力
attributes1 = [ dictToText(dict1) for dict1 in dicts1 ]
with open(filename, mode='a') as f:
f.write( '\n'.join(attributes1) )
def recursion( component1, rank2, dicts2 ):
for child1 in component1.GetChildren():
dicts2.append( componentToDict( child1, rank2 ) )
recursion( child1, rank2 + 1, dicts2 )
def componentToDict( component2, rank3 ):
attributes2 = { dict_attr[key] : component2.GetStringAttribute(key) for key in dict_attr }
attributes2["階層"] = str(rank3)
attributes2["抑制"] = str(component2.IsSuppressed)
return attributes2
def dictToText( dict2 ):
return ','.join( [ dict2[key] for key in titles ] )
if __name__ == '__main__':
main()