#Abaqus二次開(kāi)發(fā)#一鍵輸出模態(tài)動(dòng)畫(GIF格式)

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

 Abaqus輸出動(dòng)畫是后處理工作中的一部分,但是Abaqus輸出的常見(jiàn)的動(dòng)畫格式只有AVI。如果需要插入到PPT中,需要第三方軟件轉(zhuǎn)換成GIF格式,如此一來(lái),導(dǎo)出模態(tài)動(dòng)畫需要步驟如下:

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

  1. Abaqus界面設(shè)置,包括調(diào)整模型視角,viewport窗口調(diào)整,動(dòng)畫參數(shù)設(shè)置等。

  2. 激活動(dòng)畫,輸出AVI格式。

  3. 通過(guò)第三方軟件轉(zhuǎn)成GIF,插入PPT中。

  4. 繼續(xù)輸出下一階模態(tài)動(dòng)畫。

如果遇到有多個(gè)工況,模態(tài)階數(shù)數(shù)量又多,那這些看似簡(jiǎn)單無(wú)腦的操作,變得相當(dāng)?shù)姆爆崯o(wú)趣。

這里介紹一種一鍵生成GIF模態(tài)動(dòng)畫的方法,主要省去了轉(zhuǎn)換格式(AVI->GIF)的時(shí)間。甚至可以實(shí)現(xiàn)點(diǎn)擊按鈕,即可自動(dòng)生成多介模態(tài)動(dòng)畫,并自動(dòng)命名。

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

這個(gè)方法的思路是:用Python語(yǔ)言編寫一段輸出動(dòng)畫的宏,宏里面調(diào)用第三方軟件(ImageMagick)把Abaqus輸出的AVI轉(zhuǎn)換成GIF,并實(shí)現(xiàn)自動(dòng)命名,然后把.py宏包裝植入到Plug-ins菜單中,這樣既可通過(guò)自定義工具條添加按鈕來(lái)調(diào)用宏。

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

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

首先,需要下載安裝格式轉(zhuǎn)換軟件,這里推薦使用ImageMagick,具體安裝方法自行百度。安裝順利的話會(huì)有如下文件,其中mogrify.exe是我們的宏所需要調(diào)用的程序。

屏幕快照 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)


實(shí)用效果如下:

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

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

文章優(yōu)先在微信公眾號(hào)發(fā)布,感興趣的可以關(guān)注一波公眾號(hào)“長(zhǎng)頸鹿愛(ài)學(xué)習(xí)”。

qrcode_for_gh_47c7e3d0a08d_258.jpg



登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP

12
1
3