阿信老师您好:
我是山东大学****专业的学生,我叫卫**,想向您请教一个关于abaqus建模时使用python findAt函数选取的问题:我在建模地层时,需要对地层进行partition并建立set,一开始只用一个点就能选取整个模型,见图1,随着partition层数的增多,想要选择整个模型需要的点越来越多,见图2,所以想向您请教一下使用python时有没有什么方法能选择整个模型而且不受partition的影响。
图1
图2
图3 地层建模
卫同学你好:
你的问题解决的方式并非只有findAt()这一种方法,实际上对于你的的意图而言findAt()这种方法其实稍显繁琐,这里阿信提供另外一个选择。
我特意构建了一个小的模型用来演示,模型如下图:
图4 演示模型
对于图四模型,如果采用findAt()方法建立set,则需要采用如下代码:
p = mdb.models['Model-1'].parts['Part-1']
c = p.cells
cells = c.findAt(((5.0, 4.166667, 1.666667), ), ((5.0, 1.666667, 3.333333), ),
((5.0, 3.333333, 3.333333), ))
p.Set(cells=cells, name='Set-coor')
很繁琐对不对,如果cell很多,那么这个语句要很长,也不利于参数化建模的实现,再看下面的代码:
p = mdb.models['Model-1'].parts['Part-1']
c = p.cells
cells = c[0:3]
p.Set(cells=cells, name='Set-index')
这个代码没按照findAt()的方式进行几何体的选取,而是对于几何体的序列进行了切片,稍作修改就可以对你的发来的问题模型所有的cell进行完整的选取并建立set了:
p = mdb.models['Model-1'].parts['Part-1']
c = p.cells
cells = c[0:]
p.Set(cells=cells, name='Set-index')
实际上ABAQUS提供了多种的几何体的选取方式,也不仅仅用于set的建立,详细的内容请参阅帮助文档。
另外,如果需要一个一个cell建立set的话,只需要进行循环切片就可以了,如果需要特定位置的cell建立set,那么还是需要用findAt(),坐标你可以自己计算。
祝好!
阿信
2020.06.11