一种工件的排包系统及其排包方法与流程

文档序号:16686275发布日期:2019-01-22 18:20阅读:143来源:国知局
一种工件的排包系统及其排包方法与流程

本发明涉及针对工件排包技术领域,尤其是涉及一种工件的排包系统。



背景技术:

增材制造是以数字模型为基础,通过计算机控制将材料逐层堆积制造出三维物体。其中,碰撞检测三维物体建造前的重要环节,它的核心任务是检测在规定的范围内两个或多个物体之间是否发生接触或进入。

在一次增材制造建造过程中,为了提高打印效率,一般会同时打印多个待打印三维物体制件(以下简称模型),模型也是工件,而在打印之前,需要检测多个模型之间是否存在碰撞通过检测任两个模型之间是否存在碰撞而判断,当任两个模型之间存在碰撞,则说明待打印三维物体制件之间存在碰撞,不宜打印。

另外每个三维物体制件往往均是以三维stl模型的形式存在的,在打印之前常常还需要对若干作为工件的三维物体制件进行排包,排包就是在指定的空间范围内最优化的排布该若干作为工件的三维物体制件,最优化的排布具体而言就是空间利用率最大的排布,而空间利用率就是把排布在指定的空间的所有的三维物体制件分别投影到xoy平面上形成的投影区域的面积相加后得到的第一投影区域的面积值除以把排布在指定的空间的所有的三维物体制件投影到xoy平面上的合成整体的第二投影区域的面积值所得的商值,而现有的对若干作为工件的三维物体制件进行排包的方式普遍为:除了先逐一选取一个三维物体制件预先设置在指定的空间中,再来根据其他未排列在指定的空间中的三维物体制件的各种排列后的空间利用率percent的大小来确定下一个工件多边形的选取,而即使是同一个工件,也要在同一位置根据围绕第一个顶点旋转45度、90度、135度和180度后计算得到的不同的空间利用率percent来确定最后的排放位置。由于上述排包算法呈现的时间复杂度是平方阶的,所以排包算法的计算时间长,这样就使得对若干作为工件的三维物体制件进行排包的效率低下,耗时过长。



技术实现要素:

针对上述技术问题,本发明的目的在于采用估计函数、回溯算法以及碰撞检测,这样就避免了待打印三维物体制件之间存在碰撞不宜打印、排包算法的计算时间长使得对若干作为工件的三维物体制件进行排包的效率低下和耗时过长的缺陷。

为实现上述目的,本发明提供了如下技术方案:一种工件的排包系统的排包方法,包括如下步骤:

步骤1:将若干待排列到指定的空间范围的三维物体制件的数据按序排列;

步骤2:按序把若干待排列到指定的空间范围的三维物体制件在指定的空间范围内进行排包,达到最优化排布。

通过采用上述技术方案,按序把若干待排列到指定的空间范围的三维物体制件在指定的空间范围内进行排包,达到最优化排布,通过按序的进行排包,就能有序的排包,避免了现有技术的除了先逐一选取一个三维物体制件预先设置在指定的空间中,再来根据其他未排列在指定的空间中的三维物体制件的各种排列后的空间利用率percent的大小来确定下一个工件多边形的选取的效率低下的缺陷。

本发明进一步设置为:所述若干待排列到指定的空间范围的三维物体制件的数据按序排列的方式为:将若干三维stl模型各自投影到xoy平面而获得每一个三维stl模型在xoy平面上的作为其投影的多边形,另外构建一个数组part[n],其中n为正整数且为所述若干待排列到指定的空间范围的三维物体的数量,每一个数组元素part[i]的数据为第i+1三维stl模型的有序顶点集;其中i为正整数且其值范围为0到(n-1),所述按序排列为所述数组part[n]的数组序列按照三维stl模型在xoy平面上的作为其投影的多边形的面积值而从大到小的顺序排列。

通过采用上述技术方案,按序排列为所述数组part[n]的数组序列按照三维stl模型在xoy平面上的作为其投影的多边形的面积值而从大到小的顺序排列,这样按序排列就能够达到按数组序列来逐步选取三维stl模型在xoy平面上的作为其投影的多边形进行排包,这样就按序进行排包来确定三维stl模型在xoy平面上的作为其投影的多边形在指定的空间在xoy平面上的投影区域上的排放的位置,无需逐一选取一个三维物体制件预先设置在指定的空间中,再来根据其他未排列在指定的空间中的三维物体制件的各种排列后的空间利用率percent的大小来确定下一个工件多边形的选取,降低了排包的运算时间,提高了排包的速率。

本发明进一步设置为:所述按序把若干待排列到指定的空间范围的三维物体制件在指定的空间范围内进行排包的过程中还进行碰撞检测。

