Working with the Query Language

Altium Training

Altium Essentials: PCB Global Editing and List Panel

This content is part of the official Altium Professional Training Program. For full courses, materials and certification, visit Altium Training.

什么是查询?

在进行复杂的电子设计时,最大的挑战之一就是管理大量的设计对象。从原理图页上的元件、网络标号和文本字符串,到构成 PCB 布线的数百个元件和 走线,你都需要能够访问、检查并编辑这些对象。 和大多数 Windows 应用程序一样,你可以双击某个对象并编辑其属性。对于单个对象这没问题,但如果你需要编辑 300+ 个元件位号字符串,或更改 PCB 上的 所有过孔,这就不是你想采用的方式了。对于这类更新,你需要能够同时访问多个对象。 

Altium Designer 的原理图与 PCB 编辑器底层内置了强大的查询引擎。通过向该引擎输入查询,你可以筛选并精确找到需要编辑的对象。

Altium Designer 强大的数据筛选与编辑系统允许你指示软件返回一组指定的对象。这种指示以查询的形式输入。查询是你使用特定关键字与语法输入的一段字符串,它会返回目标对象。至于你要对这些对象做什么,则由你决定。你可能想高亮它们并将其他所有对象变暗,或者你想浏览或排序它们的属性,并修改它们共同具备的某些特定属性。

你可以在多个位置应用查询,但核心位置是下图所示的 Filter 面板。按 F12 可显示/隐藏 Filter 面板。

带查询功能的 PCB Filter 和 SCH Filter 面板带查询功能的 PCB FilterSCH Filter 面板

带查询功能的 PCBLIB Filter 和 SCHLIB Filter 面板
带查询功能的 PCBLIB FilterSCHLIB Filter 面板

面板中的控件用于定义查询将应用到哪些对象,以及如何处理通过查询的对象和未通过查询的对象。

请记住,History(历史)列表的内容对 SCH Filter SCHLIB Filter panel 是通用的(并且可从两者中任一处填充)。某些查询表达式在原理图编辑器中使用时可能不会返回结果,尤其是当它们被创建用于定位仅在原理图库编辑器中才可用的对象时。

说明

常规

  • 按下 F12 键将切换该面板在工作区中的可见性。
  • 使用 Query Helper 对话框构建查询时,在已输入的关键字内单击,或在可用列表中的某个关键字上单击,然后按下 F1  将打开该关键字的帮助。类似的关键字级帮助也可通过在 SCH Filter 面板中央区域的某个关键字内单击,然后按下 F1 来访问。
  • 根据面板的形状和大小,内容会动态地以水平或垂直方式排列。

构建查询表达式时

  • 强烈建议在任何可能导致查询被错误解释的情况下都使用括号。
  • 在为各类运算符定义的优先级顺序中,括号具有最高优先级;该顺序决定了在你未提供括号时软件如何解释查询。其优先级顺序如下:
      Brackets
      Not
      ^, *, /, Div, Mod, And
      +, -, Or, Xor
      =, <>, <, >, <=, >=
      &&, ||
    该优先级顺序与 Pascal 类语言类似;尽量多用括号可以消除歧义,并使生成的查询更便于他人阅读。
  • 歧义通过从左到右的方式来解析。
  • 圆括号从内到外进行求值,同一层级按从左到右处理。
  • 由于对“通过过滤”和“未通过过滤”的对象显示选项是分开的,你可以有效地应用新的过滤查询,在先前过滤结果的基础上继续构建。
  • SCH Filter 面板使用 Queries(查询)时所应用的过滤是永久性的。当对未通过过滤的设计对象进行遮罩时,遮罩程度由面板底部的滑块控制。 
  • 永久过滤必须通过从 SCH Filter 面板应用一个空查询来清除。
使用 F12 快捷键。

面板可以配置为在编辑器空间中浮动,或停靠在屏幕两侧。如果 PCBLIB Filter 面板当前位于某个面板组中,请使用位于面板底部的 PCBLIB Filter 选项卡将其置于最前。

面板分区

PCBLIB Filter 面板由三个区域组成。前两个是可选择的列表区域,共同定义过滤的范围:Object Layer。第三个区域 Filter 显示根据当前所选对象和层生成的查询。

构建简单过滤表达式

面板的主要区域提供控件,用于快速构建面向任意对象组合的简单过滤表达式。对象类型以“对象矩阵”的形式排列,并按网络对象(Net)、元件对象(Comp)或自由对象(Free)分类。以下核心对象列表在这三个组中都会重复出现:

  • Track
  • Arc
  • Via
  • Pad
  • Fill
  • Region

Text 对象可作为 Comp Free 分组的一部分使用;但由于该对象类型不具备网络感知能力,因此不属于 Net 分组。此外,Free 分组还包括 ComponentComponentBodyRoomPolygon

例如,如果将它们设置为“Components”和“Top Layer”,则板视图会高亮显示顶层元件。两个面板分区中的选择代表多阶段过滤操作的累积效果,可用于快速高亮任意类型的设计对象。

