在Abaqus中,有没有办法将一个几何体集按其面分成多个集?

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

我正在创建一个插件或脚本,用户可以在其中创建一组多个面孔,然后插件/脚本将为每个面孔创建一组。理想情况下,用户将命名初始集(例如 Set-1),然后插件将使用原始名称和后缀命名每个创建的集(Set-1-1、Set-1-2、...、Set -1-n).

集合将在壳上创建,所有面都将是矩形。这些集可以在零件或装配级别定义。

我可能有数千套要制作。所以想想出一些办法来简化流程。但是,我在使用 python 方面没有那么丰富的经验。

我查看了 .rpy 文件,似乎当您创建一组多个面时,Abaqus 知道选择了多少个面,如下所示。所以我想知道你是否可以使用它? FromMask 似乎是一个 GUI 工具,我读过它效率不是很高。但我会在 GUI 中选择初始设置,所以这似乎是不可避免的。有没有办法将面孔作为列表取出并循环通过列表创建单独的集合?

p = mdb.models['Model-1'].parts['Part-1']
f = p.faces
faces = f.getSequenceFromMask(mask=('[#7f ]', ), )
p.Set(faces=faces, name='Set-1')

目前使用 abq2023,所以最好不要使用 python 3。 任何帮助将不胜感激。谢谢你。

python abaqus
1个回答
0
投票

如果我理解正确,用户将使用面孔创建一组。对于该集合中的每个面,您需要创建一个单独的集合。

是的。有可能的。可以从集合对象访问集合中的面,如下所示:

# Face set name
faceSetName = 'Set-1'
# Access set object
faceSet_obj = mdb.models['Model-1'].parts['Part-1'].sets[faceSetName]
# Access the faces belong to set object
faceSet_faces = faceSet_obj.faces

现在,您只需迭代每个面并创建一个集合即可。

for i in range(len(faceSet_faces)):
    # Get a single face in face array
    face_obj = faceSet_faces[i:i+1]
    # Create a set
    setName = faceSetName + '-%d' % (i+1)
    mdb.models['Model-1'].parts['Part-1'].Set(faces=face_obj, name=setName)
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.