2017-06-27 42 views
1

ABAQUSビューアで要素セットのノードにアクセスする方法はありますか?私はここにABAQUS/Viewerの要素セットのノードを列挙する

session.openOdb(name='cube.odb').rootAssembly.instances['PART-1-1'].elementSets['CUBE-1_CUBE'].elements[el_numerator].connectivity[nod_numerator] 

により、接続から問題をノードを抽出する方法を知っている は、この場合には、我々は重複ノード番号を取得し、我々は他のコマンドと重複したノードを削除する必要があります。 要素セットのノードを直接列挙できるかどうかは疑問でした。

ありがとうございます

+0

あなたがチェックしていない場合、要素セットがabacus GUIのジオメトリセットから作成された場合、同じ名前の対応するノードセットが存在します。 – agentp

答えて

4

要素セットからすべてのノードを取得する方法は少なくとも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() 
+1

さらにコンパクトになります: 'elset_nodes = set([エルセットのel.connectivityのノードのノード])' – agentp

+0

@agentpより良いアプローチです。 – hgazibara

+0

@hgazibaraありがとう、私は最初の方法を使用して終了しました。 – Amirsmol

関連する問題