列的顺序可自定义。单击某列的表头并水平拖动到所需的新位置。有效位置会以绿色位置箭头高亮显示。

要在构建过滤表达式时使用某个对象(即按该对象进行过滤),请在对象矩阵中启用与该对象关联的相应复选框。该区域的右键上下文菜单提供命令,可分别快速全选/全不选矩阵中的所有条目,或切换矩阵中所有复选框的状态。

单击某个对象的名称条目,会使矩阵中与其关联的所有复选框被选中;再次单击则会全部取消选中。或者,在对象名称列或某个特定分组列中单击并拖动,可一次性选中/取消选中多个条目。注意:以这种方式选择时,如果包含至少一个未选中的复选框,则未选中的会变为选中,而原本已选中的仍保持选中;但如果 all 复选框原本已选中,则结果会取消选中本次选择涉及的所有复选框。

使用 Layer 区域将过滤限制到特定层、多个层或某一类层。所列条目反映:

  • 为该板定义的层类,默认包括:
    • <All Layers>
    • <Component Layers>
    • <Electrical Layers>
    • <Signal Layers>
  • 层叠(Layer Stack)中定义的各层(如 Layer Stack 中所示)。
  • 顶层与底层的焊膏阻焊层(paste mask layers)。
可通过切换每个所需层对应的复选框,将多个层纳入过滤范围。
如果通过 Object Class Explorer 对话框定义了额外的层类,或更改了用户自定义的层类名称,Layer 区域将自动更新;它也会更新以反映层叠中各层的任何变化。
层类不会显示在 Layer 区域中。

当你进行过滤选择时,生成的查询表达式会动态构建,并显示在面板的 Filter 区域中。按需定义好过滤查询表达式后,还需要单独执行“应用”操作。为此,请单击面板底部的 Apply to All  按钮。或者,如果你只需要将其应用到工作区中当前已选中的对象,请使用 Apply to Selected 按钮。

通过过滤的对象数量(即工作区中仍保持显示的数量)会在面板左下角显示。如果当前未应用任何过滤,则会显示为 Not filtered

应用过滤

PCB 库元件由原始对象类型(Arc、Pad、Track 等)组成,并分布在不同的板层上。这些对象要么是“自由”的,要么“归属”于某个组对象。注意:在 Object  区域中选择 Free 将只会高亮显示那些不属于任何组对象的对象。

过滤会应用于活动 PCB 库中的所有元件。

按对象过滤

在面板的 Object 列表中的选择会过滤板视图,以显示原始设计对象。除非被 Layer 过滤列表中的设置所修改,否则所有对象都会被高亮显示。

示例板如图所示,在 Object 下选择了 Track 和 Arc。Layer  设置为 Top Overlay。
示例板如图所示,在 Object 下选择了 TrackArcLayer 设置为 Top Overlay

按层过滤

在面板的 Layers 列表中的选择会过滤板视图,以显示位于指定物理设计层(信号层、阻焊层与丝印层)上的对象。除非被 Object 过滤列表中的设置所修改,否则所有有效的层对象都会被高亮显示。

示例板如图所示,Object  设置为 Pad. Layer ,Top Layer 设置为 Top Layer。
示例板如图所示,Object 设置为 Pad. Layer Top Layer 设置为 Top Layer

若只过滤当前层上的对象,请选择 <Active Layer> 条目。

选择已过滤对象

PCBLIB Filter 面板提供的综合过滤操作有助于查看并选择感兴趣的板级设计对象。

只有被高亮(已过滤)的对象可被选择,从而更容易定位、编辑并查找该对象的信息。

清除过滤

使用面板的 Clear  按钮清除当前应用的过滤。

注意:应用到工作区的过滤是持久的,必须显式重置,或通过其他类型的选择机制(例如 PCB panel)来覆盖。

设置可视化过滤

工作区中文档应用过滤后的可视化结果由一系列高亮控制决定。在编辑器视图中施加的效果可设置为 NormalMaskDim;在实际使用中,Mask 的高亮效果最明显。

Normal / Mask / Dim 下拉列表提供选项,用于在工作区中对已过滤与未过滤对象进行可视化对比。

使用遮罩模式下拉列表选择所应用的可视化过滤类型。
使用遮罩模式下拉列表选择所应用的可视化过滤类型。

各遮罩模式的可视化高亮效果如下:

  • Normal - 已过滤对象在工作区中可见,未过滤对象的外观保持不变。
  • Mask - 已过滤对象在工作区中高亮显示,其余所有对象变为单色显示。
  • Dim - 已过滤对象在工作区中高亮显示,其余所有对象保留原有颜色但会被加深/变暗处理。

定义过滤查询

面板的中央区域允许你通过输入逻辑查询来构建过滤器。

你可以直接在字段中键入查询;在输入过程中,会出现可能关键字的提示列表以供辅助。

有两项功能可辅助创建查询——Query Helper 和 Query Builder。如果你不确定查询语法或可能需要使用的关键字,这些工具会非常有用。

Query Helper

