针对3D打印模型的悬空预检测方法及系统转让专利

申请号 : CN201510363581.X

文献号 : CN105014966B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙炜

申请人 : 上海珺维信息科技有限公司

摘要 :

本发明提供了一种针对3D打印模型的悬空预检测方法及系统,包括:提取待打印模型的第n层打印点坐标信息到数组;提取待打印模型的第n‑1层打印点坐标信息到数组;在待打印模型的第n层选择第i个待检测的打印点坐标,并在所述待打印模型的第n‑1层的所有打印点坐标中寻找满足条件的打印点坐标;判断满足条件的打印点坐标个数是否大于设定值M来判断该打印点坐标是否悬空;继续基于n‑2层检测第n层打印点坐标,同样通过判断确定打印点坐标是否悬空;记录悬空的坐标点,令n的值自增1,每自增一次,重复判断流程,直到待打印模型的顶层。本发明还提供了一种针对3D打印模型的悬空预检测系统,能够自动检测出模型的悬空点。

权利要求 :

1.一种针对3D打印模型的悬空预检测方法,其特征在于,包括如下步骤:步骤1:分别提取待打印模型的第n层和第n-1层的打印点坐标信息到数组,其中n的值大于2;

步骤2:在待打印模型的第n层选择第i个待检测的打印点坐标,并在所述待打印模型的第n-1层的所有打印点坐标中寻找满足条件1和条件2的打印点坐标;所述条件1和条件2如下:-条件1为:fabs(Xi-Xj)

-条件2为:fabs(Yi-Yj)

其中:fabs表示求绝对值操作,D为常数,由用户设定,单位为毫米;Xi表示待打印模型的第n层的第i点在直角坐标系上的X轴坐标值,Yi表示待打印模型的第n层的第i点在直角坐标系上的Y轴坐标值;j表示待打印模型的第n-1层的第j点,Xj表示待打印模型的第n-1层的第j点在直角坐标系上的X轴坐标值,Yj表示待打印模型的第n-1层的第j点在直角坐标系上的Y轴坐标值;

步骤3:判断满足条件1和条件2的打印点坐标个数是否大于设定值M;若满足,则认为待打印模型的第n层上的该打印点坐标在待打印模型的第n-1层上有支撑;若不满足,则认为待打印模型的第n层上的该打印点坐标悬空,记录下该打印点坐标;令i的值自增1,依次选取待打印模型的第n层上的其余所有待检测的打印点坐标,重复步骤3直到检测完所述待打印模型的第n层上的所有待检测的打印点坐标;

步骤4:提取待打印模型的第n-2层打印点坐标信息到数组,选取在待打印模型的第n-1层上有支撑的第n层上的第u个打印点坐标,令u的初始值为0,并在所述待打印模型的第n-2层的所有打印点坐标中寻找满足如下条件的打印点坐标:条件1′:fabs(Xu-Xk)

条件2′:fabs(Yu-Yk)

式中:u表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点,Xu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的X轴坐标值,Yu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的Y轴坐标值;k表示待打印模型的第n-2层的第k点,Xk表示待打印模型的第n-2层的第k点在直角坐标系上的X轴坐标值,Yk表示待打印模型的第n-2层的第k点在直角坐标系上的Y轴坐标值;

判断满足条件1′和条件2′的打印点坐标个数是否大于设定值M;若满足,则认为待打印模型的第n层上的该打印点坐标在待打印模型的第n-2层上有支撑,且认定该打印点坐标非悬空;若不满足,则认为待打印模型的第n层上的该打印点坐标悬空,记录下该打印点坐标信息;

步骤5:令u的值自增1,依次选取待打印模型的第n层上的其余在待打印模型的第n-1层上有支撑的打印点坐标信息,重复步骤4、步骤5直到检测完所述待打印模型的第n层上的所有待检测打印点坐标;

步骤6:令n的值自增1,每自增一次,重复步骤1至步骤5,直到待打印模型的顶层;

步骤7:列出所有认定为悬空的打印点坐标,发送至设计者的操作界面;

其中检测时能够设置n值每次自增值的大小,或者通过减少测试点i的数量来加快检测的速度。

2.根据权利要求1所述的针对3D打印模型的悬空预检测方法,其特征在于,所述步骤1包括:步骤1.1:提取待打印模型的第n层打印点坐标信息到如下的数组A[i][n]:A[i][n]={Xi,Yi};

n>2;i=0,1,2…;

式中:n表示待打印模型的第n层,i表示待打印模型的第n层的第i点,Xi表示待打印模型的第n层的第i点在直角坐标系上的X轴坐标值,Yi表示待打印模型的第n层的第i点在直角坐标系上的Y轴坐标值;

当n的值为3时,需要判断待打印模型第1层所在的Z轴坐标数值是否大于预设值Z0,其中Z0的值设置为喷头直径的大小,若大于Z0,则首层的打印就是悬空状态,需要支撑;若小于等于Z0,则首层不悬空;

步骤1.2:提取待打印模型的第n-1层打印点坐标信息到如下的数组A[j][n-1]:A[j][n-1]={Xj,Yj};

n>2;j=0,1,2…;

式中:j表示待打印模型的第n-1层的第j点,Xj表示待打印模型的第n-1层的第j点在直角坐标系上的X轴坐标值,Yj表示待打印模型的第n-1层的第j点在直角坐标系上的Y轴坐标值。

3.根据权利要求2所述的针对3D打印模型的悬空预检测方法,其特征在于,所述步骤3包括:步骤3.1:从第n层的首个待测点坐标开始时,令i的初始值为0,则第n层的首个坐标数组为A[0][n]={X0,Y0};遍历第n-1层的所有坐标:A[0][n-1]、A[1][n-1]、A[2][n-1]、…、A[j][n-1]、…;

