【转】如何应用Query语句进行规则的语法设置?

时间:2022-09-17 18:36:01

【转】如何应用Query语句进行规则的语法设置?

在Altium Designer中, 设计规则通常用来定义用户的设计需求。 这些规则涵盖了设计的方方面面, 从布线宽度, 对象的安全间距,内电层的连接风格, 过孔风格等等。 设计规则不仅能在PCB设计的过程中实时检测, 而且也能够在需要的时候进行统一的批量检测并生成错误报告。

Altium Designer的设计规则不是PCB对象的属性, 而是独立定义的。 每条规则需针对具体的PCB对象。对于PCB规则系统来说,它必须知道给定的规则应用于哪些对象,即规则的应用范围。可以在PCB Rules and Constraints Editor对话框中设定规则及规则的范围。其中采用撰写查询语句的方式来定义范围是经常需要用到的,并且非常重要的方式方法。

查询语句(Query)是对规则应用对象的描述。设计规则的约束对象可以直接手动输入查询语句, 或是在语言编辑区左侧的控制区选择,抑或是采用查询语句构造器来定义。

查询语句(Query)如何组织?

查询语句实际上是软件的一条指令,定义了一系列的目标设计对象。查询语句由查询的关键字组成。下面是一个查询语句的示例:
        InNet('GND') And OnLayer('TopLayer')
        如果在宽度规则中用该查询语句定义范围,那么设计者在切换到顶层对GND网络布线时,走线的宽度会自动转换到该规则指定的宽度值。如果执行设计规则检查(DRC),任何在顶层的GND网络必须满足这个宽度规则,否则就会被标记为违反设计规则。

使用PCB规则约束编辑器( PCB Rules and Constraints Editor)对话框中的选项可以创建查询语句。根据规则是一元的还是二元的,用户可能需要相应地定义一个或二个对象范围。在PCB规则约束编辑器中,简单的查询语句有如下几种类型的范围选项。

  • 所有的的设计对象

  • 指定网络中的所有对象

  • 指定网络类中的所有对象

  • 指定层上的所有对象

  • 指定层上且属于指定网络的所有对象

选择其中的任一选项,如果需要的话,可以使用右边的下拉菜单选定适当的目标,比如某个网络或某个层。查询语句会自动出现在Full Query区域的右方。如下图。

【转】如何应用Query语句进行规则的语法设置?

高级查询Advanced (Query)选项允许设计者撰写自己的更复杂但更为精确的查询语句。设计者可以在Full Query区域直接输入规则范围的定制查询语句。有两个工具(Query Builder和Query Helper)可帮助创建高级查询语句。当不确定查询语句的语法或者需要使用的关键字,这两个工具就会相当有用。

  1. Query Builder定义规则范围

       Query Builder是一种较简单的创建查询语句的方法,它允许设计者使用敏感的条 件类型和数值但只能使用相关的‘构件’。对于高级查询语句的创建,可以使用Query Helper来查询关键字的说明及操作符的语法。

点击Query Builder按钮可以打开Building Query from Board对话框, 该对话框使得用户通过AND或OR等符号连接构造字符串,从而可以创建指向设计文档中特定对象的查询语句。如下图所示。

【转】如何应用Query语句进行规则的语法设置?      

       在对话框中的左边部分,用户可以为某组对象指定所需要的条件类型。当用户在对话框左半部分定义好条件后,在右半部分就可以预览显示当前创建的查询语句。根据需要用户可以继续添加更多的条件以缩小用户的设计对象目标范围。

  1. Query Helper获得帮助

       要使用Query Helper,先选择Advanced (Query) 选项,然后点击Query Helper按钮就可以打开Query Helper对话框。系统背后的查询引擎会分析PCB设计,然后列出所有可用的对象与查询语句中使用的通用关键字。如下图所示。

