通过 python 脚本在 Abaqus 中获取装配量时出现问题

Problem getting volume of assembly in Abaqus by python script

我需要在分析之前通过 python 脚本在 Abaqus 中找到 shell 模型的体积,因此在 .odb 文件可用之前。

我知道这在 CAE 中可以通过具有质量属性的查询工具实现。这也应该可以通过使用 getMassProperties()['volume'](例如 mdb.models['Model'].rootAssembly.getMassProperties()['volume'])编写脚本来实现。然而,这就是问题所在,因为它无法正常工作。

如果我只在命令 window 中使用 getMassProperties(),我会得到以下结果:

>>> mdb.models['MainModel'].rootAssembly.getMassProperties()
{'volume': None, 'massFromMassPerUnitSurfaceArea': None, 'area': 11975.8517821263, 'volumeCentroid': (None, None, None), 'warnings': (ZERO_DENSITY, MISSING_SECTION_DEFINITION), 'momentOfInertia': (None, None, None, None, None, None), 'centerOfMass': (None, None, None), 'mass': None, 'areaCentroid': (-1.16289328510922e-16, -2.06018531309507, 37.4999999999999)}

因此没有找到卷。

但是,如果我首先使用 CAE 中的查询工具和 Mass 属性,并找到 0.00286 的体积(见图),则上述脚本有效(该值以某种方式存储)。

使用查询工具后,结果为

>>> mdb.models['MainModel'].rootAssembly.getMassProperties()
{'volume': 0.063598067897832, 'massFromMassPerUnitSurfaceArea': None, 'area': 11975.8517821263, 'volumeCentroid': (0.0, -2.01943926098974, 37.5), 'warnings': (MISSING_DENSITY, ZERO_DENSITY, MISSING_SECTION_DEFINITION), 'momentOfInertia': (None, None, None, None, None, None), 'centerOfMass': (None, None, None), 'mass': None, 'areaCentroid': (1.02383557403908e-16, -2.06018531309506, 37.4999999999999)}

因此,现在该卷可用了!!!

问题是,getMassProperties() 仅在 CAE 中的用户交互后才起作用,因此它不适合在没有用户交互的情况下用于 python 脚本。

如何解决以上问题?或者另一个脚本解决方案如何找到该卷?

(显示的模型是一个简单的示例,但是实际模型具有高级几何结构,因此无法通过简单的数学直接计算体积)。

提前谢谢你。

您需要添加以下内容:

assembly=mdb.models[modelName].rootAssembly
session.viewports['Viewport: 1'].setValues(displayedObject=assembly)

之前:

weight=assembly.getMassProperties()['mass']