-此时条件1为:fabs(X0-Xj)

-此时条件2为:fabs(Y0-Yj)

其中,X0表示第n层的首个坐标点的X轴坐标值,Y0表示第n层的首个坐标点的Y轴坐标值;

步骤3.2:i自增1,提取第n层的第i个待测点坐标,遍历第n-1层的所有坐标:A[0][n-

1]、A[1][n-1]、A[2][n-1]、…、A[j][n-1]、…;

-此时条件1为:fabs(Xi-Xj)

-此时条件2为:fabs(Yi-Yj)

重复步骤3.2直到检测完所述待打印模型的第n层上的所有待检测的打印点坐标。

4.根据权利要求1所述的针对3D打印模型的悬空预检测方法,其特征在于,所述步骤4包括:步骤4.1:提取待打印模型的第n-2层打印点坐标信息到如下的数组A[k][n-2]:A[k][n-2]={Xk,Yk};

n>2;k=0,1,2…;

式中:k表示待打印模型的第n-2层的第k点,Xk表示待打印模型的第n-2层的第k点在直角坐标系上的X轴坐标值,Yk表示待打印模型的第n-2层的第k点在直角坐标系上的Y轴坐标值;

步骤4.2:从第n层的首个在待打印模型的第n-1层上有支撑的点坐标开始时,令u的初始值为0,且提取在待打印模型的第n-1层上有支撑的所有打印点坐标信息到如下数组B[u][n]中:B[u][n]={Xu,Yu};

n>2;u=0,1,2…;

式中:n表示待打印模型的第n层,u表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点,Xu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的X轴坐标值,Yu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的Y轴坐标值;

步骤4.3:依次提取在待打印模型的第n-1层上有支撑的第n层的第u个待测点坐标,遍历第n-2层的所有坐标:A[0][n-2]、A[1][n-2]、A[2][n-2]、…、A[k][n-2]、…;

寻找满足如下条件的打印点坐标:

条件1′:fabs(Xu-Xk)

条件2′:fabs(Yu-Yk)

5.一种针对3D打印模型的悬空预检测系统,其特征在于,包括如下模块:坐标信息储存模块:用于分别提取待打印模型的第n层和第n-1层的打印点坐标信息到数组,其中n的值大于2;

坐标信息第一查询模块:用于在待打印模型的第n层选择第i个待检测的打印点坐标,并在所述待打印模型的第n-1层的所有打印点坐标中寻找满足条件1和条件2的打印点坐标;所述条件1和条件2如下:-条件1为:fabs(Xi-Xj)

-条件2为:fabs(Yi-Yj)

其中:fabs表示求绝对值操作,D为常数,由用户设定,单位为毫米;Xi表示待打印模型的第n层的第i点在直角坐标系上的X轴坐标值,Yi表示待打印模型的第n层的第i点在直角坐标系上的Y轴坐标值;j表示待打印模型的第n-1层的第j点,Xj表示待打印模型的第n-1层的第j点在直角坐标系上的X轴坐标值,Yj表示待打印模型的第n-1层的第j点在直角坐标系上的Y轴坐标值;

坐标信息第一选择模块:用于判断满足条件1和条件2的打印点坐标个数是否大于设定值M;若满足,则认为待打印模型的第n层上的该打印点坐标在待打印模型的第n-1层上有支撑;若不满足,则认为待打印模型的第n层上的该打印点坐标悬空,记录下该打印点坐标;令i的值自增1,依次选取待打印模型的第n层上的其余所有待检测的打印点坐标,重复运作所述坐标信息第一选择模块直到检测完所述待打印模型的第n层上的所有待检测的打印点坐标;

坐标信息第二查询模块:用于提取待打印模型的第n-2层打印点坐标信息到数组,选取在待打印模型的第n-1层上有支撑的第n层上的第u个打印点坐标,令u的初始值为0,并在所述待打印模型的第n-2层的所有打印点坐标中寻找满足如下条件的打印点坐标:条件1′:fabs(Xu-Xk)

条件2′:fabs(Yu-Yk)

式中:u表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点,Xu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的X轴坐标值,Yu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的Y轴坐标值;k表示待打印模型的第n-2层的第k点,Xk表示待打印模型的第n-2层的第k点在直角坐标系上的X轴坐标值,Yk表示待打印模型的第n-2层的第k点在直角坐标系上的Y轴坐标值;

判断满足条件1′和条件2′的打印点坐标个数是否大于设定值M;若满足,则认为待打印模型的第n层上的该打印点坐标在待打印模型的第n-2层上有支撑,且认定该打印点坐标非悬空;若不满足,则认为待打印模型的第n层上的该打印点坐标悬空,记录下该打印点坐标信息;

坐标信息第二选择模块:用于令u的值自增1,依次选取待打印模型的第n层上的其余在待打印模型的第n-1层上有支撑的打印点坐标信息,重复运作所述坐标信息第二查询模块和坐标信息第二选择模块直到检测完所述待打印模型的第n层上的所有待检测打印点坐标;

层级循环模块:用于令n的值自增1,每自增一次,依次重复运行坐标信息储存模块、坐标信息第一查询模块、坐标信息第一选择模块、坐标信息第二查询模块、坐标信息第二选择模块,直到待打印模型的顶层;

坐标信息传送模块:用于列出所有认定为悬空的打印点坐标,发送至设计者的操作界面;

其中检测时能够设置n值每次自增值的大小,或者通过减少测试点i的数量来加快检测的速度。

6.根据权利要求5所述的针对3D打印模型的悬空预检测系统,其特征在于,所述坐标信息储存模块包括:第n层坐标信息储存模块:用于提取待打印模型的第n层打印点坐标信息到如下的数组A[i][n]:A[i][n]={Xi,Yi};

