tecplot錄制宏(Macro)用以批量導入數據


今天要用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)的名字。很方便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM