跳转到内容

创建脚本集合(脚本库)#

VisualApplets 提供了 Script Collection 功能,您可以通过该功能直接在 VisualApplets GUI 中极其方便地使用脚本中的程序。VisualApplets 在 Script Collection 中支持 Tcl 脚本和 Python 脚本。

第一步是创建一个包含各个命令的脚本集合。您可以定义每个命令以调用指定 Tcl 或 Python 脚本中的特定程序。

随后,各个命令将直接以图形化方式在 VisualApplets GUI 中可用,您可以通过鼠标点击或拖放来启动它们。通过这种方式,您可以将 Tcl 或 Python 程序用作库元素。调用时,这些命令将在 Scripting Console 中执行。如果打开 Scripting Console,您可以查看命令的执行过程。

在 Script Collection 窗格中,您可以查看 VisualApplets 安装中已有的脚本集合以及每个集合包含的命令。

要打开 Script Collection 窗格,请打开 Window 菜单,选择 Dock Windows,然后选择 Scripting Collection:

VA 打开 Script Collection 窗格

Scrip Collection 窗格将在 VisualApplets 主窗口右侧打开:

主窗口中的 VA Script Collection 窗口

您可以通过以下方式定义脚本集合:

信息

VisualApplets 支持用 Python 和 Tcl 编写的脚本的脚本集合。使用 Python 脚本集合元素时,Scripting Console 会自动切换到 Python,而在控制台设置为 Tcl 时又会切回 Tcl。Python 脚本集合在 Python Version Settings 对话框中选为 Active Version 的 Python 环境中运行。有关详细信息,请参阅 Managing Python Versions。

信息

将所有集合信息存储在 XML 文件中,使您不仅可以将版本控制系统用于单个脚本,还可以用于脚本集合的结构和内容定义。

脚本集合的结构#

每个脚本集合包含多个命令(脚本集合的元素)。

这体现在 GUI 中:

Script Collection 窗格

每个命令指向特定脚本中的一个特定过程。执行命令时,将调用它所指向的过程。

Script Collection 窗格的结构

要定义脚本集合,您必须定义:

  • 集合的名称
  • 集合中包含的命令
  • 可选:一些其他信息,例如版本号、描述等。
  • 可选:代表脚本集合的 GUI 图标。
  • 对于每个单独的命令:
    • 命令名称
    • 命令指向的 Tcl 或 Python 文件
    • 命令指向的此文件中的 Tcl 或 Python 过程
    • 必须传递给 Tcl 或 Python 过程的参数(从 GUI 启动命令时会提示所需的值)
    • 命令模式(参见下文的Adding a Command to a Script Collection)
    • 可选:命令范围(参见下文的向脚本集合添加命令)
    • 可选:其他信息,例如版本号、描述等。
    • 可选:代表该命令的 GUI 图标(参见下文的向脚本集合添加命令)。如果未提供图标文件,GUI 中将使用默认图标。

准确描述一个脚本集合的所有列出信息都存储在一个 XML 文件中。

您可以定义多个脚本集合。

GUI 背后发生了什么?#

在后台,您指定的用于存放集合定义 XML 文件的目录中将创建一个新的 XML 文件(参见必需设置):

脚本集合 XML 存储位置

文件名与您在 GUI 中定义的脚本集合名称相同。该 XML 文件包含有关当前定义的集合的所有信息:

脚本集合 XML 文件

As you haven't specified any commands for your script collection yet, the <Elements> element is still empty.

信息

要创建新的脚本集合,您可以使用 GUI,也可以从头开始创建 XML 文件。结果是相同的。GUI 始终显示 XML 文件中定义的信息。

命令选项#

在定义命令时,您可以指定该命令是通过按钮启动 运行按钮 (即 Trigger Mode)还是通过拖放启动,GUI 中会通过手形图标来指示这一点 手形图标。您还可以在工具栏中为命令添加一个按钮。

对于设置为 Trigger Mode 的命令,您可以定义命令范围。在命令范围中,您可以将命令限制为特定的设计元素(例如模块或链路),以便该命令仅适用于这些元素。

要求#

文件要求#

脚本集合由以下文件组成:

  • 定义脚本集合的 XML 文件。该 XML 文件包含集合本身的定义以及集合中包含的命令的定义。
  • 包含实际脚本的 Tcl 或 Python 文件。这些文件必须满足以下要求:
    • 它们是 Tcl 或 Python 脚本。
    • 这些文件仅包含过程。它们不包含在加载脚本文件时执行的任何命令。
    • 为避免命名冲突,对于命令 CMD_NAME,请遵循以下命名规范:
      • Command_CMD_NAME
    • 将 .tcl 或 .py 文件存储在与集合文件(*.xml)相同的目录或其子目录中。
  • 可选:用于 VA GUI 上的单个集合或命令图标的 PNG 图标文件。PNG 文件需要满足以下要求:
    • 它们必须包含正方形图像。
    • 最小分辨率为 16 x 16。
    • 将图标文件存储在与集合文件(*.xml)相同的目录或其子目录中。如果未提供图标文件,则在 GUI 中使用默认图标来表示该命令。