通过采用上述技术方案,进行排包的过程中还进行碰撞检测,这样避免了待打印三维物体制件之间存在碰撞的发生的问题,还能满足最优化排布,宜于打印。

本发明进一步设置为:所述按序把若干待排列到指定的空间范围的三维物体制件在指定的空间范围内进行排包的过程中还进行碰撞检测的方式包括如下步骤:

步骤2-1:初始化一个多元组类型layout的变量k,所述多元组类型layout的元素包括数组元素part[i]、数组元素part[i]所属的三维stl模型投影在xoy平面的二维图形的第一个顶点排列在指定的空间范围投影到xoy平面的二维图形中的位置postion、围绕该第一个顶点旋转的角度rotation、作为空间利用率percent的估价函数值以及数组元素part[i+1]的标识,初始化后的变量k的数组元素part[i]、数组元素part[i]所属的三维stl模型投影在xoy平面的二维图形的第一个顶点排列在指定的空间范围投影到xoy平面的二维图形中的位置postion、围绕该第一个顶点旋转的角度rotation、估价函数值以及数组元素part[i+1]的标识分别为数组元素part[0]、数组元素part[0]所属的三维stl模型投影在xoy平面的二维图形排列在指定的空间范围投影到xoy平面的二维图形初始区域中时数组元素part[0]所属的三维stl模型投影在xoy平面的二维图形的第一顶点的位置postion、零度、100%以及数组元素part[1]的标识,把该初始化后的变量k作为当前变量,并把该初始化后的变量k放入一个堆栈;

步骤2-2:按照数组part[n]的数组序列依次把当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形启动估计函数进行估计和碰撞检测,然后如果有满足估计函数估计条件和碰撞检测条件的数组元素,就选择一个满足估计函数估计条件和碰撞检测条件的数组元素,然后转到步骤2-5中执行;

步骤2-3:如果没有满足估计函数估计条件和碰撞检测条件的数组元素,那就把所有排布好的三维stl模型投影在xoy平面的二维图形合成整体的区域在xoy平面上的最大y坐标作为下边界,按照数组part[n]的数组序列依次把当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与指定的空间范围投影到xoy平面的二维图形的最左边的以该最大y坐标作为上边界且距离该上边界最近的那个三维stl模型投影在xoy平面的二维图形启动估计函数进行估计和碰撞检测,然后如果有满足估计函数估计条件和碰撞检测条件的数组元素,就选择一个满足估计函数估计条件和碰撞检测条件的数组元素,然后转到步骤2-5中执行;

步骤2-4:如果未有满足估计函数估计条件和碰撞检测条件的数组元素,然后就用回溯算法处理然后返回步骤2-2中执行;

步骤2-5:把选择的数组元素、该数组元素所属的三维stl模型投影在xoy平面的二维图形的第一个顶点排列在指定的空间范围投影到xoy平面的二维图形中的位置、围绕该第一个顶点旋转的角度、估价函数值以及下一个数组元素的标识分别存入多元组类型layout的变量l的中的数组元素part[i]、数组元素part[i]所属的三维stl模型投影在xoy平面的二维图形的第一个顶点排列在指定的空间范围投影到xoy平面的二维图形中的位置postion、围绕该第一个顶点旋转的角度rotation、作为空间利用率percent的估价函数值以及数组元素part[i+1]的标识中,然后再把变量l放入堆栈;把选择的数组元素后面的数组元素顺序依次往前移入前一个数组元素的位置后,把最后一个数组元素移入的位置后面的数组元素的值都设为空,并把所述队列中的数组元素按先入先出的顺序依次从第一个值设为空的数组元素开始向后插入各个数组元素中;

步骤2-6:遍历所述数组part[n],若所述数组part[n]的数组元素的值都为空,也就是满足所有三维stl模型投影在xoy平面的二维图形都已排列进指定的空间范围投影到xoy平面的二维图形中,在所有三维stl模型投影在xoy平面的二维图形都已排列进指定的空间范围投影到xoy平面的二维图形中的排列布局中挑选出作为空间利用率percent的估价函数值最大的那个排列布局作为最终的排包结果。