n>2;i=0,1,2…;

式中:n表示待打印模型的第n层,i表示待打印模型的第n层的第i点,Xi表示待打印模型的第n层的第i点在直角坐标系上的X轴坐标值,Yi表示待打印模型的第n层的第i点在直角坐标系上的Y轴坐标值;

当n的值为3时,需要判断待打印模型第1层所在的Z轴坐标数值是否大于预设值Z0,其中Z0的值设置为喷头直径的大小,若大于Z0,则首层的打印就是悬空状态,需要支撑;若小于等于Z0,则首层不悬空;

第n-1层坐标信息储存模块:用于提取待打印模型的第n-1层打印点坐标信息到如下的数组A[j][n-1]:A[j][n-1]={Xj,Yj};

n>2;j=0,1,2…;

式中:j表示待打印模型的第n-1层的第j点,Xj表示待打印模型的第n-1层的第j点在直角坐标系上的X轴坐标值,Yj表示待打印模型的第n-1层的第j点在直角坐标系上的Y轴坐标值。

7.根据权利要求5所述的针对3D打印模型的悬空预检测系统,其特征在于,所述坐标信息第一选择模块包括:第n层首个坐标确认模块:用于从第n层的首个待测点坐标开始时,令i的初始值为0,则第n层的首个坐标数组为A[0][n]={X0,Y0};遍历第n-1层的所有坐标:A[0][n-1]、A[1][n-

1]、A[2][n-1]、…、A[j][n-1]、…;

-此时条件1为:fabs(X0-Xj)

-此时条件2为:fabs(Y0-Yj)

其中,X0表示第n层的首个坐标点的X轴坐标值,Y0表示第n层的首个坐标点的Y轴坐标值;

第n层坐标选择模块:i自增1,提取第n层的第i个待测点坐标,遍历第n-1层的所有坐标:A[0][n-1]、A[1][n-1]、A[2][n-1]、…、A[j][n-1]、…;

-此时条件1为:fabs(Xi-Xj)

-此时条件2为:fabs(Yi-Yj)

重复运作第n层坐标选择模块直到检测完所述待打印模型的第n层上的所有待检测的打印点坐标。

8.根据权利要求5所述的针对3D打印模型的悬空预检测系统,其特征在于,所述坐标信息第二查询模块包括:第n-2层坐标信息储存模块:用于提取待打印模型的第n-2层打印点坐标信息到如下的数组A[k][n-2]:A[k][n-2]={Xk,Yk};

n>2;k=0,1,2…;

式中:k表示待打印模型的第n-2层的第k点,Xk表示待打印模型的第n-2层的第k点在直角坐标系上的X轴坐标值,Yk表示待打印模型的第n-2层的第k点在直角坐标系上的Y轴坐标值;

坐标信息初始化模块:用于从第n层的首个在待打印模型的第n-1层上有支撑的点坐标开始时,令u的初始值为0,且提取在待打印模型的第n-1层上有支撑的所有打印点坐标信息到如下数组B[u][n]中:B[u][n]={Xu,Yu};

n>2;u=0,1,2…;

式中:n表示待打印模型的第n层,u表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点,Xu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的X轴坐标值,Yu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的Y轴坐标值;

第n-1层坐标选择模块:依次提取在待打印模型的第n-1层上有支撑的第n层的第u个待测点坐标,遍历第n-2层的所有坐标:A[0][n-2]、A[1][n-2]、A[2][n-2]、…、A[k][n-2]、…;

寻找满足如下条件的打印点坐标:

条件1′:fabs(Xu-Xk)

条件2′:fabs(Yu-Yk)

说明书 :

针对3D打印模型的悬空预检测方法及系统

技术领域

[0001] 本发明涉及3D打印领域,具体地,涉及针对3D打印模型的悬空预检测方法。

背景技术

[0002] 3D打印机是一种可以将三维立体模型制造出来的快速成型机器,设计师首先通过CAD建模工具进行模型设计,得到STL格式的模型数据文件,之后通过模型切片软件将STL格式的文件转换成3D打印机可以识别的G代码,3D打印机对G代码进行译码操作,形成喷头移动轨迹的数据,这样,3D打印机就可以采用将二维截面逐层堆叠的工作方式,最终将多个截面叠加起来形成三维模型(如图1)。
[0003] 由于3D打印机是通过层层叠加的方式进行打印(如图2),所以在打印模型的过程中,如果模型出现悬空的结构,需要额外提供支撑结构来完成模型的制作(如图3)。目前在3D打印模型检测悬空的技术主要分为以下两类:1、绘制三维立体模型时通过肉眼检查需要添加支撑的坐标点,并手动添加支撑;2、软件自动生成支撑。
[0004] 下面分别对于两种方法进行简单说明:
[0005] 一、手工寻找悬空点
[0006] 该方法要求设计者在设计三维立体模型的时候,通过肉眼仔细观察模型的细节,找出所有的悬空部分,根据喷头移动的方向,人工判断需要添加支撑的地方,在设计图纸上手工添加支撑,最后将带支撑结构的三维立体数据模型转成STL文件,经软件进行后续分层处理生成带支撑模型的切片数据,交给3D打印机进行层层叠加打印,得到最终的模型及支撑体,最后打印完毕将支撑体剥离。
[0007] 支撑的手动生成方法有如下缺点:1)对于内部结构较为复杂的模型,通过肉眼判断悬空点的方法准确度不高,容易造成遗漏。2)通过手动的方法在模型中判定悬空点需要设计者对3D打印机的原理有一定了解,对设计人员要求较高。3)通过手动检查悬空点费时费力,并且不能得到悬空点的准确坐标。4)适用性差,不灵活,一旦模型本身的数据(例如模型角度等)有一些变化,需要重新检查。
[0008] 二、支撑的自动生成技术
[0009] 目前支撑的自动生成技术主要是基于STL的三维数据文件。有些3D切片软件支持自动添加支撑结构,例如Cura、Slice等。对于这种技术,软件需要在STL模型中,根据用户输入的支撑设计的参数,提取模型数据中的支撑面,直接添加支撑体。但由于从STL模型添加支撑是基于模型的原始数据,其数据量较大,算法也较为复杂,尤其是对于复杂的曲面形体,如果支撑面的轮廓形状非常不规则,生成支撑区域的STL文件需用到维集合运算,处理难度很大,从而影响STL文件的切片速度。
[0010] 另外,对于这种自动生成支撑的技术,其中间的悬空点检测流程对于设计者来说并不可见,因此在打印之前,设计者不能清楚地知道软件最终在哪些坐标点添加了支撑,所以支撑生成的过程并不可控。一旦打印过程中发现软件添加的支撑违背了设计者的初衷,就需要重新打印,费时费力。

发明内容

[0011] 针对现有技术中的缺陷,本发明的目的是提供一种针对3D打印模型的悬空预检测方法及系统。
[0012] 根据本发明提供的针对3D打印模型的悬空预检测方法,包括如下步骤:
[0013] 步骤1:分别提取待打印模型的第n层和第n-1层的打印点坐标信息到数组,其中n的值大于2;
[0014] 步骤2:在待打印模型的第n层选择第i个待检测的打印点坐标,并在所述待打印模型的第n-1层的所有打印点坐标中寻找满足条件1和条件2的打印点坐标;
[0015] 步骤3:判断满足条件1和条件2的打印点坐标个数是否大于设定值M;若满足,则认为待打印模型的第n层上的该打印点坐标在待打印模型的第n-1层上有支撑;若不满足,则认为待打印模型的第n层上的该打印点坐标悬空,记录下该打印点坐标;令i的值自增1,依次选取待打印模型的第n层上的其余所有待检测的打印点坐标,重复步骤3直到检测完所述待打印模型的第n层上的所有待检测的打印点坐标;
[0016] 步骤4:提取待打印模型的第n-2层打印点坐标信息到数组,选取在待打印模型的第n-1层上有支撑的第n层上的第u个打印点坐标,并在所述待打印模型的第n-2层的所有打印点坐标中寻找满足条件1和条件2的打印点坐标;判断满足条件1和条件2的打印点坐标个数是否大于设定值M;若满足,则认为待打印模型的第n层上的该打印点坐标在待打印模型的第n-2层上有支撑,且认定该打印点坐标非悬空;若不满足,则认为待打印模型的第n层上的该打印点坐标悬空,记录下该打印点坐标信息;
[0017] 步骤5:令u的值自增1,依次选取待打印模型的第n层上的其余在待打印模型的第n-1层上有支撑的打印点坐标信息,重复步骤4、步骤5直到检测完所述待打印模型的第n层上的所有待检测打印点坐标;
[0018] 步骤6:令n的值自增1,每自增一次,重复步骤1至步骤5,直到待打印模型的顶层;
[0019] 步骤7:列出所有认定为悬空的打印点坐标,发送至设计者的操作界面;
[0020] 其中检测时能够设置n值每次自增值的大小,或者通过减少测试点i的数量来加快检测的速度。
[0021] 优选地,所述步骤1包括:
[0022] 步骤1.1:提取待打印模型的第n层打印点坐标信息到如下的数组A[i][n]:
[0023] A[i][n]={Xi,Yi};
[0024] n>2;i=0,1,2…;
[0025] 式中:n表示待打印模型的第n层,i表示待打印模型的第n层的第i点,Xi表示待打印模型的第n层的第i点在直角坐标系上的X轴坐标值,Yi表示待打印模型的第n层的第i点在直角坐标系上的Y轴坐标值;
[0026] 当n的值为3时,需要判断待打印模型第1层所在的Z轴坐标数值是否大于预设值Z0,其中Z0的值设置为喷头直径的大小,若大于Z0,则首层的打印就是悬空状态,需要支撑;若小于等于Z0,则首层不悬空;
[0027] 步骤1.2:提取待打印模型的第n-1层打印点坐标信息到如下的数组A[j][n-1]:
[0028] A[j][n-1]={Xj,Yj};
[0029] n>2;j=0,1,2…;
[0030] 式中:j表示待打印模型的第n-1层的第j点,Xj表示待打印模型的第n-1层的第j点在直角坐标系上的X轴坐标值,Yj表示待打印模型的第n-1层的第j点在直角坐标系上的Y轴坐标值。
[0031] 优选地,所述条件1和条件2如下:
[0032] -条件1为:fabs(Xi-Xj)
[0033] -条件2为:fabs(Yi-Yj)
[0034] 其中:fabs表示求绝对值操作,D为常数,由用户设定,单位为毫米。
[0035] 优选地,所述步骤3包括:
[0036] 步骤3.1:从第n层的首个待测点坐标开始时,令i的初始值为0,则第n层的首个坐标数组为A[0][n]={X0,Y0};遍历第n-1层的所有坐标:A[0][n-1]、A[1][n-1]、A[2][n-1]、…、A[j][n-1]、…;
[0037] -此时条件1为:fabs(X0-Xj)
[0038] -此时条件2为:fabs(Y0-Yj)
[0039] 其中,X0表示第n层的首个坐标点的X轴坐标值,Y0表示第n层的首个坐标点的Y轴坐标值;
[0040] 步骤3.2:依次提取第n层的第i+1个待测点坐标,遍历第n-1层的所有坐标:A[0][n-1]、A[1][n-1]、A[2][n-1]、…、A[j][n-1]、…;
[0041] -此时条件1为:fabs(Xi-Xj)
[0042] -此时条件2为:fabs(Yi-Yj)
[0043] 重复步骤3.2直到检测完所述待打印模型的第n层上的所有待检测的打印点坐标。
[0044] 优选地,所述步骤4包括:
[0045] 步骤4.1:提取待打印模型的第n-2层打印点坐标信息到如下的数组A[k][n-2]:
[0046] A[k][n-2]={Xk,Yk};
[0047] n>2;k=0,1,2…;
[0048] 式中:k表示待打印模型的第n-2层的第k点,Xk表示待打印模型的第n-2层的第k点在直角坐标系上的X轴坐标值,Yk表示待打印模型的第n-2层的第k点在直角坐标系上的Y轴坐标值;
[0049] 步骤4.2:从第n层的首个在待打印模型的第n-1层上有支撑的点坐标开始时,令u的初始值为0,且提取在待打印模型的第n-1层上有支撑的所有打印点坐标信息到如下数组B[u][n]中:
[0050] B[u][n]={Xu,Yu};
[0051] n>2;u=0,1,2…;
[0052] 式中:n表示待打印模型的第n层,u表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点,Xu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的X轴坐标值,Yu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的Y轴坐标值;
[0053] 步骤4.3:依次提取在待打印模型的第n-1层上有支撑的第n层的第u个待测点坐标,遍历第n-2层的所有坐标:A[0][n-2]、A[1][n-2]、A[2][n-2]、…、A[k][n-2]、…;
[0054] -此时条件1为:fabs(Xu-Xk)
[0055] -此时条件2为:fabs(Yu-Yk)
[0056] 一种针对3D打印模型的悬空预检测系统,包括如下模块:
[0057] 坐标信息储存模块:用于分别提取待打印模型的第n层和第n-1层的打印点坐标信息到数组,其中n的值大于2;
[0058] 坐标信息第一查询模块:用于在待打印模型的第n层选择第i个待检测的打印点坐标,并在所述待打印模型的第n-1层的所有打印点坐标中寻找满足条件1和条件2的打印点坐标;
[0059] 坐标信息第一选择模块:用于判断满足条件1和条件2的打印点坐标个数是否大于设定值M;若满足,则认为待打印模型的第n层上的该打印点坐标在待打印模型的第n-1层上有支撑;若不满足,则认为待打印模型的第n层上的该打印点坐标悬空,记录下该打印点坐标;令i的值自增1,依次选取待打印模型的第n层上的其余所有待检测的打印点坐标,重复运作所述坐标信息第一选择模块直到检测完所述待打印模型的第n层上的所有待检测的打印点坐标;
[0060] 坐标信息第二查询模块:用于提取待打印模型的第n-2层打印点坐标信息到数组,选取在待打印模型的第n-1层上有支撑的第n层上的第u个打印点坐标,并在所述待打印模型的第n-2层的所有打印点坐标中寻找满足条件1和条件2的打印点坐标;判断满足条件1和条件2的打印点坐标个数是否大于设定值M;若满足,则认为待打印模型的第n层上的该打印点坐标在待打印模型的第n-2层上有支撑,且认定该打印点坐标非悬空;若不满足,则认为待打印模型的第n层上的该打印点坐标悬空,记录下该打印点坐标信息;
[0061] 坐标信息第二选择模块:用于令u的值自增1,依次选取待打印模型的第n层上的其余在待打印模型的第n-1层上有支撑的打印点坐标信息,重复运作所述坐标信息第二查询模块和坐标信息第二选择模块直到检测完所述待打印模型的第n层上的所有待检测打印点坐标;
[0062] 层级循环模块:用于令n的值自增1,每自增一次,重复步骤1至步骤6,直到待打印模型的顶层;
[0063] 坐标信息传送模块:用于列出所有认定为悬空的打印点坐标,发送至设计者的操作界面;
[0064] 其中检测时能够设置n值每次自增值的大小,或者通过减少测试点i的数量来加快检测的速度。
[0065] 优选地,所述坐标信息储存模块包括:
[0066] 第n层坐标信息储存模块:用于提取待打印模型的第n层打印点坐标信息到如下的数组A[i][n]:
[0067] A[i][n]={Xi,Yi};
[0068] n>2;i=0,1,2…;
[0069] 式中:n表示待打印模型的第n层,i表示待打印模型的第n层的第i点,Xi表示待打印模型的第n层的第i点在直角坐标系上的X轴坐标值,Yi表示待打印模型的第n层的第i点在直角坐标系上的Y轴坐标值;
[0070] 当n的值为3时,需要判断待打印模型第1层所在的Z轴坐标数值是否大于预设值Z0,其中Z0的值设置为喷头直径的大小,若大于Z0,则首层的打印就是悬空状态,需要支撑;若小于等于Z0,则首层不悬空;
[0071] 第n-1层坐标信息储存模块:用于提取待打印模型的第n-1层打印点坐标信息到如下的数组A[j][n-1]:
[0072] A[j][n-1]={Xj,Yj};
[0073] n>2;j=0,1,2…;
[0074] 式中:j表示待打印模型的第n-1层的第j点,Xj表示待打印模型的第n-1层的第j点在直角坐标系上的X轴坐标值,Yj表示待打印模型的第n-1层的第j点在直角坐标系上的Y轴坐标值。
[0075] 优选地,所述坐标信息第一选择模块中的条件1和条件2如下:
[0076] -条件1为:fabs(Xi-Xj)
[0077] -条件2为:fabs(Yi-Yj)
[0078] 其中:fabs表示求绝对值操作,D为常数,由用户设定,单位为毫米。
[0079] 优选地,所述坐标信息第一选择模块包括:
[0080] 第n层首个坐标确认模块:用于从第n层的首个待测点坐标开始时,令i的初始值为0,则第n层的首个坐标数组为A[0][n]={X0,Y0};遍历第n-1层的所有坐标:A[0][n-1]、A[1][n-1]、A[2][n-1]、…、A[j][n-1]、…;
[0081] -此时条件1为:fabs(X0-Xj)
[0082] -此时条件2为:fabs(Y0-Yj)
[0083] 其中,X0表示第n层的首个坐标点的X轴坐标值,Y0表示第n层的首个坐标点的Y轴坐标值;
[0084] 第n层坐标选择模块:用于依次提取第n层的第i+1个待测点坐标,遍历第n-1层的所有坐标:A[0][n-1]、A[1][n-1]、A[2][n-1]、…、A[j][n-1]、…;
[0085] -此时条件1为:fabs(Xi-Xj)
[0086] -此时条件2为:fabs(Yi-Yj)
[0087] 重复运作第n层坐标选择模块直到检测完所述待打印模型的第n层上的所有待检测的打印点坐标。
[0088] 优选地,所述坐标信息第二查询模块包括:
[0089] 第n-2层坐标信息储存模块:用于提取待打印模型的第n-2层打印点坐标信息到如下的数组A[k][n-2]:
[0090] A[k][n-2]={Xk,Yk};
[0091] n>2;k=0,1,2…;
[0092] 式中:k表示待打印模型的第n-2层的第k点,Xk表示待打印模型的第n-2层的第k点在直角坐标系上的X轴坐标值,Yk表示待打印模型的第n-2层的第k点在直角坐标系上的Y轴坐标值;
[0093] 坐标信息初始化模块:用于从第n层的首个在待打印模型的第n-1层上有支撑的点坐标开始时,令u的初始值为0,且提取在待打印模型的第n-1层上有支撑的所有打印点坐标信息到如下数组B[u][n]中:
[0094] B[u][n]={Xu,Yu};
[0095] n>2;u=0,1,2…;
[0096] 式中:n表示待打印模型的第n层,u表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点,Xu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的X轴坐标值,Yu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的Y轴坐标值;
[0097] 第n-1层坐标选择模块:依次提取在待打印模型的第n-1层上有支撑的第n层的第u个待测点坐标,遍历第n-2层的所有坐标:A[0][n-2]、A[1][n-2]、A[2][n-2]、…、A[k][n-2]、…;
[0098] -此时条件1为:fabs(Xu-Xk)
[0099] -此时条件2为:fabs(Yu-Yk)
[0100] 与现有技术相比,本发明具有如下的有益效果:
[0101] 1、本发明的方法是基于模型切片检测模型中是否存在悬空部分,能够列出所有可能需要添加支撑的坐标点供设计师分析是否需要添加支撑。
[0102] 2、本发明可以使得设计者在打印之前得到所有可能悬空的坐标点,进而决定哪些点需要添加支撑,哪些点不需要,方法较为灵活。
[0103] 3、本发明的方法是利用打印机直接识别的切片数据,使得检测结果更加直接准确。