要使用 Query Helper,请单击 Helper 按钮打开 Query Helper 对话框。底层的 Query Engine 会分析文档并列出所有可用对象,以及可用于查询的通用关键字。

使用对话框顶部区域,利用可用的 PCB FunctionsPCB Object ListsSystem Functions 组合查询表达式。对话框中部区域提供一系列运算符,用于构建表达式。使用 Check Syntax 按钮验证表达式在语法上是否正确。

当查询表达式按需定义完成后,单击 OK 将查询加载到 PCBLIB Filter 面板的中央区域,以便应用过滤。

Query Builder

要使用 Query Builder,请单击 PCBLIB Filter 面板的 Builder 按钮打开 Building Query from Board 对话框。

该对话框允许你通过简单构建一串以 AND 和/或 OR 连接的条件,创建用于定位设计文档中特定对象的查询。

对话框左侧用于指定定位所需对象集合的条件。初始时,Condition Type/Operator 列中的条目为 Add first condition。单击该条目一次以打开条件类型的下拉列表。

所列条件类型只会反映与板级设计相关的内容。

选择条件后,单击 Condition Value 列以访问该条件类型的可能取值下拉列表。当你在对话框左侧定义条件时,右侧会显示当前构建的查询预览。

根据需要继续添加更多条件,以进一步缩小目标设计对象集合。条件之间可以使用 AND 或 OR 进行组合。默认逻辑运算符为 AND,当你添加另一个条件时会自动插入该运算符。

要更改条件之间的逻辑运算符,请在 Condition Type/Operator 列中单击 AND 或 OR 项,然后选择所需的运算符。查询预览将相应更新。

指定优先级

Building Query from Board 对话框顶部的 按钮,可在当前选中的条件周围添加或移除括号(增加或减少缩进)。这使你能够为某些逻辑 AND 或逻辑 OR 的条件创建优先级。

第一个条件已设置为条件类型 Exists on Layer ,其值为 Top Layer。随后又添加了另一个条件,使用条件类型 Object Kind is ,其值为 Arc

请注意,最外层的括号配对会由 Builder  自动添加,并且在构建查询表达式时不会显示。

在此阶段,对话框中选中了第二个条件,并单击了右箭头按钮。系统会自动在第二个条件周围添加括号,并且现在可以在这对括号内添加条件。

随后在括号内添加第三个条件,其条件类型为 In Any Polygon 。

使用对话框左上角的 Show All Levels 下拉菜单来控制结构化条件字符串中各层级的可视化显示。这本质上是展开/折叠括号显示。添加括号会有效创建一个新层级。你可以显示 1-5 级,但对于新增的更深层级,请使用 Show All Levels 选项。

或者,单击带括号条件旁的展开或收缩符号,分别用于显示下一层级或隐藏当前层级(以及其下所有层级)。对话框顶部的   和   按钮也可用于展开或折叠当前选中的条件。

使用对话框顶部的 按钮来移动正在构建的查询字符串中的某个已选条件。对于包含子层级的条件(即带括号的条件),层级结构中的任何条件都可以移动。展开层级时,条件可以在各层级间向上或向下移动;折叠层级时,条件会跨越该层级结构进行移动。

要删除某个条件,请选中它,然后单击对话框顶部的   按钮,或使用 Delete 键。

当按需定义好查询表达式后,单击 OK 将查询加载到 PCBLIB Filter 面板的中央区域,以便应用过滤器。

创建设计规则

PCBLIB Filter 面板也提供创建设计规则的功能。其作用域将使用面板中央区域中当前定义的查询表达式。

要添加新的设计规则,请单击 PCBLIB Filter 面板的 Create Rule 按钮。将打开 Choose Design Rule Type 对话框。

该对话框列出了 PCB 文档中可用的各个规则类别和规则类型。选择要创建的规则类型,然后单击 OK(或直接双击该条目)。将打开 PCB Rules and Constraints Editor 对话框。

新创建的规则名称会在左侧导航树中以选中状态显示。规则查询表达式位于对话框右上方面板中。

系统会创建所选类型的规则,并显示该规则的主编辑窗口,供你定义具体约束。来自 PCBLIB Filter 面板的查询表达式会被填入对话框的 Full Query 区域。根据需要细化规则配置设置,并应用新规则。

应用与清除过滤器

当你已按需定义查询并在面板中设置好选项后,可以通过单击面板的 Apply 按钮或按下 Enter 来应用过滤器。

要在面板内清除当前已应用的过滤器,请清空(选中并删除)面板中央区域中的查询表达式,然后单击 Apply 按钮或按下 Enter。设计工作区中的所有对象将恢复为完全可见,并可用于选择/编辑。

右键菜单

PCBLIB Filter 面板内右键单击,可通过弹出菜单访问更多选项和命令。

在面板的 Object Layer 区域右键单击,会打开以下上下文菜单选项:

  • Toggle Check - 启用以切换选项。当前已选选项将被取消选择,而未选选项将被选中。
  • Check All - 启用以选择所有可用选项。
  • Uncheck All - 启用以取消选择所有可用选项。

说明

