3 系统主要模块的设计实现
3.1 绘图引擎的实现
本系统的核心功能就是要实现具有实时人机交互功能的界面图形设计和显示的界面编辑系统,需要一个性能较好,可扩展的绘图引擎作为后台支持。面向对象的编程技术可以帮助操作者很好地实现这一目的。
笔者结合自己开发的系统,提出如下基于WindowsGDI 二维图形引擎结构框架,如图3 所示。该结构框架中应用程序分为两部分,一部分是封装在动态连接库中的二维绘图类,主要功能为各图形元素的创建、编辑和显示;另一部分则为主应用程序,负责数据处理、界面显示及交互控制。但就整个系统而言还包括Windows GDI 二维图形库。
由于这里所给出的只是一个系统设计思想,故未列出系统中包含的所有类和处理过程。CEiement 是一个实现图元绘制的公共基类。图元是一个几何形体,也可以是一种虚拟的图元组合,具有某种表现形式和事件响应能力;一个几何图元具有外形特征、风格和对鼠标事件、键盘事件以及特定命令的处理能力。外形特征由图元的顶点确定,可以通过控制点来改变图元的外形。CEiement 类用于实现上述图元的这些功能,其中定义了加载图元数据、绘制图元、操纵图元等所用到的公共接口或成员变量,这个基类里所定义的是图元共有的特征,而真正的功能大多数是由其派生类来实现的。如可由CEiement 派生出直线图元(Cline)、圆弧图元(Carc)、变数图元(Cvariabie)、表格图元(Ctabie)等。
Ctoois 工具类是用户利用鼠标、键盘来创建、操纵图元的中介,大致包括创建、选择和变换三种工具,创建工具能够在画布上创建出不同的图元,选择工具可以在画布上选择若干图元,变换工具是对图元进行位置的变换。
CCommand 命令类是用户行为和改变图元属性的中介。任何改变图元属性的操作都是通过某种特定命令执行的,而不论这个命令发自何处。例如,图元移动是由移动命令执行的,图元删除是由删除命令执行的。而且,大多命令的执行是可逆的,也即是可以撤销命令而恢复到执行前的状态。当然,也有些命令是不可逆的。
屏幕类Cscreen 用于实现创建图元、操纵图元、管理图元、显示图元等任务。其中定义了一个与屏幕图形设计界面(如VC + + 中的CView 类)的接口,使用该指针可完成所有与绘图引擎的交互功能,主应用程序中所有对图元的访问均通过Cscreen 间接进行。该系统结构具有良好的可扩展性,用户还可在此结构基础上进一步扩展支持更多的图元绘制和操作。
3.2 编译器的设计
用户设计好的图形界面必须经过编译、优化、压缩等数据处理后,才能被控制器显示驱动程序所使用。编译系统的功能主要是以屏幕为单位处理,将其中的图形元素的几何参数、功能属性等信息,翻译成便于计算机处理的格式,存放在指定的内存专用区域,显示驱动程序便可对界面数据解释并显示在屏幕上。
编译器对源屏幕数据逐屏扫描一遍,对屏幕上的图元按不同类型把转换出来的数据放在各自的临时数据区规定的单元中,这些数据区分别是变数数据区、文字数据区和图档数据区,在这个过程中要对编译数据作压缩处理,对相同的数据则不存入数据区,以减小编译后的数据量。最后将这些数据区连接起来并生成一个完整的界面数据文件,这个数据文件即可导入到控制器里运行。编译器扫描的流程图如图4 所示。
图4 编译程序流程图
4 结语
用本系统设计的操作界面,不但使数控设备的性能和特点一目了然,而且在操作过程中也带来诸多方便。在没有人机界面时,往往为了适应不同的工件尺寸,操作人员不得不时时改变加工程序,影响加工效率。而采用人机界面后,就可以将加工程序编成一个“傻瓜程序”,将需要改变的工作参数用一些变量代替,操作人员只需将这些变量对应的值输入到界面中相应的位置即可。
综上所述,本软件为用户开发应用界面提供了开放的功能和灵活的方法,也带来方便的操作和效率的提高。软件更重要的优势就是易学易用,完全不需要记忆任何功能指令或坐标值,只要操纵滑鼠,就能完成画面设计。