附图说明

[0104] 通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0105] 图1为3D打印机的打印流程示意图;
[0106] 图2为3D打印机的打印原理示意图;
[0107] 图3为3D打印机基于切片数据的悬空点检测流程示意图;
[0108] 图4为存在悬空点时3D打印机模型的支撑添加示意图;
[0109] 图5为本发明提供的3D打印机模型相邻层之间悬空点的检测示意图;
[0110] 图6为本发明提供的3D打印机模型悬空点检测的流程图。

具体实施方式

[0111] 下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
[0112] 根据本发明提供的针对3D打印模型的悬空预检测方法,包括如下步骤:
[0113] 步骤1:分别提取待打印模型的第n层和第n-1层的打印点坐标信息到数组,其中n的值大于2;
[0114] 步骤2:在待打印模型的第n层选择第i个待检测的打印点坐标,并在所述待打印模型的第n-1层的所有打印点坐标中寻找满足条件1和条件2的打印点坐标;
[0115] 步骤3:判断满足条件1和条件2的打印点坐标个数是否大于设定值M;若满足,则认为待打印模型的第n层上的该打印点坐标在待打印模型的第n-1层上有支撑;若不满足,则认为待打印模型的第n层上的该打印点坐标悬空,记录下该打印点坐标;令i的值自增1,依次选取待打印模型的第n层上的其余所有待检测的打印点坐标,重复步骤3直到检测完所述待打印模型的第n层上的所有待检测的打印点坐标;
[0116] 步骤4:提取待打印模型的第n-2层打印点坐标信息到数组,选取在待打印模型的第n-1层上有支撑的第n层上的第u个打印点坐标,并在所述待打印模型的第n-2层的所有打印点坐标中寻找满足条件1和条件2的打印点坐标;判断满足条件1和条件2的打印点坐标个数是否大于设定值M;若满足,则认为待打印模型的第n层上的该打印点坐标在待打印模型的第n-2层上有支撑,且认定该打印点坐标非悬空;若不满足,则认为待打印模型的第n层上的该打印点坐标悬空,记录下该打印点坐标信息;
[0117] 步骤5:令u的值自增1,依次选取待打印模型的第n层上的其余在待打印模型的第n-1层上有支撑的打印点坐标信息,重复步骤4、步骤5直到检测完所述待打印模型的第n层上的所有待检测打印点坐标;
[0118] 步骤6:令n的值自增1,每自增一次,重复步骤1至步骤5,直到待打印模型的顶层;
[0119] 步骤7:列出所有认定为悬空的打印点坐标,发送至设计者的操作界面;
[0120] 其中检测时能够设置n值每次自增值的大小,或者通过减少测试点i的数量来加快检测的速度。
[0121] 优选地,所述步骤1包括:
[0122] 步骤1.1:提取待打印模型的第n层打印点坐标信息到如下的数组A[i][n]:
[0123] A[i][n]={Xi,Yi};
[0124] n>2;i=0,1,2…;
[0125] 式中:n表示待打印模型的第n层,i表示待打印模型的第n层的第i点,Xi表示待打印模型的第n层的第i点在直角坐标系上的X轴坐标值,Yi表示待打印模型的第n层的第i点在直角坐标系上的Y轴坐标值;
[0126] 当n的值为3时,需要判断待打印模型第1层所在的Z轴坐标数值是否大于预设值Z0,其中Z0的值设置为喷头直径的大小,若大于Z0,则首层的打印就是悬空状态,需要支撑;若小于等于Z0,则首层不悬空;
[0127] 步骤1.2:提取待打印模型的第n-1层打印点坐标信息到如下的数组A[j][n-1]:
[0128] A[j][n-1]={Xj,Yj};
[0129] n>2;j=0,1,2…;
[0130] 式中:j表示待打印模型的第n-1层的第j点,Xj表示待打印模型的第n-1层的第j点在直角坐标系上的X轴坐标值,Yj表示待打印模型的第n-1层的第j点在直角坐标系上的Y轴坐标值。
[0131] 优选地,所述条件1和条件2如下:
[0132] -条件1为:fabs(Xi-Xj)
[0133] -条件2为:fabs(Yi-Yj)
[0134] 其中:fabs表示求绝对值操作,D为常数,由用户设定,单位为毫米。
[0135] 优选地,所述步骤3包括:
[0136] 步骤3.1:从第n层的首个待测点坐标开始时,令i的初始值为0,则第n层的首个坐标数组为A[0][n]={X0,Y0};遍历第n-1层的所有坐标:A[0][n-1]、A[1][n-1]、A[2][n-1]、…、A[j][n-1]、…;
[0137] -此时条件1为:fabs(X0-Xj)
[0138] -此时条件2为:fabs(Y0-Yj)
[0139] 其中,X0表示第n层的首个坐标点的X轴坐标值,Y0表示第n层的首个坐标点的Y轴坐标值;
[0140] 步骤3.2:依次提取第n层的第i+1个待测点坐标,遍历第n-1层的所有坐标:A[0][n-1]、A[1][n-1]、A[2][n-1]、…、A[j][n-1]、…;
[0141] -此时条件1为:fabs(Xi-Xj)
[0142] -此时条件2为:fabs(Yi-Yj)
[0143] 重复步骤3.2直到检测完所述待打印模型的第n层上的所有待检测的打印点坐标。
[0144] 优选地,所述步骤4包括:
[0145] 步骤4.1:提取待打印模型的第n-2层打印点坐标信息到如下的数组A[k][n-2]:
[0146] A[k][n-2]={Xk,Yk};
[0147] n>2;k=0,1,2…;
[0148] 式中:k表示待打印模型的第n-2层的第k点,Xk表示待打印模型的第n-2层的第k点在直角坐标系上的X轴坐标值,Yk表示待打印模型的第n-2层的第k点在直角坐标系上的Y轴坐标值;
[0149] 步骤4.2:从第n层的首个在待打印模型的第n-1层上有支撑的点坐标开始时,令u的初始值为0,且提取在待打印模型的第n-1层上有支撑的所有打印点坐标信息到如下数组B[u][n]中:
[0150] B[u][n]={Xu,Yu};
[0151] n>2;u=0,1,2…;
[0152] 式中:n表示待打印模型的第n层,u表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点,Xu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的X轴坐标值,Yu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的Y轴坐标值;
[0153] 步骤4.3:依次提取在待打印模型的第n-1层上有支撑的第n层的第u个待测点坐标,遍历第n-2层的所有坐标:A[0][n-2]、A[1][n-2]、A[2][n-2]、…、A[k][n-2]、…;
[0154] -此时条件1为:fabs(Xu-Xk)
[0155] -此时条件2为:fabs(Yu-Yk)
[0156] 一种针对3D打印模型的悬空预检测系统,包括如下模块:
[0157] 坐标信息储存模块:用于分别提取待打印模型的第n层和第n-1层的打印点坐标信息到数组,其中n的值大于2;
[0158] 坐标信息第一查询模块:用于在待打印模型的第n层选择第i个待检测的打印点坐标,并在所述待打印模型的第n-1层的所有打印点坐标中寻找满足条件1和条件2的打印点坐标;
[0159] 坐标信息第一选择模块:用于判断满足条件1和条件2的打印点坐标个数是否大于设定值M;若满足,则认为待打印模型的第n层上的该打印点坐标在待打印模型的第n-1层上有支撑;若不满足,则认为待打印模型的第n层上的该打印点坐标悬空,记录下该打印点坐标;令i的值自增1,依次选取待打印模型的第n层上的其余所有待检测的打印点坐标,重复运作所述坐标信息第一选择模块直到检测完所述待打印模型的第n层上的所有待检测的打印点坐标;
[0160] 坐标信息第二查询模块:用于提取待打印模型的第n-2层打印点坐标信息到数组,选取在待打印模型的第n-1层上有支撑的第n层上的第u个打印点坐标,并在所述待打印模型的第n-2层的所有打印点坐标中寻找满足条件1和条件2的打印点坐标;判断满足条件1和条件2的打印点坐标个数是否大于设定值M;若满足,则认为待打印模型的第n层上的该打印点坐标在待打印模型的第n-2层上有支撑,且认定该打印点坐标非悬空;若不满足,则认为待打印模型的第n层上的该打印点坐标悬空,记录下该打印点坐标信息;
[0161] 坐标信息第二选择模块:用于令u的值自增1,依次选取待打印模型的第n层上的其余在待打印模型的第n-1层上有支撑的打印点坐标信息,重复运作所述坐标信息第二查询模块和坐标信息第二选择模块直到检测完所述待打印模型的第n层上的所有待检测打印点坐标;
[0162] 层级循环模块:用于令n的值自增1,每自增一次,重复步骤1至步骤6,直到待打印模型的顶层;
[0163] 坐标信息传送模块:用于列出所有认定为悬空的打印点坐标,发送至设计者的操作界面;
[0164] 其中检测时能够设置n值每次自增值的大小,或者通过减少测试点i的数量来加快检测的速度。
[0165] 优选地,所述坐标信息储存模块包括:
[0166] 第n层坐标信息储存模块:用于提取待打印模型的第n层打印点坐标信息到如下的数组A[i][n]:
[0167] A[i][n]={Xi,Yi};
[0168] n>2;i=0,1,2…;
[0169] 式中:n表示待打印模型的第n层,i表示待打印模型的第n层的第i点,Xi表示待打印模型的第n层的第i点在直角坐标系上的X轴坐标值,Yi表示待打印模型的第n层的第i点在直角坐标系上的Y轴坐标值;
[0170] 当n的值为3时,需要判断待打印模型第1层所在的Z轴坐标数值是否大于预设值Z0,其中Z0的值设置为喷头直径的大小,若大于Z0,则首层的打印就是悬空状态,需要支撑;若小于等于Z0,则首层不悬空;
[0171] 第n-1层坐标信息储存模块:用于提取待打印模型的第n-1层打印点坐标信息到如下的数组A[j][n-1]:
[0172] A[j][n-1]={Xj,Yj};
[0173] n>2;j=0,1,2…;
[0174] 式中:j表示待打印模型的第n-1层的第j点,Xj表示待打印模型的第n-1层的第j点在直角坐标系上的X轴坐标值,Yj表示待打印模型的第n-1层的第j点在直角坐标系上的Y轴坐标值。
[0175] 优选地,所述坐标信息第一选择模块中的条件1和条件2如下:
[0176] -条件1为:fabs(Xi-Xj)
[0177] -条件2为:fabs(Yi-Yj)
[0178] 其中:fabs表示求绝对值操作,D为常数,由用户设定,单位为毫米。
[0179] 优选地,所述坐标信息第一选择模块包括:
[0180] 第n层首个坐标确认模块:用于从第n层的首个待测点坐标开始时,令i的初始值为0,则第n层的首个坐标数组为A[0][n]={X0,Y0};遍历第n-1层的所有坐标:A[0][n-1]、A[1][n-1]、A[2][n-1]、…、A[j][n-1]、…;
[0181] -此时条件1为:fabs(X0-Xj)
[0182] -此时条件2为:fabs(Y0-Yj)
[0183] 其中,X0表示第n层的首个坐标点的X轴坐标值,Y0表示第n层的首个坐标点的Y轴坐标值;
[0184] 第n层坐标选择模块:用于依次提取第n层的第i+1个待测点坐标,遍历第n-1层的所有坐标:A[0][n-1]、A[1][n-1]、A[2][n-1]、…、A[j][n-1]、…;
[0185] -此时条件1为:fabs(Xi-Xj)
[0186] -此时条件2为:fabs(Yi-Yj)
[0187] 重复运作第n层坐标选择模块直到检测完所述待打印模型的第n层上的所有待检测的打印点坐标。
[0188] 优选地,所述坐标信息第二查询模块包括:
[0189] 第n-2层坐标信息储存模块:用于提取待打印模型的第n-2层打印点坐标信息到如下的数组A[k][n-2]:
[0190] A[k][n-2]={Xk,Yk};
[0191] n>2;k=0,1,2…;
[0192] 式中:k表示待打印模型的第n-2层的第k点,Xk表示待打印模型的第n-2层的第k点在直角坐标系上的X轴坐标值,Yk表示待打印模型的第n-2层的第k点在直角坐标系上的Y轴坐标值;
[0193] 坐标信息初始化模块:用于从第n层的首个在待打印模型的第n-1层上有支撑的点坐标开始时,令u的初始值为0,且提取在待打印模型的第n-1层上有支撑的所有打印点坐标信息到如下数组B[u][n]中:
[0194] B[u][n]={Xu,Yu};
[0195] n>2;u=0,1,2…;
[0196] 式中:n表示待打印模型的第n层,u表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点,Xu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的X轴坐标值,Yu表示在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点在直角坐标系上的Y轴坐标值;
[0197] 第n-1层坐标选择模块:依次提取在待打印模型的第n-1层上有支撑的第n层的第u个待测点坐标,遍历第n-2层的所有坐标:A[0][n-2]、A[1][n-2]、A[2][n-2]、…、[0198] A[k][n-2]、…;
[0199] -此时条件1为:fabs(Xu-Xk)
[0200] -此时条件2为:fabs(Yu-Yk)
[0201] 具体地,本发明主要针对切片数据文件进行处理,可以通过计算机编程语言来完成,以下简单描述了实现本方法的基本过程。
[0202] A[i][n]={xi,yi}代表模型切片数据中第n层的第i个坐标数据。
[0203] A[j][n-1]={xj,yj}代表模型切片数据中第n-1层的第j个坐标数据。
[0204] A[k][n-1]={xk,yk}代表模型切片数据中第n-2层的第k个坐标数据。
[0205] B[u][n]={xu,yu}为在待打印模型的第n-1层上有支撑的待打印模型第n层上的第u点
[0206]
[0207]
[0208] 本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0209] 以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。