要素セットからすべてのノードを取得する方法は少なくとも2つあります。
まず、説明したとおりです。要素セット内のすべての要素を繰り返し、各要素の接続性を見て、重複ノードを除外します。ここでは、アセンブリレベルのセットがある場合にノードのインスタンス名も使用するように注意する必要があります。
odb = session.openOdb(name='cube.odb')
elset = odb.rootAssembly.instances['PART-1-1'].elementSets['CUBE-1_CUBE']
elset_nodes = set()
for element in elset.elements:
elset_nodes.update(element.connectivity)
# At this point elset_nodes contains all element set nodes
第2の方法は、希望の要素セットから表示グループを作成してプロットすることです。これによりDisplayGroupInstace
オブジェクトが生成され、メソッドnodes
が生成されます。このメソッドは、表示グループの一部であるすべてのノードを含む辞書を返します。キーはインスタンス名であり、値はノードラベルです。
from abaqus import session
import displayGroupOdbToolset as dgo
leaf = dgo.LeafFromElementSets(elementSets='PART-1-1.CUBE-1_CUBE')
vp = session.viewports[session.currentViewportName]
vp.odbDisplay.displayGroup.replace(leaf=leaf)
dg = vp.odbDisplay.displayGroup
dg = session.DisplayGroup(name='CUBE-1_CUBE', objectToCopy=dg)
vp.odbDisplay.setValues(visibleDisplayGroups=(dg,))
cube_dg = vp.odbDisplay.displayGroupInstances['CUBE-1_CUBE']
elset_nodes = cube_dg.nodes()
あなたがチェックしていない場合、要素セットがabacus GUIのジオメトリセットから作成された場合、同じ名前の対応するノードセットが存在します。 – agentp