3D打印的立体光固化快速成型扫描路径排序方法与流程

文档序号:12604162阅读:来源:国知局
3D打印的立体光固化快速成型扫描路径排序方法与流程

技术特征:
1.一种3D打印的立体光固化快速成型扫描路径排序方法,其特征是,包括如下步骤:(1-1)建立各个扫描线段的二维数组:利用水平栅格切割,获得物体沿垂直方向依次排列的所有扫描线段,设定每个扫描线段的数据结构为SEGMENT,SEGMENT包括表征扫描线段左端点的属性Point,表征扫描线段右端点的属性OtherPoint,表征扫描线段所在区块索引的属性BIndex;设定扫描线段水平方向最大数目为M,垂直方向最大数目为N,则将位于垂直方向第n行的第m条扫描线段存储为数组Segments[n][m],n∈N,m∈M;(1-2)遍历所有扫描线段,根据扫描线段重叠率OverlapRatio和跳转距离TravelDistance,将所有扫描线段分为K个区块BLOCK:设定区块列表为Blocks[K],最大区块索引MaxBIndex的初始值为0,设定最小重叠率MinOverlapRatio和最大跳转距离MaxTravelDistance;(1-2-1)设定当前的扫描线段为Segments[n][m],当前行的下一行扫描线段为Segments[n-1][:],将当前扫描线段Segments[n][m]与下一行所有扫描线段分别进行匹配:假设Segments[n][m]为SegmentA,Segments[n-1][:]中任一条扫描线段为SegmentB,则计算SegmentA和SegmentB的重叠距离OverlapDistance,并利用下述公式计算重叠率OverlapRatio和跳转距离TravelDistance:OverlapRatio=OverlapDistance/|SegmentB.Point-SegmentB.OtherPoint|,TravelDistance=Min{|SegmentA.Point-SegmentB.Point|,|SegmentA.Point-SegmentB.OtherPoint|,|SegmentA.OtherPoint-SegmentB.Point|,|SegmentA.OtherPoint-SegmentB.OtherPoint|};其中,SegmentA.Point表示线段SegmentA的左端点,SegmentA.OtherPoint表示线段SegmentA的右端点,SegmentB.Point表示线段SegmentB的左端点,SegmentB.OtherPoint表示线段SegmentB的右端点;设定参数MinOverlapRatio和MaxTravelDistance;对Segments[n-1][:]中L条扫描线段顺次计算与Segments[n][m]的OverlapRatio和TravelDistance,若OverlapRatio>MinOverlapRatio,则判定为匹配;若OverlapRatio≤MinOverlapRatio并且TravelDistance<MaxTravelDistance,则判定为匹配;若OverlapRatio≤MinOverlapRatio并且TravelDistance≥MaxTravelDistance,判定为不匹配;当判定结果为匹配时,则将Segments[n][m]的BIndex设置为上一行的所有扫描线段中对应的那条扫描线段的Bindex,表明属于同一区块,同时结束对Segments[n][m]的匹配判断;当判定结果为不匹配时,则使Segments[n][m]的BIndex增加1,表明这是一个新的区块,同时使MaxBIndex增加1;当所有扫描线段遍历完成之后,按照每条扫描线段的BIndex将扫描线段分配进区块列表Block[K]中;(1-3)根据区块距离BlockDistance对各个区块排序:建立用于描述区块特征的数据结构BLOCK,BLOCK包括表征区块的开始扫描线段的属性StartSegment,表征区块的结束扫描线段的属性EndSegment,表征是否翻转的属性IsFlip,选定区块列表Blocks[K]中任意一个区块作为初始区块BlockCur;(1-3-1)将初始区块BlockCur存入排序区块列表SortBlocks[K]中,分别计算区块列表Blocks[K]中的各个区块与BlockCur的区块距离BlockDistance,将最小BlockDistacne所对应的区块作为最近邻区块BlockNearest;(1-3-2)将BlockNearest存入SortBlocks[K],并且从区块列表Blocks[K]中移除BlockCur,将BlockNearest作为新的BlockCurt;(1-3-3)重复步骤(1-3-1)至(1-3-2)直至区块列表Blocks[K]中只有一项;(1-4)按照区块存入SortBlocks[K]的顺序依次提取各个区块内部的扫描线段,至此,完成了所有扫描线段的排序。2.根据权利要求1所述的3D打印的立体光固化快速成型扫描路径排序方法,其特征是,所述步骤(1-3-1)还包括如下步骤:设定任意一个区块结构BLOCK包括扫描线段StartSegment和EndSegment两个线段结构,扫描线段StartSegment包括左端点StartPoint和右端点StartOtherPoint,扫描线段EndSegment包括左端点EndPoint和右端点EndOtherPoint;则设定BlockDistance是BlockCur的两个端点BlockCur.EndPoint,BlockCur.EndOtherPoint分别与区块列表Blocks[K]中其余的区块BlockOther的四个端点BlockOther.StartPoint、BlockOther.StartOtherPoint、BlockOther.EndPoint、BlockOther.EndOtherPoint的距离的最小值;BlockDistance的计算方法如下所示:BlockDistance=Min{|BlockCur.EndPoint-BlockOther.StartPoint|,|BlockCur.EndPoint-BlockOther.StartOtherPoint|,|BlockCur.EndPoint-BlockOther.EndPoint|,|BlockCur.EndPoint-BlockOther.EndOtherPoint|,|BlockCur.EndOtherPoint-BlockOther.StartPoint|,|BlockCur.EndOtherPoint-BlockOther.StartOtherPoint|,|BlockCur.EndOtherPoint-BlockOther.EndPoint|,|BlockCur.EndOtherPoint-BlockOther.EndOtherPoint|};其中,BlockOther.StartPoint表示区块BlockOther中的线段StartSegment的左端点;BlockOther.StartOtherPoint表示区块BlockOther中的线段StartSegment的右端点;BlockOther.EndPoint表示区块BlockOther中的线段EndSegment的左端点;BlockOther.EndOtherPoint表示区块BlockOther中的线段EndSegment的右端点。3.根据权利要求2所述的3D打印的立体光固化快速成型扫描路径排序方法,其特征是,还包括如下步骤:如果得到最小的BlockDistance的Segment是区块结构BlockNearest的EndSegment,即Max{|BlockCur.EndPoint-BlockOther.EndPoint|,|BlockCur.EndPoint-BlockOther.EndOtherPoint|,|BlockCur.EndOtherPoint-BlockOther.EndPoint|,|BlockCur.EndOtherPoint-BlockOther.EndOtherPoint|}<Min{|BlockCur.EndPoint-BlockOther.StartPoint|,|BlockCur.EndPoint-BlockOther.StartOtherPoint|,|BlockCur.EndOtherPoint-BlockOther.StartPoint|,|BlockCur.EndOtherPoint-BlockOther.StartOtherPoint|};则代表BlockNearest应该被翻转以得到最小的跳转距离,即令:BlockNearest的属性BlockNearest.IsFlip=True;步骤(1-4)由如下步骤替换:按照区块存入SortBlocks[K]的顺序依次提取各个区块内部的扫描线段,其中,具有翻转标记BlockNearest.IsFlip=True的区块内部的扫描线段逆序提取,至此,完成了所有扫描线段的排序。
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1