在基于文件的库和数据库元件库中进行元件搜索
Altium Essentials: Schematic Capture
This content is part of the official Altium Professional Training Program. For full courses, materials and certification, visit Altium Training.
概览
- 了解项目库、已安装库和搜索路径库之间的区别,以及它们如何影响 Altium Designer 中元件的可用性。
- 了解在哪里管理可用库、库的搜索顺序,以及为什么某些库设置会影响速度和可靠性。
- 了解基于文件的库和数据库库中的元件搜索方式,包括使用 DbLib 和 SVNDbLib 源时需要注意的事项。
管理可用的数据库库和基于文件的库
在 Altium Designer 中,只能从当前可用的库中放置数据库库元件和基于文件的库元件。这些库包括:
-
Libraries in the current project – 如果某个库属于项目的一部分,则其元件会自动可供在该项目中放置。
-
Installed libraries – 这些库已安装在 Altium Designer 中;其元件可用于任何已打开的项目。
-
Libraries on a defined search path – 也可以定义指向包含多个库的文件夹的搜索路径。由于每次在面板中选择新元件时,都会搜索该搜索路径中的所有文件,因此仅建议对具有简单模型定义的小型库(例如仿真模型库)采用此方法。不建议对复杂模型(例如包含 3D 模型的封装)使用搜索路径。
要管理 可用的数据库库和基于文件的库,可以使用 Libraries Preferences 对话框。单击 Components 面板顶部的
按钮,然后从菜单中选择 Libraries Preferences,即可打开该对话框。
Libraries Preferences 对话框包含三个选项卡。这些选项卡中定义的所有库和模型位置会汇总为可用库列表。当执行需要搜索模型的操作(例如将设计从原理图传输到 PCB 布局)时,软件会按照选项卡的顺序搜索库,并在每个选项卡内 按照库/模型的列出顺序进行搜索。一旦找到正确的模型,搜索过程便会停止。
项目库
当某个项目是软件中的活动项目时,属于该项目的库会列在 Libraries Preferences 对话框的 Project 选项卡中。 项目库的优点是,每当打开项目时,模型/库都会自动可用。缺点是 如果模型/库与设计文件未存储在同一项目文件夹结构中,那么在移动项目文件时,很容易将其遗漏。

Project 选项卡列出了当前 项目中的可用库。
已安装的库
在当前软件安装环境中可用的库和模型 称为已安装的库。它们列在 Libraries Preferences 对话框的 Installed 选项卡中。
已安装的库可以使用绝对路径列出,也可以使用相对于 Library Path Relative To 设置的路径列出。使用相对路径的优点在于,可以在多台 PC 上创建通用的子环境,从而方便地在这些 PC 之间移动设计文件。此外,还可以通过清除 Activated 复选框来暂时停用已安装的库,而无需将其移除。

Installed 选项卡列出了当前 Altium Designer 安装环境中可用的库。
搜索路径
Search Path 选项卡列出了根据 “项目选项”对话框的“搜索路径”选项卡中定义的路径设置找到的库;单击 Paths 按钮即可打开该对话框。每条搜索路径都定义一个文件夹, 如果启用 Recursive 选项,还可以包含子文件夹(添加路径后,可在 Project Options 对话框的 Search Paths 选项卡中找到该选项)。在搜索路径中找到的所有模型文件和库文件都将可用。搜索路径会随项目一起保存。

