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

文摘   2024-07-12 09:08   重庆  

欢迎阅读水哥原创文章,历年原创文章请点击:

本公众号历年原创文章汇总-2024.05

更多水哥原创课程,请点击:

水哥原创课程清单

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

这里的动画化表示可以将结果用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。

如下,绘制某框架结构的地震时程响应动画,动画由15帧组成,每帧持续时间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,lastplnsol,u,sum!制作动画Antime,15,0.2,,,2,0,5

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

/Anfile,save,kuangjia,mp4

由于公众号上传视频不便,这里用PS转为了GIF,如下所示:

未经授权,本文禁止复制转载于其他三方平台!

其余命令与上述命令使用用法、参数含义都差距不大,只是作用范围不同,如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,50set,i,lastplnsol,u,sum/replot*enddo/seg,off/anfile,save,kuangjia2,avi

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

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

步骤如下:

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

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

*do,i,1,50set,i*10,last!变形放大系数为200/DSCALE,ALL,200 /EFACET,1!总云图   plnsol,u,sum/replot!保存云图/SHOW,JPEG,,0   JPEG,QUAL,100,  JPEG,ORIENT,HORIZ   JPEG,COLOR,2JPEG,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

出具的云图如下:

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

from PIL import Imageimport 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("文件夹中没有找到图片文件")########################合成GIFimage_folder = 'D:\ANSYS9'output_gif =image_folder+ '\kuangjia.gif'create_gif(image_folder, output_gif, duration=10)


动画如下:

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

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

如果觉得这个小技巧实用,欢迎转载,分享!


更多水哥原创课程,请点击:

       水哥原创课程清单

更多有限元学习资源,请访问水哥博客:FSCAE.COM

祝好

ANSYS结构院

2024.07.12

ANSYS结构院
ANSYS使用心得及操作技巧,B站Up主水哥ANSYS, 有限元学习资源分享,公众号官网FSCAE.COM
 最新文章