标签:poi 并且 parameter tin mcr file 执行 named 自动
今天要用Tecplot做后处理。需要导入几十个甚至上百个数据文件,并且每导入一个数据文件,就要重命名,以便区分。这样的工作量手动一个一个地操作显然不太现实,我想能不能让其自动地完成这些重复地操作。这个问题让我想到了以前用的几款软件都有宏Marco这个命令,即可以把操作过程录制成宏,然后运行这个宏命令,就可以把刚才录制的命令完整地重新操作一遍,比如三维设计软件CATIA,网格画分软件Pointwise。更加简便灵活的地方是可以对宏进行编辑,比如修改某个尺寸,修改某个名字,甚至复制某段命令,让其重复执行。
Tecplot当然也有这样的操作。于是我就按照这个思路尝试录制宏。
首先新建一个宏开始录制。菜单栏选择Scripting>>Record Macro,新建宏。然后会出现一个小对话框,暂时不管它。
接着,导入一个数据文件,并在Data中对此文件(就是Zone)重命名。然后在刚才的小对话框中选择Stop Recording,结束录制。用文件编辑器打开保存的宏命令文件,比如UltraEdit,对其进行编辑。
1 #!MC 1410 2 $!ReadDataSet ‘"D:\data\611\results_grid_1_tecplot.dat" ‘ 3 ReadDataOption = Append 4 ResetStyle = No 5 VarLoadMode = ByName 6 AssignStrandIDs = Yes 7 VarNameList = ‘"x" "y" "u" "v" "w" "rho" "p" "Z Vorticity"‘ 8 $!RenameDataSetZone 9 Zone = 28 10 Name = ‘611‘
以上即是保存的宏命令文件。如果要重复操作的文件数量不多,比如10个,那么就可以直接在UltraEdit中复制粘贴命令,修改对应的文件路径与文件名即可。这里仅需要修改对应的第二行的文件路径,第九行的Zone代码,和第十行的Name。但是如果文件数量非常多,手动复制修改仍然非常繁琐。对于这种简单重复的操作,当然可以写一小段代码帮助实现了。最近一直在用Fortran写代码,于是我就写了段Fortran实现自动复制与编辑。代码如下:
1 program main 2 implicit none 3 4 integer j 5 integer, parameter :: n_data = 670 6 character(len=3) :: cTemp 7 8 open(10, file="tecplot_load_data.mcr", status="replace") 9 10 do j = 611, n_data 11 12 write(cTemp, "(i3)") j 13 write(10,*) "#!MC 1410" 14 write(10,*) "$!ReadDataSet " // "‘""D:\data\" & 15 &// trim(adjustl(cTemp)) // "\results_grid_1_tecplot.dat"" ‘" 16 write(10,*) " ReadDataOption = Append" 17 write(10,*) " ResetStyle = No" 18 write(10,*) " VarLoadMode = ByName" 19 write(10,*) " AssignStrandIDs = Yes" 20 write(10,*) " VarNameList = ‘""x"" ""y"" ""u"" ""v"" ""w"" ""rho"" ""p"" ""Z Vorticity""‘" 21 write(10,*) "$!RenameDataSetZone" 22 write(10,"("" Zone = "" i3)") j-583 23 write(10,*) " Name = " // "‘" // trim(adjustl(cTemp)) // "‘" 24 25 end do 26 27 end
代码需要注意的地方是引号的问题,单引号,双引号套用要注意。我会单独开一篇博文讲一下单双引号的问题。
修改完之后保存,然后在Tecplot里边运行这个宏Macro文件即可,这个宏命令会自动循环加载数据文件并修改文件(Zone)的名字。很方便。
标签:poi 并且 parameter tin mcr file 执行 named 自动
原文地址:https://www.cnblogs.com/cfdchen/p/13380174.html