Search Path 选项卡列出了在已定义的搜索路径中找到的库。
如果搜索路径文件夹中包含大量文件,使用搜索路径检索模型可能会很慢。因此,不建议对 PCB 库采用此方法,因为 PCB 库可能是包含大量封装的大文件。此功能旨在提供一种引用可用仿真模型和信号完整性模型的方法。
浏览数据库元件
将 DbLib/SVNDbLib 添加到可用的基于文件的库列表后,即可在 Components 面板中浏览数据库中的元件。虽然只添加了一个 DbLib/SVNDbLib 文件,但链接数据库中的每个表都会显示为一个独立的库。
面板顶部的下拉列表中将填充以下形式的条目 :
- <LibraryName>.DbLib - <TableName> 或 <LibraryName>.SVNDbLib - <TableName> ----其中,数据库包含多个表
- <LibraryName>.DbLib - <SheetName>$ 或 <LibraryName>.SVNDbLib - <SheetName>$ ----其中,数据库由 Excel 电子表格中的工作表组成。
已加载的 DbLib 示例:一个包含三个表,另一个包含一个表,以及一个包含一个表的 SVNDbLib。
面板中的每个元器件条目都对应数据库中特定表内的一条记录。实际上,在浏览已加载的数据库库时,Components 面板就像一个直接访问数据库的浏览器。符号和模型信息来自数据库相关字段所指向的底层符号库和模型库(同时结合已定义的搜索路径/位置)。
浏览通过数据库库链接的外部数据库中的元器件。
默认情况下,面板的元器件列表区域仅显示 Part Number 和 Library Ref 字段。要显示数据库表中的其他字段,请右键单击该区域,然后从上下文菜单中选择 Select Columns。这将打开 选择列对话框, 您可以在其中启用该表中任意其他字段的显示。
SVN 数据库库所用符号和模型的本地缓存
将 SVNDbLib 文件添加到可用库列表后,版本库中的符号库和模型库会缓存到设计人员计算机上的本地临时文件夹中。当软件中的某项操作需要使用原理图符号或模型时,会从本地缓存中检索该符号或模型。
自动更新缓存
在软件中执行以下任一操作时,缓存中的库都会自动更新为源代码控制版本库中的最新版本:
-
从已安装的 SVNDbLib 文件中放置元器件(通过 元器件面板)。
-
执行设计传输(即更新 PCB)。
-
在原理图编辑器中使用 Tools » Update From Libraries 命令。
-
在 PCB 编辑器中使用 Tools » Update From PCB Libraries 命令。
虽然更新是自动进行的,但可以 通过 Preferences对话框的 数据管理 - SVN 库页面上的 Do not check files more often than xx minutes 选项进行控制。 此选项实质上为本地缓存提供了一个“更新计时器”。如果自上次缓存更新以来已经超过指定时间,则在执行上述任一操作时,缓存会自动更新。如果在此时间间隔内执行操作,则会使用缓存中的现有内容,而这些内容可能比版本库中的内容旧。
手动强制更新缓存
有时,您可能希望强制更新本地缓存,以确保使用的是源代码控制版本库中当前存储的最新库。例如,在准备将设计从原理图传输到 PCB 时。
您可以通过以下任一方式手动强制更新缓存:
- 使用 元器件面板右键菜单中提供的某个 Refresh 命令。
- 从可用库列表中卸载 SVNDbLib 文件,然后重新安装。
在数据库库和基于文件的库中搜索元器件
为了帮助您在基于文件的库(包括已安装和当前未安装的库)以及数据库库中查找元器件,Altium Designer 提供了库搜索功能。
可以使用 Components 面板的 Search 字段,在数据库库和基于文件的库中搜索元器件。输入字符串并按 Enter,即可在当前库的可见元器件参数中的任意位置搜索该字符串。
您可以直接在 Components 面板中执行搜索。
File-based Libraries Search 对话框支持更详细的搜索。单击 Components 面板上的
按钮,然后从菜单中选择 File-based Libraries Search,即可打开该对话框。对话框的上半部分用于定义要搜索的 what;下半部分用于定义搜索的 where。
搜索已安装的库(Available libraries)或硬盘上的库(Libraries on path)。搜索过程可概括如下:
-
通过定义 Filters 来执行搜索,这些条件会应用于根据当前搜索 Scope 设置可搜索的所有库。
-
Scope 包括要搜索的库类型。一次只能搜索一种类型。
-
要启用数据库元器件搜索,请将 Search in 字段设置为 Database Components,并选择所需的 Table。请注意,上方下拉列表中列出的可用 Fields 会随所选表中的列标题而变化。对话框中的其余选项将变为灰色,因为它们不适用于数据库库搜索。
-
Scope 定义要搜索哪些库:软件当前可以访问的库(Available libraries),或某个文件夹中的所有库(Libraries on path)。
-
按路径搜索库时,目标是特定文件夹,也可以 Include Subdirectories。
-
您还可以将 Scope 设置为 Refine last search,以在搜索结果中继续搜索。
-
单击 Clear 可清除已输入的搜索参数。
设置搜索筛选条件
Filters 区域用于定义搜索所用的文本字符串。需要配置以下三个部分:
-
Field – 要搜索的元器件属性。可以是任意元器件或封装属性,包括名称、描述、注释、封装,或已添加到元器件的任意参数。 从下拉列表中选择可用字段,或在文本框中输入字段。
-
Operator – 定义如何判定匹配。当值 equals、contains、starts with 或 ends with 时,即可判定为匹配。请注意,equals 要求字符串完全匹配,因此仅应在您确信搜索字符串正确且完整时使用。
-
Value – 要在所选 Field 中搜索的字符,按所选 Operator 进行匹配。 从下拉列表中选择可用值,或在文本字段中输入值。
默认提供三个筛选约束条件;您可以使用 Add Row 控件再添加最多七行,总计 10 行。 使用 Remove Row 可删除最后添加的筛选约束条件行。 您可以删除未使用的行。
设置搜索范围
主要有两种搜索方式:
-
当前可用的库 – 即 Components 面板顶部下拉列表中显示的库列表。
-
存储在指定文件夹中的库;如果启用了相应选项,还包括其子目录中的库。
搜索将返回属于所定义的 Scope 范围内所有库中,与 Search in 下拉列表(Components/Footprints/3D Models/Database Components)中所选搜索类型相符的所有项目:
- Available libraries - 启用后,仅在可用库中搜索指定的模型类型。
-
Libraries on path - 启用后,在指定文件夹中的可用库中搜索指定的模型类型。选择 Libraries on path 范围选项后,对话框中的 Path 区域将变为可用,您可以在该区域定义路径、包含子目录,并设置库文件掩码,以指定并缩小搜索范围:
- Path - 编辑此字段以定义要搜索库的文件夹,或单击字段末尾的浏览图标以浏览并选择文件夹。
- Include Subdirectories - 如果要在指定路径及其子路径中搜索库,请启用此选项。
-
File Mask - 输入文件掩码字符串,或从下拉列表中选择一个现有的文件掩码。搜索将筛选出与该字符串匹配的文件。您可以在字符串中使用 * (任意字符)通配符。例如,输入 * 可搜索所有文件,输入 M 可搜索所有以字母 M 开头的文件。
例如,如果您想查找某个元件,认为它位于硬盘上特定文件夹中的某个库中,而该库当前未列在 Available File-based Libraries 中,请按如下方式定义搜索:
- 在 Scope 区域中,将 Search in 设置为 Components,然后选择 Libraries on path。
- 在 Path 区域中,将 Path 设置为指向包含要搜索的库文档的文件夹。
- 单击 Search。 搜索过程中,结果将显示在 Components 面板中。
高级搜索模式
库搜索实际上是通过查询执行的。在 File-based Libraries Search 对话框中,切换到 Advanced 模式以查看查询。
在对话框的 Advanced 模式下,您还可以使用查询语言关键字创建自己的查询,以执行基于查询的搜索。有关可用查询语言关键字的更多信息,请参阅下文。
选择 Advanced 模式后,可使用以下附加控件:
-
Helper - 单击可打开 查询助手 对话框,使用预定义的库函数和系统函数轻松构建库搜索查询。您还可以使用 History 和 Favorites 按钮选择最近使用过的查询或预定义的库查询。
-
History - 单击可打开 表达式管理器 对话框,选择一个以前使用过的查询表达式用于库搜索。您还可以使用 Favorites 按钮,为指定的库搜索使用预定义查询。
-
Favorites - 单击可打开 表达式管理器 对话框,选择一个收藏的查询表达式用于库搜索。您还可以通过删除、重命名表达式或从 History 列表中复制表达式来更改 Favorites 列表。
在 Database Components 中搜索时,Advanced 模式允许您执行 SQL 查询搜索。这种搜索方式可根据指定的查询表达式进行“精细”搜索,您可以直接在对话框的查询编辑器区域中输入 SQL 查询。
单击 Advanced 可使用强大的基于 SQL 的查询搜索。再次单击 Advanced 可返回简单搜索。
元件和库查询函数
Altium Designer 的原理图和 PCB 编辑器底层配备了强大的查询引擎。通过向该引擎输入查询,您可以使用逻辑条件精确限定所需对象的范围。
查询是使用特定关键字和语法输入的字符串,用于返回目标对象。可用的关键字有很多,允许您按对象类型、属性或两者的组合来定位对象。
以下各节详细介绍在 Altium Designer 中搜索数据库元件和基于文件的元件时可用的查询语言关键字。如需查看特定查询关键字的帮助,请使用以下可折叠部分,或在 Query Helper 中选中任意关键字(或在其内部单击)。
元件
注释
概述
返回所有 Comment 符合查询条件的元件。
语法
Comment : String
用法示例
Comment = 'Res1'
返回所有 Comment 为 Res1 的元件。
Comment = '100nF'
返回所有 Comment 为 100nF 的元件。
Comment Like '*33*'
返回所有 Comment 包含 33 的元件。
注意事项
元件类型
概述
返回所有 Component Type 属性符合查询条件的元件。
语法
ComponentType = ComponentType_String
ComponentType_String 必须是以下列表中的一个字符串:
- 'Graphical'
- 'Jumper'
- 'Mechanical'
- 'Net Tie'
- 'Net Tie (In BOM)'
- 'Standard'
- 'Standard (No BOM)'
用法示例
ComponentType = 'Graphical'
返回 Component Type 为 Graphical 的所有元件。
ComponentType = 'Standard'
返回 Component Type 为 Standard 的所有元件。
注意事项
-
请确保使用文件库搜索对话框中的 Search in 字段,将搜索范围设置为 Components 。
-
搜索元件时,将检索所有可用的或位于指定搜索路径中的 SchLib 和 IntLib 库。
-
所有结果均列在 Components 面板中的 Query Results 列表中。
-
ComponentType_String开头和结尾的单引号 (') 不可省略。
位号
概述
返回 Designator 属性符合查询条件的所有元件。
语法
Designator : String
使用示例
Designator = 'U2'
返回 Designator 属性为 U2 的所有元件。
Designator Like '*Channel*'
返回 Designator 属性包含 Channel 的所有元件。
Designator <> 'C*'
返回所有元件,except 其中 Designator 属性以 C 开头的元件。
注意事项
-
请确保使用文件库搜索对话框中的 Search in 字段,将搜索范围设置为 Components 。
-
搜索元件时,将检索所有可用的或位于指定搜索路径中的 SchLib 和 IntLib 库。
-
所有结果均列在 Components 面板中的 Query Results 列表中 。
具有模型
概述
返回链接到(或引用)属性符合查询条件的域模型的每个元件。
语法
HasModel(ModelType : String,ModelName : String,CurrentModelOnly : Boolean) : Boolean/Boolean_String
ModelType 字符串指定所链接模型的 Type 属性,且必须是以下列表中的某个字符串:
- 'PCB3DLIB' - 使用此字符串定位 Type 属性为 PCB3D 的链接模型。
- 'PCBLIB' - 使用此字符串定位 Type 属性为 Footprint 的链接模型。
- 'IBIS' - 使用此字符串定位 Type 属性为 Ibis Model 的链接模型。
- 'SI' - 使用此字符串定位 Type 属性为 Signal Integrity 的链接模型。
- 'SIM' - 使用此字符串定位 Type 属性为 Simulation 的链接模型。
ModelName 字符串指定所链接模型的 Name 属性。
CurrentModelOnly 参数指定所链接的模型是否必须是每个元件的当前模型。当此参数为 False 时,所链接的模型不必是当前模型(但也可以是);当此参数为 True 时,所链接的模型必须是当前模型。
使用示例
HasModel('PCBLIB','SOIC14',False)
HasModel('PCBLIB','SOIC14',False) = True
HasModel('PCBLIB','SOIC14',False) = 'True'
返回链接到 Name 属性为 SOIC14 的封装模型的所有元件;该模型不必是每个元件的当前封装模型(但也可以是)。
HasModel('PCBLIB','DIP14',True)
HasModel('PCBLIB','DIP14',True) = True
HasModel('PCBLIB','DIP14',True) = 'True'
返回链接到 Name 属性为 DIP14 的封装模型的所有元件;该模型必须是该元件的当前封装模型。
HasModel('SI','RES1',False)
HasModel('SI','RES1',False) = True
HasModel('SI','RES1',False) = 'True'
返回链接到 Name 属性为 RES1 的信号完整性模型的所有元件;该模型不必是每个元件的当前信号完整性模型(但也可以是)。
HasModel('SIM','RESISTOR',True)
HasModel('SIM','RESISTOR',True) = True
HasModel('SIM','RESISTOR',True) = 'True'
返回链接到 Name 属性为 RESISTOR 的仿真模型的所有元件;该模型必须是该元件的当前仿真模型。
注意事项
-
请确保使用文件库搜索对话框中的 Search in 字段,将搜索范围设置为 Components 。
-
搜索元件时,将检索所有可用的或位于指定搜索路径中的 SchLib 和 IntLib 库。
-
所有结果均列在 Components 面板中的 Query Results 列表中 。
具有模型参数
概述
返回链接到(或引用)某个域模型的每个元件,该域模型包含一个 Parameter Name 和 Value 属性符合查询条件的参数对象。
语法
HasModelParameter(Parameter Name : String,Value : String,CurrentModelOnly : Boolean) : Boolean/Boolean_String
CurrentModelOnly 参数指定所链接的模型(包含符合条件的参数)是否必须是每个元件的当前模型。当此参数为 False 时,所链接的模型不必是当前模型(但也可以是);当此参数为 True 时,所链接的模型必须是当前模型。
使用示例
HasModelParameter('Inductance A','1mH',False)
HasModelParameter('Inductance A','1mH',False) = True
HasModelParameter('Inductance A','1mH',False) = 'True'
返回链接到某个模型的所有元件,该模型包含一个 Parameter Name 属性为 Inductance A 且 Value 属性为 1mH 的参数对象。该模型不必是每个元件的当前模型(但也可以是)。
HasModelParameter('Coupling Factor','0.999',True)
HasModelParameter('Coupling Factor','0.999',True) = True
HasModelParameter('Coupling Factor','0.999',True) = 'True'
返回链接到某个模型的所有元件,该模型包含一个 Parameter Name 属性为 Coupling Factor 且 Value 属性为 0.999 的参数对象。该模型必须是该元件的当前模型。
注意事项
-
请确保使用文件库搜索对话框中的 Search in 字段,将搜索范围设置为 Components 。
-
搜索元件时,将检索所有可用的或位于指定搜索路径中的 SchLib 和 IntLib 库。
-
所有结果均列在 Components 面板中的 Query Results 列表中 。
库引用
概述
返回 Library Reference 属性符合查询条件的所有元件。
语法
LibReference : String
使用示例
LibReference = 'LM833'
返回 Library Reference 属性为 LM833 的所有元件。
LibReference Like 'C*'
返回 Library Reference 属性以 C 开头的所有元件。
注意事项
-
请确保使用文件库搜索对话框中的 Search in 字段,将搜索范围设置为 Components 。
-
搜索元件时,将检索所有可用的或位于指定搜索路径中的 SchLib 和 IntLib 库。
-
所有结果均列在 Components 面板中的 Query Results 列表中 。
全部
描述
概述
返回 Description 属性符合查询条件的所有元件或封装。
语法
Description : String
用法示例
Description = 'TTL-RS232 DRIVER'
返回 Description 属性为 TTL-RS232 DRIVER 的所有元件或封装。
Description Like '*RS485*'
返回 Description 属性包含 RS485 的所有元件或封装。
注意事项
具有参数
概述
返回包含参数对象且该对象的 Parameter Name 和 Value 属性符合查询条件的所有元件。
语法
HasParameter(Parameter Name : String,Value : String) : Boolean/Boolean_String
用法示例
HasParameter('Comment','1K')
HasParameter('Comment','1K') = True
HasParameter('Comment','1K') = 'True'
返回包含参数对象且该对象的 Parameter Name 属性为 Comment、Value 属性为 1K 的所有元件。
注意事项
库名称
概述
返回所属库的名称符合查询条件的所有元件或封装。
语法
LibraryName : String
用法示例
LibraryName = 'Miscellaneous Devices.SchLib'
返回所属库为 Miscellaneous Devices.SchLib 的所有元件。
LibraryName Like 'Miscellaneous*.IntLib'
返回所属库的名称以 Miscellaneous 开头且以 .IntLib 结尾的所有元件或封装。
LibraryName Like '*Vishay*'
返回所属库的名称包含 Vishay 的所有元件。
注意事项
库路径
概述
返回查询中指定的库内的所有元件或封装。
语法
LibraryPath : String
用法示例
LibraryPath = 'C:\Documents\Altium\Library\MyExampleLibrary.SchLib'
返回所属库为 MyExampleLibrary.SchLib 且该库位于 C:\Documents\Altium\Library 文件夹中的所有元件。
LibraryPath Like ' C:\Documents\Altium\Library\Miscellaneous*.IntLib'
返回所属库的名称以 Miscellaneous 开头且以 .IntLib 结尾,并且该库位于 C:\Documents\Altium\Library 文件夹中的所有元件或封装。
LibraryPath = 'C:\Test Projects\Example DBLib\VishayCapacitor.DBLib'
返回所属库为 VishayCapacitor.DBLib 且该库位于 C:\Test Projects\Example DBLib 文件夹中的所有元件。
注意事项
名称
概述
返回名称符合查询条件的所有元件或封装。
语法
Name : String
用法示例
Name = 'Res1'
返回名称为 Res1 的所有元件或封装。
Name Like 'DIP*'
返回名称以 DIP 开头的所有元件或封装。
Name Like '*33*'
返回名称包含 33 的所有元件或封装。
注意事项
源库名称
概述
返回所属源库的名称符合查询条件的所有元件或封装。
语法
SourceLibraryName : String
用法示例
SourceLibraryName = 'Miscellaneous Devices.SchLib'
返回所属源库为 Miscellaneous Devices.SchLib 的所有元件。
SourceLibraryName = 'Miscellaneous Devices.PcbLib '
返回父源库为 Miscellaneous Devices.PcbLib 的所有封装。
注意事项
源库路径
概述
返回查询中指定的源库内的所有元件或封装。
语法
SourceLibraryPath : String
使用示例
SourceLibraryPath = ' C:\Documents\Altium\Library\MyExampleLibrary.SchLib'
返回父源库为 MyExampleLibrary.SchLib 且该库位于 C:\Documents\Altium\Library 文件夹中的所有元件。
SourceLibraryPath = ' C:\Documents\Altium\Library\Miscellaneous Devices.PcbLib'
返回父源库为 Miscellaneous Devices.PcbLib 且该库位于 C:\Documents\Altium\Library 文件夹中的所有封装。
SourceLibraryPath Like ' C:\Documents\Altium\Library\*'
返回父源库位于 C:\Documents\Altium\Library 文件夹中的所有元件或封装。
注意事项
封装
高度
概述
返回 Height 属性符合查询条件的所有封装。
语法
Height : Number
Number将遵循库当前使用的计量单位,即英制(mil;1mil = 0.001 英寸)或公制(mm;1mm = 0.001 米)。
使用示例
Height = 300
返回 Height 属性等于 300 个当前计量单位的所有封装。
Height >= 5.08
返回 Height 属性大于或等于 5.08 个当前计量单位的所有封装。
Height <> 550
返回 Height 属性not 等于 550 个当前计量单位的所有封装。
