枚举 ABAQUS/Viewer 中元素集的节点
Enumerate over nodes of an element sets in ABAQUS/Viewer
有什么方法可以在 ABAQUS 查看器中访问元素集的节点。
我知道如何通过
从连接中提取节点
session.openOdb(name='cube.odb').rootAssembly.instances['PART-1-1'].elementSets['CUBE-1_CUBE'].elements[el_numerator].connectivity[nod_numerator]
这里的问题是在这种情况下我们会得到重复的节点号,我们必须用另一个命令删除重复的节点。
我在想能不能直接在元素集中的节点上枚举
此致
至少有两种方法可以从元素集中获取所有节点。
第一种方式就是你所描述的。遍历元素集中的所有元素,查看每个元素的连通性并过滤掉重复的节点。在这里你还需要小心使用节点的实例名称,以防你有程序集级别集。
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
第二种方法是用所需的元素集创建一个显示组并绘制它。这将产生一个 DisplayGroupInstace
对象,它有方法 nodes
。此方法 returns 包含属于显示组的所有节点的字典。键是实例名称,值是节点标签。
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()
有什么方法可以在 ABAQUS 查看器中访问元素集的节点。 我知道如何通过
从连接中提取节点session.openOdb(name='cube.odb').rootAssembly.instances['PART-1-1'].elementSets['CUBE-1_CUBE'].elements[el_numerator].connectivity[nod_numerator]
这里的问题是在这种情况下我们会得到重复的节点号,我们必须用另一个命令删除重复的节点。 我在想能不能直接在元素集中的节点上枚举
此致
至少有两种方法可以从元素集中获取所有节点。
第一种方式就是你所描述的。遍历元素集中的所有元素,查看每个元素的连通性并过滤掉重复的节点。在这里你还需要小心使用节点的实例名称,以防你有程序集级别集。
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
第二种方法是用所需的元素集创建一个显示组并绘制它。这将产生一个 DisplayGroupInstace
对象,它有方法 nodes
。此方法 returns 包含属于显示组的所有节点的字典。键是实例名称,值是节点标签。
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()