信息

正常工作所需的脚本集合的所有文件都是纯文本文件。这允许您将脚本集合定义存储在版本控制系统中。

必需设置#

您可以在 Visual Applets 中指定脚本集合定义文件(XML 文件)的位置。由于您只能为集合脚本文件定义一个存储位置,Basler 建议将所有集合定义 XML 文件存储在同一目录中。

要设置脚本集合目录的路径:

  1. 从 Settings 菜单中选择 System Settings。
  2. 选择 Paths 选项卡。
  3. Under Script Collection, specify the path to the directory where you store the collection-defining XML files you want to use. The default setting is <VA installation directory>/ScriptCollection:

定义脚本集合目录的路径

对于通过 GUI 创建的每个脚本集合,都会在指定的目录中写入一个 XML 文件。如果您向该目录添加了新的集合描述 XML 文件或编辑了存储在那里的现有 XML 文件,则可以在 VisualApplets GUI 中显示这些更改。若要显示更改而无需重新启动 VisualApplets,请在 Script Collection 窗格中单击鼠标右键,然后选择 Rescan Script Collection Directory。

Script Collection:重新扫描脚本集合目录

通过 GUI 创建脚本集合#

您可以通过图形用户界面完全定义脚本集合,而无需修改底层代码。 XML 文件。 XML 文件在后台创建和更新。一旦您定义了集合及其包含的命令,该集合就会显示在屏幕上。 VisualApplets 图形用户界面。

创建新脚本集合#

通过图形用户界面创建新的脚本集合:

  1. 右键单击 Script Collection 窗格。
  2. 从上下文菜单中选择 Create New Script Collection。

    创建新脚本集合

    对话框打开。

  3. 输入新脚本集合的名称并点击 OK 确认。

    输入新脚本集合的名称

    新集合将显示在 Script Collection 窗格中:

    已创建新脚本集合

向脚本集合添加命令#