常规

  • 按下 F12 键将切换面板在工作区中的可见性。
  • Query Builder(Building Query from Board 对话框)提供了一种简单方法,可使用具备上下文敏感性的条件类型和值来构建查询,从而只允许你使用相关的“构建块”进行搭建。对于需要完整关键字定义与运算符语法的高级查询构建,请使用 Query Helper 对话框。
  • 由于对“通过过滤器的对象”和“未通过过滤器的对象”的显示选项是分开的,你可以有效地应用新的过滤查询,以在先前过滤结果的基础上继续筛选。

在构建查询表达式时

  • 强烈建议在任何可能导致查询被错误解释的情况下使用括号。 在为各类运算符定义的优先级顺序中,括号具有最高优先级;该顺序决定了软件如何解释查询(当用户未提供括号时)。该优先级顺序如下:
      Brackets
      Not
      ^, *, /, Div, Mod, And
      +, -, Or, Xor
      =, <>, <, >, <=, >=
      &&, ||
  • 该优先级顺序类似于 Pascal 类语言中使用的规则。不过,充分使用括号可以消除歧义,并使生成的查询更便于他人阅读。
  • 歧义通过从左到右的方式来解决。
括号从内到外进行求值,同一层级按从左到右执行。

查询语言也用于 PCB Rules and Constraints Editor 对话框中,以定义设计规则的作用域(更多信息请参阅 Defining, Scoping & Managing PCB Design Rules 页面)。请注意,设计规则所作用的对象集合不仅取决于查询,还取决于规则类型(例如,Width 规则只作用于走线,Routing Via Style 规则只作用于过孔等),因此在 Filter 面板与规则作用域中使用相同查询表达式时,高亮/作用域对象的结果可能不同。

查询结果在哪里?

现在你已经在 Filter panel 中编写了查询,那么如何访问查询返回的对象?在 Altium Designer 环境中,有两种方式可以访问并编辑这些对象。

  • 图形方式 - 应用过滤器后,默认行为是对未通过查询的所有对象进行遮罩(淡化并设为不可编辑),仅保留通过查询的对象。该模式非常适合在工作区中定位和检查对象。由于被遮罩的对象不可编辑,像 Ctrl+A(全选)这样的命令只会作用于查询返回的对象。

  • List panel - List panel(Shift+F12)以类似电子表格的方式查看设计数据。默认情况下它显示所有设计对象,但一旦应用过滤器,就只显示查询返回的对象。List panel 具备标准的表格式排序与选择行为,允许你直接编辑单个或多个单元格。 

PCB List 面板和 SCH List panel 显示上一节中 PSB/SCH 查询的结果。

高亮选项

每当应用查询(或以其他方式使用数据过滤功能)时,目标文档中的每个对象都会成为该过滤操作结果的一部分。然而,结果中的对象以及不在结果中的对象随后如何显示,取决于在 Filter panel 中选择的高亮选项。共有三种不同的高亮选项,并且这些选项彼此完全独立,因此你可以选择其中一个、两个或全部。

缩放

当应用查询时启用 Zoom 选项,目标文档的视图会更新为显示结果中所有对象所占据的区域。更新后的视图中,其余对象是否显示取决于它们相对于该区域的位置,因此这些对象可能会完全显示、部分显示,或完全不显示。

此选项通常会与其他一个或两个选项配合选择。 如果未启用 Mask 选项,那么不在结果中的对象只要位于更新后的边界内,仍会在图形视图中显示。乍一看,单独选择此选项似乎没有意义,但有时你可能希望更新图形视图,使其包含特定对象,同时又不改变文档中任何对象的选中状态或屏蔽状态。

选择

当启用 Select 选项时,结果中的所有对象都将处于选中状态,而其余对象均为未选中状态。选中对象会以比未选中对象更醒目的方式显示。

如果在应用当前查询时选择了 Select 选项,则结果集中的所有对象随后都会获得选中状态,而其余所有对象(不属于结果集的对象)则会获得未选中状态。该选项通常会在全局编辑操作之前选择,因为当时只有当前被选中的对象其属性才会被更新。但在其他场景下 Select 选项也很有用,例如需要移动、复制或删除特定对象时。

屏蔽

Mask 高亮选项用于决定目标文档中对象更新后的“屏蔽(masked)”属性。选中后,结果中的所有对象都会被屏蔽,而其余对象将取消屏蔽。屏蔽对象的主要特性是:对象及其属性无法被编辑。(屏蔽对象在列表视图中会以变暗方式显示,但除非在 List 面板中当前选中了 all objects 选项,否则它们不会显示在列表视图中。)屏蔽对象的主要特性是:对象及其属性无法被编辑。

Query Builder

PCB 编辑器包含一个专用的 Query Builder 对话框。该对话框允许你通过从下拉列表中选择测试条件来构建复杂查询。Query Builder 的一个优势是,它让你能够创建一个可针对不同类型对象的查询。

“Building Query”对话框(属于“Query Builder”功能的一部分)可帮助不太熟悉查询编写的用户;系统会自动生成一个查询,其内容与设计者指定的条件相对应。

