=====前言=====
Abaqus输出动画是后处理工作中的一部分,但是Abaqus输出的常见的动画格式只有AVI。如果需要插入到PPT中,需要第三方软件转换成GIF格式,如此一来,导出模态动画需要步骤如下:
如果遇到有多个工况,模态阶数数量又多,那这些看似简单无脑的操作,变得相当的繁琐无趣。
这里介绍一种一键生成GIF模态动画的方法,主要省去了转换格式(AVI->GIF)的时间。甚至可以实现点击按钮,即可自动生成多介模态动画,并自动命名。
这个方法的思路是:用Python语言编写一段输出动画的宏,宏里面调用第三方软件(ImageMagick)把Abaqus输出的AVI转换成GIF,并实现自动命名,然后把.py宏包装植入到Plug-ins菜单中,这样既可通过自定义工具条添加按钮来调用宏。
=====正文=====
首先,需要下载安装格式转换软件,这里推荐使用ImageMagick,具体安装方法自行百度。安装顺利的话会有如下文件,其中mogrify.exe是我们的宏所需要调用的程序。
下面附上完整代码:
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)
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删