首页/文章/ 详情

Abaqus二次开发|后处理360°视角动态展示模型

1年前浏览3639

获得仿真结果后,如何360°动态观察模型在不同方位的仿真结果呢?虽Abaqus自带的后处理暂无此功能,但我们可通过 python脚本来抓取不同方位的图片,然后使用MATLAB将捕获的图片制作成GIF动画。

         

图1 

Abaqus二次开发中,有一条命令:


viewports['Viewport: 1'].view.setValues
可调整模型在视图中的不同角度显示。我们先通过__doc__方法查阅setValues的控制参数:

session.viewports['Viewport: 1'].view.setValues.__doc__

获得其控制参数如下:

'View.setValues(<options, drawImmediately, fieldOfViewAngle, nearPlane, farPlaneMode, farPlane, width, height, projection, cameraPosition, cameraUpVector, cameraTarget, viewOffsetX, viewOffsetY, autoFit , movieMode>) -> This method modifies the \n View\n object.\n This method is not available for a \n LayerView.\n

setValues下的drawImmediately,cameraPosition和cameraUpVector是我们需要的控制参数。cameraPosition,顾名思义,是照相机的位置,由x,y,z坐标确定;cameraUpVector为照相机的指向,即拍照的方向,是一个向量。结合图1视图,要让照相机摆放的位置绕着y轴摆放,且指向y方向,因此照相机位置应该是一个圆的轨迹线,而y向便可由(0,1,0)来设定。

照相机沿着圆的轨迹线,在不同位置视角下的图片捕获并保存下来,其代码如下所示:























# -*- coding: mbcs -*-from abaqus import *from abaqusConstants import *o1 = session.openOdb(name='Job-test.odb')session.viewports['Viewport: 1'].setValues(displayedObject=o1)session.viewports['Viewport: 1'].odbDisplay.setPrimaryVariable(    variableLabel='S', outputPosition=INTEGRATION_POINT, refinement=(INVARIANT,     'Mises'), )session.viewports['Viewport: 1'].odbDisplay.display.setValues(plotState=(    CONTOURS_ON_DEF, ))session.viewports['Viewport: 1'].odbDisplay.commonOptions.setValues(    deformationScaling=UNIFORM, uniformScaleFactor=1) Num=20angle=0for i in range(Num):    angle+= 2*pi/Num    session.viewports['Viewport: 1'].view.setValues(cameraUpVector=(0, 1, 0),        cameraPosition=(120*cos(angle),40,120*sin(angle)),drawImmediately=True)    #session.viewports['Viewport: 1'].view.setValues(session.views['Iso'])    session.printOptions.setValues(reduceColors=False)    session.printToFile(fileName='frame_'+str(i),     format=PNG, canvasObjects=(session.viewports['Viewport: 1'], ))

当然获取代码最快的方式是先导入一个模型,然后旋转一下视图,之后打开.rpy文件,稍微修改一下就可以直接使用了         

最后,如何将视图合成一个GIF呢,社长已在推文里详细介绍了,参考文章《MATLAB制作GIF动图让你的工作变得有灵魂》,最终结果啥样子呢?

         

 

来源:仿真社
Abaqus二次开发MATLABpython控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-02-23
最近编辑:1年前
仿真社
硕士 ABAQUS/LS-DYNA探索者
获赞 214粉丝 532文章 92课程 5
点赞
收藏
作者推荐
未登录
1条评论
L-ox
签名征集中
1年前
博主,您好。请问abaqus的odb产生了云图(可以按住鼠标查看各个方向的云图情况),如何保存这种3维可视化的云图,并且能在matlab打开,也就是matlab也能按住鼠标查看各个方向的云图分布情况?
回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