CN113111458A - 一种基于dxf的钣金件自动识别和定位方法 - Google Patents
一种基于dxf的钣金件自动识别和定位方法 Download PDFInfo
- Publication number
- CN113111458A CN113111458A CN202110396136.9A CN202110396136A CN113111458A CN 113111458 A CN113111458 A CN 113111458A CN 202110396136 A CN202110396136 A CN 202110396136A CN 113111458 A CN113111458 A CN 113111458A
- Authority
- CN
- China
- Prior art keywords
- closed
- ray
- segment
- graph
- closed graph
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/17—Mechanical parametric or variational design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/181—Segmentation; Edge detection involving edge growing; involving edge linking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
- G06T7/66—Analysis of geometric attributes of image moments or centre of gravity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30108—Industrial image inspection
- G06T2207/30164—Workpiece; Machine component
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Image Analysis (AREA)
Abstract
本发明涉及一种基于DXF的钣金件自动识别和定位方法,该方法包括以下步骤:(1)文件解析。(2)生成封闭图形。(3)判断封闭图形的嵌套关系。(4)生成零件。(5)零件形状识别。(6)选取合适的标刻位置。本发明能够对金属板材上的不规则钣金件进行识别和定位,为后续在钣金件上做标记提供了必要的种类和位置信息,具有简单易行、自动化程度高等特点。
Description
技术领域
本发明涉及计算机图形学和板材加工技术领域,具体涉及一种基于DXF的钣金件自动识别和定位方法。
背景技术
在钣金切割件生产过程中,对切割后钣金件的种类和数量管理往往是非常耗时耗力的。金属板材上排布着各种形状、不同数量的预加工钣金件,生产之后钣金件堆积在一起难以分类和管理。只有在钣金激光切割的工序之前对待切割板材中的钣金件进行识别并给予相应记号,才能在加工完成后对工件方便的进行分类和管理、提高生产效率。
激光切割机在板材生产行业中应用的比较广泛,但激光切割机加工板材存在加工后工件不便管理,生产效率低等缺点。在大型金属板材的激光切割加工过程中,由于一张大型板材上计划排版着数量较多的零件,并且这些零件形状不尽相同,为了尽可能提高金属板材利用率,零件会被尽可能的排布在可利用空间处,因此,大型板材上零件的分布位置也鲜有规律。虽然在激光切割板材的过程中,可以依托生产人员对不同形状钣金件进行辨别并给予不同标记,但是,依托人工执行该道工序会有诸多缺点:第一、人工辨别钣金件形状费时费力,会延长生产时间,拉低经济效益。第二、人工辨别钣金件形状可能会出现失误,难以提高生产效率。
因此,如何在钣金件加工过程中对钣金件进行自动识别和定位,是钣金件产品分类与管理过程中亟需解决的技术问题。
发明内容
本发明的目的在于提供一种基于DXF的钣金件自动识别和定位方法,该方法能够对金属板材上的不规则钣金件进行识别和定位,为后续在钣金件上做标记提供了必要的种类和位置信息,具有简单易行、自动化程度高等特点。
为实现上述目的,本发明采用了以下技术方案:
一种基于DXF的钣金件自动识别和定位方法,其特征在于:该方法包括以下步骤:
(1)文件解析:使用程序解析并读入DXF文件,对于DXF文件中所记录的各个图元进行归纳分类。
(2)生成封闭图形:对于读入的各个图元进行位置判断,将其中有位置接触的图元按照位置首尾相连,最终生成多个首尾相连成环状的封闭图形。
(3)判断封闭图形的嵌套关系:对于获得的封闭图形集合,两两判断封闭图形的嵌套关系。
(4)生成零件:对于已知封闭图形之间的嵌套关系,逐一生成新的零件。
(5)零件形状识别:对于已经生成的零件集合,依次挑选出零件与数据库中的零件形状进行比对,并给与相应的编号。
(6)选取合适的标刻位置:对于已经生成的零件集合,在每个零件的空白实体处选取合适的用于做标记的位置区域。
进一步的,步骤(1)中所述的“文件解析”,其具体包括以下步骤:
(11)在本地选取DXF图形文件,基于netDXF开源代码库读入DXF文件。
(12)根据DXF文件中的组码定义,对DXF文件中包含的各类图元进行提取,将提取后的各类图元保存到不同的集合中。
(13)将除线段、圆弧和圆三类基础图元之外的其他图元打散成基础图元并加入基础图元的集合中。
(14)根据已经得到的基础图元生成片段,并根据图元类型的不同赋予它不同的属性,并将它们全部保存到片段类型的集合中。
进一步的,步骤(2)所述的“生成封闭图形”,其具体包括以下步骤:
(21)选取片段类型集合的第一个片段,在剩余片段中寻找与其首尾相连的片段,找到后将该片段接到上一个片段的末尾;每找到一个片段,即将该片段从片段集合中删除。其中,片段集合中的片段初始没有明确的首尾,但是当片段一旦被连接在片段链上时,片段的两个端点中与片段链尾部相连的那端作为首部,而没有相连的那端作为尾部。
(22)找到一个片段之后,再在剩余的集合中寻找与片段链的尾片段首尾相连的片段,依次循环,直到组拼成一个封闭环状的由多个线段组成的封闭图形,每找到一个片段即将该片段从片段集合中删除。
(23)找到一个封闭图形之后,再重新从剩余的片段集合中选取一个片段,循环查找下一个能首尾相接的片段。
(24)在查找下一个片段的过程中,若在某一个片段之后,无法找到下一个首尾相连的片段,而此时封闭图形还未闭合,则从片段集合中删除此次查找组成片段链的所有片段,并在剩余的片段集合中选取新片段再重新开始。
(25)重复步骤(22)-(24),直到片段集合中为空,将已经获得的所有封闭图形保存到一个封闭图形类型的集合中。
进一步的,步骤(3)中所述的“判断封闭图形的嵌套关系”,其具体包括以下步骤:
(31)依次遍历封闭图形集合中的封闭图形。
(32)每遍历一个封闭图形时,将该封闭图形与集合中其他的封闭图形依次比较,判断它们的相对位置关系。
判断两个封闭图形相对位置关系的步骤如下:
(321)在组成第一个封闭图形的片段集合中,首先取出片段集合中的第一个片段,在该片段上中点附近均匀取10个点,作为射线起点的集合。
(322)默认的射线起点为射线点集合中的第一个点,设使用的射线的方向为X轴正方向,以该射线点为射线起点,出发沿X轴正方向作一条射线,判断射线与第二个封闭图形是否有交点,并确定交点的数量。
因为封闭图形是由多个片段组成,所以,判断射线与封闭图形的相交,就等价于判断射线与各个片段的相交;射线与封闭图形相交的交点数等于射线与组成该封闭图形的所有片段相交的交点数总和。
判断射线与线段的相交,当射线与线段的起点或者终点相交时,舍弃当前射线点并从射线点集合中取出下一个发出的射线不与线段的起点或者终点相交的射线起点;设已知线段起点为P1(Xp1,Yp1)、线段终点为P2(Xp2,Yp2),射线的起点为R(XR,YR),线段的直线方程如公式(1)所示,设射线与直线的交点为I(XI,YI),则由公式(2)可得交点的坐标值。
当满足公式(3)时,射线与直线有交点,且交点在线段上。
判断射线与圆的相交,当射线与圆相切时,舍弃当前射线点并从射线点集合中取出下一个发出的射线不与圆相切的射线起点使用;一个圆中所保存的信息有该圆的圆心坐标O(XO,YO),该圆的半径R;一条射线中用于判断的信息为该射线的射线起点R(XR,YR),设射线起点到圆心X轴方向的差值为dX、Y轴方向的差值为dY、射线起点到圆心之间的距离dRO,采用公式(4)、(5)、(6)求得得到dX、dY和dRO:
dX=|XR-XO| (19)
dY=|YR-YO| (20)
当满足公式(7)时,射线与圆相交于一点:
当满足如下公式(8)时,射线与圆相交于两点:
判断射线与圆弧相交,当射线与圆弧所在圆相切,或者与圆弧的起点或终点相交时,舍弃当前射线点并从射线点集合中取出下一个发出的射线不与圆弧所在圆相切,或者与圆弧的起点或终点相交的射线起点使用。
判断射线与圆弧相交,首先要满足公式(8)所示的射线与圆的相交条件,设一个圆弧中保存的用于判断数据信息有圆弧中心O(XO,YO)、圆弧半径R、圆弧的起始弧度圆弧的结束弧度一条射线中用于判断的信息为该射线的射线起点R(XR,YR),射线方程如公式(9)所示,圆弧所在圆的方程如公式(10)所示;
y=YR (24)
(x-OX)2+(y-OY)2=R2 (25)
假设射线与圆弧所在圆的交点为P1(XP1,YP1)、P2(XP2,YP2),由公式(9)和(10)可解出P1、P2的坐标值;
得到了P1、P2两点的坐标之后,设P1、P2两点在圆中的弧度值分别为βP1、βP2,根据公式(12)计算弧度值。
当某一交点的弧度值位于圆弧的起始弧度与终止弧度之间时,此时判定该交点位于圆弧上,即射线与圆弧相交。
(323)经过步骤(322)可知,从第一个封闭图形上发出和一条沿X轴正方向的射线与第二个封闭图形之间的交点数;当交点数为奇数时,判定第一个封闭图形被第二个封闭图形嵌套;当交点数为偶数时,判定第一个封闭图形不被第二个封闭图形嵌套。但这并不意味着第二个封闭图形不被第一个封闭图形嵌套,也就是说不能排除它们之间仍有嵌套关系,至于到底有没有嵌套关系,需要第一个封闭图形与第二个封闭图形相互交换位置时再次判断才能得出结论。
(324)当每判断一次封闭图形被嵌套,则记录该封闭图形被嵌套次数增加1,记录每一个封闭图形被嵌套的总次数;当封闭图形被嵌套总次数为2时,标记该封闭图形为被嵌套零件外边缘封闭图形。
(33)当前遍历的这个封闭图形与集合中剩余的全部封闭图形比较完之后,更换遍历过程中的下一个封闭图形,再重复步骤(32),直到遍历结束。
进一步的,在步骤(4)中,通过判断两个封闭图形之间的嵌套关系和第一个封闭图形的总的被嵌套次数,适时生成新的零件。对于本发明中应用的零件,一个零件是由一个外边缘封闭图形和若干个内边缘封闭图形组成。考虑到DXF的排版图中存在一个零件被另一个零件嵌套的情况,这里引入封闭图形的被嵌套次数进行判断,其中:若一个封闭图形被嵌套的次数为0,则它为一个零件的外边缘图形;若一个封闭图形被嵌套的次数为1,则它为一个零件的内边缘图形;若一个封闭图形被嵌套的次数为2,则它为内嵌零件的外边缘图形;若一个封闭图形被嵌套的次数为3,则它为内嵌零件的内边缘图形。
步骤(4)中所述的“生成零件”,其具体包括以下步骤:
(41)若第一个封闭图形没有被第二个封闭图形嵌套,则先判断已经生成的零件集合中是否有零件的外边缘与该封闭图形的形状和位置均相同,若没有,则以第一个封闭图形为零件外边缘生成一个新的零件,并将零件加入到零件集合中去;若有相同的,则不用操作。
(42)若第一个封闭图形被第二个封闭图形嵌套,并且第一个封闭图形的总的被嵌套次数为1,则先判断第二个封闭图形是否与已经生成的零件集合中的零件的外边缘的形状和位置均相同,若没有相同的,则以第二个封闭图形为零件外边缘生成一个新的零件,再把第一个封闭图形加入到这个新零件的内边缘集合中,将该新零件加入零件集合中;若有相同的,则把第一个封闭图形加入到这个有相同外边缘零件的内边缘集合中。
(43)若第一个封闭图形被第二个封闭图形嵌套,并且第一个封闭图形的总的被嵌套次数为2,则先判断第一个封闭图形是否与已经生成的零件集合中的零件的外边缘的形状和位置均相同,若没有相同的,则以第一个封闭图形为零件外边缘生成一个新的零件,将该新零件加入零件集合中,若有相同的,则不用操作。
(44)若第一个封闭图形被第二个封闭图形嵌套,并且第一个封闭图形的总的被嵌套次数为3,则先判断第二个封闭图形是否为被嵌套零件外边缘,若是,则再判断第二个封闭图形是否与已经生成的零件集合中的零件外边缘的形状和位置均相同;若没有相同的,则以第二个封闭图形为零件外边缘生成一个新的零件,然后将第一个封闭图形加入到该新零件的内边缘集合中,将该新零件加入零件集合中;若有相同的,则将第一个封闭图形加入到这个有相同外边缘零件的内边缘集合中;若第二个封闭图形不是被嵌套零件外边缘,则不用操作。
综上所述,当全部执行了上述四个步骤之后,可以得到DXF文件中所包含的所有零件,且所有零件都装在零件集合中。
进一步的,步骤(5)中所述的“零件形状识别”,其具体包括以下步骤:
(51)比较两个零件的总的封闭图形数是否相等,若不相等,则这两个零件不同,若相等,则执行步骤(52)。
(52)比较两个零件的外边缘封闭图形是否相同,若不同,则这两个零件不同,若相同,则执行步骤(53)。
所述比较两个封闭图形是否相同的具体步骤如下:
(521)比较两个封闭图形的最长线段数是否相等或两个封闭图形的最长长度是否相等,若不相等,则这两个封闭图形不相等,若相等,则进入执行步骤(522)。
(522)考虑到实际的封闭图形是由直线和圆弧间隔组成的,因此只需要依次比较组成封闭图形的片段长度是否对应相等即可;从两个封闭图形各自的最长线段处出发,依次比较它们的片段长度是不是都一一相等,若其中有一对片段不相等,则这两个封闭图形不相等,若相等,则这两个封闭图形相等。
(523)若一个封闭图形有多个长度相等的最长端片段,则依次选用这些最长端作为第一个比较长度的片段,进行交叉比对。
(524)对于处于不同方位和不同偏转角度的相同封闭图形之间的比对,由于上述步骤使用组成封闭图形片段链的片段长度进行一一比较,因此也会被判断为相同。
(53)比较两个零件的内边缘封闭图形数是否相等,若不相等,则这两个零件不相同,若相等,则执行步骤(54)。
(54)依次比较两个零件的内边缘封闭图形的形状和相对于各自外边缘封闭图形的方位是否相同,若形状和方位均相同,并且内边缘封闭图形集合中的所有封闭图形比较的结果都是相同,则这两个零件相同,反之不同。
两个相同的零件不受零件在排版图中的具体方位和偏转角度的影响,也会被判断成两个相同的零件。
进一步的,步骤(6)中所述的“选取合适的标刻位置”,其具体包括以下步骤:
(61)建立打标矩形区域;考虑到打标安全距离,这个打标矩形的大小要比实际打标区域稍大。
(62)计算零件的加权面积中心,权重为零件外边缘多边形的面积分布,将初始的打标矩形中心移动到零件的面积加权中心处;零件的面积加权中心的计算步骤如下:
将一个不规则的外边缘封闭图形近似化为一个不规则的多边形,其中圆弧段可近似为圆弧起点与终点直连的线段处理,一个不规则的n边多边形可近似划分为n-2个三角形。
分别计算三角形的面积和重心,假设三角形的三个顶点坐标分别为A1(x1,y1)、A2(x2,y2)和A3(x3,y3),三角形重心坐标为C(cx,cy),三角形面积为S,则三角形的重心和面积计算公式分别为(13)、(14):
得到每个小三角形的重心和面积之后,计算多边形的重心,设多边形重心为Cd(cdx,cdy),共分成了n-2个小三角形,其值可由公式(15)求得:
(63)判断打标矩形区域的初始边界是否与内边缘封闭图形干涉,若不干涉,则找到合适的区域,若干涉,则将打标矩形区域按顺序向右、左、上、下平移一个相对距离,每平移一个相对距离,判断一下是否干涉,递归调用判断方法,直到不发生干涉位为止,此时打标矩形区域的位置即找的合适的打标区域。
由以上技术方案可知,本发明针对性的解决金属板材上不规则钣金件的识别和定位,为后续钣金件上做标记提供了必要的种类和位置信息,简单易行。而且本发明算法全程由计算机运行,不依托人工,提高了钣金件生产过程中的自动化程度。对于一个含有多个多种零件的DXF排版图,本发明通过文件解析步骤,DXF排版图中的各个零件可被拆解为由线段、圆和圆弧等简单片段组成的片段集合;通过生成封闭图形步骤,片段集合中的各个片段能够根据其自身坐标组成多个封闭环状的片段链,即封闭图形;通过判断封闭图形的嵌套关系步骤,借助于一个封闭图形上发出射线与其他封闭图形相交的交点数,判断封闭图形之间的相互嵌套关系;通过生成零件步骤,遍历封闭图形集合,根据封闭图形两两之间的嵌套关系,封闭图形集合中的封闭图形不断被加入零件的组成结构中,最终得到一个由多个零件组成的零件集合;通过零件形状识别步骤,根据组成零件的各种封闭图形的形状和方位是否相同,判断零件集合中的零件与数据库中的哪些零件相同,相同的零件被给与与数据库中零件相同的编号,最终根据零件得到的编号完成零件的识别;通过选取合适的标刻位置步骤,可以得到各个零件上空白处合适的打标矩形区域,实际生产中标刻出的二维码或其他信息主要集中在该打标矩形区域内。
附图说明
图1为本发明的方法流程图;
图2为文件解析流程图;
图3为生成封闭图形流程图;
图4为生成零件流程图;
图5为取射线点集合示意图;
图6为射线与线段相交示意图;
图7为射线与圆相交示意图;
图8为射线与圆弧相交示意图;
图9为比较零件形状流程图;
图10为寻找最优标刻位置流程图;
图11为本发明的实际用例图;
图12为本发明的零件识别结果示意图;
图13为本发明的合适的标刻位置示意图。
具体实施方式
下面结合附图对本发明做进一步说明:
如图1所示的一种基于DXF的钣金件自动识别和定位方法,具体步骤包括如下:
(1)文件解析,使用程序解析并读入DXF文件,对于DXF文件中所记录的各个图元进行归纳分类。
DXF格式是AutoCAD图形文件中包含的所有信息的一种带标记数据的表示方式。带标记数据是指文件中的每一个数据元素前面都带有一个称为组码的整数。组码的值表明随后的数据元素的类型,还指出数据元素对于给定对象(或记录)类型的含义。实际上,图形文件中所有用户指定的信息都可以用DXF格式表示,由于AutoCAD是最流行的CAD***,DXF也被广泛使用,成为事实上的标准。在钣金激光切割的过程中,DXF文件格式常常作为AutoCAD与激光切割机之间进行CAD数据交换的数据文件格式,因此它是一种常见的用于实际激光切割生产的文件格式。一张用于激光切割的DXF文件会由技术人员提前将待切割钣金件的二维图合理排版在一个划定的区域,参加排版的钣金件的种类可能不同,同一个钣金件也可能会被排列多次。通过在激光切割工序之前对DXF文件进行解析,能够实现对DXF文件中所包含的所有钣金件信息进行识别和定位。
如图2所示,读入DXF文件后的解析流程如下:
(11)在本地选取DXF图形文件,借助于netDXF开源代码库读入DXF文件。
(12)根据DXF文件中的组码定义对DXF文件中包含的各类图元(如线段、圆弧、圆、块等)进行提取,将提取后的各类图元保存到不同的集合中。
(13)将除线段、圆弧和圆三类基础图元之外的其他图元(如高质量多段线、多段线和块等)打散成基础图元并加入基础图元的集合中。
(14)根据已经得到的基础图元生成片段,并根据图元类型的不同赋予它不同的属性,并将它们全部保存到片段类型的集合中。
(2)生成封闭图形,对于读入的各个图元进行位置判断,将其中有位置接触的图元按照位置首尾相连,最终生成多个首尾相连成环状的封闭图形。
如图3所示,由片段类型的集合生成封闭图形的步骤如下:
(21)选取片段类型集合的第一个片段,在剩余片段中寻找与它首尾相连的片段,找到后将该片段接到上一个片段的末尾,每找到一个片段即将该片段从片段集合中删除。其中,片段集合中的片段初始没有明确的首尾,但是当片段一旦被连接在片段链上时,片段的两个端点中与片段链尾部相连的那端作为首部,而没有相连的那端作为尾部。
(22)找到一个片段之后再在剩余的集合中寻找与片段链的尾片段能够首尾相连的片段,依次循环,直到组拼成一个封闭环状的由多个线段组成的封闭图形,每找到一个片段即将该片段从片段集合中删除。
(23)找到一个封闭图形之后,再重新从剩余的片段集合中选取一个片段,循环查找下一个能首尾相接的片段。
(24)在查找下一个片段的过程中,如果在某一个片段之后再也不能找到下一个首尾相连的片段,而此时封闭图形还未闭合,则从片段集合中删除此次查找组成片段链的所有片段,并在剩余的片段集合中选取新片段再重新开始。
(25)重复步骤(22)-(24),直到片段集合中为空,将已经获得的所有封闭图形保存到一个封闭图形类型的集合中。
(3)判断封闭图形的嵌套关系,对于获得的封闭图形集合,两两判断封闭图形的嵌套关系。
如图4所示,通过比较封闭图形集合中所有封闭图形的嵌套关系的步骤如下:
(31)依次遍历封闭图形集合中的封闭图形。
(32)每遍历一个封闭图形时,再将该封闭图形与集合中其他的封闭图形依次比较,判断它们的相对位置关系。判断两个封闭图形相对位置关系的步骤如下:
(321)在组成第一个封闭图形的片段集合中,如图5所示,首先取出片段集合中的第一个片段,在该片段上中点附近均匀取10个点,作为射线起点的集合。
(322)默认的射线起点为射线点集合中的第一个点,本发明中使用的射线如果不做特别说明,其方向均为X轴正方向。以该射线点为射线起点,出发沿X轴正方向作一条射线,判断射线与第二个封闭图形是否有交点,有几个交点。
因为封闭图形是由多个片段组成,于是判断射线与封闭图形的相交,就等价于判断射线与各个片段的相交。射线与封闭图形相交的交点数等于射线与组成该封闭图形的所有片段相交的交点数总和。
判断射线与线段的相交,如图6所示,当射线与线段的起点或者终点相交时,舍弃当前射线点并从射线点集合中取出下一个发出的射线不与线段的起点或者终点相交的射线起点。已知线段起点为P1(Xp1,Yp1)、线段终点为P2(Xp2,Yp2),射线的起点为R(XR,YR)。线段的直线方程为(1),设射线与直线的交点为I(XI,YI),则由公式(2)可得交点的坐标值。
当满足如下条件(3)时,射线与直线有交点,且交点在线段上。
判断射线与圆的相交,如图7所示,当射线与圆相切时,舍弃当前射线点并从射线点集合中取出下一个发出的射线不与圆相切的射线起点使用。一个圆中所保存的信息有该圆的圆心坐标O(XO,YO),该圆的半径R。一条射线中主要用于判断的信息为该射线的射线起点R(XR,YR)。设射线起点到圆心X轴方向的差值为dX、Y轴方向的差值为dY、射线起点到圆心之间的距离dRO,因此它们的值由公式(4)、(5)、(6)得到:
dX=|XR-XO| (34)
dY=|YR-YO| (35)
当满足如下条件(7)时,射线与圆相交于一点:
当满足如下条件(8)时,射线与圆相交于两点:
判断射线与圆弧相交,如图8所示。当射线与圆弧所在圆相切,或者与圆弧的起点或终点相交时,舍弃当前射线点并从射线点集合中取出下一个发出的射线不与圆弧所在圆相切,或者与圆弧的起点或终点相交的射线起点使用。
判断射线与圆弧相交首先要满足射线与圆的相交条件,即(8)。一个圆弧中保存的用于判断数据信息有圆弧中心O(XO,YO)、圆弧半径R、圆弧的起始弧度圆弧的结束弧度一条射线中主要用于判断的信息为该射线的射线起点R(XR,YR)。射线方程为(9)、圆弧所在圆的方程为(10)。
y=YR (39)
(x-OX)2+(y-OY)2=R2 (40)
假设射线与圆弧所在圆的交点为P1(XP1,YP1)、P2(XP2,YP2),联立(9)、(10)可解出P1、P2的坐标值,即公式(11)。
得到了P1、P2两点的坐标之后,设P1、P2两点在圆中的弧度值分别为βP1、βP2,根据公式(12)计算弧度值。
当某一交点的弧度值位于圆弧的起始弧度与终止弧度之间时,此时判定该交点位于圆弧上,即射线与圆弧相交。
(323)经过步骤(322)可知,从第一个封闭图形上发出和一条沿X轴正方向的射线与第二个封闭图形之间的交点数。当交点数为奇数时,认为第一个封闭图形被第二个封闭图形嵌套;当交点数为偶数时,认为第一个封闭图形不被第二个封闭图形嵌套,但这并不意味着第二个封闭图形不被第一个封闭图形嵌套,也就是说不能排除它们之间仍有嵌套关系,至于到底有没有嵌套关系,需要第一个封闭图形与第二个封闭图形相互交换位置时再次判断才能得出结论。
(324)当每判断一次封闭图形被嵌套,则记录该封闭图形被嵌套次数增加一,记录每一个封闭图形被嵌套的总次数。当封闭图形被嵌套总次数为2时,标记该封闭图形为被嵌套零件外边缘封闭图形。
(33)当前遍历的这个封闭图形与集合中剩余的全部封闭图形比较完之后,更换遍历过程中的下一个封闭图形,再重复(32)的过程,直到遍历结束。
(4)生成零件,对于已知封闭图形之间的嵌套关系,逐一生成新的零件。
在生成零件步骤中,通过判断两个封闭图形之间的嵌套关系和第一个封闭图形的总的被嵌套次数,适时生成新的零件。对于本方法中应用的零件,一个零件是由一个外边缘封闭图形和若干个内边缘封闭图形组成。考虑到DXF的排版图中存在一个零件被另一个零件嵌套的情况,这里引入封闭图形的被嵌套次数进行判断,其中:如果一个封闭图形被嵌套的次数为0,则它为一个零件的外边缘图形。如果一个封闭图形被嵌套的次数为1,则它为一个零件的内边缘图形。如果一个封闭图形被嵌套的次数为2,则它为内嵌零件的外边缘图形。如果一个封闭图形被嵌套的次数为3,则它为内嵌零件的内边缘图形。
所述生成零件步骤具体到步骤如下:
(41)若第一个封闭图形没有被第二个封闭图形嵌套,则先判断已经生成的零件集合中是否有零件的外边缘与该封闭图形的形状和位置均相同,如果没有,则以第一个封闭图形为零件外边缘生成一个新的零件,并将零件加入到零件集合中去。如果有相同的,则不用操作。
(42)若第一个封闭图形被第二个封闭图形嵌套,并且第一个封闭图形的总的被嵌套次数为1,则先判断第二个封闭图形是否与已经生成的零件集合中的零件的外边缘的形状和位置均相同,如果没有,则以第二个封闭图形为零件外边缘生成一个新的零件,再把第一个封闭图形加入到这个新零件的内边缘集合中,将该新零件加入零件集合中;如果有相同的,把第一个封闭图形加入到这个有相同外边缘零件的内边缘集合中。
(43)若第一个封闭图形被第二个封闭图形嵌套,并且第一个封闭图形的总的被嵌套次数为2,则先判断第一个封闭图形是否与已经生成的零件集合中的零件的外边缘的形状和位置均相同,如果没有,则以第一个封闭图形为零件外边缘生成一个新的零件,将该新零件加入零件集合中。如果有相同的,则不用操作。
(44)若第一个封闭图形被第二个封闭图形嵌套,并且第一个封闭图形的总的被嵌套次数为3,则先判断第二个封闭图形是否为被嵌套零件外边缘,如果是,则再判断第二个封闭图形是否与已经生成的零件集合中的零件外边缘的形状和位置均相同,如果没有相同的,则以第二个封闭图形为零件外边缘生成一个新的零件,然后将第一个封闭图形加入到该新零件的内边缘集合中,将该新零件加入零件集合中。如果有相同的,把第一个封闭图形加入到这个有相同外边缘零件的内边缘集合中。如果第二个封闭图形不是被嵌套零件外边缘,则不用操作。
综上所述,当全部执行了上述四个步骤之后,可以得到DXF文件中所包含的所有零件,且所有零件都装在零件集合中。
(5)零件形状识别,对于已经生成的零件集合,依次挑选出零件与公司数据库中的零件形状进行比对,并给与相应的编号。
如图9所示,根据零件组成的有关信息判断两个零件是否相同的步骤如下:
(51)首先比较两个零件的总的封闭图形数是否相等,如果不相等,则这两个零件不同,如果相等,则进入下一步继续判断。
(52)比较两个零件的外边缘封闭图形是否相同,如果不同,则这两个零件不同,如果相同,则进入下一步继续判断。有关比较两个封闭图形是否相同的步骤如下:
(521)首先比较两个封闭图形的最长线段数是否相等或两个封闭图形的最长长度是否相等,如果不相等,则这两个封闭图形不相等,如果相等,则进入下一步判断。
(522)考虑到实际的封闭图形是由直线和圆弧间隔组成的,因此只需要依次比较组成封闭图形的片段长度是否对应相等即可。在从两个封闭图形各自的最长线段处出发,依次比较它们的片段长度是不是都一一相等,如果其中有一对片段不相等,则这两个封闭图形不相等,如果相等,则这两个封闭图形相等。
(523)如果一个封闭图形有多个长度相等的最长端片段,可以依次选用这些最长端作为第一个比较长度的片段,进行交叉比对。
(524)对于处于不同方位和不同偏转角度的相同封闭图形之间的比对,由于上述步骤使用组成封闭图形片段链的片段长度进行一一比较,因此也会被判断为相同。
(53)比较两个零件的内边缘封闭图形数是否相等,如果不相等,则这两个零件不相同,如果相等,则进入下一步继续判断。
(54)依次比较两个零件的内边缘封闭图形的形状和相对于各自外边缘封闭图形的方位是否相同,如果形状和方位都相同,并且内边缘封闭图形集合中的所有封闭图形比较的结果都是相同,则这两个零件相同,反之不同。
两个相同的零件不受零件在排版图中的具体方位和偏转角度的影响,也会被判断成两个相同的零件。
(6)选取合适的标刻位置,对于已经生成的零件集合,在每个零件的空白实体处选取合适的用于做标记的位置区域。在基于一个零件已有的信息上,在零件内部选择一个大小合适的矩形区域用做标刻区域,该矩形区域的边界不能与零件的内边缘封闭图形和外边缘封闭图形干涉。如图10所示,具体步骤如下:
(61)首先建立打标矩形区域,考虑到打标安全距离,这个打标矩形的大小要比实际打标区域稍大。
(62)计算零件的加权面积中心,权重为零件外边缘多边形的面积分布,将初始的打标矩形中心移动到零件的面积加权中心处。零件的面积加权中心的计算步骤如下:
将一个不规则的外边缘封闭图形近似化为一个不规则的多边形,其中圆弧段可近似为圆弧起点与终点直连的线段处理。一个不规则的n边多边形可近似划分为n-2个三角形。
分别计算得到三角形的面积和重心,假设三角形的三个顶点坐标分别为A1(x1,y1)、A2(x2,y2)和A3(x3,y3),三角形重心坐标为C(cx,cy),三角形面积为S,则三角形的重心和面积计算公式分别为(13)、(14)。
得到每个小三角形的重心和面积之后,可以求多边形的重心(面积加权),设多边形重心为Cd(cdx,cdy),共分成了n-2个小三角形,其值可由公式(15)求得:
(63)判断打标矩形区域的初始边界是否与内边缘封闭图形干涉,如果不干涉则找到合适的区域,如果干涉,则将打标矩形区域按顺序向右、左、上、下平移一个相对距离,每平移一个相对距离,判断一下是否干涉,递归调用判断方法,直到不发生干涉位为止,此时打标矩形区域的位置就是要找的合适的打标区域。
对于实际用例,如图11所示,首先在本地选取DXF图形文件,借助于netDXF开源代码库读入DXF文件。根据DXF文件中的组码定义对DXF文件中包含的各类图元(如线段、圆弧、圆、块等)进行提取,将提取后的各类图元保存到不同的集合中。将除线段、圆弧和圆三类基础图元之外的其他图元(如高质量多段线、多段线和块等)打散成基础图元并加入基础图元的集合中。根据已经得到的基础图元生成片段,并根据图元类型的不同赋予它不同的属性,并将它们全部保存到片段类型的集合中。
然后,选取片段类型集合的第一个片段,在剩余片段中寻找与它首尾相连的片段,找到后将该片段接到上一个片段的末尾,每找到一个片段即将该片段从片段集合中删除。其中,片段集合中的片段初始没有明确的首尾,但是当片段一旦被连接在片段链上时,片段的两个端点中与片段链尾部相连的那端作为首部,而没有相连的那端作为尾部。找到一个片段之后再在剩余的集合中寻找与最新接上的片段能够首尾相连的片段,依次循环,直到组拼成一个封闭环状的由多个线段组成的封闭图形,每找到一个片段即将该片段从片段集合中删除。找到一个封闭图形之后,再重新从剩余的片段集合中选取一个片段,循环查找下一个能首尾相接的片段。在查找下一个片段的过程中,如果在某一个片段之后再也不能找到下一个首尾相连的片段,而此时封闭图形还未闭合,则从片段集合中删除此次查找组成片段链的所有片段,并在剩余的片段集合中选取新片段再重新开始。重复上述步骤,直到片段集合中为空,将已经获得的所有封闭图形保存到一个封闭图形类型的集合中。
依次遍历封闭图形集合中的封闭图形。每遍历一个封闭图形时,再将该封闭图形与集合中其他的封闭图形依次比较,判断它们的相对位置关系。当前遍历的这个封闭图形与集合中剩余的全部封闭图形比较完之后,更换遍历过程中的下一个封闭图形,再重复上述的过程,直到遍历结束。
若第一个封闭图形没有被第二个封闭图形嵌套,则先判断已经生成的零件集合中是否有零件的外边缘与该封闭图形的形状和位置均相同,如果没有,则以第一个封闭图形为零件外边缘生成一个新的零件,并将零件加入到零件集合中去。如果有相同的,则不用操作。若第一个封闭图形被第二个封闭图形嵌套,并且第一个封闭图形的总的被嵌套次数为1,则先判断第二个封闭图形是否与已经生成的零件集合中的零件的外边缘的形状和位置均相同,如果没有,则以第二个封闭图形为零件外边缘生成一个新的零件,再把第一个封闭图形加入到这个新零件的内边缘集合中,将该新零件加入零件集合中;如果有相同的,把第一个封闭图形加入到这个有相同外边缘零件的内边缘集合中。若第一个封闭图形被第二个封闭图形嵌套,并且第一个封闭图形的总的被嵌套次数为2,则先判断第一个封闭图形是否与已经生成的零件集合中的零件的外边缘的形状和位置均相同,如果没有,则以第一个封闭图形为零件外边缘生成一个新的零件,将该新零件加入零件集合中。如果有相同的,则不用操作。若第一个封闭图形被第二个封闭图形嵌套,并且第一个封闭图形的总的被嵌套次数为3,则先判断第二个封闭图形是否为被嵌套零件外边缘,如果是,则再判断第二个封闭图形是否与已经生成的零件集合中的零件外边缘的形状和位置均相同,如果没有相同的,则以第二个封闭图形为零件外边缘生成一个新的零件,然后将第一个封闭图形加入到该新零件的内边缘集合中,将该新零件加入零件集合中。如果有相同的,把第一个封闭图形加入到这个有相同外边缘零件的内边缘集合中。如果第二个封闭图形不是被嵌套零件外边缘,则不用操作。当全部执行了上述四个步骤之后,可以得到DXF文件中所包含的所有零件,且所有零件都装在零件集合中。
首先,比较两个零件的总的封闭图形数是否相等,如果不相等,则这两个零件不同,如果相等,则进入下一步继续判断。比较两个零件的外边缘封闭图形是否相同,如果不同,则这两个零件不同,如果相同,则进入下一步继续判断。比较两个零件的内边缘封闭图形数是否相等,如果不相等,则这两个零件不相同,如果相等,则进入下一步继续判断。依次比较两个零件的内边缘封闭图形的形状和相对于各自外边缘封闭图形的方位是否相同,如果形状和方位都相同,并且内边缘封闭图形集合中的所有封闭图形比较的结果都是相同,则这两个零件相同,反之不同。经过上述步骤,本发明从排版图中寻找到了形状相同的各个零件,如图12所示。
最后,对于寻找合适的标刻位置,首先建立打标矩形区域,考虑到打标安全距离,这个打标矩形的大小要比实际打标区域稍大。计算零件的加权面积中心,权重为零件外边缘多边形的面积分布,将初始的打标矩形中心移动到零件的面积加权中心处。判断打标矩形区域的初始边界是否与内边缘封闭图形干涉,如果不干涉则找到合适的区域,如果干涉,则将打标矩形区域按顺序向右、左、上、下平移一个相对距离,每平移一个相对距离,判断一下是否干涉,递归调用判断方法,直到不发生干涉位为止,此时打标矩形区域的位置就是要找的合适的打标区域,图13零件中的矩形正是本发明找到的合适的打标区域。
在钣金激光切割的工序前,在一块完整板材上识别零件形状并且定位零件,再分别给与不同零件以不同的记号标记,这样在激光切割后得到的钣金件都有了自己独属的身份码,能够提高产品的管理效率、减少生产时间、提高经济效益。
一般情况下,从DXF文件中读入的图元都是离散的、没有相互联系的,如果需要形成零件,那么第一步一定要将这些图元用某种形式联系起来。封闭图形集合中任意两个封闭图形之间的相对位置关系是未知的,如何判断哪几个封闭图形是属于一个零件的,这是要解决的技术难题。本发明通过将首尾坐标相同的片段依次相连,组成一个封闭环状片段链,使它们相互联系组成了封闭图形,同时也声明了封闭图形的概念。
两个封闭图形之间的相对位置关系原本是未知的,本发明创造性地提出了借助于固定方向的射线来判断两个封闭图形之间的嵌套关系,射线与封闭图形之间的交点数如果为奇数,则存在直接的嵌套关系。根据封闭图形的嵌套关系生成零件,使两封闭图形之间的相对位置关系变得明朗。
通常情况下如果不借助于视觉,难以判断零件的形状。而且对于形状这种抽象概念的描述,更是需要找到一种简单清晰的定义描述。本发明创造性地将现有零件与数据库中的零件进行对比,通过使用组成该零件的封闭图形集合中各图形之间的数据特征,逐步判断封闭图形的形状和方位是否相同,从而推断出零件是否相同,最终完成零件形状的识别。
由于每种零件的外形和内部构造都存在差异,因此,每个零件中适合去打标的空白位置也都不同,如何设计一个适合于在各种零件中找合适打标区域的方法成为一个难题。对于一个不规则的用于内外边缘的图形,如何在图形中找到一个一定大小区域,并且这个区域既不能与图形外边缘干涉,也不能与图形内边缘干涉。本发明创造性地选用零件外边缘图形的面积加权中心作为打标区域的中心,再根据是否打标区域边界与零件边界是否干涉再动态移动打标区域的中心,最终找到合适的打标区域。
以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
Claims (7)
1.一种基于DXF的钣金件自动识别和定位方法,其特征在于:该方法包括以下步骤:
(1)文件解析:使用程序解析并读入DXF文件,对于DXF文件中所记录的各个图元进行归纳分类;
(2)生成封闭图形:对于读入的各个图元进行位置判断,将其中有位置接触的图元按照位置首尾相连,最终生成多个首尾相连成环状的封闭图形;
(3)判断封闭图形的嵌套关系:对于获得的封闭图形集合,两两判断封闭图形的嵌套关系;
(4)生成零件:对于已知封闭图形之间的嵌套关系,逐一生成新的零件;
(5)零件形状识别:对于已经生成的零件集合,依次挑选出零件与数据库中的零件形状进行比对,并给与相应的编号;
(6)选取合适的标刻位置:对于已经生成的零件集合,在每个零件的空白实体处选取合适的用于做标记的位置区域。
2.根据权利要求1所述的一种基于DXF的钣金件自动识别和定位方法,其特征在于:步骤(1)中所述的“文件解析”,其具体包括以下步骤:
(11)在本地选取DXF图形文件,基于netDXF开源代码库读入DXF文件;
(12)根据DXF文件中的组码定义,对DXF文件中包含的各类图元进行提取,将提取后的各类图元保存到不同的集合中;
(13)将除线段、圆弧和圆三类基础图元之外的其他图元打散成基础图元并加入基础图元的集合中;
(14)根据已经得到的基础图元生成片段,并根据图元类型的不同赋予它不同的属性,并将它们全部保存到片段类型的集合中。
3.根据权利要求1所述的一种基于DXF的钣金件自动识别和定位方法,其特征在于:步骤(2)所述的“生成封闭图形”,其具体包括以下步骤:
(21)选取片段类型集合的第一个片段,在剩余片段中寻找与其首尾相连的片段,找到后将该片段接到上一个片段的末尾;每找到一个片段,即将该片段从片段集合中删除;
(22)找到一个片段之后,再在剩余的集合中寻找与片段链的尾片段首尾相连的片段,依次循环,直到组拼成一个封闭环状的由多个线段组成的封闭图形,每找到一个片段即将该片段从片段集合中删除;
(23)找到一个封闭图形之后,再重新从剩余的片段集合中选取一个片段,循环查找下一个能首尾相接的片段;
(24)在查找下一个片段的过程中,若在某一个片段之后,无法找到下一个首尾相连的片段,而此时封闭图形还未闭合,则从片段集合中删除此次查找组成片段链的所有片段,并在剩余的片段集合中选取新片段再重新开始;
(25)重复步骤(22)-(24),直到片段集合中为空,将已经获得的所有封闭图形保存到一个封闭图形类型的集合中。
4.根据权利要求1所述的一种基于DXF的钣金件自动识别和定位方法,其特征在于:步骤(3)中所述的“判断封闭图形的嵌套关系”,其具体包括以下步骤:
(31)依次遍历封闭图形集合中的封闭图形;
(32)每遍历一个封闭图形时,将该封闭图形与集合中其他的封闭图形依次比较,判断它们的相对位置关系;判断两个封闭图形相对位置关系的步骤如下:
(321)在组成第一个封闭图形的片段集合中,首先取出片段集合中的第一个片段,在该片段上中点附近均匀取10个点,作为射线起点的集合;
(322)默认的射线起点为射线点集合中的第一个点,设使用的射线的方向为X轴正方向,以该射线点为射线起点,出发沿X轴正方向作一条射线,判断射线与第二个封闭图形是否有交点,并确定交点的数量;
因为封闭图形是由多个片段组成,所以,判断射线与封闭图形的相交,就等价于判断射线与各个片段的相交;射线与封闭图形相交的交点数等于射线与组成该封闭图形的所有片段相交的交点数总和;
判断射线与线段的相交,当射线与线段的起点或者终点相交时,舍弃当前射线点并从射线点集合中取出下一个发出的射线不与线段的起点或者终点相交的射线起点;设已知线段起点为P1(Xp1,Yp1)、线段终点为P2(Xp2,Yp2),射线的起点为R(XR,YR),线段的直线方程如公式(1)所示,设射线与直线的交点为I(XI,YI),则由公式(2)可得交点的坐标值;
当满足公式(3)时,射线与直线有交点,且交点在线段上;
判断射线与圆的相交,当射线与圆相切时,舍弃当前射线点并从射线点集合中取出下一个发出的射线不与圆相切的射线起点使用;一个圆中所保存的信息有该圆的圆心坐标O(XO,YO),该圆的半径R;一条射线中用于判断的信息为该射线的射线起点R(XR,YR),设射线起点到圆心X轴方向的差值为dX、Y轴方向的差值为dY、射线起点到圆心之间的距离dRO,采用公式(4)、(5)、(6)求得得到dX、dY和dRO:
dX=|XR-XO| (4)
dY=|YR-YO| (5)
当满足公式(7)时,射线与圆相交于一点:
当满足如下公式(8)时,射线与圆相交于两点:
判断射线与圆弧相交,当射线与圆弧所在圆相切,或者与圆弧的起点或终点相交时,舍弃当前射线点并从射线点集合中取出下一个发出的射线不与圆弧所在圆相切,或者与圆弧的起点或终点相交的射线起点使用;
判断射线与圆弧相交,首先要满足公式(8)所示的射线与圆的相交条件,设一个圆弧中保存的用于判断数据信息有圆弧中心O(XO,YO)、圆弧半径R、圆弧的起始弧度圆弧的结束弧度一条射线中用于判断的信息为该射线的射线起点R(XR,YR),射线方程如公式(9)所示,圆弧所在圆的方程如公式(10)所示;
y=YR (9)
(x-OX)2+(y-OY)2=R2 (10)
假设射线与圆弧所在圆的交点为P1(XP1,YP1)、P2(XP2,YP2),由公式(9)和(10)可解出P1、P2的坐标值;
得到了P1、P2两点的坐标之后,设P1、P2两点在圆中的弧度值分别为βP1、βP2,根据公式(12)计算弧度值;
当某一交点的弧度值位于圆弧的起始弧度与终止弧度之间时,此时判定该交点位于圆弧上,即射线与圆弧相交;
(323)经过步骤(322)可知,从第一个封闭图形上发出和一条沿X轴正方向的射线与第二个封闭图形之间的交点数;当交点数为奇数时,判定第一个封闭图形被第二个封闭图形嵌套;当交点数为偶数时,判定第一个封闭图形不被第二个封闭图形嵌套;
(324)当每判断一次封闭图形被嵌套,则记录该封闭图形被嵌套次数增加1,记录每一个封闭图形被嵌套的总次数;当封闭图形被嵌套总次数为2时,标记该封闭图形为被嵌套零件外边缘封闭图形;
(33)当前遍历的这个封闭图形与集合中剩余的全部封闭图形比较完之后,更换遍历过程中的下一个封闭图形,再重复步骤(32),直到遍历结束。
5.根据权利要求1所述的一种基于DXF的钣金件自动识别和定位方法,其特征在于:步骤(4)中所述的“生成零件”,其具体包括以下步骤:
(41)若第一个封闭图形没有被第二个封闭图形嵌套,则先判断已经生成的零件集合中是否有零件的外边缘与该封闭图形的形状和位置均相同,若没有,则以第一个封闭图形为零件外边缘生成一个新的零件,并将零件加入到零件集合中去;若有相同的,则不用操作;
(42)若第一个封闭图形被第二个封闭图形嵌套,并且第一个封闭图形的总的被嵌套次数为1,则先判断第二个封闭图形是否与已经生成的零件集合中的零件的外边缘的形状和位置均相同,若没有相同的,则以第二个封闭图形为零件外边缘生成一个新的零件,再把第一个封闭图形加入到这个新零件的内边缘集合中,将该新零件加入零件集合中;若有相同的,则把第一个封闭图形加入到这个有相同外边缘零件的内边缘集合中;
(43)若第一个封闭图形被第二个封闭图形嵌套,并且第一个封闭图形的总的被嵌套次数为2,则先判断第一个封闭图形是否与已经生成的零件集合中的零件的外边缘的形状和位置均相同,若没有相同的,则以第一个封闭图形为零件外边缘生成一个新的零件,将该新零件加入零件集合中,若有相同的,则不用操作;
(44)若第一个封闭图形被第二个封闭图形嵌套,并且第一个封闭图形的总的被嵌套次数为3,则先判断第二个封闭图形是否为被嵌套零件外边缘,若是,则再判断第二个封闭图形是否与已经生成的零件集合中的零件外边缘的形状和位置均相同;若没有相同的,则以第二个封闭图形为零件外边缘生成一个新的零件,然后将第一个封闭图形加入到该新零件的内边缘集合中,将该新零件加入零件集合中;若有相同的,则将第一个封闭图形加入到这个有相同外边缘零件的内边缘集合中;若第二个封闭图形不是被嵌套零件外边缘,则不用操作。
6.根据权利要求1所述的一种基于DXF的钣金件自动识别和定位方法,其特征在于:步骤(5)中所述的“零件形状识别”,其具体包括以下步骤:
(51)比较两个零件的总的封闭图形数是否相等,若不相等,则这两个零件不同,若相等,则执行步骤(52);
(52)比较两个零件的外边缘封闭图形是否相同,若不同,则这两个零件不同,若相同,则执行步骤(53);
所述比较两个封闭图形是否相同的具体步骤如下:
(521)比较两个封闭图形的最长线段数是否相等或两个封闭图形的最长长度是否相等,若不相等,则这两个封闭图形不相等,若相等,则进入执行步骤(522);
(522)考虑到实际的封闭图形是由直线和圆弧间隔组成的,因此只需要依次比较组成封闭图形的片段长度是否对应相等即可;从两个封闭图形各自的最长线段处出发,依次比较它们的片段长度是不是都一一相等,若其中有一对片段不相等,则这两个封闭图形不相等,若相等,则这两个封闭图形相等;
(523)若一个封闭图形有多个长度相等的最长端片段,则依次选用这些最长端作为第一个比较长度的片段,进行交叉比对;
(524)对于处于不同方位和不同偏转角度的相同封闭图形之间的比对,由于上述步骤使用组成封闭图形片段链的片段长度进行一一比较,因此也会被判断为相同;
(53)比较两个零件的内边缘封闭图形数是否相等,若不相等,则这两个零件不相同,若相等,则执行步骤(54);
(54)依次比较两个零件的内边缘封闭图形的形状和相对于各自外边缘封闭图形的方位是否相同,若形状和方位均相同,并且内边缘封闭图形集合中的所有封闭图形比较的结果都是相同,则这两个零件相同,反之不同。
7.根据权利要求1所述的一种基于DXF的钣金件自动识别和定位方法,其特征在于:步骤(6)中所述的“选取合适的标刻位置”,其具体包括以下步骤:
(61)建立打标矩形区域;
(62)计算零件的加权面积中心,权重为零件外边缘多边形的面积分布,将初始的打标矩形中心移动到零件的面积加权中心处;零件的面积加权中心的计算步骤如下:
将一个不规则的外边缘封闭图形近似化为一个不规则的多边形,其中圆弧段可近似为圆弧起点与终点直连的线段处理,一个不规则的n边多边形可近似划分为n-2个三角形;
分别计算三角形的面积和重心,假设三角形的三个顶点坐标分别为A1(x1,y1)、A2(x2,y2)和A3(x3,y3),三角形重心坐标为C(cx,cy),三角形面积为S,则三角形的重心和面积计算公式分别为(13)、(14):
得到每个小三角形的重心和面积之后,计算多边形的重心,设多边形重心为Cd(cdx,cdy),共分成了n-2个小三角形,其值可由公式(15)求得:
(63)判断打标矩形区域的初始边界是否与内边缘封闭图形干涉,若不干涉,则找到合适的区域,若干涉,则将打标矩形区域按顺序向右、左、上、下平移一个相对距离,每平移一个相对距离,判断一下是否干涉,递归调用判断方法,直到不发生干涉位为止,此时打标矩形区域的位置即找的合适的打标区域。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110396136.9A CN113111458B (zh) | 2021-04-13 | 2021-04-13 | 一种基于dxf的钣金件自动识别和定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110396136.9A CN113111458B (zh) | 2021-04-13 | 2021-04-13 | 一种基于dxf的钣金件自动识别和定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113111458A true CN113111458A (zh) | 2021-07-13 |
CN113111458B CN113111458B (zh) | 2022-10-21 |
Family
ID=76716693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110396136.9A Active CN113111458B (zh) | 2021-04-13 | 2021-04-13 | 一种基于dxf的钣金件自动识别和定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113111458B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113792361A (zh) * | 2021-09-17 | 2021-12-14 | 合肥艾克斯特智能科技有限公司 | 一种基于dxf文件的零件打标方法、装置及可存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001031585A2 (en) * | 1999-10-22 | 2001-05-03 | Ido Systems, A/S | Three dimensional computer graphics drawing system |
TW200821785A (en) * | 2006-11-03 | 2008-05-16 | Hon Hai Prec Ind Co Ltd | System and method for creating abnormity accessories |
CN102331746A (zh) * | 2011-10-13 | 2012-01-25 | 西北工业大学 | 一种基于dxf文件的笔式绘图机绘图路径优化方法 |
CN103761376A (zh) * | 2014-01-10 | 2014-04-30 | 沈阳航空航天大学 | 基于二维dxf文件格式的零件三维真实感显示方法 |
CN105444721A (zh) * | 2015-12-01 | 2016-03-30 | 北京星航机电装备有限公司 | 一种非刚性异形复合材料构件的型面检测方法 |
JP2016095599A (ja) * | 2014-11-13 | 2016-05-26 | 三菱重工業株式会社 | 構造解析方法 |
CN108052716A (zh) * | 2017-12-01 | 2018-05-18 | 东华大学 | 一种复杂结构件导向式搜索特征识别方法 |
CN109671093A (zh) * | 2018-12-20 | 2019-04-23 | 上海羡通交通科技有限公司 | 一种平面几何图形多种组合区域的自动检测方法 |
WO2020233261A1 (zh) * | 2019-07-12 | 2020-11-26 | 之江实验室 | 一种基于自然语言生成技术的知识图谱辅助理解*** |
-
2021
- 2021-04-13 CN CN202110396136.9A patent/CN113111458B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001031585A2 (en) * | 1999-10-22 | 2001-05-03 | Ido Systems, A/S | Three dimensional computer graphics drawing system |
TW200821785A (en) * | 2006-11-03 | 2008-05-16 | Hon Hai Prec Ind Co Ltd | System and method for creating abnormity accessories |
CN102331746A (zh) * | 2011-10-13 | 2012-01-25 | 西北工业大学 | 一种基于dxf文件的笔式绘图机绘图路径优化方法 |
CN103761376A (zh) * | 2014-01-10 | 2014-04-30 | 沈阳航空航天大学 | 基于二维dxf文件格式的零件三维真实感显示方法 |
JP2016095599A (ja) * | 2014-11-13 | 2016-05-26 | 三菱重工業株式会社 | 構造解析方法 |
CN105444721A (zh) * | 2015-12-01 | 2016-03-30 | 北京星航机电装备有限公司 | 一种非刚性异形复合材料构件的型面检测方法 |
CN108052716A (zh) * | 2017-12-01 | 2018-05-18 | 东华大学 | 一种复杂结构件导向式搜索特征识别方法 |
CN109671093A (zh) * | 2018-12-20 | 2019-04-23 | 上海羡通交通科技有限公司 | 一种平面几何图形多种组合区域的自动检测方法 |
WO2020233261A1 (zh) * | 2019-07-12 | 2020-11-26 | 之江实验室 | 一种基于自然语言生成技术的知识图谱辅助理解*** |
Non-Patent Citations (5)
Title |
---|
ZURAINI SUKIMIN等: "Geometric entities information for feature extraction of solid model based on DXF file", 《2008 INTERNATIONAL SYMPOSIUM ON INFORMATION TECHNOLOGY》 * |
刘蒙等: "基于DXF文件的零件图形优化存储技术及应用研究", 《组合机床与自动化加工技术》 * |
王沛庆等: "DXF回转体零件的内外轮廓自动识别研究", 《现代制造工程》 * |
蔡明: "基于HPGL文件的图元优化排序", 《计算机***应用》 * |
黄朝煊: "考虑纵筋排列影响下钢筋混凝土圆形构件正截面承载力简易图解法", 《建筑结构》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113792361A (zh) * | 2021-09-17 | 2021-12-14 | 合肥艾克斯特智能科技有限公司 | 一种基于dxf文件的零件打标方法、装置及可存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113111458B (zh) | 2022-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110349252B (zh) | 一种基于点云边界构建小曲率零件实际加工曲线的方法 | |
US4809201A (en) | Graphic display region defining technique | |
EP2028623B1 (en) | Method of computer-aided design of edges connecting faces of a modeled object | |
US7499045B2 (en) | Graphics image generation | |
CN111753350A (zh) | 一种基于贪心算法的切割路径生成方法 | |
EP1903478A2 (en) | Methods and systems for defining, identifying and learning geometric features | |
JPH08293001A (ja) | 画像処理装置及び光学的文字認識装置及びそれらの方法 | |
JP2007517280A (ja) | パターンをデジタル化するためのシステムと方法 | |
CN113953685B (zh) | 一种平面板材激光切割路径规划方法 | |
JP2015520424A (ja) | レーザー切断機のカッターヘッドの経路を修正する方法 | |
CN113111458B (zh) | 一种基于dxf的钣金件自动识别和定位方法 | |
US20100217416A1 (en) | Apparatus, method and program for creating tool reference plane | |
CN115578398A (zh) | 一种基于区域增长法的焊缝点云分割方法 | |
CN111462119B (zh) | 一种基于机器视觉的宽厚板剪切排样方法 | |
CN116403207A (zh) | 一种板类零件的加工特征识别方法 | |
CN115170580A (zh) | 板材加工控制方法、装置、计算机设备及存储介质 | |
Liu et al. | Extracting the turning volume and features for a mill/turn part with multiple extreme faces | |
US7333104B2 (en) | Method and program of converting three-dimensional shape data into cell internal data | |
CN112734934A (zh) | 一种基于相交边映射的stl模型3d打印切片方法 | |
CN116090126A (zh) | 一种基于dxf的复杂薄板轮廓拓扑重构方法 | |
CN114515915B (zh) | 一种激光切割加工路径优化方法 | |
US20170017741A1 (en) | Computational modelling for engineering analysis | |
CN114862664A (zh) | 一种基于端面投影的管材特征识别方法及设备和存储介质 | |
CN116798028A (zh) | 三维零件的尺寸自动标注方法 | |
Liu et al. | Dimensional verification of NC machining profiles using extended quadtrees |
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 |