这是 Abaqus 通过 Python 命令(getSequenceFromMask)记录几何体选择时使用的默认语法。对于没有变化的几何体来说,这种语法也许足够了,但如果几何体发生变化,这种语法就毫无用处了。
但是在Python二次开发过程中,这个命令无法批量化处理模型的信息。比如下面是一个例子,就单看黄色字体的一串‘莫名’的编号,除了Abaqus自己,设能知道这是啥,这样的检索方式在二次开发过程中是很复杂的!
a = mdb.models['new_write_data'].rootAssembly
e1 = a.instances['PART-2-1'].elements
elements1 = e1.getSequenceFromMask(mask=(
'[#db885445 #1ffa #e102ff00 #7fdf7e21 #5f000000 #e5e03ce7 #1fccc1',
' #90c633e8 #1ddc3e0e #8dd21792 #8854455c #1ffadb #2ff0000 #df7e21e1',
' #7f #e03ce75f #1fccc1e5 #c633e800 #dc3e0e90 #d217921d #54455c8d',
' #1ffadb88 #ff000000 #7e21e102 #7fdf #3ce75f00 #ccc1e5e0 #33e8001f',
' #3e0e90c6 #17921ddc #455c8dd2 #fadb8854 #1f #21e102ff #7fdf7e',
' #e75f0000 #c1e5e03c #e8001fcc #e90c633 #921ddc3e #5c8dd217 ]', ), )
leaf = dgm.LeafFromMeshElementLabels(elementSeq=elements1)
这个时候我们需要修改Abaqus默认的命令输出格式,我个人习惯按照单元的编号(Label)输出,在CAE界面命令行输入如下命令:
Get sequence from mask is not helpful for scripting.
If you want to extract meaningful commands from an interactive abaqus session to use for scripting, you should use the following commands in cae:
>>> from abaqusConstants import *
>>> session.journalOptions.setValues(replayGeometry=INDEX)
或者如下的命令:
session.journalOptions.setValues(replayGeometry=INDEX,recoverGeometry=INDEX)
i = 53
f1 = a.instances['PART-2-1'].elements
f_tmp = f1[i:i+1]
surf_tmp = a.Surface(face1Elements=f_tmp, name='Surf-5')
参考:
[1] How can identify element number(or index) in ABAQUS scripting instead of using mask?