通过采用上述技术方案,根据这样的选取规则,通常是选择作为空间利用率percent的估价函数值最大的三维stl模型投影在xoy平面的二维图形作为优先候选的三维stl模型投影在xoy平面的二维图形,但是当该候选的无三维stl模型投影在xoy平面的二维图形论以何种角度何种位置排放均超出边界时,则应该选取比该候选的三维stl模型投影在xoy平面的二维图形次小的工件进行排放,以此类推,直至选取出一三维stl模型投影在xoy平面的二维图形较小且能以某种角度某种位置放于指定的空间范围的三维stl模型。如果所有可选三维stl模型投影在xoy平面的二维图形均超出边界,则向上一层回溯,即重新选择上一次放置的三维stl模型投影在xoy平面的二维图形,其优先级仍根据作为空间利用率percent的估价函数值来决定,且作为空间利用率percent的估价函数值应比原来选取的作为空间利用率percent的估价函数值更小。如果在该层上仍然无法选出合适的三维stl模型投影在xoy平面的二维图形,则继续向更上一层回溯,直至无法回溯为止。每次回溯之前均要记录下当时的布局和相应的利用率,以便在结束之前,根据利用率的大小,选择最优的布局作为最终结果。为了缩短运算时间,采用不从头到尾配比所有的待排多边形,而是指定顺序来有序进行,极大的减轻了运算负担,缩短了运算时间。

本发明进一步设置为:所述把当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形启动估计函数进行估计和碰撞检测的步骤包括:

步骤2-2-1:把该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形移动到指定的空间范围投影到xoy平面的二维图形中且处在当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形的正右边;

步骤2-2-2:这样把该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形的左端逐一处在当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形的正右边区域的一个坐标点上,每处在该正右边区域的一个坐标点上时,就把该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形围绕其第一顶点顺序旋转四次,该四次旋转的角度分别为45度、90度、135度和180度,以此分别对每次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形进行判断;

步骤2-2-3:首先启动估计函数判断该次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形是否处在指定的空间范围投影到xoy平面的二维图形的范围内,若处在指定的空间范围投影到xoy平面的二维图形的范围内,就进行对每次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形的碰撞检测,若满足碰撞检测条件,就进行作为空间利用率percent的估价函数值的估计,得到每次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形的作为空间利用率percent的估价函数值;

步骤2-2-4:若未处在指定的空间范围投影到xoy平面的二维图形的范围内或不满足碰撞检测条件,就终止对该次旋转后的该当前变量的数组元素part[i]后面的数组元素的作为空间利用率percent的估价函数值的估计。

通过采用上述技术方案,这样就能按照数组序列来启动估计函数按序进行估计和碰撞检测,按序的方式能够提高估计和碰撞检测的效率,并且降低出错率。

本发明进一步设置为:所述把当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与指定的空间范围投影到xoy平面的二维图形的最左边的以该最大y坐标作为上边界且距离该上边界最近的那个三维stl模型投影在xoy平面的二维图形启动估计函数进行估计和碰撞检测的步骤包括:

步骤2-3-1:把该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形移动到指定的空间范围投影到xoy平面的二维图形中且处在指定的空间范围投影到xoy平面的二维图形的最左边的以该最大y坐标作为下边界的正上方;

步骤2-3-2:这样把该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形的底端逐一处在指定的空间范围投影到xoy平面的二维图形的最左边的以该最大y坐标作为上边界且距离该上边界最近的那个三维stl模型投影在xoy平面的二维图形的正上方的一个坐标点上,每处在该正上方区域的一个坐标点上时,就把该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形围绕其第一顶点顺序旋转四次,该四次旋转的角度分别为45度、90度、135度和180度,以此分别对每次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与指定的空间范围投影到xoy平面的二维图形的最左边的以该最大y坐标作为上边界且距离该上边界最近的那个三维stl模型投影在xoy平面的二维图形进行判断;

步骤2-3-3:首先启动估计函数判断该次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形是否处在指定的空间范围投影到xoy平面的二维图形的范围内,若处在指定的空间范围投影到xoy平面的二维图形的范围内,就进行对每次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与指定的空间范围投影到xoy平面的二维图形的最左边的以该最大y坐标作为上边界且距离该上边界最近的那个三维stl模型投影在xoy平面的二维图形的碰撞检测,若满足碰撞检测条件,就进行作为空间利用率percent的估价函数值的估计,得到每次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形的作为空间利用率percent的估价函数值;

步骤2-3-4:若未处在指定的空间范围投影到xoy平面的二维图形的范围内或不满足碰撞检测条件,就终止对该次旋转后的该当前变量的数组元素part[i]后面的数组元素的作为空间利用率percent的估价函数值的估计。

通过采用上述技术方案,这样就能按照数组序列来启动估计函数按序进行估计和碰撞检测,按序的方式能够提高估计和碰撞检测的效率,并且降低出错率。

一种工件的排包系统,包括:至少一处理器和至少一存储器,所述至少一个存储器用于存储计算机程序,所述至少一个处理器用于调用所述至少一个存储器中的程序代码来执行所述工件的排包系统的排包方法。

通过采用上述技术方案,这样就能通过处理器和存储器,按序把若干待排列到指定的空间范围的三维物体制件在指定的空间范围内进行排包,达到最优化排布,通过按序的进行排包,就能有序的排包,避免了现有技术的除了先逐一选取一个三维物体制件预先设置在指定的空间中,再来根据其他未排列在指定的空间中的三维物体制件的各种排列后的空间利用率percent的大小来确定下一个工件多边形的选取的效率低下的缺陷。

本发明进一步设置为:所述工件的排包系统包括按序排列模块和最优化排布模块;

所述按序模块用于将若干待排列到指定的空间范围的三维物体制件的数据按序排列;

所述最优化排布模块用于按序把若干待排列到指定的空间范围的三维物体制件在指定的空间范围内进行排包,达到最优化排布。

通过采用上述技术方案,按序把若干待排列到指定的空间范围的三维物体制件在指定的空间范围内进行排包,达到最优化排布,通过按序的进行排包,就能有序的排包,避免了现有技术的除了先逐一选取一个三维物体制件预先设置在指定的空间中,再来根据其他未排列在指定的空间中的三维物体制件的各种排列后的空间利用率percent的大小来确定下一个工件多边形的选取的效率低下的缺陷。

综上所述,本发明具有以下有益效果:

根据这样的选取规则,通常是选择作为空间利用率percent的估价函数值最大的三维stl模型投影在xoy平面的二维图形作为优先候选的三维stl模型投影在xoy平面的二维图形,但是当该候选的无三维stl模型投影在xoy平面的二维图形论以何种角度何种位置排放均超出边界时,则应该选取比该候选的三维stl模型投影在xoy平面的二维图形次小的工件进行排放,以此类推,直至选取出一三维stl模型投影在xoy平面的二维图形较小且能以某种角度某种位置放于指定的空间范围的三维stl模型。如果所有可选三维stl模型投影在xoy平面的二维图形均超出边界,则向上一层回溯,即重新选择上一次放置的三维stl模型投影在xoy平面的二维图形,其优先级仍根据作为空间利用率percent的估价函数值来决定,且作为空间利用率percent的估价函数值应比原来选取的作为空间利用率percent的估价函数值更小。如果在该层上仍然无法选出合适的三维stl模型投影在xoy平面的二维图形,则继续向更上一层回溯,直至无法回溯为止。每次回溯之前均要记录下当时的布局和相应的利用率,以便在结束之前,根据利用率的大小,选择最优的布局作为最终结果。为了缩短运算时间,采用不从头到尾配比所有的待排多边形,而是指定顺序来有序进行,极大的减轻了运算负担,缩短了运算时间。

附图说明

图1是本发明的工件的排包系统的排包方法的整体流程图;

图2是本发明的按序把若干待排列到指定的空间范围的三维物体制件在指定的空间范围内进行排包的过程中还进行碰撞检测的方式的流程图。

具体实施方式

以下结合附图对本发明作进一步详细说明。

如图1-图2所示,工件的排包系统的排包方法,包括如下步骤:

步骤1:将所有待排工件,也就是若干待排列到指定的空间范围的三维物体制件的数据按序排列;

步骤2:按序把若干待排列到指定的空间范围的三维物体制件在指定的空间范围内进行排包,达到最优化排布。排包就是在指定的空间范围内最优化的排布该若干作为工件的三维物体制件,最优化的排布具体而言就是空间利用率最大的排布,而空间利用率就是把排布在指定的空间的所有的三维物体制件分别投影到xoy平面上形成的投影区域的面积相加后得到的第一投影区域的面积值除以把排布在指定的空间的所有的三维物体制件投影到xoy平面上的合成整体的第二投影区域的面积值所得的商值。

若干待排列到指定的空间范围的三维物体制件的数据按序排列的方式为:将作为若干待排列到指定的空间范围的三维物体制件的若干三维stl模型各自投影到xoy平面而获得每一个三维stl模型在xoy平面上的作为其投影的多边形,该多边形也是二维图形,另外构建一个数组part[n],其中n为正整数且为若干待排列到指定的空间范围的三维物体的数量,每一个数组元素part[i]的数据为第i+1三维stl模型的有序顶点集,第i+1三维stl模型的有序顶点集为第i+1三维stl模型投影到xoy平面上的二维图形的有序顶点集;其中i为正整数且其值范围为0到(n-1),数组part[n]中的数组元素的数据就构成了若干待排列到指定的空间范围的三维物体制件的数据,按序排列为数组part[n]的数组序列按照三维stl模型在xoy平面上的作为其投影的多边形的面积值而从大到小的顺序排列,具体而言就是前一个数组元素的作为其数据的有序顶点集所属的三维stl模型在xoy平面上的作为其投影的多边形的面积值比后一个数组元素的作为其数据的有序顶点集所属的三维stl模型在xoy平面上的作为其投影的多边形的面积值要大。这样就按序进行排包来确定三维stl模型在xoy平面上的作为其投影的多边形在指定的空间在xoy平面上的投影区域上的排放的位置,无需逐一选取一个三维物体制件预先设置在指定的空间中,再来根据其他未排列在指定的空间中的三维物体制件的各种排列后的空间利用率percent的大小来确定下一个工件多边形的选取。