【转】如何应用Query语句进行规则的语法设置?

       使用对话框的Query区域,构造一个查询表达式语句。在默认情况下,当前有效规则范围的表达式会显示在这一区域。用户可以在该区域内直接输入。当用户输入时,智能感知功能将根据用户的输入提示给用户可能的关键字或对象列表。

对话框中的左下角红色圈出的Categories区域,提供了可以用来创建查询语句的PCB函数、PCB对象列表和系统函数。当用户点击此三个类别中的某个子类别,右方的区域将会显示对应的关键字或对象列表。找到查询语句需要用到的关键字或对象,然后双击该条目,该条目就会被插入到上方区域中查询表达式的当前光标处。

  1. 当Query语句有错误时

        如果你键入的查询语句的语法有错误,在PCB Rules and Constraints Editor对话框的左边区域,该规则会被用红色高亮出来。及时修正这样的错误非常重要,否则做在线实时检测会非常慢。因为一个有语法错误的规则范围会极大地降低在线或者批量DRC分析的速度。当你试图关闭规则设置框时系统也会弹出一个错误对话框。所以请确保所有规则范围的语法正确!

PCB Filter面板中使用查询语句(Query)

       同样的道理,可以在过滤器面板使用查询语句来查找指定的一系列对象,然后定义每个规则应用到的对象。

PCB Filter面板为用户提供了创建设计规则的途径,创建的设计规则的应用范围将使用当前在面板*区域中定义的查询语句来定义。

      【转】如何应用Query语句进行规则的语法设置?

       如上图所示。要添加一条新的设计规则,只要点击Create Rule 按钮,就会显示Choose Design Rule Type对话框。此对话框列出了PCB文档中所有可用的规则类别与规则种类。用户只需选择希望创建的规则种类然后点击OK即可(或直接双击该规则种类入口)。

这时就会显示PCB Rules and Constraints Editor对话框,在此对话框中系统已为用户创建了一个该种类的规则,并将该规则显示在主编辑窗口中,等待用户为此规则定义特定的约束条件。而来自PCB Filter面板的查询语句也已经显示在对话框中的Full Query区域中,作为此规则的应用范围。

采用Query Helper创建Query语句案例

      案例前因:某项目的PCB设计中有诸多规则设置,特别是间距方面,由于12V网络需要更大的间距规则,已为其设置了20mil安全距离。

【转】如何应用Query语句进行规则的语法设置?

      然后PCB完成之后,对其进行规则检查,出现了2条违规信息。如上图所示。两个电容C3和C4违反了规则,已绿色高亮显示。原因是这些电容的焊盘形状已经固定。没办法改变,我们只能修改规则的设置来适应这两个电容。打开12V网络的间距规则设置,我们来修改规则范围,使其排除这2个电容。操作如下。

  • 设置时,需要在第二个对象处“Where the second object matches”不选中C3和C4。即将C3和C4两个元件排除20mil间距的规则约束。点击自定义语句“Custom Query”,然后选择“Query Helper”。

【转】如何应用Query语句进行规则的语法设置?

  • 找到“Component membership”语句,将其添加到规则中。我们双击“In Component”条目,即可将其添加到语句对话框。

【转】如何应用Query语句进行规则的语法设置?

  • 然后移动到语句“Query” 对话框,在括号中键入一个单引号,将会弹出一个列表,选择C3。

【转】如何应用Query语句进行规则的语法设置?

  • 然后添加“Or”到语句中,然后继续,我们先键入“In”。然后选中需要的条目“In component”。这次选择C4。

【转】如何应用Query语句进行规则的语法设置?

  • 现在我们选中了C3或者C4。接下来要做的是,规则设置的范围不包含这两个电容。于是我们添加逻辑非“Not”。点击OK添加该条规则语句。

【转】如何应用Query语句进行规则的语法设置?

  • 然后将其应用到规则设置中。现在的12V间距规则,已经排除了这2个电容。重新运行间距规则的DRC检查,结果很干净。而且C3和C4也不再高亮。

【转】如何应用Query语句进行规则的语法设置?

