通过 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']
我需要在分析之前通过 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']