按序把若干待排列到指定的空间范围的三维物体制件在指定的空间范围内进行排包的过程中还进行碰撞检测,这样避免了待打印三维物体制件之间存在碰撞的发生的问题,还能满足最优化排布。

按序把若干待排列到指定的空间范围的三维物体制件在指定的空间范围内进行排包的过程中还进行碰撞检测的方式包括如下步骤:

步骤2-1:初始化一个多元组类型layout的变量k,多元组类型layout通常为结构体类型,多元组类型layout的元素包括数组元素part[i]、数组元素part[i]所属的三维stl模型投影在xoy平面的二维图形的第一个顶点排列在指定的空间范围投影到xoy平面的二维图形中的位置postion、围绕该第一个顶点旋转的角度rotation、作为空间利用率percent的估价函数值以及数组元素part[i+1]的标识,该位置通常用坐标来表示,第一个顶点为数组元素part[i]所属的三维stl模型投影在xoy平面的二维图形的处在一端的一个顶点,一般是处在右端的一个顶点,其中i为正整数且其值范围为0到(n-1);数组元素part[i+1]的标识通常为数组元素part[i+1]的指针,初始化后的变量k的数组元素part[i]、数组元素part[i]所属的三维stl模型投影在xoy平面的二维图形的第一个顶点排列在指定的空间范围投影到xoy平面的二维图形中的位置postion、围绕该第一个顶点旋转的角度rotation、估价函数值以及数组元素part[i+1]的标识分别为数组元素part[0]、数组元素part[0]所属的三维stl模型投影在xoy平面的二维图形排列在指定的空间范围投影到xoy平面的二维图形初始区域中时数组元素part[0]所属的三维stl模型投影在xoy平面的二维图形的第一顶点的位置postion、零度、100%以及数组元素part[1]的标识,把该初始化后的变量k作为当前变量,并把该初始化后的变量k放入一个堆栈;该初始区域是指定的空间范围投影到xoy平面的二维图形的左下角的任一能容纳数组元素part[0]所属的三维stl模型投影在xoy平面的二维图形的区域;

步骤2-2:按照数组part[n]的数组序列依次把当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形启动估计函数进行估计和碰撞检测,然后如果有满足估计函数估计条件和碰撞检测条件的数组元素,就随机选择一个满足估计函数估计条件和碰撞检测条件的数组元素,由该数组元素所属的三维stl模型投影在xoy平面的二维图形构成的第二区域就为所有排布好的三维stl模型投影在xoy平面的二维图形合成整体的区域,然后转到步骤2-5中执行;满足估计函数估计和碰撞检测条件就是在满足碰撞检测的条件下,还满足作为空间利用率percent的估价函数值最大的条件,也就是满足估计函数估计的条件,作为空间利用率percent的估价函数值最大的估价函数值所属的那些旋转后的那些当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形就是满足估计函数估计和碰撞检测条件的二维图形;碰撞检测的方式为专利名称为“三维模型的碰撞检测方法及系统”、申请号为“201510937549.8”以及申请日为2015-12-15的专利的说明书中所记载的部分方法进行检测,具体包括以下方式,详细说明如下:

这里stl模型只能用来表示封闭的面或者体,三维stl模型是指用三角网格来表现3dcad模型。

其中,xoy平面指的是基于x、y坐标系的二维平面,o点标识x、y坐标系的原点位置。需要说明的是,得到的二维图形可为任意多边形或其他形状,其具体是根据三维stl模型的形状而定。

设定当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形分别为二维图形a和二维图形b,判断二维图形a和二维图形b这样的两个二维图形是否相交或者为包含关系,若相交或者为包含关系,确定为两个三维stl模型存在碰撞;

优选的,可先判断二维图形a和二维图形b是否相交,若相交,可直接确定为两个三维stl模型存在碰撞;若不相交,再进一步判断两个二维图形是否为包含关系,若为包含关系,仍然确定为两个三维stl模型存在碰撞。

