CN116090126A - 一种基于dxf的复杂薄板轮廓拓扑重构方法 - Google Patents

一种基于dxf的复杂薄板轮廓拓扑重构方法 Download PDF

Info

Publication number
CN116090126A
CN116090126A CN202310020882.7A CN202310020882A CN116090126A CN 116090126 A CN116090126 A CN 116090126A CN 202310020882 A CN202310020882 A CN 202310020882A CN 116090126 A CN116090126 A CN 116090126A
Authority
CN
China
Prior art keywords
contour
dxf
vertex
queue
array
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.)
Pending
Application number
CN202310020882.7A
Other languages
English (en)
Inventor
马良
李慧贤
李猛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Northwestern Polytechnical University
Original Assignee
Northwestern Polytechnical University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Northwestern Polytechnical University filed Critical Northwestern Polytechnical University
Priority to CN202310020882.7A priority Critical patent/CN116090126A/zh
Publication of CN116090126A publication Critical patent/CN116090126A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/17Mechanical parametric or variational design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/20Configuration CAD, e.g. designing by assembling or positioning modules selected from libraries of predesigned modules
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Landscapes

  • Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了一种基于DXF的复杂薄板轮廓拓扑重构方法,该方法首先从DXF格式的激光切割排料图中读取数据信息,通过顶点的度的特性对数据进行预处理,能够去除边框、引入线和引出线等工艺参数。构建生成树和余树,在此基础上搜索最小独立闭合环,提取排料图中封闭轮廓,包括有公共边的轮廓。计算所有轮廓间的包含关系和轮廓深度,从外到内进行拓扑重构来构建可连轮廓组,处理零件与零件间嵌套的关系,能够识别排料图中包含的所有零件。针对DXF格式复杂的激光切割排料图,该方法能够准确识别排料图中包含的所有零件,解决现有技术中无法解析此类复杂排料图的问题。

Description