该对话框左侧区域包含一些控件,用于帮助设计者指定:文档中的每个对象需要满足哪些属性条件,才会被此对话框生成的查询返回。每当这些条件被指定或编辑时,相应查询的内容都会更新,并显示在对话框右侧区域。如果随后通过点击 OK(或 Apply)按钮关闭该对话框,则会应用关联的查询,或将其内容复制回 Filter 面板(取决于最初是以何种方式调用该对话框)。

Query Builder 对话框可从以下位置启动(如下图所示):

  • PCB Filter 面板中,点击 Query Builder 按钮以构建查询并将字符串加载到该面板中。
  • PCB Rules and Constraints Editor dialog 中,点击 Builder 按钮以构建一个查询,用于定义该规则适用于哪些对象。 

当从 PCB Rules and Constraints Editor 对话框访问 Query Builder 对话框时,它将仅显示适用于该规则类型的选项。

下图显示了使用 Query Builder 对话框创建一个查询,该查询同时针对 5V 网络上的焊盘(pads)和过孔(vias)。

Query Builder 对话框
Query Builder 对话框

  • 根据需要添加更多条件,以进一步缩小目标设计对象集合。条件之间可以用 AND 或 OR 连接。默认逻辑运算符为 AND。
  • 要更改条件之间的逻辑运算符,请在 Condition Type/Operator  列中点击 AND 或 OR 条目,然后选择所需运算符。查询预览将相应更新。
  • Query Builder 对话框(Building Query from Board )是一种更简单的查询构建方式,它使用“敏感”的条件类型和值,只允许你用相关的“构建块”来搭建查询。若要进行高级查询构建(可完整指定关键字与运算符语法),请使用 Query Helper 对话框。
  • 你可以在任何时候通过点击 Condition Type/Operator  列中该条件对应的条目,并从下拉列表的可用条目中选择所需的新条件,来调整查询字符串中的任意条件。查询预览将相应更新。
  • 使用 Ctrl+Up ArrowCtrl+Down Arrow  键盘快捷键,将选中的条件条目在结构中上移或下移。 
  • 使用 Ctrl+Right ArrowCtrl+Left Arrow  键盘快捷键,在结构中对选中位置增加或减少缩进(添加/移除括号)。

Query Helper

提升查询编写技能的下一步是使用 Query Helper 对话框。Query Helper 对话框包含一个 Query 框,你可以在其中输入所需查询,同时也可以使用 Query 字段下方的语法按钮(例如 AndOr<Not、  Like 等),以及 Categories 字段中列出的全部查询关键字列表。

“Query Helper”对话框为希望自行编写查询的设计者提供帮助。列表中的每个关键字都提供了简要说明;当某个关键字被高亮时,按 F1 键即可访问在线帮助。这将调用 Altium Designer Documentation Library 对话框,其中会详细说明:文档中哪些对象会被该高亮关键字返回、如何使用该关键字,以及一个或多个用法示例。

可通过以下方式访问该对话框:

  • 点击 Filter 面板中的 Helper 按钮。

PCB Filter 面板访问

SCH Filter 面板访问

File-based Libraries Search 对话框中点击 Advanced 后,Helper 按钮可用。

File-based Libraries Search对话框访问File-based Libraries Search对话框访问

使用对话框顶部的 Query 区域,利用可用的函数来编写查询表达式。在文本框中,您可以查看和/或进一步编辑搜索表达式。直接在文本框中键入即可编辑搜索表达式。若要搜索并添加特定关键字,请开始输入。在您输入时,对话框会提供一个下拉菜单,列出与您目前已输入文本相匹配的可用关键字。单击某个关键字可自动补全您的选择。如果所需关键字已高亮,按下 Enter  也会自动补全您的选择。

浏览可用关键字的 Categories ,找到您需要的那个。如果您不确定确切的关键字是什么,请使用 Mask 字段。例如,在原理图编辑器的 Query Helper 中,在 Mask 字段输入 *har 将会找到专门适用于线束(harness)的关键字,如下图所示。请注意,Mask 字段同时作用于关键字 Name 字段和 Description 字段,因此它可能是查找潜在关键字的最快方式。

当某个关键字被高亮,或光标位于您已输入的某个关键字内时,如果按下 F1,将会打开该关键字的文档。这是学习每个查询关键字基本行为的最有价值资源。

在网格中双击某个关键字,可将其添加到当前光标位置的查询中。

对话框中部区域包含语法按钮,提供一系列在构建表达式时可用的运算符。关于每个语法按钮的具体功能,请参阅下方的 Logical Query Expression Operators 章节。使用 Check Syntax 按钮(对话框左下角)可验证表达式在语法上是否正确。

历史查询

当您从过滤面板(SCH Filter SCHLIB FilterPCB Filter PCBLIB Filter)输入并应用一个新查询时,它会被添加到查询历史列表中。单击面板上的 History 按钮可访问该列表。Expression Manager 对话框会打开,并默认激活 History 选项卡。

