【发布时间】:2020-02-23 19:37:07
【问题描述】:
我需要在分析之前通过python脚本在Abaqus中找到一个shell模型的体积,因此在.odb文件可用之前。
我知道这在 CAE 中可以通过具有质量属性的查询工具来实现。这也应该可以通过使用getMassProperties()['volume'] 编写脚本来实现(例如mdb.models['Model'].rootAssembly.getMassProperties()['volume'])。但是,这就是问题所在,因为它不能正常工作。
如果我只在命令窗口中使用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 中的查询工具和质量属性,并找到 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 脚本中使用。
如何解决上述问题?或者其他脚本解决方案如何找到该卷?
(显示的模型是一个简单的示例,但实际模型具有高级几何形状,因此无法通过简单的数学直接计算体积)。
提前谢谢你。
【问题讨论】:
-
我不记得查询工具的使用是否反映在 .rpy 文件中,但如果是这样,可能会显示其他命令/函数/等来解释卷的情况确定。
-
我刚查了一下,可惜查询工具没有反映在.rpy文件中。