一种基于DXF的复杂薄板轮廓拓扑重构方法
技术领域
本发明属于激光切割技术领域,具体涉及一种基于DXF的复杂薄板轮廓拓扑重构方法。
背景技术
激光切割是一种利用激光束聚焦后的高能量密度实现板材切割的加工方式,具有高质量、高效率、高精度和节能环保等突出优势,在航空航天、轨道交通、汽车等多个制造领域都具有较大的市场需求。目前常见的激光切割生产线上的切割机能够实现自动切割,但是生产过程中的上料和下料仍然多采用人工操作方式,生产效率受到制约,影响激光切割机的正常产能,同时每个激光切割机都需配备多名工人,耗费大量的人工成本。基于多数企业的效率和成本的考虑,激光切割的上料和下料过程开始向自动化、智能化转变,从DXF格式的激光切割排料图获取零件的数据成为关键,然而CAD/CAM套件软件生成的激光切割排料图包含边框、引入线和引出线等工艺参数,并且零件与零件间可能存在嵌套关系,同时若采取共边切割的方式还会导致部分零件的轮廓边缘重合。
专利“吴焱明,郜雄,吴喆建等。一种基于DXF的钣金件自动识别和定位方法,CN113111458A[P].2021-07-13.”涉及一种基于DXF的钣金件自动识别和定位方法,能够对金属板材上的不规则钣金件进行识别和定位。专利“蔡曼,韩厚宽,周泉清.基于数控加工系统的DXF图形的引导线自动识别的方法,CN106354096A[P].2017-01-25.”涉及一种基于数控加工系统的DXF图形的引导线自动识别的方法,通过对引导线与原图形合并后的图形进行排序、排序后对第一线和最终线进行长度、距离的识别来判断是否存在引入线和引出线。
因此上述方法中涉及的DXF识别方法可以识别文件中所包含的简单图元以及引导线等,但是无法有效去除工艺参数,也无法准确提取封闭的轮廓,特别是包含公共边的轮廓,不适用于解析复杂的激光切割排料图。
发明内容
本发明的目的在于克服上述现有技术的缺点,提供一种基于DXF的复杂薄板轮廓拓扑重构方法,以解决现有技术中难以准确解析复杂的激光切割排料图的问题。
为达到上述目的,本发明采用以下技术方案予以实现:其特征在于,包括以下步骤:
步骤1,从DXF格式的激光切割排料图获取排料数据,将排料数据中的图元信息存储到轮廓数组和邻接表中;
步骤2,根据图元信息判断激光切割排料图是否存在矩形边框,如果存在,去除边框;同时通过判断邻接表中顶点的度去除引入线和引出线;
步骤3,基于邻接表,寻找连通分量并分别建立生成树和对应余树,通过生成树和余树搜索所有的最小独立闭合环,将所有的最小独立闭合环存储在轮廓数组中;
步骤4,通过点是否在多边形中的方法判断轮廓数组中所有轮廓的包含关系,计算所有轮廓的深度;根据轮廓的包含关系,从外向内进行拓扑重构,直至所有的轮廓被重构完,拓扑重构结束。
本发明的进一步改进在于:
优选的,步骤1中,将排料数据中的图元信息存储到轮廓数组和邻接表中的过程为:
步骤1.1,建立轮廓数组存储待切割板料的轮廓,建立邻接表存储图;
步骤1.2,从DXF文件中读取一个组码和对应组值,若组值为ENTITIES,则再读取一个组码和对应组值,执行步骤1.3;若组值为EOF,说明已到文件结尾,执行步骤1.7;否则重复该步骤;
步骤1.3,若组值为圆,执行步骤1.4;若组值为直线,执行步骤1.5;若组值为弧线,执行步骤1.6;若组值为ENDSEC,执行步骤1.7;
步骤1.4,读取一个圆的数据,将所述圆转化为封闭的多边形集合,将所述多边形集合存储到轮廓数组,接着再读取一个组码和对应组值,执行步骤1.3;
步骤1.5,读取一个直线的数据,将所述直线以线段的形式存储到邻接表,接着再读取一个组码和对应组值,执行步骤1.3;
步骤1.6,读取一个弧线的数据,将所述弧线转化为若干条线段,将所述线段依次存储到邻接表,接着再读取一个组码和对应组值,执行步骤1.3;
步骤1.7,读取流程结束,关闭DXF文件。
优选的,步骤2中,判断激光切割排料图四个角的顶点是否能够组成矩形的过程为:
(1)创建边界数组储存边界点,搜索图中所有顶点,将最左下角、最左上角、最右上角、最右下角的四个顶点依次存入边界数组中。
(2)判断四个边界点是否为矩形四个顶点;
(3)判断四个边界点是否首尾相连构成矩形;
(4)如果同时满足步骤(2)和步骤(3)的所有条件,则四个顶点构成了板材边框,遍历边界数组,删除每一个顶点的邻接边,将顶点的度设为0。
优选的,步骤(2)中,通过比较四个顶点的坐标值,判断四个边界点是否为矩形。
优选的,步骤(3)中,通过判断四个顶点之间是否有邻接边判断四个边界点首尾相连后是否能够构成矩形。
优选的,步骤2中,去除引入线和引出线的具体过程为:
(1)创建队列存储引入线和引出线;
(2)遍历邻接表中的所有顶点,将度为1的顶点插入至队列中;
(3)若队列不为空,将头部元素出队,删除头部元素属于的边,将所述边另一端点的度减去1,若另一端点的度也为1,将所述另一端点插入至队列;
(4)若队列为空,算法流程结束,否则执行步骤(3)。
优选的,步骤3的具体过程为:
(1)创建visit数组和轮廓数组;
(2)创建集合vertex、branch和cotree分别存储顶点、树枝和余枝;创建队列Q,遍历visit数组,选取未被访问过的顶点插入队列Q,将该点标记为已访问;
(3)若队列Q不为空,从中取出一个顶点添加至vertex集合,接着遍历所述顶点的所有邻接点,将未被访问过的顶点插入队列Q并把顶点标记为已访问,同时将对应的邻接边添加进branch集合,重复该步骤直到队列Q为空;
(4)遍历vertex集合,若两个顶点之间存在边并且所述边不在branch集合中,则所述边是余枝,将所述边添加加进cotree集合;
(5)若cotree不为空集,针对cotree中每一条边的端点u和v,找到u和v的最短路径,最短路径加上相应的边得到闭合环;
(6)将步骤(5)中得到的闭合环进行比较,选取最小闭合环添加到轮廓数数组,将最小闭合环对应的余枝添加到branch集合中,将对应的余枝从cotree集合中删除,若cotree为空集执行步骤(7),否则执行步骤(5);
(7)若所有顶点都被访问过,算法流程结束,否则执行步骤(2)。
优选的,步骤(5)中,通过Dijkstra算法找到余枝两个端点间的最短路径。
优选的,判断轮廓包含关系的具体过程为:
(1)判断所有轮廓之间的包含关系;
(2)依次计算轮廓的深度,并将最大深度记为maxDepth;
(3)从外到内进行拓扑重构,先将初始搜索深度i赋为0;
(4)从某个深度为i且未被搜索的轮廓开始,搜索包含在该轮廓内且深度为i+1的所有轮廓,将该轮廓和子轮廓作为一个可连轮廓组保存,将可连轮廓组中的所有轮廓标记为已访问,重复步骤(4)直到深度为i的所有轮廓被搜索完成;
(5)令i=i+2,若i<maxDepth则执行步骤(4),否则算法流程结束。
优选的,步骤(1)中,判断轮廓之间包含关系的具体过程为:
若轮廓A包含于轮廓B,则轮廓A上的所有点均在轮廓B内部;从任一端点向无穷远处发出一条射线,计算所述射线和多边形的交点个数,若交点数为偶数则说明在所述点在多边形外,否则所述点在多边形内。
与现有技术相比,本发明具有以下有益效果:
本发明公开了一种基于DXF的复杂薄板轮廓拓扑重构方法,该方法首先从DXF格式的激光切割排料图中读取数据信息,通过顶点的度的特性对数据进行预处理,能够去除边框、引入线和引出线等工艺参数。构建生成树和余树,在此基础上搜索最小独立闭合环,提取排料图中封闭轮廓,包括有公共边的轮廓。计算所有轮廓间的包含关系和轮廓深度,从外到内进行拓扑重构来构建可连轮廓组,处理零件与零件间嵌套的关系,能够识别排料图中包含的所有零件。针对DXF格式复杂的激光切割排料图,该方法能够准确识别排料图中包含的所有零件,解决现有技术中无法解析此类复杂排料图的问题。
附图说明
图1为复杂的激光切割排料图;
图2为读取DXF文件的流程图;
图3为去除边框的流程图;
图4为去除引线的流程图;
图5为搜索最小独立闭合环的流程图;
图6为点与多边形的关系示意图;
图7为轮廓包含关系示意图;
图8为可连轮廓组层次结构示意图;
图9为构建可连轮廓组的流程图;
图10为程序运行结果示意图。
具体实施方式
下面结合附图对本发明做进一步详细描述:
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制;术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性;此外,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
本发明公开了一种基于DXF的复杂薄板轮廓拓扑重构方法,以解决现有技术中无法准确解析复杂的激光切割排料图的问题。本发明针对的为薄板,特指0.2毫米至4.0毫米的板材。
为达到上述目的,本发明采用以下技术方案予以实现:一种基于DXF的复杂薄板轮廓拓扑重构方法,其特点是包括下述步骤:
步骤1,打开DXF格式的激光切割排料图,从中读取所包含的数据信息。该步骤包括:
①建立轮廓数组polygons来存储待切割板料的轮廓,建立邻接表adjacencyList来存储图,打开DXF文件。其中,轮廓默认由直线、弧线和圆组成。
②从DXF文件中读取一个组码和对应组值,若组值为ENTITIES则再读取一个组码和对应组值,执行步骤③;若组值为EOF,说明已到文件结尾,执行步骤⑦;否则重复该步骤。
③若组值为CIRCLE,执行步骤④;若组值为LINE,执行步骤⑤;若组值为ARC,执行步骤⑥;若组值为ENDSEC,执行步骤⑦。
④读取一个圆的数据并将该圆转化为封闭的多边形集合存储到轮廓数组polygons,接着再读取一个组码和对应组值,执行步骤③。
⑤读取一个直线的数据并将该直线以线段的形式存储到邻接表adjacencyList,接着再读取一个组码和对应组值,执行步骤③。
⑥读取一个弧线的数据并将该弧线转化为若干条线段依次存储到邻接表adjacencyList,接着再读取一个组码和对应组值,执行步骤③。
⑦读取流程结束,关闭DXF文件。
步骤2,对数据进行预处理,去除板材边框、引入线和引出线等工艺信息,以消除其对后续提取封闭轮廓的干扰。
步骤2.1,板材边框的去除,板材边框表示板材的外边界,所有二维零件都应在该边框内,不能将边框识别为一个零件,激光切割中所涉及原料均为矩形薄板,因此需要判断四个边界顶点是否能首尾相连组成矩形。该步骤包括:
①创建边界数组boundary来储存边界点,搜索邻接表adjacencyList中所有顶点,将最左下角、最左上角、最右上角、最右下角的四个顶点依次存入boundary数组。
②判断四个边界点是否为矩形四个顶点:矩形的四个顶点要满足以下条件,在X方向上,需要满足boundary[0]和boundary[1]的X坐标相等,boundary[2]和boundary[3]的X坐标相等;在Y方向上,需要满足boundary[0]和boundary[3]的Y坐标相等,boundary[1]和boundary[2]的Y坐标相等。
③判断四个边界点是否首尾相连构成矩形:在顶点的度上,boundary中四个顶点的度均要为2,同时需满足boundary[0]和boundary[1],boundary[1]和boundary[2],boundary[2]和boundary[3],boundary[3]和boundary[0]之间均有邻接边。
④若boundary中的四个顶点满足②和③中的所有条件,则这些边界点构成了板材边框,需要遍历boundary数组,对于其中的每一个顶点,删除其所有的邻接边,并且将顶点的度设置为0。如果找不到满足上述条件的四个顶点,则代表排料图没有边框。
步骤2.2,引入线和引出线的去除。在激光切割过程中,一般都要进行穿孔,而所穿的孔通常比切割的缝隙要大,如果在零件的轮廓上直接穿孔就会破坏原有轮廓,所以必须在远离零件轮廓处进行穿孔,然后通过一条线连接到轮廓轨迹,这条线就叫引入线。在激光切割完成后,为了使零件被完整的切割下来,并且保证零件轮廓的完整性和规则性,需要通过零件轮廓外延续切割的一条线,这就是引出线。引入线和引出线本质上是由一条或多条线段组成,其中离零件轮廓路径最远的一条线段一定不是封闭的,即该线段的其中一个端点的度为1。在拓扑重构的过程中,引入线和引出线会影响封闭轮廓的提取,因此需要将其去除,该步骤包括:
①创建队列leads来存储引入线和引出线;
②遍历邻接表adjacencyList中的所有顶点,搜索度为1的顶点,这些顶点就是引入线的起点或者引出线的终点,将其依次插入队列leads;
③若队列leads不为空,将头部元素出队,首先删除其所在的边,并且将该边的另一端点的度减去1,此时若另一端点的度也为1,说明另一端点仍不在零件轮廓上,即仍然是引入线或引出线的一端,将其插入队列leads;
④若队列leads为空,算法流程结束;否则执行步骤③。
步骤3,构建生成树和余树来搜索图中所有的最小独立闭合环。其中,生成树是连通图的包含图中的所有顶点的极小连通子图,生成树不是唯一的,从不同的顶点出发进行遍历,可以得到不同的生成树。余树是连通图中除了生成树包含的树枝外的其余的边所组成的集合,每条边为一个余枝。闭合环是若干条线段首尾相接构成的封闭轮廓,而最小独立闭合环要满足以下三个条件:所有闭合环是线性无关的;包含的边数最少;边数相同时,应选择长度最短的闭合环。该步骤包括:
①创建visit数组来标记邻接表adjacencyList中的顶点是否被访问,通过上述的轮廓数组polygons来存储轮廓;
②创建集合vertex、branch和cotree分别存储顶点、树枝和余枝,创建队列Q,遍历visit数组,选取一个未被访问过的顶点插入队列Q,将该点标记为已访问;
③若队列Q不为空,从中取出一个顶点,先将该顶点添加进vertex集合,接着遍历该顶点的所有邻接点,将未被访问过的顶点插入队列Q并把顶点标记为已访问,同时将对应的邻接边添加进branch集合,重复该步骤直到队列Q为空;
④遍历vertex集合,若两个顶点间存在边并且该边不在branch集合中,则该边是余枝,将其添加进cotree集合;
⑤若cotree不为空集,对于cotree中每一条边的端点u和v,通过Dijkstra算法在branch中找到u到v的最短路径,最短路径加上相应的边(u,v)得到闭合环;
⑥将步骤⑤中所得到的闭合环进行比较,选取周长最小的作为当前的闭合环,将其添加到轮廓数组polygons,将其所对应的余枝添加到branch集合中并从cotree集合中删除,若cotree为空集执行步骤⑦,否则执行步骤⑤;
⑦若所有顶点都被访问过,算法流程结束,否则执行步骤②。
通过步骤3,获得了激光切割排料图中除圆以外的其余轮廓,将所有的轮廓存储在存储数组中。
步骤4,计算轮廓间的包含关系和轮廓的深度,构建可连轮廓组。轮廓间的包含关系,可以通过点是否在多边形内进行判断。将轮廓分为外轮廓和内轮廓,其中外轮廓是指最外层的轮廓或者包含该轮廓的所有轮廓的数目为偶数的轮廓;内轮廓是指包含该轮廓的数目为奇数的轮廓。父轮廓是指包含某一轮廓的轮廓,子轮廓是指被某一轮廓包含的轮廓,轮廓的深度等于包含该轮廓的父轮廓的数量,表示该轮廓在所有轮廓中的相对深度。可连轮廓组是指某一外轮廓以及它所包含的下一层内轮廓组成的轮廓组,也就是要提取的目标零件。该步骤包括:
①计算所有轮廓之间的包含关系;
②依次计算轮廓的深度,并将最大深度记为maxDepth;
③从外到内进行拓扑重构,先将初始搜索深度i赋为0;
④从某个深度为i且未被搜索的轮廓开始,搜索包含在该轮廓内且深度为i+1的所有轮廓,将该轮廓和这些子轮廓作为一个可连轮廓组保存,将可连轮廓组中的所有轮廓标记为已访问,重复该步骤直到深度为i的所有轮廓被搜索完成;
⑤令i=i+2,若i<maxDepth则执行步骤④,否则算法流程结束。
下面结合具体的附图和实施例进一步说明。
实施例
步骤1,打开DXF格式的激光切割排料图,从中读取所包含的数据信息。
DXF是用于AutoCAD与其它软件之间进行CAD数据交换的文件格式,是包含的所有信息的一种带标记数据的表示方式。其本质上由若干个组构成,每个组占两行,第一行为组的代码,第二行为组值,二者结合起来表示一个数据的含义和值。该文件的结构相当复杂,完整的DXF文件由七个段(SECTION)组成,每个段由一行组码0及一行字符串SECTION开始,紧接着的是一行组码2及一行表示段名称的字符串,段的结束由一行组码0及一行表示该段结束的字符串ENDSEC。在实际应用中,只要获取其中的实体段(ENTITIES),该段记录每个实体的名称、坐标、线型等图元信息。参照附图1,激光切割排料过程只考虑使用弧线(ARC)、直线(LINE)、圆(CIRCLE)三种简单图元,因此在读取的过程中只需处理这三种图元。参照附图2,该步骤具体流程如下:
①建立轮廓数组polygons来存储轮廓,建立邻接表adjacencyList来存储图,打开DXF文件。
②从DXF文件中读取一个组码和对应组值,若组值为ENTITIES则再读取一个组码和对应组值,执行步骤③;若组值为EOF,说明已到文件结尾,执行步骤⑦;否则重复该步骤。
③若组值为CIRCLE,则读取的图元是圆,执行步骤④;若组值为LINE,则读取的图元是直线,执行步骤⑤;若组值为ARC,则读取的图元是弧线,执行步骤⑥;若组值为ENDSEC,说明已经读到ENTITIES段的尾部,执行步骤⑦。
④从DXF文件中依次读取组码和对应组值,直到组码为0时执行步骤③;在这过程中,组码为10和20时对应的组值分别为中心点的X坐标和Y坐标,组码为40时对应的组值为半径,将该圆转化为封闭的多边形集合直接存储到轮廓数组polygons。
⑤从DXF文件中依次读取组码和对应组值,直到组码为0时执行步骤③;在这过程中,组码为10和20时对应的组值分别为起点的X坐标和Y坐标,组码为11和21时对应的组值分别为终点的X坐标和Y坐标,将该直线以线段的形式存储到邻接表adjacencyList。
⑥从DXF文件中依次读取组码和对应组值,直到组码为0时执行步骤③;在这过程中,组码为10和20时对应的组值分别为中心点的X坐标和Y坐标,组码为40时对应的组值为半径,组码为50和51时对应的组值分别为起点角度和终点角度,将该弧线转化为若干条线段后依次存储到邻接表adjacencyList。
⑦读取流程结束,关闭DXF文件。
步骤2,对数据进行预处理,去除板材边框、引入线和引出线等工艺信息,以消除其对后续提取封闭轮廓的干扰;
步骤2.1,板材边框的去除,板材边框表示板材的外边界,所有二维零件都应在该边框内,不能将边框识别为一个零件,激光切割中所涉及原料均为矩形薄板,因此需要判断四个边界顶点是否能首尾相连组成矩形。参照附图3,该步骤的具体流程如下:
①创建边界数组boundary来储存边界点,搜索邻接表adjacencyList中所有顶点,将最左下角、最左上角、最右上角、最右下角的四个顶点依次存入boundary数组。
②判断四个边界点是否为矩形四个顶点:矩形的四个顶点要满足以下条件,在X方向上,需要满足boundary[0]和boundary[1]的X坐标相等,boundary[2]和boundary[3]的X坐标相等;在Y方向上,需要满足boundary[0]和boundary[3]的Y坐标相等,boundary[1]和boundary[2]的Y坐标相等。
③判断四个边界点是否首尾相连构成矩形:在顶点的度上,boundary中四个顶点的度均要为2,同时需满足boundary[0]和boundary[1],boundary[1]和boundary[2],boundary[2]和boundary[3],boundary[3]和boundary[0]之间均有邻接边。
④若boundary中的四个顶点满足②和③中的所有条件,则这些边界点构成了板材边框,需要遍历boundary数组,对于其中的每一个顶点,删除其所有的邻接边,并且将顶点的度设置为0。
步骤2.2,引入线和引出线的去除。在激光切割过程中,一般都要进行穿孔,而所穿的孔通常比切割的缝隙要大,如果在零件的轮廓上直接穿孔就会破坏原有轮廓,所以必须在远离零件轮廓处进行穿孔,然后通过一条线连接到轮廓轨迹,这条线就叫引入线。在激光切割完成后,为了使零件被完整的切割下来,并且保证零件轮廓的完整性和规则性,需要通过零件轮廓外延续切割的一条线,这就是引出线。引入线和引出线本质上是由一条或多条线段组成,其中离零件轮廓路径最远的一条线段一定不是封闭的,即该线段的其中一个端点的度为1。在拓扑重构的过程中,引入线和引出线会影响封闭轮廓的提取,因此需要将其去除。参照附图4,该步骤的具体流程如下。
①创建队列leads来存储引入线和引出线;
②遍历邻接表adjacencyList中的所有顶点,搜索度为1的顶点,这些顶点就是引入线的起点或者引出线的终点,将其依次插入队列leads;
③若队列leads不为空,将头部元素出队,首先删除其所在的边,并且将该边的另一端点的度减去1,此时若另一端点的度也为1,说明另一端点仍不在零件轮廓上,即仍然是引入线或引出线的一端,将其插入队列leads;
④若队列leads为空,算法流程结束;否则执行步骤③。
步骤3,构建生成树和余树来搜索图中所有的最小独立闭合环,将其添加到轮廓数组polygons。
生成树与生成森林:图G的一个生成子图T若是树,称它为G的一棵生成树;若T为森林,称它为G的一个生成森林。在连通图中,生成树是连通图的包含图中的所有顶点的极小连通子图,通常生成树不是唯一的,从不同的顶点出发进行遍历,可以得到不同的生成树。非连通图可分解为多个连通分量,这些连通分量的生成树构成了非连通图的生成森林。
余树:若T为连通图G的生成树,对于任意的边e∈E(G),若e∈E(T)则称e为T的树枝,否则称e为T的弦,并且称G[E(G)-E(T)]为T的余树,记为
Figure BDA0004042033420000131
闭合环是若干条线段首尾相接构成的封闭轮廓,而最小独立闭合环要满足以下三个条件:所有闭合环是线性无关的;包含的边数最少;边数相同时,应选择长度最短的闭合环。在一个生成树中,对应着若干个余枝,针对其中一个余枝,余枝的起点到终点可能有多条路径,它们都可以和余枝组成一个闭合环,需要在所有的路径中选择一个最短的来构成一个最小闭合环,图中从一点到另一点的最短路径属于单源最短路径问题,可在Dijkstra算法、Bellman-Ford算法和SPFA算法选择合适的算法解决该问题,本发明利用Dijkstra算法来计算余枝两个端点间的最短路径。余树中每个余枝都对应着一个最小闭合环,它们添加的先后顺序对结果有直接影响,需要将这组最小独立闭合环进行二次比较,从中选取最小的闭合环对应的余枝添加。
激光切割排料图中共边情况比较复杂,先将非联通图分解为多个连通分量,相连的轮廓构成一个连通分量,但是排料图中不一定所有的轮廓都是相连的,所以可能会有若干个连通分量。针对每一个连通分量,需要构建生成树和余树,在此基础上进行搜索,以便找到所有封闭轮廓。接着对于每个连通分量,分别构建生成树和余树,最后依次寻找最小独立闭合环,参照附图5,该步骤的具体流程如下:
①创建visit数组来标记邻接表adjacencyList中的顶点是否被访问,创建轮廓数组polygons来存储轮廓;
②创建集合vertex、branch和cotree分别存储顶点、树枝和余枝,创建队列Q,遍历visit数组,选取一个未被访问过的顶点插入队列Q,将该点标记为已访问;
③若队列Q不为空,从中取出一个顶点,先将该顶点添加进vertex集合,接着遍历该顶点的所有邻接点,将未被访问过的顶点插入队列Q并把顶点标记为已访问,同时将对应的邻接边添加进branch集合,重复该步骤直到队列Q为空;
④遍历vertex集合,若两个顶点间存在边并且该边不在branch集合中,则该边是余枝,将其添加进cotree集合;
⑤若cotree不为空集,对于cotree中每一条边的端点u和v,通过Dijkstra算法在branch中u到v的最短路径,最短路径加上相应的边(u,v)得到闭合环;
⑥将步骤⑤中所得到的闭合环进行比较,选取周长最小的作为当前的闭合环,将其添加到轮廓数组polygons中,将其所对应的余枝添加到branch集合中并从cotree集合中删除,若cotree为空集执行步骤⑦,否则执行步骤⑤;
⑦若所有顶点都被访问过,算法流程结束,否则执行步骤②。
步骤4,计算轮廓间的包含关系和轮廓的深度,构建可连轮廓组。
通过上述步骤能够获取DXF格式的激光切割排料图中的所有轮廓,接着计算所有轮廓间的包含关系,可以通过点是否在多边形内进行判断,若轮廓A包含于轮廓B,则轮廓A上的所有点均在轮廓B内部。从某一端点向无穷远处发出一条射线,计算这条射线和多边形的交点个数,若交点数为偶数则说明在该点在多边形外,否则该点在多边形内,可以通过下面的流程来判断点与多边形的关系:
①构建安全矩形:参照附图6(a),遍历多边形所有的顶点,统计出最大最小的x、y值,这样就构建出了安全矩形四个顶点的坐标值,所有在安全矩形外的点都可以直接判断为不在多边形内部。
②线段的安全区域:参照附图6(b),对于线段AB,L1上方、L2下方和线段AC的右侧(假设射线是水平向右的)都是安全区域,就是做当点处于这些区域的时候,是绝不会和线段AB产生交点的,因此可以先判断是否在安全区域,如果不在,再继续计算是否有交点,如果在安全区域,则立即可以得出没有交点。
③当需要判断的点既不在安全矩形又不在线段的安全区域之内时,需要遍历多边形所有的边,依次判断是否与射线存在交点。在计算时会有一些特殊情况,参照附图6(c),此时必须区分线段的上顶点和下顶点,只有射线经过线段的上顶点时,才算是有交点;当射线经过线段的下顶点时,则射线和线段没有交点。
将轮廓分为外轮廓和内轮廓,其中外轮廓是指最外层的轮廓或者包含该轮廓的所有轮廓的数目为偶数的轮廓;内轮廓是指包含该轮廓的数目为奇数的轮廓。父轮廓是指包含某一轮廓的轮廓,子轮廓是指被某一轮廓包含的轮廓,轮廓的深度等于包含该轮廓的父轮廓的数量,表示该轮廓在所有轮廓中的相对深度。可连轮廓组是指某一外轮廓以及它所包含的下一层内轮廓组成的轮廓组,也就是要提取的目标零件。
参照附图7,激光切割排料图中共有7个轮廓,其中C1是最外层轮廓,没有任何父轮廓,其深度为0,属于外轮廓;C2、C3、C8和C9的父轮廓均为C1,其深度为1,属于内轮廓;C4的父轮廓为C1和C2,C5的父轮廓为C1和C3,其深度均为2,属于外轮廓;C6父轮廓为C4、C2和C1,C7的父轮廓为C5、C3和C1,其深度为3,属于内轮廓。
参照附图8,所有轮廓间的包含关系可以用层次结构来表示,其中可连轮廓组是指某一外轮廓以及它所包含的下一层内轮廓组成的轮廓组,因此,C1、C2、C3、C8和C9构成一个可连轮廓组,C4和C6构成一个可连轮廓组,C5和C7构成一个可连轮廓组,分别表示三个独立的零件。
参照附图9,该步骤具体流程如下:
①计算所有轮廓之间的包含关系;
②依次计算轮廓的深度,并将最大深度记为maxDepth;
③从外到内进行拓扑重构,先将初始搜索深度i赋为0;
④从某个深度为i且未被搜索的轮廓开始,搜索包含在该轮廓内且深度为i+1的所有轮廓,将该轮廓和这些子轮廓作为一个可连轮廓组保存,将可连轮廓组中的所有轮廓标记为已访问,重复该步骤直到深度为i的所有轮廓被搜索完成;
⑤令i=i+2,若i<maxDepth则执行步骤④,否则算法流程结束。
利用C#编写程序对所述方法进行验证,参照附图10,对于复杂的DXF格式的激光切割排料图,该方法能够读取DXF文件,去除工艺参数,寻找封闭轮廓并构建可连轮廓组,最终准确识别出图中所有的零件,对于实际的工业制造需求具有重大意义。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于DXF的复杂薄板轮廓拓扑重构方法,其特征在于,包括以下步骤:
步骤1,从DXF格式的激光切割排料图获取排料数据,将排料数据中的图元信息存储到轮廓数组和邻接表中;
步骤2,根据图元信息判断激光切割排料图是否存在矩形边框,如果存在,去除边框;同时通过判断邻接表中顶点的度去除引入线和引出线;
步骤3,基于邻接表,寻找连通分量并分别建立生成树和对应余树,通过生成树和余树搜索所有的最小独立闭合环,将所有的最小独立闭合环存储在轮廓数组中;
步骤4,通过点是否在多边形中的方法判断轮廓数组中所有轮廓的包含关系,计算所有轮廓的深度;根据轮廓的包含关系,从外向内进行拓扑重构,直至所有的轮廓被重构完,拓扑重构结束。
2.根据权利要求1所述的一种基于DXF的复杂薄板轮廓拓扑重构方法,其特征在于,步骤1中,将排料数据中的图元信息存储到轮廓数组和邻接表中的过程为:
步骤1.1,建立轮廓数组存储待切割板料的轮廓,建立邻接表存储图;
步骤1.2,从DXF文件中读取一个组码和对应组值,若组值为ENTITIES,则再读取一个组码和对应组值,执行步骤1.3;若组值为EOF,说明已到文件结尾,执行步骤1.7;否则重复该步骤;
步骤1.3,若组值为圆,执行步骤1.4;若组值为直线,执行步骤1.5;若组值为弧线,执行步骤1.6;若组值为ENDSEC,执行步骤1.7;
步骤1.4,读取一个圆的数据,将所述圆转化为封闭的多边形集合,将所述多边形集合存储到轮廓数组,接着再读取一个组码和对应组值,执行步骤1.3;
步骤1.5,读取一个直线的数据,将所述直线以线段的形式存储到邻接表,接着再读取一个组码和对应组值,执行步骤1.3;
步骤1.6,读取一个弧线的数据,将所述弧线转化为若干条线段,将所述线段依次存储到邻接表,接着再读取一个组码和对应组值,执行步骤1.3;
步骤1.7,读取流程结束,关闭DXF文件。
3.根据权利要求1所述的一种基于DXF的复杂薄板轮廓拓扑重构方法,其特征在于,步骤2中,判断激光切割排料图四个角的顶点是否能够组成矩形的过程为:
(1)创建边界数组储存边界点,搜索图中所有顶点,将最左下角、最左上角、最右上角、最右下角的四个顶点依次存入边界数组中;
(2)判断四个边界点是否为矩形四个顶点;
(3)判断四个边界点是否首尾相连构成矩形;
(4)如果同时满足步骤(2)和步骤(3)的所有条件,则四个顶点构成了板材边框,遍历边界数组,删除每一个顶点的邻接边,将顶点的度设为0。
4.根据权利要求3所述的一种基于DXF的复杂薄板轮廓拓扑重构方法,其特征在于,步骤(2)中,通过比较四个顶点的坐标值,判断四个边界点是否为矩形。
5.根据权利要求3所述的一种基于DXF的复杂薄板轮廓拓扑重构方法,其特征在于,步骤(3)中,通过判断四个顶点之间是否有邻接边判断四个边界点首尾相连后是否能够构成矩形。
6.根据权利要求1所述的一种基于DXF的复杂薄板轮廓拓扑重构方法,其特征在于,步骤2中,去除引入线和引出线的具体过程为:
(1)创建队列存储引入线和引出线;
(2)遍历邻接表中的所有顶点,将度为1的顶点插入至队列中;
(3)若队列不为空,将头部元素出队,删除头部元素属于的边,将所述边另一端点的度减去1,若另一端点的度也为1,将所述另一端点插入至队列;
(4)若队列为空,算法流程结束,否则执行步骤(3)。
7.根据权利要求1所述的一种基于DXF的复杂薄板轮廓拓扑重构方法,其特征在于,步骤3的具体过程为:
(1)创建visit数组和轮廓数组;
(2)创建集合vertex、branch和cotree分别存储顶点、树枝和余枝;创建队列Q,遍历visit数组,选取未被访问过的顶点插入队列Q,将该点标记为已访问;
(3)若队列Q不为空,从中取出一个顶点添加至vertex集合,接着遍历所述顶点的所有邻接点,将未被访问过的顶点插入队列Q并把顶点标记为已访问,同时将对应的邻接边添加进branch集合,重复该步骤直到队列Q为空;
(4)遍历vertex集合,若两个顶点之间存在边并且所述边不在branch集合中,则所述边是余枝,将所述边添加加进cotree集合;
(5)若cotree不为空集,针对cotree中每一条边的端点u和v,找到u和v的最短路径,最短路径加上相应的边得到闭合环;
(6)将步骤(5)中得到的闭合环进行比较,选取最小闭合环添加到轮廓数数组,将最小闭合环对应的余枝添加到branch集合中,将对应的余枝从cotree集合中删除,若cotree为空集执行步骤(7),否则执行步骤(5);
(7)若所有顶点都被访问过,算法流程结束,否则执行步骤(2)。
8.根据权利要求7所述的一种基于DXF的复杂薄板轮廓拓扑重构方法,其特征在于,步骤(5)中,通过Dijkstra算法找到余枝两个端点间的最短路径。
9.根据权利要求1所述的一种基于DXF的复杂薄板轮廓拓扑重构方法,其特征在于,判断轮廓包含关系的具体过程为:
(1)判断所有轮廓之间的包含关系;
(2)依次计算轮廓的深度,并将最大深度记为maxDepth;
(3)从外到内进行拓扑重构,先将初始搜索深度i赋为0;
(4)从某个深度为i且未被搜索的轮廓开始,搜索包含在该轮廓内且深度为i+1的所有轮廓,将该轮廓和子轮廓作为一个可连轮廓组保存,将可连轮廓组中的所有轮廓标记为已访问,重复步骤(4)直到深度为i的所有轮廓被搜索完成;
(5)令i=i+2,若i<maxDepth则执行步骤(4),否则算法流程结束。
10.根据权利要求9所述的一种基于DXF的复杂薄板轮廓拓扑重构方法,其特征在于,步骤(1)中,判断轮廓之间包含关系的具体过程为:
若轮廓A包含于轮廓B,则轮廓A上的所有点均在轮廓B内部;从任一端点向无穷远处发出一条射线,计算所述射线和多边形的交点个数,若交点数为偶数则说明在所述点在多边形外,否则所述点在多边形内。
CN202310020882.7A 2023-01-06 2023-01-06 一种基于dxf的复杂薄板轮廓拓扑重构方法 Pending CN116090126A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310020882.7A CN116090126A (zh) 2023-01-06 2023-01-06 一种基于dxf的复杂薄板轮廓拓扑重构方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310020882.7A CN116090126A (zh) 2023-01-06 2023-01-06 一种基于dxf的复杂薄板轮廓拓扑重构方法