采用PCB Filter面板生成Query语句案例

      大家都深有体会:让我们自己去输入一条条Query语句,熟练使用其语法条件,以及各条件之间的运算关系,这玩意对于非代码设计师来说,想想都头晕。能不碰就不碰,能有变通方法尽量绕开!

那么这里介绍一套生成Query语句的法宝。通过这个法宝我们可以方便地组织所需的Query语句。甚至还方便智能到根据所选对象自动生成Query语句的地步!废话少说,案例过一遍就都清楚了。

要熟练运用该法宝必须要与其左右两大护法搞好关系:查找相似对象(Find similar objects)和PCB过滤器(PCB Filter)。

案例前因:一PCB设计中,有几个连接器件,想让它们互相交叠挨在一起而不报错。那就需要设置这几个连接器件的元件之间间距(Component clearance)允许它们零距离亲密接触。

  • 首先第一步,用查找相似对象的方式,来创建自定义Query语句。即选定一个对象,然后右键点击,选择查找相似对象“Find similar object”。

【转】如何应用Query语句进行规则的语法设置?

  • 在封装“Footprint”条目后面,选择相同“Same” ,并确保创建表达式“Create expression”选项框被勾选。

【转】如何应用Query语句进行规则的语法设置?

  • 现在点击应用“Apply”来看看是否所有符合条件的目标元件被选中。结果如你所愿。

【转】如何应用Query语句进行规则的语法设置?

  • 然后打开PCB过滤器窗口“PCB filter”,这里看到生成的语句表达式。

【转】如何应用Query语句进行规则的语法设置?

  • 在过滤器窗口中,你可以拷贝并粘贴该表达式到规则设置中,或者直接点击创建规则“Create rule”按钮,来打开规则设置页面。让我们为“Anderson”连接器选择元件间距。我们想要将它们摆放在一起,而不会报错。点击OK打开该规则设置页面。

【转】如何应用Query语句进行规则的语法设置?

  • 让我们为该规则命名为“Anderson”。现在我们的新规则中,第一个对象匹配的Quuery语句是来自PCB Filter自动导过来的。代表的是黑色“Black”Anderson连接器,我们想让第二个对象匹配的语句是红色“Red” Anderson连接器。这里偷下懒,直接从第一个对象的语句表达式拷贝粘贴到第二个对象的语句表达式,然后编辑,将黑色改为红色。

【转】如何应用Query语句进行规则的语法设置?

  • 现在我们有了一个关于黑色连接器和红色连接器之间的元件间距的规则。将其水平方向的间距设置为-5 mil,以允许它们摆放连接在一起。

【转】如何应用Query语句进行规则的语法设置?

  • 定义好规则之后,现在我们要看一看,该规则的范围是不是恰好准确包含了想要涵盖的对象。要检查这个,我们需要用到测试语句“Test queries”的功能。它会打开一个测试语句的结果对话框,显示每个语句表达式的结果。点击每个不同的条目,会跳转并缩放到那些被选中的对象。点击OK。

【转】如何应用Query语句进行规则的语法设置?

       现在让我们放置一个红色和黑色的连接器,毗连在一起,看看它们有没有发生间距报错。并没有!这就是刚才的规则所起的作用。

所以,采用查找相似对象(Find Similar Objects)找到你关注的对象,然后勾选Creat Expressions,自动生成Query语句到PCB Filter面板,然后直接Creat Rule即可。So easy!干吗还哼哧哼哧去查去写Query语句呢?

来源

