一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种面向多种3D打印工艺的切片方法与流程

2022-02-19 10:51:47 来源:中国专利 TAG:

一种面向多种3d打印工艺的切片方法
技术领域
1.本发明涉及增材制造领域,具体涉及一种面向多种3d打印工艺的切片方法。


背景技术:

2.3d打印技术,也称增材制造,是第三次工业革命的重要标志之一。30余年来,得利于计算机技术的发展,越来越多的3d打印工艺被人们研发出来,从最初的光固化sla、选择性激光烧结sls、熔融沉积成型fdm等工艺,到近年来出现的连续纤维增强cfrfdm、按需喷射dod、激光金属沉积成型lmd等工艺,每种3d打印工艺都有各自特点,适用于不同的需求场合,因此不存在最优工艺,只有较适合的工艺,而越来越多的工艺也在高校实验室、3d打印公司及创客们的研发当中。
3.目前,很多公司、高校及创客们使用的切片软件是一些特定工艺的开源切片软件或直接手动编写gcode代码来进行新工艺的研发,而开发一款新的特定工艺的切片软件需要大量精力、金钱的投入,因此现有切片软件限制了新工艺的研发及应用。一款对于多种工艺基本通用的切片软件成为市场需要。


技术实现要素:

4.本发明的目的是提供一种可以完成多种3d打印工艺、且可进行g代码编辑的高度柔性化切片方法。用户只需通过配置切片软件参数以及进行gcode代码编辑操作就能开发新工艺。
5.基于目前大多数3d打印工艺的共有特点——成型点按照预定路径扫描、层层堆叠成三维物体,本发明提出了一种面向多种3d打印工艺的高度柔性切片方法,用户可以通过ui界面或函数形式编辑gcode代码,可以很方便的实现诸如清洁喷头、铺粉、批量操作、外壳打印 内部注塑等用户自定义操作。需要指出本切片方法搭配现有的基于数控技术而研发的g代码并不能发挥出全部性能。本发明在介绍时采用g代码,实际运用不局限于g代码。
6.本发明的技术方案如下:步骤1:配置切片软件参数,并导入stl文件;步骤2:进行模型预处理,并根据设定层厚对模型进行分层切片,由最底层往上依次用数字标记层号,最底层层号标记为1;步骤3:分层切片后,模型与每层平面相交得到一系列闭合轮廓,标记每层的每一个闭合轮廓为一个区域,并存储区域信息;步骤4:根据设置的轮廓数量及填充样式进行路径规划,标记生成的每一路径,并存储路径信息;步骤5:将存储的路径信息翻译成gcode片段,保持存储信息的数据结构不变;步骤6:用户通过交互界面或函数输入,进行gcode编辑操作;步骤7:根据存储信息的数据结构特点,依次搜集gcode片段,生成gcode代码,并导出打印。
7.本发明还包括以下模块:参数配置模块m1、模型展示模块m2、gcode交互模块m3、gcode函数输入模块m4以及文件导入模块m5、分层切片模块m6、路径规划模块m7、gcode翻译模块m8、gcode编辑模块m9、打印文件导出模块m10。
8.步骤1中配置切片软件参数在用户交互界面中进行,且由参数配置模块m1将所配置参数传递给文件导入模块m5、分层切片模块m6、路径规划模块m7及gcode翻译模块m8,配置参数至少包括:支撑类型、层厚、成型点直径、填充样式和成型类型;导入过程中由文件导入模块m5将ascii格式的stl文件转换成三角面片信息并保存到三角面片信息结构体中。
9.支撑类型包括通常用于熔融沉积成型fdm等工艺、与模型接触为线接触的线性支撑,以及通常用于光固化成型sla等工艺、与模型接触为点接触的树状支撑;填充样式包括线性填充和网格状填充;成型类型分为同步供料成型类和定向能束选择成型类。
10.步骤2和步骤3分层切片模块m6执行,其中模型预处理包括:对于间距小于10
‑6m的点,取坐标平均值合并,以及对于悬空部分进行支撑生成。
11.步骤3的进一步解释如下:由stl模型中的一些具有公共边或顶点的三角面片与切平面的交线首尾相连形成闭合轮廓;一个闭合轮廓即为一个区域,区域类型分为支撑区域、表面区域与填充区域,支撑区域即为模型支撑与切平面相交生成的轮廓,在本方法中标记符号为“s”;表面区域为三角面片法向量与z轴夹角为0度的区域,标记符号为“f”;在所有闭合轮廓中去除支撑区域、表面区域后剩下的每个区域均称为一个填充区域,标记为“a”;区域信息存储在区域信息结构体中。
12.区域标记过程如下:首先对第一层切片中的轮廓进行标记,标记符号由区域类型决定,对于同一类型区域,用序号进一步区别,标记序号1的区域为最接近原点的区域,之后寻找与最新被标记区域距离最近且未被标记的区域进行标记,直至标记完成;对第2层及以后的区域进行标记时,将当前轮廓与前一层轮廓的水平坐标进行比较,消失的轮廓进行序号移除,即此区域序号将不出现在这一层,而同位置上派生的轮廓需进行序号的进一步细分,偏移或无派生、无消失的轮廓进行序号的继承,新出现的轮廓在标记完标记符号后分配未被使用过的序号。
13.步骤4由路径规划模块m7完成,路径信息存储在路径信息结构体中,外墙标记为“o”,内墙标记为“i”,填充路径标记为“l”,非打印路径标记为“n”。
14.步骤5由gcode翻译模块m8完成,具体翻译过程如下:以marlin的指令集为例,标记为“o”、“i”、“l”的路径在翻译成gcode片段时,用g1成型指令,标记为“n”的路径用g0指令,g1、g0后空一格并添加路径的终点坐标;对“o”、“i”、“l”的路径判断成型类型,若为同步供料成型类,则再添加同步挤出指令e以及该路径所用材料体积,若为定向能束选择成型类,则添加激光开启指令m3,并识别下一路径是否为“n”,若为“n”则继续添加换行符和激光关闭指令m5;当不需要添加时,则用生成的gcode片段覆盖原来的路径信息;覆盖原有的路径信息即,路径信息结构与翻译后的gcode片段结构体格式相同,区别只在于路径名称下面的信息为路径信息还是gcode片段;翻译时只需沿数组及链表依次搜索即可快速完成翻译。
15.步骤6的具体实现如下:用户选择模型展示模块m2上的具体路径,该路径的名称将会出现在gcode交互模块m3中,并且可以通过gcode交互模块m3完成gcode编辑操作,用户输入完成后,gcode交互模块m3会导出一串函数指令给gcode编辑模块m9;用户也可以通过gcode函数输入模块m4直接编写函数指令,该模块也会导出一串函数指令给gcode编辑模块
m9;gcode编辑模块m9完成对函数指令的解析,并根据gcode片段结构体的特点完成gcode片段编辑操作;gcode编辑操作包括插入用户宏、替换gcode片段、删除gcode片段,编辑操作均可通过链表的插入、删除来实现,用户宏即用户使用gcode编写的代码片段。
16.函数指令格式如下:层序号 区域类型[区域序号] 路径类型[路径序号] 动作名称;当函数指令中的层序号、区域序号、路径序号、用户宏为多个时,可以把多个序号通过逗号“,”隔开,连续的序号还可以用连续符号
“‑”
连接起始序号与终止序号;动作名称包括删除操作“delete”、插入操作“insert”以及替换操作“replace”,插入操作“insert”后跟用户宏或需增加的gcode片段。
[0017]
函数指令解析过程如下:新建三个队列,分别存放层序号、区域类型[区域序号]和路径类型[路径序号],各队列遵循先进先出的原则,且区域类型[区域序号]队列q2和路径类型[路径序号]队列q3在元素出队以后继续放入队尾进行循环;新建空字符串用以存放弹出元素,从层序号队列q1弹出元素,由该元素定位层位置,然后由区域类型[区域序号]队列q2弹出元素,沿链表搜索定位区域位置,再由路径类型[路径序号]队列q3弹出元素,沿链表搜索从而定位gcode片段,最后由函数指令中的动作指令完成链表的插入、删除操作。
[0018]
步骤7由打印文件导出模块m10完成。
[0019]
附图说明
[0020]
图1为本发明中面向多种3d打印工艺的切片方法的流程图;图2为本发明中面向多种3d打印工艺的切片方法的模块示意图;图3为本发明中存储信息结构体变化的流程图;图4为本发明中同步供料成型类和定向能束选择成型类及其包含工艺;图5为本发明中区域命名的示意图;图6为本发明中gcode翻译的流程图;图7为本发明中用户通过模型展示模块与gcode交互模块进行gcode编辑的示意图;图8为本发明中对gcode编辑函数指令进行解析的流程图;图9为本发明的具体实施例中第m层中第a[i]区域的第l[i]所在位置的示意图;图10为本发明的具体实施例中在第m层中第a[i]区域的第l[i]所在位置后插入用户宏“更换喷嘴宏”示意图。
[0021]
具体实施方式
[0022]
下面以插入用户宏“更换喷嘴宏”为例,具体说明本发明的具体实施方式。
[0023]
首先根据算法步骤:步骤1:配置切片软件参数,并导入stl文件;步骤2:进行模型预处理,并根据设定层厚对模型进行分层切片,由最底层往上依次用数字标记层号,最底层层号标记为1;步骤3:分层切片后,模型与每层平面相交得到一系列闭合轮廓,标记每层的每一
个闭合轮廓为一个区域,并存储区域信息;步骤4:根据设置的轮廓数量及填充样式进行路径规划,标记生成的每一路径,并存储路径信息;步骤5:将存储的路径信息翻译成gcode片段,保持存储信息的数据结构不变;步骤6:用户通过交互界面或函数输入,进行gcode编辑操作;步骤7:根据存储信息的数据结构特点,依次搜集gcode片段,生成gcode代码,并导出打印。
[0024]
本发明有以下模块:参数配置模块m1、模型展示模块m2、gcode交互模块m3、gcode函数输入模块m4以及文件导入模块m5、分层切片模块m6、路径规划模块m7、gcode翻译模块m8、gcode编辑模块m9、打印文件导出模块m10。
[0025]
本发明的切片方法中存储信息结构体变化如附图3所示,附图3展示了ascii格式的stl文件、三角面片信息结构体、区域信息结构体、路径信息结构体、gcode片段结构体。
[0026]
步骤1中配置切片软件参数在用户交互界面中进行,且由参数配置模块m1将所配置参数传递给文件导入模块m5、分层切片模块m6、路径规划模块m7及gcode翻译模块m8,配置参数至少包括:支撑类型、层厚、成型点直径、填充样式和成型类型,可见附图2所展示的模块示意图,其中虚线为模块间的数据传递;导入过程中由文件导入模块m5将ascii格式的stl文件转换成三角面片信息并保存到三角面片信息结构体中。
[0027]
支撑类型包括通常用于熔融沉积成型fdm等工艺、与模型接触为线接触的线性支撑,以及通常用于光固化成型sla等工艺、与模型接触为点接触的树状支撑;填充样式包括线性填充和网格状填充;成型类型分为同步供料成型类和定向能束选择成型类。
[0028]
步骤2和步骤3分层切片模块m6执行,其中模型预处理包括:对于间距小于10
‑6m的点,取坐标平均值合并,以及对于悬空部分进行支撑生成。
[0029]
步骤3的进一步解释如下:由stl模型中的一些具有公共边或顶点的三角面片与切平面的交线首尾相连形成闭合轮廓;一个闭合轮廓即为一个区域,区域类型分为支撑区域、表面区域与填充区域,支撑区域即为模型支撑与切平面相交生成的轮廓,在本方法中标记符号为“s”;表面区域为三角面片法向量与z轴夹角为0度的区域,标记符号为“f”;在所有闭合轮廓中去除支撑区域、表面区域后剩下的每个区域均称为一个填充区域,标记为“a”;区域信息存储在区域信息结构体中。
[0030]
区域标记过程如下:首先对第一层切片中的轮廓进行标记,标记符号由区域类型决定,对于同一类型区域,用序号进一步区别,标记序号1的区域为最接近原点的区域,之后寻找与最新被标记区域距离最近且未被标记的区域进行标记,直至标记完成;对第2层及以后的区域进行标记时,将当前轮廓与前一层轮廓的水平坐标进行比较,消失的轮廓进行序号移除,即此区域序号将不出现在这一层,而同位置上派生的轮廓需进行序号的进一步细分,偏移或无派生、无消失的轮廓进行序号的继承,新出现的轮廓在标记完标记符号后分配未被使用过的序号。附图5为区域命名示意图。
[0031]
步骤4由路径规划模块m7完成,路径信息存储在路径信息结构体中,外墙标记为“o”,内墙标记为“i”,填充路径标记为“l”,非打印路径标记为“n”;需要说明的是,内墙标记、外墙标记默认只用于填充区域和表面区域,而表面区域中的填充默认为100%的线性填充,支撑区域的打印路径默认全部只用填充路径标记“l”。
[0032]
步骤5由gcode翻译模块m8完成,具体翻译过程如下:以marlin的指令集为例,标记为“o”、“i”、“l”的路径在翻译成gcode片段时,用g1成型指令,标记为“n”的路径用g0指令,g1、g0后空一格并添加路径的终点坐标;对“o”、“i”、“l”的路径判断成型类型,若为同步供料成型类,则再添加同步挤出指令e以及该路径所用材料体积,若为定向能束选择成型类,则添加激光开启指令m3,并识别下一路径是否为“n”,若为“n”则继续添加换行符和激光关闭指令m5;当不需要添加时,则用生成的gcode片段覆盖原来的路径信息;覆盖原有的路径信息即,路径信息结构与翻译后的gcode片段结构体格式相同,区别只在于路径名称下面的信息为路径信息还是gcode片段;翻译时只需沿数组及链表依次搜索即可快速完成翻译。举例,假设路径信息为“l”,终点为(x,y),若为同步供料成型类,设成型体积为v1,则gcode翻译后为:g1 x,y ev1;若为定向能束选择成型类,且下一段不为非打印路径“n”,则gcode翻译后为:g1 x,y m3。gcode翻译过程如附图6。
[0033]
步骤6的具体实现如下:如附图7,用户选择模型展示模块m2上的具体路径,该路径的名称将会出现在gcode交互模块m3中,并且可以通过gcode交互模块m3完成gcode编辑操作,用户输入完成后,gcode交互模块m3会导出一串函数指令给gcode编辑模块m9;用户也可以通过gcode函数输入模块m4直接编写函数指令,该模块也会导出一串函数指令给gcode编辑模块m9;gcode编辑模块m9完成对函数指令的解析,并根据gcode片段结构体的特点完成gcode片段编辑操作;gcode编辑操作包括插入用户宏、替换gcode片段、删除gcode片段,编辑操作均可通过链表的插入、删除来实现,用户宏即用户使用gcode编写的代码片段,比如更换喷嘴小程序、清洁喷嘴小程序等。
[0034]
函数指令格式如下:层序号 区域类型[区域序号] 路径类型[路径序号] 动作名称;当函数指令中的层序号、区域序号、路径序号、用户宏为多个时,可以把多个序号通过逗号“,”隔开,连续的序号还可以用连续符号
“‑”
连接起始序号与终止序号;动作名称包括删除操作“delete”、插入操作“insert”以及替换操作“replace”。比如,3

6 a[1

5] l[1

10] insert h1,表示在第3

第6层的所有第a[1]

第a[5]区域中的第l[1]

l[10]线段后面均插入用户宏指令h1。现输入m a[i] l[j] insert h1,其中h1为用户编写的更换喷嘴宏,则插入前后链表中的变化可见附图9和附图10。
[0035]
函数指令解析过程如下:新建三个队列,分别存放层序号、区域类型[区域序号]和路径类型[路径序号],各队列遵循先进先出的原则,且区域类型[区域序号]队列q2和路径类型[路径序号]队列q3在元素出队以后继续放入队尾进行循环;新建空字符串用以存放弹出元素,从层序号队列q1弹出元素m,因此定位到第m层,然后由区域类型[区域序号]队列q2弹出元素a[i],沿下一区域指针搜索定位区域位置a[i],再由路径类型[路径序号]队列q3弹出元素l[j],沿下一路径指针搜索从而定位gcode片段l[j],最后由函数指令中的动作指令insert完成链表的插入。
[0036]
步骤7由打印文件导出模块m10完成。
[0037]
同理,可以进行其他用户宏的插入及删除操作。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献