CN109241555B - 一种改善绘图精度的多图元Gerber文件解析及绘制方法 - Google Patents
一种改善绘图精度的多图元Gerber文件解析及绘制方法 Download PDFInfo
- Publication number
- CN109241555B CN109241555B CN201810838727.5A CN201810838727A CN109241555B CN 109241555 B CN109241555 B CN 109241555B CN 201810838727 A CN201810838727 A CN 201810838727A CN 109241555 B CN109241555 B CN 109241555B
- Authority
- CN
- China
- Prior art keywords
- data block
- data
- primitive
- character strings
- recording
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供了一种改善绘图精度的多图元Gerber文件解析及绘制方法,针对目前国内软件对Gerber文件图元种类解析绘制单一的问题,分析Gerber文件的数据信息,使用正则表达式完成数据的解析、提取和整理,实现了椭圆、弧线、扇形、正多边形、圆角矩形等五种新增图元的解析绘制;在保存Gerber文件数据过程中,对所分析和整理的数据,优化其存储结构,使用结构体和动态数组解决数据存储问题,摒弃链表等复杂的数据结构,确保了Gerber文件信息的完整提取和保存,同时提高了图像整体数据处理和分析的灵活性;针对Gerber文件数据坐标转换成像素坐标后的数据丢失问题,提出解决方案,提高了图像绘制精度。
Description
技术领域
本发明涉及一种Gerber文件的解析和绘制技术,尤其是印刷电路板行业标准格式RS-274X版Gerber文件的解析和绘制技术。
背景技术
表面贴装等行业中,需要根据Gerber文件获得印刷电路板焊盘、布线等表面信息,以此作为生产质量检测的标准比对数据。Gerber文件是由Gerber公司制定的最初用于该公司生产的光学绘图机的一种文件格式,后来演变成美国电子工业协会的标准光绘格式文件,现在多用于印刷电路板制造行业中。印刷电路板生产制造部门通常根据用户或企业设计部门提供的Gerber文件生产制作印刷电路板。目前公认的标准Gerber文件格式是RS-274-D和RS-274-X两个版本,其中普遍使用的版本是RS-274X,又称为扩展的Gerber格式或者X-Gerber格式,这种格式采用二维矢量图像描述格式,已经基本取代了其老版本RS-274D。RS-274X版Gerber文件是一种可读的ASCII格式文档,包含了一系列控制码和坐标信息,组成图像的元素是在特定位置画好外形的线和不同种类的图元。RS-274X版Gerber文件包含了印刷电路板各层图像的完整描述,具有印刷电路板各层成像需要的所有元素,不需要其他的扩展文件,是对印刷电路板各层的完整、强大、清晰的标准描述。本发明中未特别说明时,所述的Gerber文件均指的是RS-274X版Gerber文件
Gerber文件解析和绘制技术应用于表面贴装行业的锡膏自动检测以及紫外激光加工等一系列需要使用标准光绘文件进行比对检测的领域。现阶段,英国和韩国研制的印刷电路板相关检测设备中实现了Gerber文件全部信息的图形绘制,国内印刷电路板制造业目前多使用国外Amebas开发的GerbView以及CAM350这两款软件,仅可以实现Gerber文件的浏览。国内对Gerber文件解析的研究起始于上世界九十年代,现在还没有相对比较成熟的软件实现Gerber文件的解析和绘制。在公开发表的文献中,Gerber文件的数据处理方法多使用链表这种数据结构,在数据存取和整理的过程中存在一定的弊端,在精度方面也存在问题;解析和绘制的图元信息单一,只有直线和圆两种图元,未见其它图元的相关报导。
发明内容
为了克服现有技术的不足,本发明提供一种Gerber文件解析及绘制方法,新增椭圆、弧线、扇形、正多边形、圆角矩形等五种图元的数据解析、提取和整理技术,实现工业生产中印刷电路板上常见图元的绘制;在数据提取和整理中,使用不同以往的数据存储结构,优化Gerber文件的数据保存过程,确保Gerber文件信息的完整提取和保存,同时提高数据分析和处理的灵活性;改进图像绘制时的数据转换方式,提高绘制精度。
本发明解决其技术问题所采用的技术方案包括以下步骤:
步骤一,定义一动态数组A,读取Gerber文件中印刷电路板的表层数据,将其存储到动态数组A中;
步骤二,解析、提取并整理绘制参数数据块,具体如下:
2.1.根据保存在动态数组A中的绘制参数数据块的模型结构,以数据块为单元,根据不同类型数据块的格式,为不同类型的绘制参数数据块创建正则表达式的规则字符串;使用所有的规则字符串作为模板,依次与绘制参数数据块进行匹配检测,当检索到与绘制参数数据块相匹配的规则字符串时,表明检测到一个与规则字符串同类别的数据块,将这一部分绘制参数数据块提取出来,并将其分类标记;
2.2.定义全局变量或局部变量,对不同形状的图元分别定义不同的结构体,用不同的结构体数组完整存储图元数据;
步骤三,解析、提取并整理绘制命令数据块,具体如下:
3.1.根据保存在动态数组A中的不同绘制命令数据块的模型结构,以数据块为单元,根据不同类型数据块的格式,为不同类型的绘制命令数据块创建正则表达式的规则字符串;以所有的规则字符串作为模板,依次与绘制命令数据块进行匹配检测,当检索到与绘制命令数据块相匹配的规则字符串时,表明检测到一个与规则字符串同类别的数据块,将这一部分绘制命令数据块提取出来,并将其分类标记;
3.2.定义全局变量或局部变量,对不同绘制命令定义不同的结构体,用不同的结构体数组存储绘制命令数据;
步骤四,以图像形式绘制并保存由Geber文件解析得到的印刷电路板数据,具体如下:
4.1.将印刷电路板的图元数据和绘制数据传递到图像绘制部分,使用MFC的GDI绘制工具绘制图像,完成Gerber文件文本信息到图像信息的转换;
4.2.创建一个新的位图,将所绘制的图像从动态内存存储空间拷贝到新的位图中,完成图像的保存。
所述的步骤二中,用创建的所有规则字符串依次与某数据块进行匹配,当匹配到FS时,则此数据块为数据格式数据块;继续检索该数据块中的信息,若为L,记录此文件,省略前导零;若为T,记录此文件,省略尾零;继续检索,若为A,记录此文件,使用绝对坐标;若为I,记录此文件,使用相对坐标;继续检索,若检索到X,则识别并记录其后两位数字,作为X方向的数据;若检索到Y,则识别并记录其后两位数字,作为Y方向的数据;
用创建的所有规则字符串依次与某数据块进行匹配,当匹配到MO时,则此数据块为数据单位数据块;继续检索该数据块中的信息,识别并记录其采用的数据单位;
用创建的所有规则字符串依次与某数据块进行匹配,当匹配到ADD时,则此数据块为图元类型数据块;继续检索该数据块中的信息,若检索到C,为圆形图元;若检索到R,为圆形图元;若检索到O,为椭圆形图元;若检索到P,为正多边形图元;继续检索,识别并记录后续图元数据;
用创建的所有规则字符串依次与某数据块进行匹配,当匹配到OF时,则此数据块为偏移描述数据块;继续检索该数据块中的信息,识别并记录后续偏移数据;
用创建的所有规则字符串依次与某数据块进行匹配,当匹配到IP时,则此数据块为图层极性数据块;继续检索该数据块中的信息,若检索到NEG,记录图层为负性;若检索到POS,记录图层为正性。
所述的步骤三中,用创建的所有规则字符串依次与某数据块进行匹配,当匹配到G54时,则此数据块为选择图元数据块;继续检索该数据块中的信息,提取并保存之后的图元编号;
用创建的所有规则字符串依次与某数据块进行匹配,当匹配到D01、D02或D03时,则对应的数据块为图元或单像素绘制数据块;继续检索该数据块中的信息,若检索到X,记录X之后的数值作为X坐标值;若检索到Y,记录Y之后的数值作为Y坐标值;若未匹配到X或Y,则使用之前的坐标值;
用创建的所有规则字符串依次与某数据块进行匹配,当在同一数据块内同时匹配到G36及G37时,则此数据块为多边形填充数据块;继续检索该数据块中的信息,对G36和G37之间的内容进行标记,以备后续填充此图形;
用创建的所有规则字符串依次与某数据块进行匹配,当匹配到G01、G02或G03时,则此数据块为单像素绘制圆弧数据块;若匹配到G01,继续检索该数据块中的信息,当检索到X时,记录后续数值作为弧线起点的X坐标;当检索到Y时,记录后续数值作为弧线起点的Y坐标;若匹配到G02,继续检索该数据块中的信息,当检索到X时,记录后续数值作为弧线终点相对于弧起点的X方向相对坐标;当检索到Y时,记录后续数值作为弧线终点相对于弧起点的Y方向相对坐标;顺时针画弧;若匹配到G03,继续检索该数据块中的信息,当检索到I时,记录后续数值作为弧圆心相对于弧起点的X方向相对坐标;当检索到J时,记录后续数值作为弧圆心相对于弧起点的Y方向相对坐标;逆时针画弧。
所述步骤2.2和3.2中的结构体数组采用动态数组形式。
所述图像绘制过程中,浮点型数据默认取整时对四舍五入的像素数据给予0.5像素的补偿。
本发明的有益效果是:针对目前国内软件对Gerber文件图元种类解析绘制单一的问题,分析Gerber文件的数据信息,使用正则表达式完成数据的解析、提取和整理,实现了椭圆、弧线、扇形、正多边形、圆角矩形等五种新增图元的解析绘制;在保存Gerber文件数据过程中,对所分析和整理的数据,优化其存储结构,使用结构体和动态数组解决数据存储问题,摒弃链表等复杂的数据结构,确保了Gerber文件信息的完整提取和保存,同时提高了图像整体数据处理和分析的灵活性;针对Gerber文件数据坐标转换成像素坐标后的数据丢失问题,提出解决方案,提高了图像绘制精度。本发明具有绘制图元种类多、精度高的特点,具有更高的实用价值,可以满足实际工业生产的需求。
附图说明
图1是由解析Gerber文件得到的直线数据绘制的图像示意图;
图2是由解析Gerber文件得到的圆角多边形数据绘制的图像示意图;
图3是由解析Gerber文件得到的椭圆、扇形、弧线、正多边形数据绘制的图像示意图;
图4是Gerber文件解析流程图。
具体实施方式
下面结合附图和实施例对本发明进一步说明,本发明包括但不仅限于下述实施例。
本发明涉及的RS-274X版Gerber文件相关概念如下:
1.Gerber文件的结构
Gerber文件由“数据块”作为基本单元,数据块以星号“*”作为块结束符,主要由“绘制参数”和“绘制命令”两种类型的数据块构成。码是数据块中的一部分,分为功能码和扩展码两种,扩展码所在数据块包含在一对“%”字符内。
2.正则表达式及规则字符串
正则表达式是对字符串操作的一种逻辑公式,字符串包括普通字符(例如,a到z之间的字母)和特殊字符(称为“元字符”)。它使用单个字符串来描述、匹配一系列满足某种句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。正则表达式用事先定义好的一些特定字符及这些特定字符的组合组成一个“规则字符串”,将“规则字符串”作为一种模板与要提取的信息进行比对,找出其中与“规则字符串”类似的语句,实现对所需信息的提取。
在使用正则表达式时,首先需要知道所要检索匹配的字符串的基本格式,而后根据正则表达式的语法规则和所要检索匹配的字符串的格式,研究如何创建特定的正则表达式“规则字符串”,以便能够匹配上所要寻找的字符串,将其检索出来。正则表达式创建过程中的一些主要规则如下:
(1)需要检索匹配准确字符时,直接创建正则表达式的“规则字符串”匹配此字符;
(2)需要检索匹配数字时,根据所要匹配数据的位数创建正则表达式的“规则字符串”;
(3)需要检索匹配不确定的字符时,可以使用或运算等方式进行模糊匹配;
(4)对于复杂字符串,可以嵌套使用多种正则表达式规则,创建一种复杂度高的正则表达式的“规则字符串”,用这样的高复杂度“规则字符串”分层次地将包含在数据块内的数据信息提取出来;在使用一个正则表达式未能提取出数据信息的情况下,考虑使用多个正则表达式提取,达到完整提取数据信息的目的。
本发明的技术方案包括:绘制参数的解析提取和整理、绘制命令的解析提取和整理,以及图像绘制及保存三大部分。在Gerber文件的“绘制参数”数据块,利用正则表达式对绘制参数数据块进行匹配检测,提取两种基本图元(直线、圆)和五种新增图元的数据并整理,改进数据存储格式;在“绘制命令”数据块,分析不同绘制命令数据块的模型结构,使用正则表达式匹配绘制命令,实现绘制命令数据块的绘制行为解析;最后,使用解析得到的图元数据和绘制数据,以MFC的图形设备接口(Graphics Device Interface,GDI)为工具完成图像绘制。
Gerber文件中的“绘制参数”数据块和“绘制命令”数据块属于复杂字符串,需要使用通过嵌套多种正则表达式规则创建的高复杂度“规则字符串”。本专利对其中不同数据块的结构特征进行分析提取,以此为基础,按照正则表达式的构建规则,研究与五种新增图元相关的数据块的匹配法则,设计匹配这些数据块的正则表达式“规则字符串”的语法规则和构建方法,从而检索到需要的数据块,最终达到解析其中数据信息的目的。
本发明的具体步骤如下:
步骤一、定义一动态数组,读取Gerber文件中印刷电路板的表层数据,将其存储到动态数组A中。
步骤二、解析、提取并整理“绘制参数”数据块。具体如下:
1.根据保存在动态数组A中的绘制参数数据块的模型结构,以数据块为单元,根据不同类型数据块的格式,为不同类型的绘制参数数据块创建正则表达式的“规则字符串”;使用所有的“规则字符串”作为模板,依次与绘制参数数据块进行匹配检测,当检索到与绘制参数数据块相匹配的“规则字符串”时,表明检测到一个与“规则字符串”同类别的数据块,将这一部分绘制参数数据块提取出来,并将其分类标记。
Gerber文件的“绘制参数”数据块分为两部分:一部分是用于区分不同绘制参数的字符标识,另一部分是绘制参数的限定字符和数据部分。本发明利用字符标识信息建立正则表达式的匹配识别机制,将其用于“规则字符串”的创建中。主要的“绘制参数”数据块的解析、提取方法如下:
1)解析提取“数据格式”绘制参数
Gerber文件中,有关格式信息的绘制参数数据块以FS开头,之后包括是否省略前导零及尾零;使用绝对坐标或相对坐标及坐标数据的保留方式等信息。其中,L表示省略前导零、T表示省略尾零;A表示绝对坐标、I表示相对坐标;X轴坐标数据是a位整数位,b位小数位;Y轴坐标数据是c位整数位,d位小数位。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)用创建的所有“规则字符串”依次与某数据块进行匹配,当匹配到FS时,则此数据块为数据格式数据块;
(2)检索下文:若为L,记录此文件,省略前导零;若为T,记录此文件,省略尾零;
(3)继续检索,若为A,记录此文件,使用绝对坐标;若为I,记录此文件,使用相对坐标;
(4)继续检索,若检索到X,则识别并记录其后两位数字,作为X方向的数据;若检索到Y,则识别并记录其后两位数字,作为Y方向的数据。
2)解析提取“单位描述”绘制参数
Gerber文件中,有关数据单位的绘制参数数据块以MO开头,之后说明本Gerber文件所采用的数据单位:IN表示英寸,MM表示毫米。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)用创建的所有“规则字符串”依次与某数据块进行匹配,当匹配到MO时,则此数据块为数据单位数据块;
(2)检索下文:识别并记录其采用的数据单位。
3)解析提取“图元描述”绘制参数
Gerber文件中,有关图元的绘制参数数据块以ADD开头,之后包括图元的类型及其规格等信息。其中包含C(圆)、R(矩形)、O(椭圆)、P(正多边形)等图元形状。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)用创建的所有“规则字符串”依次与某数据块进行匹配,当匹配到ADD时,则此数据块为图元类型数据块;
(2)检索下文:若检索到C,为圆形图元;若检索到R,为圆形图元;若检索到O,为椭圆形图元;若检索到P,为正多边形图元。
(3)继续检索,识别并记录后续图元数据。
4)解析提取“偏移描述”绘制参数
Gerber文件中,有关偏移描述的绘制参数数据块以OF开头,之后说明偏移的方向及大小。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)用创建的所有“规则字符串”依次与某数据块进行匹配,当匹配到OF时,则此数据块为偏移描述数据块;
(2)检索下文:识别并记录后续偏移数据。
5)解析提取“图层极性”绘制参数
Gerber文件中,有关图元的绘制参数数据块以IP开头,之后包括图层的正负性。其中NEG表示负,POS表示正。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)用创建的所有“规则字符串”依次与某数据块进行匹配,当匹配到IP时,则此数据块为图层极性数据块;
(2)检索下文:若检索到NEG,记录图层为负性;若检索到POS,记录图层为正性。
2.定义全局变量或局部变量,并对不同形状的图元定义不同的结构体,用不同的结构体数组完整存储图元数据,留待后续使用。
此处的结构体数组仍采用动态数组形式,相比于以往方法使用的链表等复杂数据结构,动态数组可以灵活添加及删除数据,可以直接读取其中的数据,无需像链表等结构那样需要遍历数据,因此后续绘制图像时,动态数组在数据调用方面具有明显优势,可以极大节约计算开销。
步骤三、解析、提取并整理“绘制命令”数据块。具体如下:
1.根据保存在动态数组A中的不同绘制命令数据块的模型结构,以数据块为单元,根据不同类型数据块的格式,为不同类型的绘制命令数据块创建正则表达式的“规则字符串”;以所有的“规则字符串”作为模板,依次与绘制命令数据块进行匹配检测,当检索到与绘制命令数据块相匹配的“规则字符串”时,表明检测到一个与“规则字符串”同类别的数据块,将这一部分绘制命令数据块提取出来,并将其分类标记。
Gerber文件的“绘制命令”数据块包括一个字符的功能码(如G码、D码、M码)、功能码编号、图元编号或坐标数据等,对不同的功能码创建不同的正则表达式的“规则字符串”。主要的“绘制命令”数据块的解析、提取方法如下:
1)解析提取“选择图元”绘制命令
Gerber文件中,G54功能码表示选择图元,其中,D<i>表示图元的编号。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)使用创建的所有“规则字符串”依次与某数据块进行匹配,当匹配到G54时,则此数据块为选择图元数据块;
(2)检索下文:提取并保存之后的图元编号。
2)解析提取“图元或单像素绘制”绘制命令
Gerber文件中,D01、D02和D03为图元或单像素绘制命令。若这段数据块之前有G54D码选定了图元,则是图元移动;否则,是单像素移动。其中,D01表示图元或单像素移动到规定坐标点但并不绘制,D02表示图元或单像素由起始坐标点移动到规定坐标点并绘制轨迹,D03仅在绘制单元是图元的时候使用,表示在规定坐标处绘制一个图元。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)使用创建的所有“规则字符串”依次与某数据块进行匹配,当分别匹配到D01、D02或D03时,则对应的数据块为图元或单像素绘制数据块;
(2)检索下文:
若检索到X,记录X之后的数值,作为X坐标值;
若检索到Y,记录Y之后的数值,作为Y坐标值;
若未匹配到X或Y,则使用之前的坐标值。
3)解析提取“多边形填充”绘制命令
Gerber文件中,标识G36*和G37*之间绘制的是一个封闭的图形,需要对这个封闭图形内部进行填充。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)使用创建的所有“规则字符串”依次与某数据块进行匹配,当在同一数据块内同时匹配到G36及G37时,则此数据块为多边形填充数据块;
(2)检索下文:对G36和G37之间的内容进行标记,以备后续填充此图形。
4)解析提取“单像素绘制圆弧”绘制命令
Gerber文件中,G01、G02、G03功能码为圆弧绘制命令。其中,G01规定弧的起点,G02表示顺时针画弧、G03表示逆时针画弧,同时G02、G03规定弧的终点及弧的圆心相对于弧的起点的相对坐标。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)使用创建的所有“规则字符串”依次与某数据块进行匹配,当匹配到G01、G02或G03时,则此数据块为单像素绘制圆弧数据块;
(2)若匹配到G01,检索下文:
当检索到X时,记录后续数值,作为弧线起点的X坐标;
当检索到Y时,记录后续数值,作为弧线起点的Y坐标。
若匹配到G02,检索下文:
当检索到X时,记录后续数值,作为弧线终点相对于弧起点的X方向相对坐标;
当检索到Y时,记录后续数值,作为弧线终点相对于弧起点的Y方向相对坐标;
顺时针画弧。
若匹配到G03,检索下文:
当检索到I时,记录后续数值,作为弧圆心相对于弧起点的X方向相对坐标;
当检索到J时,记录后续数值,作为弧圆心相对于弧起点的Y方向相对坐标。
逆时针画弧。
2.定义全局变量或局部变量,并对不同绘制命令定义不同的结构体,用不同的结构体数组存储绘制命令数据,留待后续使用。这里的结构体数组同样采用动态数组形式。
步骤四、以图像形式绘制并保存由Geber文件解析得到的印刷电路板数据。
1.绘制图像。
对携带有印刷电路板的图元数据和绘制数据的Gerber文件解析、提取、整理后,将这些数据传递到图像绘制部分,使用MFC的GDI绘制工具绘制图像,完成Gerber文件文本信息到图像信息的转换。
图像绘制之前需要先确定坐标系和坐标单位,设定GDI绘制图像的参数。通过坐标系和映射模式设定,保证绘制图像的图元位置准确,绘制出标准的图像文件。图像绘制包括直线,圆形,以及本专利新增的椭圆、弧线、扇形、正多边形、圆角矩形等图元的绘制,和以不同形状图元作为基本绘图单位的线段绘制。
图像绘制过程中,从Gerber文件数据坐标转换成像素坐标后,在绘图过程中由于存在浮点型数据默认取整问题,存在数据丢失现象,导致在绘制一个图像对象时,对数据进行舍入处理的最大误差会达到2个像素。据此,在数据整理过程中,将四舍五入的像素数据给予0.5像素的补偿,可以将单个图像对象绘制的最大误差降低到1个像素。该方法可以有效提高图元绘制的相对位置精度,更准确地描述图元位置和图元绘制轨迹,有效避免了图元位置偏移、邻近图元粘连或间距过大、绘制的直线区域增加或偏移等一系列问题。从而使整个印刷电路板图像绘制的总体误差大大减小。
2.保存图像。
创建一个新的位图,将所绘制的图像从动态内存存储空间拷贝到新的位图中,完成图像的保存。
本实例中,Gerber文件的解析和绘制包括以下四个步骤。
步骤一、读取Gerber文件中印刷电路板的表层数据,将其存储到动态数组A中。
步骤二、解析、提取并整理绘制参数。
1.根据保存在动态数组A中的绘制参数数据块的模型结构,以数据块为单元,为每个图元类型的数据块定义正则表达式的规则字符串,用创建的所有“规则字符串”对绘制参数数据块进行匹配检测。当某一“规则字符串”与待检测的绘制参数数据块达到匹配时,表明检测到一个相应的绘制参数。提取该绘制参数数据块中含有的图元数据,并将其分类标记。
对于复杂数据块,可以使用嵌套正则表达式的方式,分层次将包含在数据块内的数据信息提取出来;在使用一个正则表达式未能提取出数据信息的情况下,考虑使用多个正则式提取,达到完整提取数据信息的目的。
主要的“绘制参数”数据块的解析、提取方法如下:
1)解析提取“数据格式”绘制参数
Gerber文件中,有关格式信息的绘制参数数据块以FS开头,之后包括是否省略前导零及尾零;使用绝对坐标或相对坐标及坐标数据的保留方式等信息。其中,L表示省略前导零、T表示省略尾零;A表示绝对坐标、I表示相对坐标;X轴坐标数据是a位整数位,b位小数位;Y轴坐标数据是c位整数位,d位小数位。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)用创建的所有“规则字符串”依次与某数据块进行匹配,当匹配到FS时,则此数据块为数据格式数据块;
(2)检索下文:若为L,记录此文件,省略前导零;若为T,记录此文件,省略尾零;
(3)继续检索,若为A,记录此文件,使用绝对坐标;若为I,记录此文件,使用相对坐标;
(4)继续检索,若检索到X,则识别并记录其后两位数字,作为X方向的数据;若检索到Y,则识别并记录其后两位数字,作为Y方向的数据。
2)解析提取“单位描述”绘制参数
Gerber文件中,有关数据单位的绘制参数数据块以MO开头,之后说明本Gerber文件所采用的数据单位:IN表示英寸,MM表示毫米。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)用创建的所有“规则字符串”依次与某数据块进行匹配,当匹配到MO时,则此数据块为数据单位数据块;
(2)检索下文:识别并记录其采用的数据单位。
3)解析提取“图元描述”绘制参数
Gerber文件中,有关图元的绘制参数数据块以ADD开头,之后包括图元的类型及其规格等信息。其中包含C(圆)、R(矩形)、O(椭圆)、P(正多边形)等图元形状。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)用创建的所有“规则字符串”依次与某数据块进行匹配,当匹配到ADD时,则此数据块为图元类型数据块;
(2)检索下文:若检索到C,为圆形图元;若检索到R,为圆形图元;若检索到O,为椭圆形图元;若检索到P,为正多边形图元。
(3)继续检索,识别并记录后续图元数据。
4)解析提取“偏移描述”绘制参数
Gerber文件中,有关偏移描述的绘制参数数据块以OF开头,之后说明偏移的方向及大小。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)用创建的所有“规则字符串”依次与某数据块进行匹配,当匹配到OF时,则此数据块为偏移描述数据块;
(2)检索下文:识别并记录后续偏移数据。
5)解析提取“图层极性”绘制参数
Gerber文件中,有关图元的绘制参数数据块以IP开头,之后包括图层的正负性。其中NEG表示负,POS表示正。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)用创建的所有“规则字符串”依次与某数据块进行匹配,当匹配到IP时,则此数据块为图层极性数据块;
(2)检索下文:若检索到NEG,记录图层为负性;若检索到POS,记录图层为正性。
2.定义全局变量或局部变量,并对不同形状的图元定义不同的结构体,用不同的结构体数组完整存储图元数据,留待后续使用。
步骤三、解析、提取并整理绘制命令数据块。
1.根据保存在动态数组A中的不同绘制命令数据块的模型结构,为每个绘制命令定义正则表达式的“规则字符串”,用创建的所有“规则字符串”对绘制命令数据块进行匹配检测,当达到匹配时,检测到一个类型的Gerber文件绘制命令。提取该绘制命令数据块中的绘制命令数据,并将其分类标记。
主要的“绘制命令”数据块的解析、提取方法如下:
1)解析提取“选择图元”绘制命令
Gerber文件中,G54功能码表示选择图元,其中,D<i>表示图元的编号。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)使用创建的所有“规则字符串”依次与某数据块进行匹配,当匹配到G54时,则此数据块为选择图元数据块;
(2)检索下文:提取并保存之后的图元编号。
2)解析提取“图元或单像素绘制”绘制命令
Gerber文件中,D01、D02和D03为图元或单像素绘制命令。若这段数据块之前有G54D码选定了图元,则是图元移动;否则,是单像素移动。其中,D01表示图元或单像素移动到规定坐标点但并不绘制,D02表示图元或单像素由起始坐标点移动到规定坐标点并绘制轨迹,D03仅在绘制单元是图元的时候使用,表示在规定坐标处绘制一个图元。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)使用创建的所有“规则字符串”依次与某数据块进行匹配,当分别匹配到D01、D02或D03时,则对应的数据块为图元或单像素绘制数据块;
(2)检索下文:
若检索到X,记录X之后的数值,作为X坐标值;
若检索到Y,记录Y之后的数值,作为Y坐标值;
若未匹配到X或Y,则使用之前的坐标值。
3)解析提取“多边形填充”绘制命令
Gerber文件中,标识G36*和G37*之间绘制的是一个封闭的图形,需要对这个封闭图形内部进行填充。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)使用创建的所有“规则字符串”依次与某数据块进行匹配,当在同一数据块内同时匹配到G36及G37时,则此数据块为多边形填充数据块;
(2)检索下文:对G36和G37之间的内容进行标记,以备后续填充此图形。
4)解析提取“单像素绘制圆弧”绘制命令
Gerber文件中,G01、G02、G03功能码为圆弧绘制命令。其中,G01规定弧的起点,G02表示顺时针画弧、G03表示逆时针画弧,同时G02、G03规定弧的终点及弧的圆心相对于弧的起点的相对坐标。
根据以上格式,按如下方法,利用创建的“规则字符串”进行信息解析和提取:
(1)使用创建的所有“规则字符串”依次与某数据块进行匹配,当匹配到G01、G02或G03时,则此数据块为单像素绘制圆弧数据块;
(2)若匹配到G01,检索下文:
当检索到X时,记录后续数值,作为弧线起点的X坐标;
当检索到Y时,记录后续数值,作为弧线起点的Y坐标。
若匹配到G02,检索下文:
当检索到X时,记录后续数值,作为弧线终点相对于弧起点的X方向相对坐标;
当检索到Y时,记录后续数值,作为弧线终点相对于弧起点的Y方向相对坐标;
顺时针画弧。
若匹配到G03,检索下文:
当检索到I时,记录后续数值,作为弧圆心相对于弧起点的X方向相对坐标;
当检索到J时,记录后续数值,作为弧圆心相对于弧起点的Y方向相对坐标。
逆时针画弧。
2.定义全局变量或局部变量,并对不同绘制命令定义不同的结构体,用不同的结构体数组存储绘制命令数据,留待后续使用。这里的结构体数组同样采用动态数组形式。
步骤四、以图像形式绘制并保存由Geber文件解析得到的印刷电路板数据。
1.绘制图像。
对Gerber文件解析、提取和整理后,将得到的数据传递到图像绘制部分,使用MFC的GDI绘制工具绘制图像,完成Gerber文件文本信息到图像信息的转换。
图像绘制之前需要先确定坐标系和坐标单位,设定GDI绘制图像的参数。通过坐标系和映射模式设定,保证绘制图像的图元位置准确,绘制出标准的图像文件。图像绘制包括直线,圆形,以及本专利新增的椭圆、弧线、扇形、正多边形、圆角矩形等图元的绘制,和以不同形状图元作为基本绘图单位的线段绘制。在数据整理过程中,将像素数据给予0.5像素的补偿,以有效提高图元绘制的相对位置精度,更准确地描述图元位置和图元绘制轨迹。
2.保存图像。
创建一个新的位图,将所绘制的图像从动态内存存储空间拷贝到新的位图中,完成图像的保存。
实例1~3分别针对直线、圆角多边形、椭圆、扇形、弧线和正多边形等图元的数据块格式,采用正则表达式和相应的数据分析和整理方法完成数据解析,利用MFC的GDI绘制工具对解析出的Gerber文件数据进行图像绘制,均取得了良好的效果。
实现的硬件环境是CPU AMD Athlon(tm)II X2 245Processor,主频2.91GHz,内存2GB的计算机。实例中坐标系原点位于图像左下角方向,X轴水平向右,Y轴垂直向上,单位为英寸。
实例1:解析Gerber文件的一个直线数据块,得到如下信息:
检索到圆形图元,编号分别为36,37,38,外径分别为0.185170,0.090441,0.045020;
调用36号图元,在坐标为(0.44931,0.37002)位置绘制单独图元;移动图元至(2.69586,0.34359),以(2.69586,0.34359)为起点,(2.69586,4.78383)为终点绘制直线;以(0.71361,2.24655)为起点(6.71322,2.24655)为终点绘制直线;
调用37号图元,在坐标为(9.46194,0.55503)位置绘制单独图元;移动图元至(11.60277,0.50217),以(11.60277,0.50217)为起点(11.60277,4.73097)为终点绘制直线;
调用38号图元,移动图元至(9.38265,1.74438),以(9.38265,1.74438)为起点(13.98147,1.74438)为终点绘制直线。
根据以上信息,将英寸坐标映射转换为像素坐标后,所绘制的图像示意图如图1所示。
实例2:解析Gerber文件的一个含有填充圆角多边形的数据块,得到如下信息:
检索到圆形图元,编号为40,外径为0.040441;
调用40号图元;
以(1.34793,0.63432)为起点(10.22841,0.63432)为终点绘制直线,以(10.22841,0.63432)为起点,(10.99488,1.3215)为终点绘制弧线,弧圆心相对于弧起点的相对坐标为(-0.23787,0.95148);
以(10.99488,1.3215)为起点(10.99488,2.40513)为终点绘制直线,以(10.99488,2.40513)为起点,(10.22841,3.1716)为终点绘制弧线,弧圆心相对于弧起点的相对坐标为(-1.00434,-0.18501);
以(10.22841,3.1716)为起点(1.34793,3.1716)为终点绘制直线,以(1.34793,3.1716)为起点,(0.58146,2.51085)为终点绘制弧线,弧圆心相对于弧起点的相对坐标为(0.21144,-0.95148);
以(0.58146,2.51085)为起点(0.58146,1.24221)为终点绘制直线,以(0.58146,1.24221)为起点,(1.34793,0.63432)为终点绘制弧线,弧圆心相对于弧起点的相对坐标为(0.97791,0.34359);
填充多边形。
根据以上信息,将英寸坐标映射转换为像素坐标后,所绘制的图像示意图如图2所示。
实例3:解析Gerber文件的一个含有椭圆、扇形、弧线和正多边形图元的数据块,得到如下信息:
检索到椭圆图元,编号为57;X向大小为3.09231,Y向大小为1.34793;
检索到多边形图元,编号为30,边长为1.29507,边数为6;旋转角度为120°;
检索到圆形图元,编号为36,外径为0.040441;
调用36号图元,以(10.12269,0.42288)为起点,(11.52348,1.92939)为终点绘制弧线,弧圆心相对于弧起点的相对坐标为(-0.58146,1.77081);以(11.52348,1.92939)为起点,(8.27259,1.92939)为终点及以(8.27259,1.92939)为起点,(10.12269,0.42288)为终点绘制直线;完成扇形绘制;
以(11.33847,3.30375)为起点,(8.40474,4.17594)为终点绘制弧线,弧圆心相对于弧起点的相对坐标为(-1.40079,0.71361);
调用57号图元,在(2.53728,1.34793)位置绘制单独椭圆图元;
调用30号图元,在(2.53728,4.25523)绘制单独多边形图元;
根据以上信息,将英寸坐标映射转换为像素坐标后,所绘制的图像示意图如图3所示。
Claims (4)
1.一种改善绘图精度的多图元Gerber文件解析及绘制方法,其特征在于包括下述步骤:
步骤一,定义一动态数组A,读取Gerber文件中印刷电路板的表层数据,将其存储到动态数组A中;
步骤二,解析、提取并整理绘制参数数据块,具体如下:
2.1.根据保存在动态数组A中的绘制参数数据块的模型结构,以数据块为单元,根据不同类型数据块的格式,为不同类型的绘制参数数据块创建正则表达式的规则字符串;使用所有的规则字符串作为模板,依次与绘制参数数据块进行匹配检测,当检索到与绘制参数数据块相匹配的规则字符串时,表明检测到一个与规则字符串同类别的数据块,将这一部分绘制参数数据块提取出来,并将其分类标记;
2.2.定义全局变量或局部变量,对不同形状的图元分别定义不同的结构体,用不同的结构体数组完整存储图元数据;
所述的步骤二中,用创建的所有规则字符串依次与某数据块进行匹配,当匹配到FS时,则此数据块为数据格式数据块;继续检索该数据块中的信息,若为L,记录此文件,省略前导零;若为T,记录此文件,省略尾零;继续检索,若为A,记录此文件,使用绝对坐标;若为I,记录此文件,使用相对坐标;继续检索,若检索到X,则识别并记录其后两位数字,作为X方向的数据;若检索到Y,则识别并记录其后两位数字,作为Y方向的数据;用创建的所有规则字符串依次与某数据块进行匹配,当匹配到MO时,则此数据块为数据单位数据块;继续检索该数据块中的信息,识别并记录其采用的数据单位;用创建的所有规则字符串依次与某数据块进行匹配,当匹配到ADD时,则此数据块为图元类型数据块;继续检索该数据块中的信息,若检索到C,为圆形图元;若检索到R,为圆形图元;若检索到O,为椭圆形图元;若检索到P,为正多边形图元;继续检索,识别并记录后续图元数据;用创建的所有规则字符串依次与某数据块进行匹配,当匹配到OF时,则此数据块为偏移描述数据块;继续检索该数据块中的信息,识别并记录后续偏移数据;用创建的所有规则字符串依次与某数据块进行匹配,当匹配到IP时,则此数据块为图层极性数据块;继续检索该数据块中的信息,若检索到NEG,记录图层为负性;若检索到POS,记录图层为正性;
步骤三,解析、提取并整理绘制命令数据块,具体如下:
3.1.根据保存在动态数组A中的不同绘制命令数据块的模型结构,以数据块为单元,根据不同类型数据块的格式,为不同类型的绘制命令数据块创建正则表达式的规则字符串;以所有的规则字符串作为模板,依次与绘制命令数据块进行匹配检测,当检索到与绘制命令数据块相匹配的规则字符串时,表明检测到一个与规则字符串同类别的数据块,将这一部分绘制命令数据块提取出来,并将其分类标记;
3.2.定义全局变量或局部变量,对不同绘制命令定义不同的结构体,用不同的结构体数组存储绘制命令数据;
步骤四,以图像形式绘制并保存由Geber文件解析得到的印刷电路板数据,具体如下:
4.1.将印刷电路板的图元数据和绘制数据传递到图像绘制部分,使用MFC的GDI绘制工具绘制图像,完成Gerber文件文本信息到图像信息的转换;
4.2.创建一个新的位图,将所绘制的图像从动态内存存储空间拷贝到新的位图中,完成图像的保存。
2.根据权利要求1所述的改善绘图精度的多图元Gerber文件解析及绘制方法,其特征在于:用创建的所有规则字符串依次与某数据块进行匹配,当匹配到G54时,则此数据块为选择图元数据块;继续检索该数据块中的信息,提取并保存之后的图元编号;用创建的所有规则字符串依次与某数据块进行匹配,当匹配到D01、D02或D03时,则对应的数据块为图元或单像素绘制数据块;继续检索该数据块中的信息,若检索到X,记录X之后的数值作为X坐标值;若检索到Y,记录Y之后的数值作为Y坐标值;若未匹配到X或Y,则使用之前的坐标值;用创建的所有规则字符串依次与某数据块进行匹配,当在同一数据块内同时匹配到G36及G37时,则此数据块为多边形填充数据块;继续检索该数据块中的信息,对G36和G37之间的内容进行标记,以备后续填充此图形;用创建的所有规则字符串依次与某数据块进行匹配,当匹配到G01、G02或G03时,则此数据块为单像素绘制圆弧数据块;若匹配到G01,继续检索该数据块中的信息,当检索到X时,记录后续数值作为弧线起点的X坐标;当检索到Y时,记录后续数值作为弧线起点的Y坐标;若匹配到G02,继续检索该数据块中的信息,当检索到X时,记录后续数值作为弧线终点相对于弧起点的X方向相对坐标;当检索到Y时,记录后续数值作为弧线终点相对于弧起点的Y方向相对坐标;顺时针画弧;若匹配到G03,继续检索该数据块中的信息,当检索到I时,记录后续数值作为弧圆心相对于弧起点的X方向相对坐标;当检索到J时,记录后续数值作为弧圆心相对于弧起点的Y方向相对坐标;逆时针画弧。
3.根据权利要求1所述的改善绘图精度的多图元Gerber文件解析及绘制方法,其特征在于:所述步骤2.2和3.2中的结构体数组采用动态数组形式。
4.根据权利要求1所述的改善绘图精度的多图元Gerber文件解析及绘制方法,其特征在于:所述图像绘制过程中,浮点型数据默认取整时对四舍五入的像素数据给予0.5像素的补偿。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810838727.5A CN109241555B (zh) | 2018-07-27 | 2018-07-27 | 一种改善绘图精度的多图元Gerber文件解析及绘制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810838727.5A CN109241555B (zh) | 2018-07-27 | 2018-07-27 | 一种改善绘图精度的多图元Gerber文件解析及绘制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109241555A CN109241555A (zh) | 2019-01-18 |
CN109241555B true CN109241555B (zh) | 2022-12-23 |
Family
ID=65072613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810838727.5A Active CN109241555B (zh) | 2018-07-27 | 2018-07-27 | 一种改善绘图精度的多图元Gerber文件解析及绘制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109241555B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110068586B (zh) * | 2019-04-10 | 2020-06-12 | 中国石油大学(北京) | 扫描电镜照片的制图方法及装置 |
CN110751624B (zh) * | 2019-09-10 | 2022-08-09 | 华中科技大学 | 一种提高pcb检查精度的方法及系统 |
CN112668274A (zh) * | 2020-12-31 | 2021-04-16 | 芯和半导体科技(上海)有限公司 | 一种2d图形显示方法 |
CN115349136A (zh) * | 2022-07-08 | 2022-11-15 | 卓永红 | 基于位图图元的图形处理系统,方法和gpu |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103198476A (zh) * | 2013-03-12 | 2013-07-10 | 西北工业大学 | 一种粗线型十字圆环标记的图像检测方法 |
KR20130109873A (ko) * | 2012-03-28 | 2013-10-08 | 주식회사 고영테크놀러지 | Pcb 검사장치의 작업 데이터 생성 및 검사방법 |
CN103678598A (zh) * | 2013-12-12 | 2014-03-26 | 成都术有科技有限公司 | 基于Gerber文档内建建标的电路板精准检测方法 |
CN105512428A (zh) * | 2015-12-30 | 2016-04-20 | 苏州优纳科技有限公司 | 一种自动光学检测设备的检测模板生成方法及装置 |
-
2018
- 2018-07-27 CN CN201810838727.5A patent/CN109241555B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130109873A (ko) * | 2012-03-28 | 2013-10-08 | 주식회사 고영테크놀러지 | Pcb 검사장치의 작업 데이터 생성 및 검사방법 |
CN103198476A (zh) * | 2013-03-12 | 2013-07-10 | 西北工业大学 | 一种粗线型十字圆环标记的图像检测方法 |
CN103678598A (zh) * | 2013-12-12 | 2014-03-26 | 成都术有科技有限公司 | 基于Gerber文档内建建标的电路板精准检测方法 |
CN105512428A (zh) * | 2015-12-30 | 2016-04-20 | 苏州优纳科技有限公司 | 一种自动光学检测设备的检测模板生成方法及装置 |
Non-Patent Citations (3)
Title |
---|
F.M. Battiston等.A chemical sensor based on a microfabricated cantilever array with simultaneous resonance-frequency and bending readout.《Sensors and Actuators》.2001,第122-131页. * |
姚蛟.PCB光学检测中Gerber文件的应用研究.《万方数据库学位论文库》.2016,正文第三章. * |
张静等.采用Gerber文档的印刷电路板表观检测.《光学精密工程》.2013,(第10期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN109241555A (zh) | 2019-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109241555B (zh) | 一种改善绘图精度的多图元Gerber文件解析及绘制方法 | |
EP0546343B1 (en) | Diagram recognizing system | |
EP1971957B1 (en) | Methods and apparatuses for extending dynamic handwriting recognition to recognize static handwritten and machine generated text | |
KR20060049081A (ko) | 계층적 리스트 및 아웃라인을 파싱하기 위한 방법 및시스템 | |
KR20000057730A (ko) | 문자 분할 사용자 인터페이스를 갖춘 수기 정보 처리 시스템 | |
CN113095267B (zh) | 统计图的数据提取方法、电子设备和存储介质 | |
US9323726B1 (en) | Optimizing a glyph-based file | |
US20210240932A1 (en) | Data extraction and ordering based on document layout analysis | |
CN105488471A (zh) | 一种字形识别方法及装置 | |
CN109871743B (zh) | 文本数据的定位方法及装置、存储介质、终端 | |
CN100595751C (zh) | 可缩放笔划字体的系统和方法 | |
CN112966676B (zh) | 一种基于零样本学习的文档关键信息抽取方法 | |
CN116110051B (zh) | 一种文件信息处理方法、装置、计算机设备及存储介质 | |
CN109784236B (zh) | 一种识别铁路图纸中表格内容的方法 | |
CN112364709A (zh) | 基于编码识别的机柜智能资产盘点方法 | |
JP4807618B2 (ja) | 画像処理装置及び画像処理プログラム | |
EP3477547B1 (en) | Optical character recognition systems and methods | |
WO2009113869A1 (en) | A word length indexed dictionary for use in an optical character recognition (ocr) system. | |
CN112597267B (zh) | 一种基于模式识别的英文论文文档多粒度内容处理方法 | |
CN110175563B (zh) | 金属切削刀具图纸标注识别方法及系统 | |
CN112270704A (zh) | 一种基于数据链表结构的星点质心提取方法 | |
CN105353948A (zh) | 一种信息处理方法和装置 | |
CN109800478B (zh) | 一种铁路图纸中信号机识别的方法 | |
CN110413964A (zh) | 一种使模具刻字符转成可编辑文本的方法及计算机可读存储介质 | |
CN113902704A (zh) | 一种基于八邻域方向编码的汉字骨架拐点检测方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |