从 Abaqus 的 Python 脚本中的元素列表定义集合

问题描述 投票:0回答:1

我有一个名为 E3 的元组,其中包含元素编号,例如:

(array([ 136, 2593, 3061, 4348], dtype=int64),)

现在,我想定义这些元素的集合。

到目前为止,我还没有成功地做过比这更“系统”的事情

mdb.models['Model-1'].rootAssembly.Set(elements=
mdb.models['Model-1'].rootAssembly.instances['Part-1-1'].elements[E3[0][0]:E3[0][0]+1]+\
mdb.models['Model-1'].rootAssembly.instances['Part-1-1'].elements[E3[0][1]:E3[0][1]+1]+\
mdb.models['Model-1'].rootAssembly.instances['Part-1-1'].elements[E3[0][2]:E3[0][2]+1]+\
mdb.models['Model-1'].rootAssembly.instances['Part-1-1'].elements[E3[0][3]:E3[0][3]+1]
, name='Set-0')

不幸的是,E3 是可变的,并且通常具有任意且大量的元素,因此这根本不实用。

我喜欢这样的东西:

mdb.models['Model-1'].rootAssembly.Set(elements=
mdb.models['Model-1'].rootAssembly.instances['Part-1-1'].elements[E3], 
name='Set-0')

但是

"TypeError: Invalid index type tuple".

或者类似这样的:

mdb.models['Model-1'].rootAssembly.Set(elements=
mdb.models['Model-1'].rootAssembly.instances['Part-1- 
1'].elements[E3[0]], name='Set-0')

但是

"TypeError: only integer scalar arrays can be converted to a scalar index".

您知道从具有元素编号的元组创建集合的系统方法吗?

python element abaqus
1个回答
0
投票

是的,有!

您可以使用

SetFromElementLabels
方法。该方法需要 2 个参数,即。
name
elementLabels

零件级元素集
如果您想在零件级别创建元素集,则可以使用:

mdb.models[name].parts[name].SetFromElementLabels

# For example:
mdb.models['Model-1'].parts['Part-1'].SetFromElementLabels(
            name='part_nset', elementLabels=(136, 2593, 3061, 4348)
            )
# 136, 2593, 3061, 4348 --> node number at the part level

装配级元素集
如果您想在程序集级别创建元素集(这是您的情况),那么您可以使用:

mdb.models[name].rootAssembly.SetFromElementLabels

# For example:
mdb.models['Model-1'].rootAssembly.SetFromElementLabels(
            name='instance_nset',
            elementLabels=( ('Part-1-1', (136, 2593, 3061, 4348)), )
            )
# ('Part-1-1', (136, 2593, 3061, 4348))
# (<instance name>, <tuple of element number in ascending order>)

# You can add element numbers from any number of instances
# --> elementLabels=(('Instance-1', (2,3,5,7)), ('Instance-2', (1,2,3)))
© www.soinside.com 2019 - 2024. All rights reserved.