#Abaqus二次开发#一键输出模态动画(GIF格式)

=====前言=====

 Abaqus输出动画是后处理工作中的一部分,但是Abaqus输出的常见的动画格式只有AVI。如果需要插入到PPT中,需要第三方软件转换成GIF格式,如此一来,导出模态动画需要步骤如下:

屏幕快照 2017-02-09 下午8.13.07.png

  1. Abaqus界面设置,包括调整模型视角,viewport窗口调整,动画参数设置等。

  2. 激活动画,输出AVI格式。

  3. 通过第三方软件转成GIF,插入PPT中。

  4. 继续输出下一阶模态动画。

如果遇到有多个工况,模态阶数数量又多,那这些看似简单无脑的操作,变得相当的繁琐无趣。

这里介绍一种一键生成GIF模态动画的方法,主要省去了转换格式(AVI->GIF)的时间。甚至可以实现点击按钮,即可自动生成多介模态动画,并自动命名。

屏幕快照 2017-02-09 下午8.16.52.png

这个方法的思路是:用Python语言编写一段输出动画的宏,宏里面调用第三方软件(ImageMagick)把Abaqus输出的AVI转换成GIF,并实现自动命名,然后把.py宏包装植入到Plug-ins菜单中,这样既可通过自定义工具条添加按钮来调用宏。

屏幕快照 2017-02-09 下午8.18.50.png

=====正文=====

首先,需要下载安装格式转换软件,这里推荐使用ImageMagick,具体安装方法自行百度。安装顺利的话会有如下文件,其中mogrify.exe是我们的宏所需要调用的程序。

屏幕快照 2017-02-09 下午8.19.50.png

下面附上完整代码:

from abaqus import *

from abaqusConstants import *

from viewerModules import *

import animation

import subprocess, os


convertToGIF = ' '.join(('"E:\ConverToGif\\mogrify.exe"',

'-format gif',

'"%1"',))

def Single_Mode():

vp = session.viewports[session.currentViewportName]

odb = vp.displayedObject

display = vp.odbDisplay

frame_index = display.fieldFrame[1]

i=frame_index

for step in odb.steps.values():

if step.domain == MODAL:

frames = tuple(step.frames)[0:]

t=frames[i]

session.animationController.setValues(animationType=SCALE_FACTOR, viewports=   (session.currentViewportName,),)

session.animationController.play(duration=UNLIMITED)


file_name = 'Mode_%i_%.0fHz.avi'%(t.mode,t.frequency)

session.writeImageAnimation(fileName=file_name, format=AVI, 

    canvasObjects=(vp, ))

session.animationController.setValues(animationType=NONE)

p = subprocess.Popen(convertToGIF.replace('%1',file_name), stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=False)

if not p.wait() :

print 'Animation mode %i successfully saved.'%i

else:

print 'Error during animation mode %i.'%i

print p.communicate()

os.remove(file_name)


实用效果如下:

屏幕快照 2017-02-09 下午8.26.42.png

屏幕快照 2017-02-09 下午8.29.20.png

文章优先在微信公众号发布,感兴趣的可以关注一波公众号“长颈鹿爱学习”。

qrcode_for_gh_47c7e3d0a08d_258.jpg



登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

12
1
3