我正在尝试编写一个Abaqus/Python脚本,该脚本将选择“属于”某个面的所有元素。一、 e.取与网格立方体的一个面有连接的所有元件(稍后我将计算作用在该面上的力-位移或应力-应变曲线的总力)。
如果我使用GUI,我会得到:
mdb.models['Model-1'].rootAssembly.Set(elements=
mdb.models['Model-1'].rootAssembly.instances['Part-1-1'].elements.getSequenceFromMask(
mask=('[#0:5 #fff80000 #ff #f #ffe00000 #f000000f #3f',
' #0:6 #fffe #c0003f00 #3 #3fff8 #ffc00 ]', ), ), name='Set-1')
但是,getSequenceFromMask
在一般情况下不起作用。我试着用findat
但没有成功。
有办法吗?
几天前我自己也有这个问题。也许我错了,但据我所知,没有办法直接选择特定的元素。可以使用“边界框”或“边界球体”选择它们,也可以通过零件/实例面和单元获取它们。如果需要以更具体的方式选择元素,则可以通过它们所连接的节点来获取它们。可以对这些节点使用“findAt”命令,并通过“get elements()”命令获取元素。
我就是这样解决的,效果很好。如果有其他的解决方法,我会很高兴听到他们,因为这有时真的是令人沮丧。
干杯
在零件或部件上定义面集:
其中
(1,0,0)
是面上任意位置的坐标。(但不要使用边/角上的点)然后,在网格划分之后,可以访问附着到该面上的元素,例如:
注意,如果您想在运行分析之后在odb上获取这些元素,则会有一点不同:
请注意,集合名称在odb上是upcase。。
显然,您使用宏是为了获取曲面的位置,以便使用Python拾取集合。问题是:默认情况下,宏工具使用getSequenceFromMask(),不太方便用户。。。
幸运的是,这个默认选项可以更改!只需要运行以下代码行:
session.journalOptions.setValues(replayGeometry=COORDINATE,recoverGeometry=COORDINATE)
现在,当您使用宏管理器录制宏时,将得到所需的findAt()。
额外提示:
您可以在自定义的v6.env文件中的onceastartup()函数中包含这段代码。每次你打开CAE它都会运行。
C:\程序文件\Dassault Systemes\SimulationServices\V6R2018x\win_b64\SMA\site\custom_v6.env
相关问题 更多 >
编程相关推荐