通过图形用户界面向脚本集合添加命令:

  1. 右键单击脚本集合的名称。
  2. 从上下文菜单中选择 Create Element。

    脚本集合:创建元素

    此时会弹出一个对话框,用于描述您要添加的命令。红色高亮显示的字段为必填项:

    脚本集合:编辑脚本命令

  3. Command Name(必填):为您的命令指定一个名称。

  4. Version:您可以为您的命令提供版本信息。
  5. Description:该描述将作为工具提示信息显示。请输入命令将调用的过程的描述。
  6. Icon File:如果您希望在 Script Collection 窗格或工具栏中显示特定的命令图标,可以在此处提供图标文件的路径。您可以设置绝对路径,也可以设置相对于集合文件(*.xml)的路径。(详情请参见文件要求)。如果您不选择图标文件,GUI 将使用默认图标来表示您的新命令。
  7. Script File:提供包含您希望通过该命令启动的过程的脚本路径和名称。您可以定义相对于集合文件的路径(.xml)。或者,您也可以不定义包含该命令要调用的过程的脚本文件,而是直接在命令中输入 Tcl 或 Python 过程。直接在命令中定义的 Tcl 或 Python 过程将在您每次调用该命令时执行。如果您倾向于此选项,请将 Script File 字段留空,并在 Command Call 下的 Template 字段中提供命令所代表的整个 Tcl 或 Python 过程。

    脚本集合:编辑脚本命令

    如果您尝试执行未选择定义为命令作用域的设计元素的命令,将弹出 Invalid Scope 消息:

    无效作用域

  8. Command Options:定义您希望如何在 VisualApplets GUI 上启动命令。可以通过点击按钮启动命令(Trigger Mode),也可以通过拖放到设计窗口中启动命令(Drag & Drop 模式)。如果您使用 Trigger Mode,您可以在程序窗口的工具栏中为该命令添加一个额外的按钮,并定义执行该命令的条件(作用域)。

    脚本集合:命令选项

    1. Trigger Mode:要创建一个点击即可启动命令的按钮,请清除 Drag & Drop 字段。该命令将连同 Run 按钮一起显示在 Script Collection 窗格中:

      脚本集合:Trigger Mode

      要开始执行命令,请点击 Run 按钮。

    2. 工具栏选项(仅限 Trigger Mode):要使命令在 VisualApplets 的工具栏中可用:勾选 Add to Toolbar 选项;只有在清除 Drag & Drop 复选框时,此操作才可行。在 GUI 上,将为该集合创建一个新工具栏并显示命令图标:

      脚本集合:工具栏选项

      点击工具栏中的命令图标与点击 Run 按钮具有相同效果。您在 Description 下输入文本将作为工具提示显示在工具栏中:

      脚本集合:工具栏

    3. Drag & Drop 模式:如果您希望通过 GUI 上的拖放操作来启动执行,请勾选 Drag & Drop 复选框。在这种情况下,Action 列中将显示一个手形图标:

      脚本集合:Drag & Drop 模式

  9. Define Command Scope(仅在 Trigger Mode 下可用):如果您希望将命令限制在设计中的特定设计元素内,请勾选 Define Command Scope 复选框。此选项仅在禁用 Drag & Drop 时可用。

    Script Collection: 定义命令作用域

    可以使用如下选项:

    • Module:您必须选择且仅选择一个模块来启动此命令。
    • Link:您必须选择且仅选择一个链路来启动此命令。
    • CommentBox:您必须选择且仅选择一个注释框来启动此命令。
    • SimModule:您必须选择且仅选择一个仿真模块来启动此命令。
    • SingleSelect:您必须选择且仅选择一个设计元素来启动此命令。您选择哪种元素(模块、链路等)并不重要。
    • MultiSelect:您必须选择两个或更多设计元素来启动此命令。您选择哪种元素(模块、链路等)并不重要。

    您可以组合使用这些选项:例如,如果您组合使用 Module 和 Link 选项,只要您选择正好一个模块或者正好一个链路,就会执行该命令。组合使用 SingleSelect 和 MultiSelect 允许在选择了一个或多个设计元素时启动命令。

    命令的作用域(即 Tcl 过程的作用域)显示在 VisualApplets GUI 的 Script Collection 窗格中:

    脚本集合:工具栏

    如果您尝试执行未选择定义为命令作用域的设计元素的命令,将弹出 Invalid Scope 消息:

    无效作用域

  10. Command Call:在此定义命令的调用方式。

    脚本集合:工具栏

    1. Template:在此输入命令调用的模板。通常,它以 Tcl 或 Python 过程的名称开始,后跟参数列表。这些参数作为用 % 包裹的占位符给出。对于每个占位符,您可以在下方的列表中定义相应的参数。请遵循 Tcl 或 Python 命令的语法。或者,如果您将上面的 Script File 字段留空,也可以在此处输入完整的 Tcl 或 Python 控制台命令行。
    2. 参数:在此定义模板中使用的参数。此处列出的参数顺序无关紧要。只需确保参数名称与模板的占位符名称匹配即可。要将新参数添加到命令定义中,请点击 加号按钮 加号按钮。
      1. Name:为每个参数提供一个名称。使用在命令调用时承载该值的参数所用的名称。
      2. Type:定义参数的数据类型。您可以定义 string、integer 或 double 类型的参数。
      3. Mode:定义您的参数包含固定值、变量还是放置位置。 dropX 和 dropY 提供在拖放过程中释放鼠标指针时的位置。请注意, dropX 和 dropY 仅在 Drag & Drop 模式下可用。如果您将参数定义为变量,系统将在启动命令时要求您输入该参数的值。
      4. Default:在此处输入默认值。
      5. Min/Max:在此处输入参数的值范围。
      6. Inc:在此处输入值范围内的步长。

示例:

Script Collection: 参数

通过 XML 创建脚本集合#

您可以完全在 XML 中定义脚本集合,而无需使用 VisualApplets GUI。

为每个脚本集合创建一个 XML 文件。

一旦您在 XML 文件中定义了一个 collection 及其包含的命令,该 collection 就会显示在 VisualApplets GUI 中。前提条件:您已在 VisualApplets 的 System Settings 中指定了 XML 文件的位置,请参见 Required Settings。

关于 script collection 的结构和内容的所有信息都定义在每个 script collection 的一个 XML 文件中。您可以提供多个 XML 文件,每个文件定义一个 script collection。如果定义 script collection 的 XML 文件位于您在 VisualApplets 的菜单 Settings -> System Settings -> Paths -> Script Collection 下指定的目录中,则该 script collection 将显示在 VisualApplets GUI 的 Script Collection 窗格中。

示例#

VisualApplets provides the three example script collections DesignTools, LayoutAssist, and TclExamples. You find them as .xml file as well as as .tcl file in the directory <VA installation directory>/Examples/AdvancedVAFunctions/Script Collection.