【转】如何应用Query语句进行规则的语法设置?的更多相关文章

  1. 8.2 Query 语句优化基本思路和原则

    在分析如何优化MySQL Query 之前,我们需要先了解一下Query 语句优化的基本思路和原则.一般来说,Query 语句的优化思路和原则主要提现在以下几个方面: 1. 优化更需要优化的Query ...

  2. query语句的拼接.

    在外网服务器上的网页,不能排序了,原因是query语句拼接时,sort没有能拼上,. 小小的思路: 1.是不是网页请求出了问题: 和我本机上的的请求一一对比,并没有发现什么问题. 2.代码除了问题吗: ...

  3. 在Eclipse中用图形界面的方式获取Salesforce中Object的Query语句

    对Salesforce中的Object进行相应的Query是必不可少的操作,大家可以去这个链接去看看官网的解读  http://docs.database.com/dbcom/en-us/db_sos ...

  4. SQLite中7(8)形参的query语句的用法

    SQLite中7(8)形参的query语句的用法 我们先来看看这种7形参的query语句的形参列表: public Cursor query(String table, String[] column ...

  5. Drools 规则文件语法概述

    概述(Overview) 以.drl为扩展名的文件,是Drools中的规则文件,规则文件的编写,遵循Drools规则语法.下面详细介绍一下Drools规则文件语法.具体参考官方文档: https:// ...

  6. Destoon 模板存放规则 及 语法参考

    模板存放规则及语法参考 一.模板存放及调用规则 模板存放于系统 template 目录,template 目录下的一个目录例如 template/default/ 即为一套模板 模板文件以 .htm ...

  7. With语句以及@contextmanager的语法解析

    with 语句以及@contextmanager的语法解析   with语句可以通过很简单的方式来替try/finally语句. with语句中EXPR部分必须是一个包含__enter__()和__e ...

  8. 53个Oracle语句优化规则详解(转)

    Oracle sql 性能优化调整  1. 选用适合的ORACLE优化器        ORACLE的优化器共有3种:a. RULE (基于规则)   b. COST (基于成本) c. CHOOSE ...

  9. Oracle语句优化规则(二)

    21.       用EXISTS替换DISTINCT 当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT. 一般可以考虑用EXIST替换  例如: ...

随机推荐

  1. Popline:帅气的浮动 HTML5 文本编辑器工具栏

    Popline 是一个基于 HTML5 实现的富文本编辑器工具栏,设计灵感来自 PopClip ,相比传统的文本编辑器工具,Popline 能够浮动在编辑的文本周围,操作起来十分方便. 您可能感兴趣的 ...

  2. 备份Oracle数据库的脚本

    @echo off goto bakoracle :bakoracle echo. echo ★☆★  自动备份Oracle数据库   ★☆★ echo. set backpath=E:\Oracle ...

  3. Beta版本冲刺计划

    1.下一阶段需要改进完善的功能 文件读取 界面 人员批量增改 数据库 ... 2.下一阶段新增的功能 人员权限分离分化. 课表导出 ... 3.需要改进的团队分工(针对之前的不足,需要加强和改进团队协 ...

  4. (IOS)Swift Music 程序分析

    本文主要分享下楼主在学习Swift编程过程中,对GitHub上的一个开源App Swift Music的研究心得. 项目地址:https://github.com/xujiyao123/SwiftMu ...

  5. NHibernate考察实例:简单映射

    建立一个Company类用来测试,对应的表为TBLCOMPANY.   1. 下载NHibernate(版本1.2.0.CR1),将NHibernate \bin\net-2.0下面的文件拷贝到lib ...

  6. ASP.NET - cookie

    下面是写cookie  HttpCookie cookie = new HttpCookie("Info");//定义cookie对象以及名为Info的项  DateTime dt ...

  7. git 与 github基本使用

    这里只对git 与 github的基本使用介绍,对于简单的步骤不做详细的说明,可以在网上搜索 一.git与github的安装与链接 1.git 安装:百度搜索"git",下载安装即 ...

  8. h5 喜帖

    地址:http://139.196.27.185:8088/ 因为国庆结婚,需要邀请亲朋好友,网上找了些电子请帖,但大都要收费,贵的还有好几百,有的效果还不太好.于是花了些时间自己写了一个. 就是sw ...

  9. CSDN帐号被封

    感慨

  10. c语言之控制语句:循环

    #include<stdio.h> int main(void) { long num; long sum = 0L; int status; printf("Please en ...