Expression Manager 对话框的 History  选项卡提供过去使用过的查询表达式列表。此处展示了原理图(Schematic)的历史查询示例。将鼠标悬停在图像上,可查看 PCB 的类似示例列表。Expression Manager 对话框的 History  选项卡提供过去使用过的查询表达式列表。此处展示了原理图(Schematic)的历史查询示例。将鼠标悬停在图像上,可查看 PCB 的类似示例列表。

要使用列表中的历史查询,可选择其条目并单击 Apply Expression 按钮,或直接双击该条目。对话框将关闭,并把该查询的表达式加载到相应过滤面板的中央区域。

通过选择历史查询条目并单击 Add To Favorites 按钮,可将历史查询添加到收藏查询列表中。如果您想“清空”历史列表,请使用 Clear History 按钮。

历史列表中最近使用的最多九条查询表达式,可通过过滤面板右键 History 子菜单直接使用。

请注意,History 列表的内容在同一设计域内的过滤面板之间是通用的(并可从中访问)(原理图编辑域中的 SCH Filter / SCHLIB Filter ;PCB 编辑域中的 PCB Filter PCBLIB Filter)。某些查询表达式在原理图编辑器中使用时可能不会返回结果,尤其是当它们被创建用于定位仅在原理图库编辑器中才可用的对象时。

收藏查询

任何已定义的查询都可以通过两种方式添加到收藏查询列表中:

  • 单击 Add To Favorites 按钮,或在主 Query Expression  区域右键并从上下文菜单中选择 Add to Favorites  命令,以添加当前在活动过滤面板中央区域中定义的查询表达式。
  • Expression Manager 对话框的 History 选项卡中选择一条历史查询条目,然后单击 Add To Favorites 按钮。

收藏查询表达式存储在 Expression Manager 对话框的 Favorites 选项卡中,并在此处进行管理。可通过过滤面板上的 Favorites 按钮(SCH Filter SCHLIB FilterPCB Filter PCBLIB Filter)访问;也可在过滤面板主 Query Expression  区域右键,并从上下文菜单中选择 Organize Favorites  命令访问。在设计空间中,可使用 Y 快捷键,然后从弹出的过滤菜单中选择 Organize Favorites  来打开该对话框。

可通过编辑器的过滤面板或设计空间中的过滤弹出菜单,访问您的收藏查询列表。可通过编辑器的过滤面板或设计空间中的过滤弹出菜单,访问您的收藏查询列表。

当某个查询表达式被添加到 Favorites 列表时,会为其分配一个唯一名称。默认情况下会分配一个通用名称——Favorite_n——其中 n 是下一个可用的未使用编号。条目的名称可在任何阶段通过以下任一方法更改:

  • 选择查询条目,然后单击 Rename 按钮。
  • 选择查询条目,然后从右键菜单中选择 Edit  命令。
  • 选择查询条目,然后在 Name 字段内再次单击。

在每种情况下,根据需要输入新名称,然后在 Name 字段外单击以使更改生效。

要编辑某个收藏查询表达式,请在列表中选择其条目,然后单击 Edit 按钮(或右键并从上下文菜单中选择 Edit )。Edit Favorite 对话框将打开。使用该对话框可修改收藏项名称、更改表达式本身,并确定如何处理设计对象(包括通过过滤的对象和未通过过滤的对象)。

使用 Edit Favorite 对话框修改现有收藏查询,此处分别展示原理图(左)与 PCB(右)。使用 Edit Favorite 对话框修改现有收藏查询,此处分别展示原理图(左)与 PCB(右)。

要从 Favorites 列表中移除某个查询,请在列表中选择其条目,然后单击 Remove 按钮,或从右键菜单中选择 Remove 命令。将出现一个对话框,要求确认移除操作。

请注意,Favorites  列表的内容在同一设计域内的过滤面板之间是通用的(并可从中访问)(原理图编辑域中的 SCH Filter / SCHLIB Filter ;PCB 编辑域中的 PCB Filter PCBLIB Filter)。某些查询表达式在原理图编辑器中使用时可能不会返回结果,尤其是当它们被创建用于定位仅在原理图库编辑器中才可用的对象时。

使用收藏查询

使用收藏查询有三种方式:

  1. Expression Manager 对话框的 Favorites 选项卡中——选择其条目并单击 Apply Expression 按钮,或双击该条目。对话框将关闭,并把该查询的表达式加载到相应过滤面板的中央区域。

  2. 从过滤面板右键菜单的顶部使用(最多提供最近添加到 Favorites 列表的十条查询表达式)。

  3. 从设计空间的过滤弹出菜单使用(按下 Y)——菜单顶部会列出最多十条收藏查询表达式。所选查询表达式将被加载到相应过滤面板的中央区域。

您还可以通过自定义 Filter 菜单,为某个收藏项定义快捷键。有关自定义 Altium Designer 环境的更多信息,请参阅 Configuring and Customizing Altium Designer

使用预置示例

原理图与 PCB 编辑器都提供一组预置的示例查询。这些示例可从过滤菜单中获取——可通过在过滤面板的表达式区域右键访问,或在设计空间中使用 Y 快捷键访问。将鼠标悬停在 Examples 上可查看子菜单。

