基于WPF技术的三维打印软件

2017-08-11 11:41杨忠林
上海电气技术 2017年2期
关键词:视图打印机切片

程 慎, 张 力, 杨忠林

1. 上海开通数控有限公司 上海 200233 2. 上海电气集团股份有限公司 中央研究院 上海 200070



基于WPF技术的三维打印软件

程 慎1, 张 力2, 杨忠林2

1. 上海开通数控有限公司 上海 200233 2. 上海电气集团股份有限公司 中央研究院 上海 200070

在视窗操作系统中开发了一款基于WPF技术的三维打印机控制软件。这一软件利用OpenTK实现对三维模型的预览、编辑,通过切片功能将.stl格式的三维模型文件转换为三维打印路径代码,解码后通过网络通信来控制打印机的运动部件,进而实现三维模型的打印。这一软件功能丰富、性能稳定、界面友好、实际效果良好,为三维模型的打印提供了一种有效的解决方案。

三维打印; 计算机; 软件; 设计

1 设计背景

三维打印是快速成型技术[1-2]的一种,最早由美国麻省理工学院提出,融入了增材制造的思想。增材制造是指沿分层方向将三维模型离散为一组二维图形,即一组切片,逐层有序加工,层层叠加,最后形成三维模型实体的制造工艺[3]。增材制造技术具有设备简单、材料便宜、成本低、体积小、工作过程无污染、成型速度快等优点,按照成型工艺的不同,可分为熔融沉积(FDM)、光固化成型(SLA)、选择性激光烧结(SLS)、分层实体制造(LOM)[4]等技术。

结合产品的硬件平台及创客们的实际需求,本文所涉及的三维打印系统采用FDM技术,这一技术一般采用热塑性材料,如丙烯腈-丁二烯-苯乙烯共聚物(ABS)、聚乳酸(PLA)等,以丝状供料。材料在打印喷头内经过加热熔化后,喷头沿三维打印软件生成的路径移动时,将熔化的材料挤出。材料在室温下快速固化,与周围的材料粘结在一起,当前层的材料被堆积到前一层的材料上,如此循环往复、逐层叠加,形成最终的立体模型实体[5-6]。

笔者所设计的三维打印软件是在Microsoft Visual studio 2010开发环境下以WPF(Windows Presentation Foundation)作为界面实现技术,基于.Net Framework 4.0框架,应用C#语言编写控制逻辑开发的,具有对三维打印机运动控制、三维模型预览和编辑、三维模型切片、打印实时仿真、参数配置等功能。

WPF是微软公司推出的新一代界面设计技术,运行在.Net架构下,为用户界面设计、二维与三维图形设计、媒体及文档制作提供了统一的描述和操作方法,实现了界面与代码的分离。基于WPF技术开发的三维打印软件界面清晰、友好、易扩展,可以很好地满足用户需求[7]。

2 三维打印系统框架

三维打印系统的框架如图1所示。上位机软件基于WPF技术开发,主要功能是将导入的三维模型文件转换为可供系统运行的路径代码(Gcode),并将其解析后发送至下位机。下位机采用的是上海开通数控有限公司的KT-510运动控制器,执行运动指令,对电机进行运行控制,并将运行状态的数据反馈至上位机。用户可以通过软件界面进行实时监控。

图1 三维打印系统框架

3 运动控制

通过抽象类NetBridge封装了上位机界面软件与下位机控制器KT-510的网络通信,MACServer通过NetBridge类对打印机的参数和状态进行读取、写入和指令执行。

MACServer的接口类型架构如图2所示,它集成了多个继承自MACServer的数据接口类,这些类一共有两大功能类型: NCServer、NCChannel、NCAxis和NCGcode属于控制器运动控制类型的接口类,Extruder、Hotbed和3DFan属于专为三维打印机床应用在原有架构上新开放的接口类。新开放的接口类是通过C#的多态特性,从MACServer抽象类中拓展出来的。

图2 MACServer接口类型架构

上述这些具有独立功能的MACServer接口类都集成到3DPrintBroker类中,以组装成本系统软件核心控制器,实现界面与控制模型代码分离,降低系统结构的耦合度。其中,NCServer提供了机床的全局参数和复位、激活、通信等功能接口,NCChannel提供了对机床程序自动运行的控制和参数监控接口,NCAxis提供了手动、回零、定位等移动操作及电机驱动器参数监控的接口,NCGcode提供了对Gcode错误信息检查的接口,Extruder提供了三维打印机喷头温度采集和控制的接口,Hotbed提供了热床温度采集和控制的接口,3DFan提供了散热风扇开关及速度控制的接口。

4 三维模型预览和编辑

软件支持对.stl格式三维模型的导入、显示和编辑功能。 .stl基于由3D SYSTEMS公司于1988年制定的一个接口协议,是一种为快速成型制造技术服务的三维图形文件格式。 .stl文件由多个三角形面片的定义组成,每个三角形面片的定义包括三角形各个顶点的三维坐标及三角形面片的法矢量[8-9]。

笔者所设计的软件对.stl文件进行解析,然后调用OpenTK库函数将模型绘制出来。OpenTK对OpenGL、OpenAL、OpenCL进行了跨平台的封装,是用C#语言编写、遵循MIT许可的开源库。OpenTK可以集成到Windows.Forms、WPF或GTK#等应用程序中,但要求视窗平台上.Net版本至少为2.0[10]。本软件使用的是.Net Framework 4.0。