判断二维图形a和二维图形b是否相交的方法可为:分别识别构成二维图形a和二维图形b的全部边,判断二维图形a的各边是否与二维图形b的任意边均不相交;若二维图形a的各边与二维图形b的任意边均不相交,则确定这两个二维图形不相交,若检测到二维图形a的某一边与二维图形b的任一边相交,则确定为这两个二维图形相交。

以两个二维图形不相交为前提,在此前提之下进一步判断这两个二维图形是否为包含关系,由此可简化判断是否为包含关系的算法难度。具体如:在两个二维图形不相交的前提下,只需要判断其中一个二维图形的一个点是否落在另一个二维图形里面即可。具体实现方法可为,采用射线法从其中一个二维图形中的目标点引出一条射线,检测该条射线与另一个二维图形的边的交点数目,若为奇数个交点,则表明目标点在另一个二维图形的内部,否则在另一个二维图形的外部。

优选的,可将二维图形的任一顶点作为目标点,判断其中一个二维图形的任一顶点是否在另一个二维图形内,若是,则两个二维图形为包含关系。

在一次增材制造建造过程中,打印之前通过上述的三维模型的碰撞检测方法检测任两个三维stl模型之间是否存在碰撞而判断。若两个二维图形不相交且不为包含关系,再计算两个二维图形的最短距离;若最短距离小于设定限定值,确定为两个三维stl模型存在碰撞。若最短距离大于设定限定值,可确定为对应的两个三维stl模型不存在碰撞。若多个三维stl模型中任意两个模型均不存在碰撞,表明多个三维stl模型不存在碰撞,满足碰撞检测条件。若检测到某两个三维stl模型之间存在碰撞,则表明多个三维stl模型存在碰撞,不满足碰撞检测条件。

需要说明的是,当上述的二维图形为多边形时,可分为凹多边形(简称凹包)和凸多边形(简称凸包)两种情况。其中凹包是指点集包含的最小多边形,使每个点或者在其边上或者在其内部,且至少有一个角大于180度;凸包是指点集包含的最小多边形,使每个点或者在其边上或者在其外部,且所有角均小于180度。

步骤2-3:如果没有满足估计函数估计条件和碰撞检测条件的数组元素,就意味着在当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形的正右边已经不能再排列一个三维stl模型投影在xoy平面的二维图形了,那就把所有排布好的三维stl模型投影在xoy平面的二维图形合成整体的区域在xoy平面上的最大y坐标作为下边界,按照数组part[n]的数组序列依次把当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与指定的空间范围投影到xoy平面的二维图形的最左边的以该最大y坐标作为上边界且距离该上边界最近的那个三维stl模型投影在xoy平面的二维图形启动估计函数进行估计和碰撞检测,然后如果有满足估计函数估计条件和碰撞检测条件的数组元素,就随机选择一个满足估计函数估计条件和碰撞检测条件的数组元素,由该数组元素所属的三维stl模型投影在xoy平面的二维图形构成的第二区域就为所有排布好的三维stl模型投影在xoy平面的二维图形合成整体的区域,然后转到步骤2-5中执行;

步骤2-4:如果未有满足估计函数估计条件和碰撞检测条件的数组元素,然后就用回溯算法处理然后返回步骤2-2中执行,用回溯算法处理包括取消掉堆栈中的栈顶元素,并在所有排布好的三维stl模型投影在xoy平面的二维图形合成整体的区域中把该栈顶元素的数组元素所属的三维stl模型投影在xoy平面的二维图形去除,并把该数组元素放到一个队列中;这样就意味着舍弃掉上一次排列好的三维stl模型投影在xoy平面的二维图形;

步骤2-5:把选择的数组元素、该数组元素所属的三维stl模型投影在xoy平面的二维图形的第一个顶点排列在指定的空间范围投影到xoy平面的二维图形中的位置、围绕该第一个顶点旋转的角度、估价函数值以及下一个数组元素的标识分别存入多元组类型layout的变量l的中的数组元素part[i]、数组元素part[i]所属的三维stl模型投影在xoy平面的二维图形的第一个顶点排列在指定的空间范围投影到xoy平面的二维图形中的位置postion、围绕该第一个顶点旋转的角度rotation、作为空间利用率percent的估价函数值以及数组元素part[i+1]的标识中,然后再把变量l放入堆栈;这样就能把已经排放好的二维图形按照先入后出的方式放置,在舍弃掉上一次排列好的三维stl模型投影在xoy平面的二维图形的时候运用堆栈非常方便,并且统计堆栈中的元素也很方便;

把选择的数组元素后面的数组元素顺序依次往前移入前一个数组元素的位置后,把最后一个数组元素移入的位置后面的数组元素的值都设为空,并把队列中的数组元素按先入先出的顺序依次从第一个值设为空的数组元素开始向后插入各个数组元素中;这样就能完全的反复的进行排布。