当您在子菜单中选择某个条目时,将应用该过滤器背后的查询。要查看某个示例背后的实际查询,请在应用后查看 History 列表。您也可以在过滤弹出菜单中访问该列表。

要清除过滤,在设计空间中按下 Shift+C ,或在设计空间中右键并从上下文菜单中选择 Clear Filter 命令。

查询构建工具

也许编写查询最简单的方法,就是让 Altium Designer 帮您生成!您可以使用 Find Similar Objects 对话框或 Query Builder  对话框来实现。

查找相似对象对话框

当您使用 Find Similar Objects dialog 时,它会生成一个查询来查找所需对象。如果启用了 Create Expression 选项,该查询将显示在 Filter 面板中。这是学习不同查询关键字的极佳方法。

当您在设计文档中右键单击任意未被遮罩(unmasked)的对象,然后从上下文菜单中选择 Find Similar Objects 时,将打开 Find Similar Objects 对话框。

左图:PCB 版本;右图:SCH 版本左图:PCB 版本;右图:SCH 版本

此对话框允许你查找与所右键单击对象相似的对象,然后定义该对象的哪些属性在匹配时必须相同(或不同)。假设你想更改设计中的所有 GND 焊盘。你可以在其中一个焊盘上右键单击,选择 Find Similar Objects,然后将 Net 字段从 Any(默认设置)更改为 Same。当你在对话框中单击 Apply 时,所有 GND 焊盘都会被选中。如果启用了 Create Expression 选项,则以下查询将显示在 Filter 面板中:(ObjectKind = 'Pad') And (Net = 'GND').

作为原理图中的示例,你可以将文档内所有具有特定 Text 属性(例如“GND”)的 Power Objects 的 Color 属性更改为相同的值。再例如,在 PCB 中,你可以将文档内所有具有特定 Via Diameter 属性的过孔的 Hole Size 属性更改为相同的值。

有关使用 Find Similar Objects 对话框的更多信息,请参阅 Using Find Similar Objects Tools

清除现有选项

启用 Clear Existing 选项可在应用搜索之前清除任何现有选择或编辑掩膜。如果你正在执行连续搜索并希望结果累积,请禁用此选项。

过滤器工具栏

Filter Toolbar 适用于 PCB 文档,可将文档中除具有指定属性的对象之外的所有对象进行掩膜,或仅保留属于指定元件的对象。工具栏最右侧的字段用于指定查询内容。你可以在该字段中输入查询,也可以使用下拉列表从最近的查询(存在于查询 History  列表中的查询)中选择。通过 Filter Toolbar 应用查询时无法指定使用哪些选项;在所有情况下,都会清除之前的查询,然后对当前查询使用 Mask 和 Zoom 选项。要使用查询选项,请使用 Filter 面板、Query Builder 对话框、Query Helper 对话框或 Find Similar Objects 对话框。

  • 如果电路板尚未布线,则在应用过滤器时,与所选网络相关的逻辑连接将变为可见。如果电路板已布线,则在应用过滤器时,与所选网络相关的已布线走线将变为可见。
  • 应用掩膜后,所有不在过滤范围内的对象将无法被选择/编辑。可在 View Configuration panelView Options 选项卡中 Mask and Dim Settings 区域访问的 Masked Objects 滑块条,手动调整掩膜的程度。
  • 你可以随时使用 Shift+C 键盘快捷键,或单击 Filter 工具栏上的 按钮,手动清除现有(且已应用的)过滤器。

逻辑查询表达式运算符

下面汇总了在使用查询语言定义逻辑查询表达式时可用的运算符。

算术运算符

运算符 说明 示例
+ 加法运算符 NetPinCount + NetViaCount
- 减法运算符 ArcStopAngle - ArcStartAngle
* 乘法运算符 PadXSize_BottomLayer * PadYSize_BottomLayer
/ 除法运算符 HoleDiameter / ViaDiameter
Div 整除运算符 Color Div 65536
此运算将 Color 除以 65536,并丢弃结果的小数部分
Mod 取模运算符 Color Mod 256
此运算计算 Color 除以 256 的余数,不计算结果的小数部分

逻辑运算符

运算符 说明 示例
And 逻辑与运算符 IsPad And OnMultiLayer
要被返回,对象必须是焊盘,并且位于 Multi-Layer 层
&& 逻辑与运算符
(优先级较低)
IsPad && OnMultiLayer
要被返回,对象必须是焊盘,并且位于 Multi-Layer 层
Or 逻辑或运算符 IsPad Or IsVia
要被返回,对象必须是焊盘或过孔之一
|| 逻辑或运算符
(优先级较低)
IsPad || IsVia
要被返回,对象必须是焊盘或过孔之一
Xor 逻辑异或运算符 OnMultiLayer Xor (HoleDiameter <> 0)
要被返回,对象要么位于 Multi-Layer 层且其 Hole Diameter 为零,要么不位于 Multi-Layer 层且其 Hole Diameter 不为零。
Not 逻辑非运算符 Not OnMultiLayer
要被返回,对象必须不在 Multi-Layer 层