图3是软件载入凯蒂.stl文件后编程界面的绘制效果图。使用OpenTK库绘制模型过程中的矩阵变换如图4所示。视图模型矩阵由模型矩阵和视图矩阵组合而成,模型矩阵确定世界坐标系中的点经过变换后的新位置,视图矩阵将世界坐标系中的点转换到观察者的眼中。当观察者位于原点,面向X轴、Y轴或Z轴的正半轴时,视图矩阵就是一个单位矩阵,观察者看到的点就是世界坐标系下的实际位置点。当观察者的位置和方向发生变化时,就需要使用视图矩阵来变换。

图3 凯蒂.stl文件预览

图4 三维图形矩阵变换

模型矩阵变换如下。

(1) 平移变换:

(1)

式中:tX、tY、tZ依次为模型沿X、Y、Z轴方向平移的位移量。

(2) 旋转变换,以绕Z轴旋转为例:

(2)

式中:θ为沿Z轴旋转的角度。

(3) 缩放变换:

(3)

式中:sX、sY、sZ依次为沿X、Y、Z轴方向缩放的比例。

视图矩阵同样也有平移、旋转和缩放,与模型矩阵的变换呈相反效果,如观察者平移了(tX,tY,tZ),相当于整个世界平移了(-tX,-tY,-tZ)。

5 模型切片

本系统集成了Slic3r软件,实现了对模型的切片功能。Slic3r是一款用于将三维模型文件转换为Gcode的开源软件。Slic3r中交互界面等高层模块使用Perl开发,重要的切片算法和数据结构使用C++编写,其中C++应用程序编程接口是开放的,鼓励在其它项目中使用。

笔者通过命令行的方式来调用Slic3r生成切片代码,将Slic3r运行过程中所需的参数与WPF界面中的控件双向绑定,并在用户设置成功后以.ini文件格式保存至上位机,实现切片参数的管理。 .ini文件是一种具有特定结构的文本文件,其结构如图5所示。

avoid_crossing_perimeters=0bed_shape=0×0,200×0,200×200,0×200bed_temperature=70before_layer_gcode=bottom_solid_layers=3bridge_acceleration=0bridge_fan_speed=100bridge_flow_ratio=1

图5 .ini文件结构示例

6 打印效果

在自动切片结束后,生成的与模型文件同名的.Gcode文件由上位机通过网络端口通信传递至控制器。在自动界面开始运行.Gcode文件后,软件开启定时器实时读取下位机各轴当前坐标值,并根据该值来绘制喷头的运动轨迹,呈现出当前已打印出的模型部分。凯蒂模型打印效果仿真如图6所示,实际打印结果如图7所示。

图6 凯蒂.Gcode打印效果仿真

图7 凯蒂.stl打印结果

7 结论

经过实际运行验证,笔者所设计的三维软件功能完善、性能稳定,能很好地满足用户的三维打印需求,为三维打印提供了一种有效的解决方案。

[1] PANG A, JONEJA A, LAM D C C, et al. A CAD/CAM System for Process Planning and Optimization in

LOM(Laminated Object Manufacturing)[J].IIE Transactions,2001,33(4): 345-355.

[2] 胡发宗,赵毅,陈罡,等.三维立体打印机的成形技术[J].模具技术,2004(1): 60-62.

[3] 颜永年,单忠德.快速成形与铸造技术[M].北京: 机械工业出版社,2004: 8-27.

[4] 阮雪榆,娄臻亮.21世纪数字化塑性成形技术与科学[J].模具技术,2003(2): 3-8,35.

[5] 王文涛,刘燕华.3D打印制造技术发展趋势及对我国结构转型的影响[J].科技管理研究,2014(6): 22-25,30.

[6] 廖文俊,胡捷.增材制造技术的现状和产业前景[J].装备机械,2015(1): 1-7.

[7] NATHAN A.WPF揭秘[M].瞿杰,单佐一,夏寒,译.北京: 人民邮电出版社,2008: 109-111.

[8] 朱虎,杨忠凤,张伟.STL文件的应用与研究进展[J].机床与液压,2009,37(6): 186-189.

[9] 张培.基于快速成型的三维模型数据处理技术研究[D].洛阳: 河南科技大学,2013.

[10] 邹晔.三维软件在大型复杂锻件制造中的应用[J].上海电气技术,2010,3(4): 22-26.

(编辑: 尔 东)

In Windows operating system a 3D printer control software was developed based on WPF technology. This software uses OpenTK to realize the preview and edit of the 3D model, convert the 3D model file in .stl format into the 3D print path code by the slice function, control the moving parts of the printer through the network communication after decoding, and then realize the printing of the 3D model. Owing to rich software functions, stable performances, friendly interface and sound actual effect, this software may provide an effective solution for printing of the 3D model.

3D Printing; Computer; Software; Design

2016年8月

程慎(1982— ),男,硕士,工程师,主要从事数控技术研究工作, E-mail: cscheng7907@hotmail.com

TM762;TP23

A

1674-540X(2017)02-020-04

猜你喜欢
视图打印机切片
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
基于SDN与NFV的网络切片架构
另类3D打印机
打印机基板大型注塑模具设计
肾穿刺组织冷冻切片技术的改进方法
FDM型混色3D打印机的设计
基于镜像对称参考切片的多扫描链测试数据压缩方法