步骤2-6:遍历数组part[n],若数组part[n]的数组元素的值都为空,也就是满足所有三维stl模型投影在xoy平面的二维图形都已排列进指定的空间范围投影到xoy平面的二维图形中,在所有三维stl模型投影在xoy平面的二维图形都已排列进指定的空间范围投影到xoy平面的二维图形中的排列布局中挑选出作为空间利用率percent的估价函数值最大的那个排列布局作为最终的排包结果。为了缩短运算时间,采用不从头到尾配比所有的待排多边形,而是指定顺序来有序进行,极大的减轻了运算负担。

把当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形启动估计函数进行估计和碰撞检测的步骤包括:

步骤2-2-1:把该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形移动到指定的空间范围投影到xoy平面的二维图形中且处在当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形的正右边;

步骤2-2-2:这样把该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形的左端逐一处在当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形的正右边区域的一个坐标点上,每处在该正右边区域的一个坐标点上时,就把该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形围绕其第一顶点顺序旋转四次,该四次旋转的角度分别为45度、90度、135度和180度,以此分别对每次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形进行判断;

步骤2-2-3:首先启动估计函数判断该次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形是否处在指定的空间范围投影到xoy平面的二维图形的范围内,若处在指定的空间范围投影到xoy平面的二维图形的范围内,就进行对每次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形的碰撞检测,若满足碰撞检测条件,就进行作为空间利用率percent的估价函数值的估计,得到每次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形的作为空间利用率percent的估价函数值;估计估价函数值就是把之前所有排布好的三维stl模型投影在xoy平面的二维图形中的每一个二维图形的面积相加后的和值再加上该次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形的面积值后得到的第一区域的面积值除以之前所有排布好的三维stl模型投影在xoy平面的二维图形合成整体的区域再合成该次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形后构成的第二区域的面积值所得的商值,就是该次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形的作为空间利用率percent的估价函数值;这样作为空间利用率percent的估价函数值越大,说明空间利用率越高。之前所有排布好的三维stl模型投影在xoy平面的二维图形合成整体的区域再合成该次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形后构成的第二区域的方式为:该次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与当前变量的数组元素所属的三维stl模型投影在xoy平面的二维图形之间的间隔两端均用线段连接,由此构成第二区域。

步骤2-2-4:若未处在指定的空间范围投影到xoy平面的二维图形的范围内或不满足碰撞检测条件,就终止对该次旋转后的该当前变量的数组元素part[i]后面的数组元素的作为空间利用率percent的估价函数值的估计。这样就能按照数组序列来启动估计函数按序进行估计和碰撞检测,按序的方式能够提高估计和碰撞检测的效率。

把当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与指定的空间范围投影到xoy平面的二维图形的最左边的以该最大y坐标作为上边界且距离该上边界最近的那个三维stl模型投影在xoy平面的二维图形启动估计函数进行估计和碰撞检测的步骤包括:

步骤2-3-1:把该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形移动到指定的空间范围投影到xoy平面的二维图形中且处在指定的空间范围投影到xoy平面的二维图形的最左边的以该最大y坐标作为下边界的正上方;

步骤2-3-2:这样把该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形的底端逐一处在指定的空间范围投影到xoy平面的二维图形的最左边的以该最大y坐标作为上边界且距离该上边界最近的那个三维stl模型投影在xoy平面的二维图形的正上方的一个坐标点上,每处在该正上方区域的一个坐标点上时,就把该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形围绕其第一顶点顺序旋转四次,该四次旋转的角度分别为45度、90度、135度和180度,以此分别对每次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与指定的空间范围投影到xoy平面的二维图形的最左边的以该最大y坐标作为上边界且距离该上边界最近的那个三维stl模型投影在xoy平面的二维图形进行判断;

步骤2-3-3:首先启动估计函数判断该次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形是否处在指定的空间范围投影到xoy平面的二维图形的范围内,若处在指定的空间范围投影到xoy平面的二维图形的范围内,就进行对每次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与指定的空间范围投影到xoy平面的二维图形的最左边的以该最大y坐标作为上边界且距离该上边界最近的那个三维stl模型投影在xoy平面的二维图形的碰撞检测,若满足碰撞检测条件,就进行作为空间利用率percent的估价函数值的估计,得到每次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形的作为空间利用率percent的估价函数值;估计估价函数值就是把之前所有排布好的三维stl模型投影在xoy平面的二维图形中的每一个二维图形的面积相加后的和值再加上该次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形的面积值后得到的第一区域的面积值除以之前所有排布好的三维stl模型投影在xoy平面的二维图形合成整体的区域再合成该次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形后构成的第二区域的面积值所得的商值,就是该次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形的作为空间利用率percent的估价函数值;这样作为空间利用率percent的估价函数值越大,说明空间利用率越高。之前所有排布好的三维stl模型投影在xoy平面的二维图形合成整体的区域再合成该次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形后构成的第二区域的方式为:该次旋转后的该当前变量的数组元素part[i]后面的数组元素所属的三维stl模型投影在xoy平面的二维图形与指定的空间范围投影到xoy平面的二维图形的最左边的以该最大y坐标作为上边界且距离该上边界最近的那个三维stl模型投影在xoy平面的二维图形之间的间隔两端均用线段连接,由此构成第二区域。

