Altium designer的Query语句来查询操作对象,设置规则是非常强大的,但是对于非程序员的PCB设计师来说,要熟练使用其语法条件,以及各条件之间的运算关系,还是非常头痛的。有没有简单的生成Query语句办法呢?

如下图,在AD里我们可以充分的利用“查找相似对象(Find similar objects)”和“PCB过滤器(PCB Filter) ”智能的根据所选对象自动生成Query语句

利用Find Similar Objects 创建查询语句

(ObjectKind = ‘Track’) And (Net = ‘CCVCC’)

采用查找相似对象(Find Similar Objects)找到你关注的对象,然后勾选Creat Expressions,自动生成Query语句到PCB Filter面板,然后直接Creat Rule即可。

—————————————————————————————————————-

Query查询表达式是对规则应用对象的描述。每条Query查询语句需针对具体且唯一的PCB类对象.

举例,

(InComponent(‘C55’) orInComponent(‘C56’))

上面语句选择板上C55 ,C56.

用AND 行不行呢?

(InComponent(‘C55’) AND InComponent(‘C56’))

语法虽没错,但不能选中PCB上的器件。说明Query只能选择一类或一个具体对象。不能同时选择不同的对象。

WithinRoom(‘room1’)or WithinRoom(‘room2’)or WithinRoom(‘room3’)

这段语句选择PCB上3个ROOM类,用AND 代替OR则不行。

例2

(HasFootprint(‘805C2’) OR HasFootprint(‘603C2’))

选择805C2,603C2这两类封装器件。

若需要选择除这两类封装的器件怎么办呢?加个逻辑非NOT

NOT(HasFootprint(‘805C2’) OR HasFootprint(‘603C2’))

例3

BGA区域内的线宽和间距做区域规则.

创建2个Room,并为其命名ROOM-BGA,ROOM-DDR

WithinRoom(‘room-BGA’) or WithinRoom(‘room-DDR’)

用查询语句选择这两个ROOM类,建建立线宽线距规则即可。

大家若对Query查询表达式有兴趣。我会陆续分享。