以看到三维打印需求量是非常充足的。在如此竞争激烈的市场环境下,用户会优先选择高性能、高性价比、高速率的产品,因此我们这个项目设计能够提高产品的生产效率以及节省生产时间,无疑对3D打印技术的发展起到促进的作用,有创新才有进步。
2.4 QT和QT Creater 介绍
Qt是一个跨平台应用程序和UI开发框架。使用Qt您只需一次性开发应用程序,无需重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。
Qt Creater是全新的跨平台Qt IDE(集成开发环境),可单独使用,也可以与Qt库和开发工具组成一套完整的SDK(Software Development Kit,即软件开发工具包)。其中包括:高级C++代码编辑器,项目和生成管理工具,集成的上下文相关的帮助系统,图形化调试器,代码管理和浏览工具。
直观的C++类库:模块化Qt C++类库提供一套丰富的应用程序生成块(block),包含了构建高级跨平台应用程序所需的全部功能。具有直观,易学,易用,生成好理解、易维护的代码等特点。
跨桌面和嵌入式操作系统的移植性:使用Qt,您只需一次性开发应用程序,就可跨不同桌面和嵌入式操作系统进行部署,而无需重新编写源代码,可以说Qt无处不在(Qt Everywhere)。
? 使用单一的源代码库定位多个操作系统; ? 通过重新利用代码可将代码跨设备进行部署; ? 无需考虑平台,可重新分配开发资源; ? 代码不受担忧平台更改影响的长远考虑;
? 使开发人员专注于构建软件的核心价值,而不是维护API。
具有跨平台IDE 的集成开发工具:Qt Creator 是专为满足Qt开发人员需求而量身定制的跨平台集成开发环境(IDE)。Qt Creator 可在windows、Linux/X11和Mac OS X 桌面操作系统上运行,供开发人员针对多个桌面和移动设备平台创建应用程序。
6
3.系统总体设计
3.1功能分析
STL模型的分层处理在3D打印机快速成型中起着非常重要的作用。通过分层数据,客户不仅可以了解快速成型的制作原理和过程,而且可以对CAD模型的错误进行快速成型任务提交前的检验。指导CAD模型数据的修正。STL模型的分层处理就是根据用户输入的分层方向和分层厚度,求取一系列切平面与STL模型中三角面片的交线,并将首尾相连的线段组成一个个轮廓,同时还要判断轮廓是否封闭。
STL模型是用小三角形面片对原CAD模型的一种离散逼近,一个STL模型少则包含成百三千,多则有数十万个三角形面片,所以分层算法效率的高低就成为影响系统适用性的重要因素。分层处理一般包含两个步骤:即平面求交和线段轮廓归并。所以影响分层速度的因数主要有两个:一个因素是在求取每一层的轮廓线段时,都要判断每个三角形面片与切平面的位置关系,若相交则求交线。与某一切平面相交的知识少数三角面片,而大多数的三角面片与该切平面是不相交的,因此大多数判断属于无效判断,浪费计算时间。另一因素是完成三角面片和切平面求交运算后,要对所得交线进行排序,以生成封闭轮廓线。当一个STL模型包含大量三角面片时,用一般算法进行交线排序,其处理速度将非常慢,必须研究特殊的快速分层算法,如先对STL模型数据做一些预处理再进行切片处理,以提高切片效率。另外,我们还可以对STL数据的每个切片的打点轨迹进行优化,以提高二维打印的效率[5]。
正是基于STL模型分层算法的繁杂性和耗时性分析,我们很有必要设计一款能够简便性与耗时短的程序,在STL模型分层算法的基础上进行改良优化,以此来提高三维模型快速成型的速率与效率,因此,我们运用数学建模的思想、换位思考思想以及算法效率方法对我们的STL模型数据进行转化,尝试转换成下位机能够识别接收和驱动的数据。
7
图3-1 数据转换前后喷头运动轨迹示意图
从图3-1数据转换前后喷头运动轨迹示意图中,我们知道这主要是粗略说明转换后的数据的3D打印机喷头的运动轨迹要比转换前的运动轨迹要短。我们根据科学的事实知道三角形两边要大于第三边以及直线距离最短的常识,由图中我们发现,每两个三角形之间都会有重叠的边,这样喷头在某一层面上从起点开始到回到起点的这个封闭的轮廓线的过程中,已经远远重复走过已走过的轨迹。而我们就是要考虑把这些重复的线和坐标点删除掉,剩下的就是各自独立的坐标点了,然后将这些坐标点连起来就形成了一条有向的直线了。
另外第二个要实现的功能是通过串口从PC终端中发送已经优化处理过的数据到单片机以实现传递分层图形数据的功能。那么我们就需要对串口进行设置,以及显示发送的进度。结合以上数据转换程序以及传递分层图形数据的两个功能,我们可以使用QT强大的功能来完成这个软件的设计,不仅美观,简便,还能使各功能模块结合起来。下图3-2为软件功能结构图:
图3-2 软件功能结构图
8
3.2设计分析
明确了3D打印机中间层软件的功能需求后,就需要进行方案的论证和系统的设计。软件的设计是以一定的方法为基础的,对于3D打印机中间层软件这样一种相对复杂的软件开发任务,设计中根据软件设计的模型,从用户需求和系统要实现的任务功能出发,主要遵循了以下几个原则:
易用性。程序要尽可能简洁而又满足需要,要有良好的防错和容错性,同时具有良好的接口,便于将来升级时,其他开发者能很容易的掌握和运用;
高性能。要在保证程序正常运行的情况下,要尽量减少程序所占用的内存空间,提高程序的运行速度。这与程序中数据结构的设计有关,同时与简洁、优化的程序代码有关;
模块化。把整个软件划分为较小的模块。设计中各个模块之间的逻辑结构相对独立,这种模块化设计使得各个子系统之间相对独立,更加便于系统的调试,提高了系统的稳定性,同时也为软件升级大大提供了方便。
3.3软件功能模块化设计分析
3D打印机中间层软件采用结构化、模块化设计。模块化是将系统总功能分解为若干个功能单位,各个功能单位被设计成为相对独立的模块,通过相互转移调用的约定(即接口)方法,把它们连接起来。这种设计方法的优点是:系统设计简单、结构紧凑、整体性强、开销小、效率高。在软件设计模块化的同时,每个模块同时使用层次化结构,各层之间是单向依赖关系,不构成循环。这种层次结构的显著优点是:
? 在设计低层软件时,可不考虑高层软件的实现方法,各层间独立性强; ? 高层软件的错误不会影响到低层软件中,从而方便软件的调试、维护、修改
和扩充;
? 软件不会产生递归调用,避免了死锁的发生,提高了系统的可靠性。 ? 整个软件分为三大模块:数据转换模块、数据显示模块、数据传输模块。图
3-3是数据转换模块框图:
9
图3-3 数据转换模块结构图
3D打印机快速成型可以分为离散和堆积两个过程,如图3-4所示。
图3-4 3D打印快速成型的基本过程
10