Publications (1)

Publication Number Publication Date
CN116090126A true CN116090126A (zh) 2023-05-09

Family

ID=86202040

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310020882.7A Pending CN116090126A (zh) 2023-01-06 2023-01-06 一种基于dxf的复杂薄板轮廓拓扑重构方法

Country Status (1)

Country Link
CN (1) CN116090126A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117745807A (zh) * 2024-02-19 2024-03-22 上海方菱计算机软件有限公司 一种确认打标位置的方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117745807A (zh) * 2024-02-19 2024-03-22 上海方菱计算机软件有限公司 一种确认打标位置的方法及装置
CN117745807B (zh) * 2024-02-19 2024-04-26 上海方菱计算机软件有限公司 一种确认打标位置的方法及装置

Similar Documents

Publication Publication Date Title
US6898560B1 (en) Maintaining a computer-generated design model
Choi et al. Automatic recognition of machined surfaces from a 3D solid model
US4845651A (en) Geometric modelling system
CN105787977B (zh) 建筑物矢量边界简化的方法
CN101763069A (zh) 飞机复杂构件加工特征识别方法
TWI773063B (zh) 圖像產生系統及圖像產生方法
CN116090126A (zh) 一种基于dxf的复杂薄板轮廓拓扑重构方法
CN111986308B (zh) 基于点云法线与曲率变化双约束曲面误差显著点识别方法
US8255077B2 (en) Apparatus, method and program for creating tool reference plane
CN114398691B (zh) 一种轮胎模具二维视图智能设计方法及设备
CN110222447B (zh) 一种基于八叉树的自适应网格划分方法及系统
CN101458726A (zh) 线切割程序生成系统及方法
EP1452984A1 (en) Method for converting 3-dimensional shape data into cell inner data and conversion program
CN114140466A (zh) 基于图像处理的植物根系测量方法、系统及装置
CN100367284C (zh) 边界数据的内外判定方法
CN112734934A (zh) 一种基于相交边映射的stl模型3d打印切片方法
CN111241228B (zh) 基于矢量数据与图形化处理技术的综合制图方法
CN113034515A (zh) 基于包围盒树的多边形裁剪方法、电子设备及存储介质
CN113111458B (zh) 一种基于dxf的钣金件自动识别和定位方法
CN115113584B (zh) 基于实例及规则推理的数控自动编程方法
CN115270243B (zh) 地下室侧墙大样配筋图生成方法、设备及可读介质
CN116416377A (zh) 针对薄壁管激光切割的加工特征的识别方法、装置及系统
CN111739040B (zh) 图斑简化方法、装置、设备和计算机可读存储介质
CN113901540A (zh) 一种门窗表建筑图纸的类型和门窗的自动识别方法
CN114511652A (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