步骤2-3-4:若未处在指定的空间范围投影到xoy平面的二维图形的范围内或不满足碰撞检测条件,就终止对该次旋转后的该当前变量的数组元素part[i]后面的数组元素的作为空间利用率percent的估价函数值的估计。这样就能按照数组序列来启动估计函数按序进行估计和碰撞检测,按序的方式能够提高估计和碰撞检测的效率。

一种工件的排包系统,包括:至少一处理器和至少一存储器,至少一个存储器用于存储计算机程序,至少一个处理器用于调用至少一个存储器中的程序代码来执行工件的排包系统的排包方法。处理器可以是一个通用中央处理器(cpu)、微处理器、特定应用集成电路(application-specificintegratedcircuit,asic),或一个或多个用于控制本申请方案程序执行的集成电路。

存储器可以是只读存储器(read-onlymemory,rom)、可存储静态信息和指令的静态存储设备、随机存取存储器(randomaccessmemory,ram)、或者可存储信息和指令的动态存储设备,也可以是电可擦可编程只读存储器(eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,存储器也可以和处理器集成在一起。

上述存储器可用于存储执行本申请方案的工件的排包系统的配置方法的应用程序代码;处理器可用于执行存储器中存储的应用程序代码。

工件的排包系统还可以包括输出设备和输入设备。输出设备和处理器通信,可以以多种方式来显示信息。输出设备可以是液晶显示器、发光二极管显示设备、阴极射线管显示设备、或投影仪等。输入设备和处理器通信,可以以多种方式接收用户的输入。输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。

工件的排包系统包括按序排列模块和最优化排布模块;

按序模块用于将所有待排工件,也就是若干待排列到指定的空间范围的三维物体制件的数据按序排列;

最优化排布模块用于按序把若干待排列到指定的空间范围的三维物体制件在指定的空间范围内进行排包,达到最优化排布。排包就是在指定的空间范围内最优化的排布该若干作为工件的三维物体制件,最优化的排布具体而言就是空间利用率最大的排布,而空间利用率就是把排布在指定的空间的所有的三维物体制件分别投影到xoy平面上形成的投影区域的面积相加后得到的第一投影区域的面积值除以把排布在指定的空间的所有的三维物体制件投影到xoy平面上的合成整体的第二投影区域的面积值所得的商值。

通过按序的进行排包,就能有序的排包,避免了现有技术的除了先逐一选取一个三维物体制件预先设置在指定的空间中,再来根据其他未排列在指定的空间中的三维物体制件的各种排列后的空间利用率percent的大小来确定下一个工件多边形的选取的效率低下的缺陷。

凭借这样的选取规则,通常是选择作为空间利用率percent的估价函数值最大的三维stl模型投影在xoy平面的二维图形作为优先候选的三维stl模型投影在xoy平面的二维图形,但是当该候选的无三维stl模型投影在xoy平面的二维图形论以何种角度何种位置排放均超出边界时,则应该选取比该候选的三维stl模型投影在xoy平面的二维图形次小的工件进行排放,以此类推,直至选取出一三维stl模型投影在xoy平面的二维图形较小且能以某种角度某种位置放于指定的空间范围的三维stl模型。如果所有可选三维stl模型投影在xoy平面的二维图形均超出边界,则向上一层回溯,即重新选择上一次放置的三维stl模型投影在xoy平面的二维图形,其优先级仍根据作为空间利用率percent的估价函数值来决定,且作为空间利用率percent的估价函数值应比原来选取的作为空间利用率percent的估价函数值更小。如果在该层上仍然无法选出合适的三维stl模型投影在xoy平面的二维图形,则继续向更上一层回溯,直至无法回溯为止。每次回溯之前均要记录下当时的布局和相应的利用率,以便在结束之前,根据利用率的大小,选择最优的布局作为最终结果。

本具体实施例仅仅是对本发明的解释,其并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本发明的权利要求范围内都受到专利法的保护。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1