Altium中的过滤器可以完成筛选、检查功能,官方有AD19.1的帮助文档:https://www.altium.com/documentation/altium-designer/query-lang-pcbfunctions-membershipchecks-hasfootprinthasfootprint-ad?version=19.1

(这个链接是精确到PCB Filter的HasFootprint筛选项,而且Altium在2020年4月底这个时候支持15.1到20.0版本的在线帮助文档)

Altium的帮助文档给出了筛选项的用法和写法,下面给出常用的一些过滤语句。

 

一、原理图。

 1、在原理图中找到编号为C6的元件:

PartDesignator = 'C6'

 注意使用等于运算符(=)的时候需要是全字匹配,而且是区分大小写。

 在原理图中找到所有编号为C某某的元件:(模糊匹配)

PartDesignator LIKE 'C*'

 这样就可以找到所有电容。

 2、在原理图中找到所有DGND的网络标号。

(ObjectKind = 'Net Label') And (StringText = 'DGND')

 另外的办法:

(StringText = 'DGND') and (Not IsLabel)

 相似的,下面这个可以找到所有带GND名称的网络标号:

(StringText Like '*GND*') and (Not IsLabel)

 这个Not IsLabel会排除掉所有的文本(Text)。

 3、在原理图中找到所有封装为0402尺寸的器件。

(ObjectKind = 'Part') And (CurrentFootprint Like '*0402*')

 4、在原理图中找到所有TPD2E009型号的TVS管子。

PartComment like '*TPD2E*'

 

二、原理图器件库。

 1、在原理图器件库中找出所有使用TSSOP16封装的器件。

 (1)用查找工具。步骤:「1」打开原理图器件库,用Tools -> Find Component(T O)打开Library Query窗口:

  

axios 过滤器 amiad过滤器_axios 过滤器

axios 过滤器 amiad过滤器_运算符_02

axios 过滤器 amiad过滤器_原理图_03

 中间这个图是Query的简便模式,右边这个图是表达式模式。

 表达式分三个部分:域(Field),关系运算符(Operator),值(Value)。

 域,可取的值数目有限,相当于关键字或者宏定义的一些值。对于原理图器件库,常用的有:Footprint,Name,LibReference,Pin Count等。

 关系运算符,常见的有:全字等于(=),包含(LIKE)等。

 值,一般可以是字符串,数字等。

 「2」根据需要输入表达式,设定查询值等。

 「3」查询结果在View -> Workspace Panels -> System -> Libraries中,显示为Query Results:

  

axios 过滤器 amiad过滤器_Text_04

 下面给一些例子:

 {1}找到只有8个引脚(包含裸露的散热片Exposed Pad)的器件:

HasParameter('Pin Count', '8')

  注意:Pin Count中间带空格分开;值为数字也要用单引号包裹。

 {2}找到封装名字带有SPO16的器件:

HasParameter('Footprint', '*SOP16*')

  注意:星号表达式(*)可以实现模糊匹配。

 {3}找到器件简述说明中含有LNA字样的器件:

(Description LIKE '*LNA*')

  这里LIKE是运算符。

 (2)用报表实现。步骤:「1」打开原理图器件库,用Reports -> Library List(R L)生成器件库的报表:

 

axios 过滤器 amiad过滤器_运算符_05

 「2」生成的报表有csv格式和rep格式,将csv格式保存下来,用Excel打开,再进行搜索。

 

三、PCB文件。

 直接给出一些例子:

 1、在PCB文件中找到编号为U6的元件

Component = 'U6'

 或者:

Name = 'U6'

 注意使用等于运算符(=)时,是全字匹配,并且区分大小写。

 2、在PCB中找到无网络(NoNet)的过孔

IsVia and (not(InNet('*')))

 3、选中所有Top Layer的铺铜(Poly)

IsPoly and OnLayer('Top Layer')

  注意OnLayer中的值必须填完整的层名称,不能写成OnLayer('*Top*')

 4、选中孔径为12mil的GND过孔

IsVia and InNet('GND') and HoleSize = 12

 5、在PCB设计规则下,仅仅设定指定的两个(或多个)器件的摆放间距为任意距离

  在AD10中,这个情况适用于PCB中器件旋转后出现的器件占用面积过大的情况,比如这样:

  

axios 过滤器 amiad过滤器_Text_06

axios 过滤器 amiad过滤器_运算符_07

  设计规则中,网络最小间距设定为足够小(8mil),器件最小间距设定为1mil,但是仍然报错。这是因为器件最小间距仍然小于了规则设定,实际的器件占位是这样:

  

axios 过滤器 amiad过滤器_axios 过滤器_08

  两个器件器件发生交叠,规则检查不能通过。这个问题有两种解决办法:

  (1)在设计规则(D R)中,找到Placement -> Component Clearence,建立一个新规则。将Vertical Clearance Mode设定为Specified,将Minimum Horizontal Clearance设定为0mil,将Minimum Vertical  Clearance设定为0mil。

  

axios 过滤器 amiad过滤器_运算符_09

  这样交叠的器件就不会报错。缺点是:DRC时会忽略那些没有放好的器件。

  (2)加入器件限定。

   报错的两个器件是C33和FB3,在保持其他器件的最小间距检查时,忽略掉这两个器件,可以规则设定中添加筛选器:

NOT(InComponent('FB3') OR InComponent('C33'))

  

axios 过滤器 amiad过滤器_Text_10

  这样就略过了C33和FB3的器件最小间距检查。

 6、选中在同一原理图Sheet中的全部器件

InComponentClass('Power_Supply')

  Power_Supply同时是原理图文件的名称,也是默认的ComponentClass名字。

 7、选中所有90度旋转后放置的器件丝印标号。

IsText and InComponent('*') and (Rotation like '90')

  8、找到所有型号AO3400的MOS管(查找Comment域)。

Comment like '*AO3400*'

 

四、封装库。