要在 VisualApplets 的 GUI 中显示示例脚本集合:

  1. 在 Settings -> System Settings -> Paths 中定义存储示例 script collection 的文件夹路径。

    设置示例 Script Collection 的路径

  2. 在 Script Collection 窗格中右键点击,然后选择 Rescan Script Collection Directory。

    Script Collection:重新扫描脚本集合目录

    此时,GUI 会在 Script Collection 窗格中显示示例 script collection:

    Script Collection: XML 目录

  3. 您现在可以试用 GUI 选项和 XML 文件的内容,以查看您的操作产生的影响。

示例 DesignTools.xml 的外观如下:

Script Collection: XML 文件示例

句法#

XML 文件的语法如下:

Script Collection: XML 语法

信息

Make sure you use the same name for the XML file name as in tag <ScriptCollection> of the XML file.

示例:

文件名:

myCollection.xml

XML 文件中的集合名称:

<ScriptCollection name ="myCollection" formatVersion="1.0">.

格式遵循以下约定进行定义:

  • 可选,各个元素包含在方括号 [ ] 中。
  • 允许不存在、出现一次或多次的语法元素包含在花括号 { } 中。
  • 语法 (..|..) 表示可以指定所提供的元素之一。
  • 参数值以斜体大写字母表示。

The Tags <Scope> and <Toolbar>#

<Scope>:

Use the tag <Scope>, if you want to limit the command to a specific design element in the design.

这是一个可选标签,仅当您将命令模式设置为 Trigger. You can define <Scope> multiple times to specify multiple scopes. The tag isn't allowed when Command mode 参数 DragAndDrop.

可以使用如下选项:

  • Module:您必须选择且仅选择一个模块来启动此命令。
  • Link:您必须选择且仅选择一个链路来启动此命令。
  • CommentBox:您必须选择且仅选择一个注释框来启动此命令。
  • SimModule:您必须选择且仅选择一个仿真模块来启动此命令。
  • SingleSelect:您必须选择且仅选择一个设计元素来启动此命令。您选择哪种元素(模块、链路等)并不重要。
  • MultiSelect:您必须选择两个或更多设计元素来启动此命令。您选择哪种元素(模块、链路等)并不重要。

您可以组合使用这些选项:例如,如果您组合使用 Module 和 Link 选项,只要您选择正好一个模块或者正好一个链路,就会执行该命令。组合使用 SingleSelect 和 MultiSelect 允许在选择了一个或多个设计元素时启动命令。

如果您尝试执行未选择定义为命令作用域的设计元素的命令,将弹出 Invalid Scope 消息:

无效作用域

<Toolbar>:

可选标签,仅当您设置 Command mode 变为 Trigger时允许使用。如果包含该标签,则该命令将添加到集合的工具栏中。当出现以下情况时,该标签不允许使用: Command mode 参数 DragAndDrop.

参数#

您必须将以下值写入上图中以斜体显示的参数:

  • COL_NAME:脚本集合的名称。
  • COL_PNG_FILE_PATH:脚本集的图标文件路径(PNG 格式,详见文件要求)。请指定相对于 XML 文件的路径。
  • COL_TOOLTIP_TEXT:显示为描述脚本集合的工具提示的文本。
  • CMD_NAME:命令名称。
  • CMD_TOOLTIP_TEXT:显示为描述命令的工具提示的文本。
  • CMD_VERSION:以 MAJOR.MINOR 格式表示的命令版本(例如 1.0)
  • TCL_FILE_PATH:包含在执行命令时要调用的过程的 Tcl 脚本的路径。指定相对于 XML 文件的路径。
  • CMD_PNG_FILE_PATH:命令的图标文件(PNG 格式,详见文件要求)。请指定相对于 XML 文件的路径。
  • CMD_CALL:Tcl 脚本中由命令调用的过程的名称(或整个 Tcl 过程)。
  • CMD_PARAM:在命令调用时由实际值替换的参数名称(实参)。仅指定在以下内容中定义的参数名称 tags。
  • PAR_NAME:参数名称。
  • PAR_RANGE_FROM:值范围的起点(仅适用于 int 或 double 数据类型)。
  • PAR_RANGE_TO:值范围的终点(仅适用于 int 或 double 数据类型)。
  • PAR_RANGE_INC:值范围内的步长(仅适用于 int 或 double 数据类型)。
  • PAR_VALUE:参数的默认值。

将脚本集合加载到 GUI 中#

对于通过 GUI 创建的每个脚本集,都会在您在设置 (Settings) → 系统设置 (System Settings) → 路径 (Path) 下指定的目录中写入一个 XML 文件。如果您将新的描述脚本集的 XML 文件添加到该目录,或编辑其中存储的现有 XML 文件,您可以使您的更改在 VisualApplets GUI 中可见。要显示您的更改而无需重新启动 VisualApplets,请右键单击脚本集 (Script Collection) 窗格,然后选择重新扫描脚本集目录 (Rescan Script Collection Directory)。

Script Collection:重新扫描脚本集合目录