首页/文章/ 详情

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

1年前浏览2951

获得仿真结果后,如何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探索者
        获赞 199粉丝 479文章 87课程 5
        点赞
        收藏
        作者推荐
        未登录
        1条评论
        L-ox
        签名征集中
        11月前
        博主,您好。请问abaqus的odb产生了云图(可以按住鼠标查看各个方向的云图情况),如何保存这种3维可视化的云图,并且能在matlab打开,也就是matlab也能按住鼠标查看各个方向的云图分布情况?
        回复
        课程
        培训
        服务
        行家
        VIP会员 学习 福利任务 兑换礼品
        下载APP
        联系我们
        帮助与反馈