在 PCB 编辑器中,在查询表达式里使用 Not 运算符来排除特定类型的图元时,请注意:如果这些图元属于组对象的一部分,而表达式并未同时排除这些组对象,则这些图元不会被排除。例如,Not IsPad 查询表达式会返回除自由焊盘对象之外的所有对象,但它会返回可能包含焊盘的元件对象,因此元件中的焊盘会被该表达式返回。此外,焊盘也可能包含在网络中,而网络在 PCB 编辑器中同样被视为组对象。要排除所有焊盘对象,应使用 Not IsPad And Not IsComponent And Not IsNet 查询表达式。

比较运算符

运算符 说明 示例
< 小于运算符 HoleDiameter < 40
要被返回,对象必须具有小于 40 的 Hole Diameter
<= 小于或等于运算符 HoleDiameter <= 40
要被返回,对象必须具有小于或等于 40 的 Hole Diameter
>= 大于或等于运算符 HoleDiameter >= 40
要被返回,对象必须具有大于或等于 40 的 Hole Diameter
> 大于运算符 HoleDiameter > 40
要被返回,对象必须具有大于 40 的 Hole Diameter
<> 不等于运算符 HoleDiameter <> 40
要被返回,对象必须具有不等于 40 的 Hole Diameter
= 等于运算符 HoleDiameter = 40
要被返回,对象必须具有等于 40 的 Hole Diameter
Between...And... 闭区间范围运算符 HoleDiameter Between 30 And 50
要被返回,对象必须具有一个 Hole Diameter,其大于或等于 30,且
小于或等于 50。
Like Like 运算符 Name Like 'ADDR?*'
该运算符返回具有 Name 属性的对象,其关联的(文本)字符串以 ADDR 开头,并且
至少还包含一个字符

通配符字符

通配符字符允许提供不完全精确指定的字符串。这些字符通常与其他字符结合使用,从而提供部分指定的字符串。少数特殊关键字可以接受不完全精确指定的字符串参数,但在大多数情况下,只有当字符串通过 Like 运算符进行比较时,字符串中才可以包含通配符字符。

运算符 说明 示例
? 可被任意类型的单个字符替换 Footprint Like 'DIP1?'
这将返回 Footprint 属性为 DIP10、或 DIP12、或 DIP14 等的对象。
* 可被任意数量的字符替换,每个字符都可以是任意类型 Footprint Like 'SIP*'
这将返回 Footprint 属性为 SIP1、或 SIP12、或 SIP216 等的对象。(任何 Footprint 属性为 SIP 的对象也会被返回,因为“*”也可以被替换为 no 个字符)

布尔字符串

运算符 说明 示例
True 肯定关键字的含义 IsPad = True
要被返回,对象必须是焊盘
False 否定关键字的含义 IsVia = False
要被返回,对象必须不是过孔

圆括号与优先级顺序

了解逻辑查询表达式中运算符的优先级顺序是很有必要的。毕竟,如果不了解这些知识,表达式可能无法定位到所需对象。

在为各种运算符定义的优先级顺序中,圆括号具有最高优先级,该顺序决定了软件如何解释查询(当用户未提供圆括号时)。该顺序从高到低如下:

  1. 圆括号 ()
  2. Not
  3. ^, *, /, Div, Mod, And
  4. +, -, Or, Xor
  5. =, <>, <, >, <=, >=
  6. &&, ||
该优先级顺序类似于 Pascal 类语言。歧义通过从左到右的方式解决。圆括号从内到外求值,同一优先级从左到右求值。
强烈建议在任何可能导致查询无法被正确解释的情况下使用圆括号。充分使用圆括号可以消除疑虑,并使生成的查询更便于他人阅读。

全局系统查询函数

在 Query Helper 对话框中显示的全局系统查询函数
Query Helper 对话框中显示的全局系统查询函数

本节详细介绍 Altium Designer 中原理图、PCB 和库文档里可用的查询语言关键字。若需要查看某个特定查询关键字的帮助,请使用下面的可折叠章节,或在 Query HelperFilter 面板中,或在 PCB 设计规则的 Query 字段中高亮(或点击进入)任意关键字,然后按 F1 以立即跳转到其对应章节。

关于 Altium Designer 中特定编辑器与工具可用的查询语言关键字详情,请参阅以下页面:

算术函数

三角函数

指数与对数函数

聚合函数

系统函数

AI-LocalizedAI 翻译
如您发现任何问题,请选中相关文本/图片,并按 Ctrl + Enter 键向我们提交反馈。
功能可用性

您可使用的功能取决于您所选择的 Altium 解决方案 —— Altium DevelopAltium Agile(Agile Teams 或 Agile Enterprise 版本),或仍在有效订阅期内的 Altium Designer。

如果您在软件中未找到文中提及的功能,请联系 Altium 销售团队了解更多信息。

旧版文档

Altium Designer 文档不再提供版本区分。如果您需要访问 Altium Designer 旧版本的文档,请前往其他安装程序页面的旧版文档部分。

Content