ANSYS APDL如何制作高质量动画?

ANSYS APDL如何制作高质量动画?

点击此处查看 ✿水哥原创ANSYS视频教程清单 ✿

水哥专属答疑服务已开通,点此此处查看详情

作为打工人,难免要对老板或者客户汇报阶段性仿真结果,除了一些必要的云图展示、曲线以及数据外,其中还有一项比较重要的操作便是结果动画化,动画对结果趋势表达更加清晰明了,大多数情况下相比于其他形式,从感性上更能给别人较为深刻的印象。

这里的动画化表示可以将结果用AVI\MP4等视频文件展示,也可以用GIF进行展示,那么APDL里面如何制作动画呢?今日水哥解答一二,仅供参考!

目前,常见制作直接生成动画相关命令有:

Antime、Anmode、Ancntr、Anharm

同时还需配合使用一些辅助命令,如Anim、/Seg、/Anfile等

下面主要说说Antime命令的操作。

该命令比较通用,能适用于大部分情况下的动画输出,输出内容以前一步绘制的内容为准,其使用格式如下:

ANTIME, NFRAM, DELAY, NCYCL, AUTOCNTRKY, RSLTDAT, MIN, MAX

NFRAM:帧数,默认为5。

DELAY: 每帧间隔时间,默认为0.1秒。

NCYCL:循环动画周期数,仅在非用户界面模式下可用,默认为5。

AUTOCNTRKY:云图图例自动调整系数,默认为0(关闭)。

RSLTDAT:结果数据来源,0(当前载荷步数据,默认)、1(载荷步)、2(时间)。

MIN 和 MAX:分别指定动画的最小和最大值范围(根据RSLTDAT类型来定)。如果不指定,则分别默认为第一个和最后一个数据点。

关于动画的内容及一些设置,一般是在动画命令之前,用户设置好即可,比如绘制的云图类型,是否显示图例,是否显示logo等。

根数上述参数内容,动画总时间=NFARM*DELAY,如果要让动画尽量显示真实,不出现类似掉帧的情况,用户可将NFARM的值增大,在维持总时间不变的情况下,减小DELAY。

如下,绘制某框架结构的地震时程响应动画,动画由50帧组成,每帧持续时间0.2s,动画总时间10s,动画的绘制内容为整体位移云图,绘制时间为0s~5s.

/post1
!将背景变为白色
/RGB,INDEX,100,100,100, 0
/RGB,INDEX, 80, 80, 80,13
/RGB,INDEX, 60, 60, 60,14
/RGB,INDEX, 0, 0, 0,15
/REPLOT
/DIST, 1 ,1.082226,1
/REP,FAST
!绘制整体变形云图
set,last
plnsol,u,sum
!制作动画
Antime,15,0.2,,,2,0,5

运行完上述命令流,会自动在当前工作文件夹下保存视频,文件默认名称为file.avi,当然用户也可以用/anfile命令另存该动画。

/Anfile,save,kuangjia,mp4

apdl动画

其余命令与上述命令使用用法、参数含义都差距不大,只是作用范围不同,如Ancntr表示绘制变形云图,Anmode绘制模态振型图,Anharm绘制谐响应云图。

除上述直接出具动画之外,还可以用/SEG命令出具动画。

/SEG也即将当前绘制的云图存储到内存中,配合/Anfile命令即可生成动画。

示例:

/seg,dele
/seg,multi,kuangjia,0.1 !独立存储且不覆盖,文件名为kuangjia
/post1
!将背景变为白色
/RGB,INDEX,100,100,100, 0
/RGB,INDEX, 80, 80, 80,13
/RGB,INDEX, 60, 60, 60,14
/RGB,INDEX, 0, 0, 0,15
/REPLOT
/DIST, 1 ,1.082226,1
/REP,FAST
!绘制整体变形云图
*do,i,1,50
set,i,last
plnsol,u,sum
/replot
*enddo
/seg,off
/anfile,save,kuangjia2,avi

上述操作如果出具的帧数较多,容易卡死,因为要占用内存,不建议使用,并且无论是直接出图还是采用/SEG间接出图,免不了云图的右侧有一块空白的地方,很是碍眼,同时水哥个人总感觉帧数的质量不是特别高,有时候看起来比较模糊。

下面方法配合Python来使用可完美解决这个问题,思路类似SEG方法,也即将每一帧云图都先通过循环命令输出(直接输出的云图没有右侧的空白区域),然后使用Python的Image模块合成GIF。

步骤如下:

1、新建一个文件夹,例如此处为ANSYS9

2、打开APDL,将当前工作文件夹至于第一步创建的文件夹,读取rst文件,调整好云图视图,然后批量出图,命令如下。

*do,i,1,50
set,i*10,last
!变形放大系数为200
/DSCALE,ALL,200
/EFACET,1
!总云图
plnsol,u,sum
/replot
!保存云图
/SHOW,JPEG,,0
JPEG,QUAL,100,
JPEG,ORIENT,HORIZ
JPEG,COLOR,2
JPEG,TMOD,1
/GFILE,800,
!*
/CMAP,_TEMPCMAP_,CMP,,SAVE
/RGB,INDEX,100,100,100,0
/RGB,INDEX,0,0,0,15
/REPLOT
/CMAP,_TEMPCMAP_,CMP
/DELETE,_TEMPCMAP_,CMP
/SHOW,CLOSE
/DEVICE,VECTOR,0
!*
*enddo

出具的云图如下:

apdl动画2

3、打开python,输入如下代码,进行合并。

from PIL import Image
import os

def create_gif(image_folder, output_gif, duration=500):
    images = []
    for file_name in sorted(os.listdir(image_folder)):
        if file_name.endswith(('.png', '.jpg', '.jpeg', '.bmp', '.tiff')):
            file_path = os.path.join(image_folder, file_name)
            images.append(Image.open(file_path))
    if images:
        images[0].save(
            output_gif,
            save_all=True,
            append_images=images[1:],
            duration=duration,
            loop=0
        )
        print(f"GIF文件已成功保存至 {output_gif}")
    else:
        print("文件夹中没有找到图片文件")
#######################
#合成GIF
image_folder = 'D:\ANSYS9'
output_gif =image_folder+ '\kuangjia.gif'
create_gif(image_folder, output_gif, duration=10)

 

由于单独出图可以控制的项目比较多,比如出图质量,Logo等,所以采用这种方法能出具质量较高,界面清爽的动画。

直接出图虽然快捷,但如果对动画质量要求比较高(特别是方案阶段需要向金主爸爸汇报时),建议采用文中的最后一种方法!

欢迎搜索关注本站微信公众号:ANSYS结构院

欢迎给网站捐助,您的捐助是我坚持下去的动力!

© 版权声明
THE END
喜欢就支持一下吧
点赞1赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容