Abaqus表面getSequenceFromMas

2024-04-20 07:15:16 发布

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

我在阿巴库斯写剧本,在那里我用切圆(像奶酪一样)压碎圆和正方形。我需要把零件之间的接触,所以我需要表面。

宏管理器生成:

s1 = a.instances['kolo-1'].edges
side1Edges1 = s1.getSequenceFromMask(mask=('[#1 ]', ), )
a.Surface(side1Edges=side1Edges1 , name='kolkoSurf')

问题是:getSequenceFromMask(mask=('[#1]',),) 怎么得到这个1?我可以换吗?我很少找,有些想法可以用:“找到”,“面对”,“咕咕”但我无法做到。 请帮帮我。我梦想得到一个简单的例子如何提取这个表面使用X,Y或无论如何。

比尔, 旺曼


Tags: instancesname管理器masksurface表面剧本edges
2条回答

我想你是在创建一个基于边的曲面。有很多方法可以做到,最简单的方法是

为要为其创建曲面的边创建基于程序集的集(“setName”)。

instance=mdb.rootAssembly.instances["InstanceName"]
set_for_surface=instance.sets["setName"].edges
assembly.Surface(side1Edges=set_for_surface, name="surf_name")

查看findAt()或通过边界框“getBoundingBox()”选择区域。请看这个SO answer,它有点类似。

编辑:如果集合是基于程序集的集合,则直接从程序集而不是实例访问它。然后,使用相同的步骤。

mdb.rootAssembly.sets['Set_name'].edges

您使用带有默认日志选项的宏管理器录制了上述日志。因此,变量side1Edges1是在日志中使用getSequenceFromMask()-方法定义的。此方法是通过在录制过程中单击GUI来录制所执行的选择。这意味着您单击GUI来选择一个边,结果是getSequenceFromMask()-作用于s1的方法,它是实例'kolo-1'的所有边的集合。

根据Abaqus脚本参考指南6.14-7.2.2,当涉及大量对象时,getSequenceFromMask()方法是高效的。但是,如果您尝试自定义日志文件以选择要使用的其他几何体元素,则这并不是很有帮助。有两种解决方案:

  1. 解决方案:粘贴命令

    session.journalOptions.setValues(replayGeometry=COORDINATE, recoverGeometry=COORDINATE)
    

    进入Abaqus CAE底部的Abaqus命令行,将JournalOptions对象的成员replayGeometryrecoverGeometry设置为COORDINATE,并重复日志的录制。 在大多数情况下,您可以在发出上述命令后通过执行旧日志来再次省略单击GUI。 然后可以保存项目,最好使用新名称,并使用新创建的日志。 在新日志中,命令getSequenceFromMask(mask=('[#1 ]', ), )将替换为基于坐标的选择,以表示记录的GUI单击。 然后,可以修改坐标,以自定义日志文件并选择要在后续建模步骤中使用的边。

  2. 解决方案:使用python脚本前面几行从头定义的变量定义side1Edges1。我建议使用日志文件作为蓝图,其中所有单击事件都必须使用您自己定义的已知变量替换。例如,使用您自己的逻辑定义一个点列表myPoints = [(0,0), (0,1) ],然后使用这些点作为方法的参数,例如myLine = mySketch.Line(point1=myPoints[0], point2=myPoints[1]),构造新的变量,例如myLine,以便在后续建模步骤中使用。

为了基本了解使用Abaqus Python API的建模工作流,我可以推荐 普瑞,G.M.,2011年。用于Abaqus的Python脚本:通过示例学习,第1版,在大多数大学中也很难使用。

查看Abaqus基准测试指南可能会有所帮助,因为一些较新的基准测试包含Python脚本(例如断裂力学)。

相关问题 更多 >