宏
Tecplot 360 提供了两种编写脚本或自动化工作流程的方法:宏和批处理。本章重点介绍用于录制和回放宏的 Tecplot 360 菜单选项。《脚本指南》详细描述了 Tecplot 360 宏语言。
宏对于执行重复性操作非常有用,例如设置帧、读取数据文件和布局文件、操作数据以及创建绘图。宏也可用于驱动 Tecplot 360 批处理作业。有关批处理的信息,请参阅Batch Processing.
宏创建
Tecplot 360 的功能可在您交互执行一系列操作时录制宏。宏可以录制为 Tecplot(.mcr)或 PyTecplot Python(.py)格式。PyTecplot Python 脚本在 Tecplot 360 外部运行,可从命令行或任何 Python IDE 运行。有关更多信息,请参阅PyTecplot Guide。
录制宏后,您可以使用纯文本编辑器编辑宏文件,以删除冗余操作、将重复操作压缩为循环、将对文件的引用替换为变量名,以及进行其他修改,使宏更加通用和灵活。
要使用对话框录制宏,请从菜单中选择"Record Macro"或"Record PyTecplot"。在或对话框中指定宏文件名,然后单击 Save 开始录制。录制过程中,对话框保持打开状态。
|
宏录制期间,Auto Redraw 被禁用。如有必要,您可以通过单击 Plot 侧边栏中的 Redraw 按钮手动重绘图形。 |
录制宏时,您可以使用对话框上的以下按钮向宏中添加特定的宏命令:
- Insert "Pause"
-
向宏中添加"pause"命令。当播放包含暂停命令的宏时,Tecplot 360 会在遇到暂停命令时显示一个消息框,等待您单击 OK 后再继续处理宏。
- Insert "Graphics Off"
-
向宏中添加"graphics off"命令。当播放包含"graphics off"命令的宏时,Tecplot 360 会从"graphics off"命令开始停止在工作区中显示图形,直到遇到"graphics on"命令。
- Insert "Graphics On"
-
向宏中添加"graphics on"命令。
- 插入原始命令
-
打开一个对话框,您可以在其中输入任何有效的 Tecplot 宏命令。例如,您可以添加
$!LOOP 10在需要重复 10 次的段落开头,然后$!ENDLOOP在段落末尾。有关 Tecplot 360 宏语言的详细信息,请参阅《脚本指南》。 - 停止录制
-
完成要录制的操作序列后选择此项。
宏文件中的命令通常依赖于 Tecplot 360 处于特定状态。建议在宏开头使用命令,强制 Tecplot 360 进入已知状态。例如,$!NEWLAYOUT命令会删除所有数据集和帧,并创建一个具有默认大小和位置的空白帧。
| 如果宏以新布局或样式表开头,则宏更可能向前兼容(即适用于 Tecplot 360 的未来版本)。更多信息请参阅《脚本指南》。 |
宏函数
在文本编辑器中编辑宏文件时,您可以添加宏函数定义和宏函数调用。宏函数具有以下形式:
$!MACROFUNCTION
NAME = functionname
.
.
.
$!ENDMACROFUNCTION
在$!MACROFUNCTION和$!ENDMACROFUNCTION之间,您可以包含任何合法的宏命令,但$!MACROFUNCTION.
除外。例如,以下宏函数会开启等值线区域图层、关闭网格区域图层、将区域 1、2 和 3 的等值线图类型设置为,然后选择灰度颜色映射:
$!MACROFUNCTION
NAME = "graycontour"
RETAIN = Yes
$!FIELDLAYERS SHOWCONTOUR = YES
$!FIELDLAYERS SHOWMESH = NO
$!FIELDMAP [1-3] CONTOUR{CONTOURTYPE = BOTHLINESANDFLOOD}
$!GLOBALCONTOUR 1 COLORMAPNAME = "Grayscale"
$!REDRAW
$!ENDMACROFUNCTION
参数RETAIN指示 Tecplot 360 保留宏函数定义以供后续宏调用使用;这允许您在每次运行 Tecplot 360 时加载的某个宏中定义一次宏函数,并在整个 Tecplot 360 会话中持续使用它。
使用$!RUNMACROFUNCTION宏命令调用您的宏函数。例如,要调用上面定义的 "graycontour" 宏函数,请使用以下宏命令:
$!RUNMACROFUNCTION "graycontour"
您可以在其他宏函数中使用$!RUNMACROFUNCTION命令;调用最多可嵌套十层。
要从宏函数内部访问参数,请使用 "|n|",其中n是参数编号(不要包含双引号)。例如,以下函数使用两个参数进行赋值:SHOWCONTOUR and SHOWMESH:
$!MACROFUNCTION
NAME = "AssignContourAndMesh"
$!FIELDLAYERS SHOWCONTOUR = |1|
$!FIELDLAYERS SHOWMESH = |2|
$!ENDMACROFUNCTION
.
.
.
$!RUNMACROFUNCTION "AssignContourAndMesh" (YES,NO)
链接到几何体
您创建的每个几何体都可以链接到一个宏函数。当用户按住Ctrl键并右键单击该几何体时,将调用此宏函数。宏函数通过字段在对话框中指定。每个几何体只能指定一个宏函数。
宏函数必须使用$!MACROFUNCTION指令在宏文件中定义,具体说明见Macro Functions。包含该变量的宏文件随后必须被执行,以便将函数加载到内存中,供当前Tecplot 360会话使用。
处理此问题的便捷方法是录制一个宏,该宏打开包含链接对象的布局,然后使用文本编辑器编辑此宏,同时包含必要的宏函数。您也可以直接将宏函数包含在您的tecplot.mcr文件中。
宏回放
创建宏文件后,您可以在Tecplot 360中使用四种方法进行回放:
- 从命令行
-
您可以在启动Tecplot 360时通过在命令行中包含宏文件名来播放宏,例如:
tecplot mymacro.mcr如果您的宏文件没有.mcr扩展名,请通过在命令行中包含-p标志来运行Tecplot 360并加载宏文件,例如:
tecplot -p mymacro.mmm - 从Tecplot 360界面
-
您可以通过使用菜单中的"Play Macro/Script"选项在Tecplot 360内部播放宏。
- 使用宏调试器
-
Use the (通过访问)打开、检查、单步执行和调试您的宏文件。参见Macro Debugger for more information.
- 使用快速宏面板
-
The (通过菜单访问)允许您通过单击面板中链接到该宏函数的按钮快速播放宏函数。参见Quick Macro Panel for more information.
您也可以通过将宏文件拖放到 Tecplot 360 图标上来启动 Tecplot 360 并运行宏。但在此情况下,宏文件必须具有.mcr扩展名,否则该文件将被视为 ASCII 数据文件。
Quick Macro Panel
The 可通过从菜单中选择"Quick Macros"访问,是一个用于播放您常用或高频使用宏的侧边栏。它初始时停靠在 Tecplot 360 主窗口右侧,但与其他侧边栏一样,可拖出工作区成为浮动窗口,或与其他侧边栏组合停靠以符合您的工作习惯。(有关使用侧边栏的更多信息,请参阅Sidebars。)
此面板已预定义多个实用宏函数。要运行其中任一宏,请在列表中选中它,然后点击 Play 按钮,或直接双击宏名称。
Quick Macro Panel 与特殊宏文件 tecplot.mcr 关联,该文件应仅包含宏函数定义($!MACROFUNCTION指令)。带有SHOWINMACROPANEL = TRUE的宏定义会显示在 Quick Macro Panel 中。此文件中可定义不带此标志的其他函数,这些函数可由面板中显示的宏调用。您也可以使用$!INCLUDEMACRO指令将其他文件中的宏指令包含到快速宏文件中。
关于如何加载快速宏文件的信息,请参阅Custom Files loaded on Startup.
Macro Debugger
Use the 通过访问,用于单步执行和调试宏文件。此对话框允许您添加和删除断点、查看和设置监视变量,以及查看调用堆栈。
The 在对话框顶部的 Macro Source 区域显示当前加载宏文件的文本。黑色箭头
标记即将执行的行;当前命令执行后,箭头会移至下一条命令。下方是第二个区域(ExpandedView),显示即将执行的完整命令,因为许多宏命令较长,在 Macro Source 区域可能无法完整显示。
Macro Debugger 的工具栏包含以下按钮:
Load a Macro file-
使用对话框加载宏文件,您可在其中指定要加载的宏文件。Tecplot 宏文件通常具有
.mcr扩展名。加载宏文件后,它将保留在 Macro Debugger 中,直到您加载其他文件。
Continue-
连续播放宏,不会在每一步后停止,直到宏执行完毕或 Macro Debugger 遇到断点。
- Step 按钮
-
这三个相关按钮可帮助您逐行执行宏,并在每条指令处理完毕后暂停。在每一步后检查变量值对于发现和修复问题非常有帮助。这些按钮功能略有不同,具体说明如下。
单步进入-
执行当前宏命令。当遇到$!RUNMACROFUNCTION命令时,会进入被调用的函数,以便也能逐行执行该函数。
单步跳过-
Executes the current macro command. When a
$!RUNMACROFUNCTION命令时,整个函数将作为一个操作被处理,而不是允许您逐行执行。这对于已确认运行正常且/或无需逐行执行的函数(尤其是较长的函数)非常有用。
单步跳出-
以全速执行当前函数的剩余部分(而非逐行执行),直到遇到函数结束
$!ENDMACROFUNCTION为止,然后在调用该函数的$!RUNMACROFUNCTION指令之后的行恢复单步执行。当您确认函数运行正常且无需继续逐行执行(尤其是包含循环的函数)时,或意外进入不想逐行执行的函数时,此功能非常有用。
重置-
停止正在运行的宏(如果有),并将宏重置为从头开始运行。
如果您的宏依赖于 Tecplot 360 在开始处理时处于特定状态(即宏并非以加载或创建布局开头),请确保在单击前 Tecplot 360 处于该状态。否则,宏的结果可能不符合预期。
处理宏重置状态的一个便捷方法是:在开始调试前保存一个布局,然后在需要重置时重新加载该布局。
宏调试器在对话框底部包含以下三个区域。监视变量和断点共享同一空间;使用提供的选项卡在两者之间切换。
- 监视变量
-
在您逐步执行代码时显示所选宏变量的值,并允许您添加和移除要监视的变量。请参阅Watching Variables.
- 断点
-
显示宏中设置的断点,并允许您轻松删除任意或所有断点。请参阅Using Breakpoints.
- 调用堆栈
-
显示当前正在执行的所有函数调用。当一个函数调用另一个函数,而该函数又调用其他函数,依此类推时,此区域会按调用顺序显示所有这些函数的名称。名称main表示顶层脚本(所有函数外部的指令)。
监视变量
宏调试器底部的"监视变量"面板允许您设置在宏运行期间要显示的变量。您可以通过从此处的弹出菜单中选择变量来添加要监视的变量。若要停止监视某个变量,请在已监视变量列表中单击该变量,然后单击删除(垃圾桶)图标。
使用断点
A breakpoint是代码中您希望暂停执行的位置,通常位于您遇到问题的宏指令之前。使用"继续"按钮,宏将以全速运行直到遇到断点。此时您可以检查变量或调用堆栈,查看接下来将要执行的几行代码,然后使用工具栏中相应的"单步执行"按钮逐行执行宏,观察其行为。
断点在宏源代码字段中每行代码左侧显示为红色圆点。若要在宏的特定行设置断点,请单击该行左侧。该行旁边会出现一个红色圆点,表示执行将在该行执行前暂停。再次单击可移除断点。
宏调试器对话框底部的"断点"区域显示每个断点设置位置的信息:所在函数(若在函数外部则为"main")、行号以及宏命令。您可以在此区域中选择断点并单击来删除断点。(这是删除所有断点的最快方式。)