Abaqus:在su上选择元素的脚本

2024-10-03 02:35:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个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但没有成功。

有办法吗?


Tags: 脚本网格元素modelmodelsguielements曲线
3条回答

几天前我自己也有这个问题。也许我错了,但据我所知,没有办法直接选择特定的元素。可以使用“边界框”或“边界球体”选择它们,也可以通过零件/实例面和单元获取它们。如果需要以更具体的方式选择元素,则可以通过它们所连接的节点来获取它们。可以对这些节点使用“findAt”命令,并通过“get elements()”命令获取元素。

我就是这样解决的,效果很好。如果有其他的解决方法,我会很高兴听到他们,因为这有时真的是令人沮丧。

干杯

在零件或部件上定义面集:

  part.Set('facename',faces=part.faces.findAt(((1,0,0),),))

其中(1,0,0)是面上任意位置的坐标。(但不要使用边/角上的点)

然后,在网格划分之后,可以访问附着到该面上的元素,例如:

  instance.sets['facename'].elements

注意,如果您想在运行分析之后在odb上获取这些元素,则会有一点不同:

  instance.elementSets['FACENAME'].elements

请注意,集合名称在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

相关问题 更多 >