APP下载

五性综保可视化建模图形框架开发与应用

2016-02-22江志炜

航空标准化与质量 2016年6期
关键词:画布鼠标绘制

江志炜

(中航工业综合技术研究所,北京 100028)

五性综保可视化建模图形框架开发与应用

江志炜

(中航工业综合技术研究所,北京 100028)

基于五性综保相关的仿真建模软件需求,参考了国外一些著名的建模软件,借鉴了WPF(Windows Presentation Foundation,用户界面框架)的图形化技术,采用面向对象模式设计,实现了支持仿真平台图像化建模的图形框架。

五性综保;可视化;仿真;图形框架;画布;图元

随着科学技术的进步,现代装备变的越来越复杂,如何提高装备的战备完好性(或者可用性),需要对装备的全寿命周期内的可靠性、维修性、测试性、安全性、保障性(简称五性综保)信息进行收集、分析和预测。

利用模型仿真方法,借助计算机技术,可以更加准确地得到五性综保不同类型的指标分析数据,为装备的设计、研发、使用提供正确的指导,比传统的数学解析方法得到的数据更加精确有效,同时工作效率提高。

国外有很多基于语言建模的仿真工具,如使用Modelica、Altarica语言编写代码生成模型。它们的缺点:用户需要具备语言编程的能力,在编程过程中大量的输入,很容易导致语法出错。而图形化建模,利用计算机可视化技术,对工程中的设备进行抽象,转化为屏幕上的图形,使得用户建模更加简单、直观、高效。

我们参与开发的五性综保仿真工具,有很多都实现了具有可视化建模的能力,例如测试性建模与分析工具通过图形化进行对信号流建模,效能仿真平台使用网络图的建模方式进行保障任务建模;安全性仿真与分析平台基于图形模块化实现Altaric建模等等。

1 总体结构

图形框架以高效、快速、稳定,并且能够支持不同开发环境为开发目标。总体划分为3大块,核心框架(GraphicEditor)、基于.Net4.0的图形扩展(GraphicEditorExtension)以及图形持久化(Serializer)。如图1所示。

1.1 核心框架

图形框架的核心,包含画布、图元,封装了图形框架最常用的功能,提供具有扩展功能的接口。作为一个独立的基础框架,通过高层编程抽象,使得开发人员在不同开发环境下都能进行快速开发。a

图1 总体结构

1.2 图形扩展

图形框架,在.Net4.0的基础上对图形框架进行了常用扩展,实现了IPanelOwner类,丰富了多种图元,及配套实现各个图元的测量、绘画、新增处理,提供基础菜单剪切、复制、粘贴菜单,删除功能。

1.3 图形持久化

定义了图和图元的持久化接口。

1.4 画布

画布(DrawingPanel)作为图形框架最重要的组成,对布局、绘画、交互操作进行协调管理,同时通过开放接口,业务系统可以根据实际需求进行扩展。

1.5 图元

作为画布上可显示元素,每个图元都继承自VisualElement(可操作图元抽象类),VisualElement作为绘图对象,所有的布局、绘画、焦点、事件都是针对它来进行,同时VisualElement也是可操作的对象,如选择、拖动、拉伸操作。

布局、绘画、交互、事件、持久化和图形扩展见本文后续内容。

2 核心框架分层

为了简化和清晰图形框架的实现逻辑,对图形框架的内部逻辑进行归类和划分,图形框架从设计上分为布局层、绘画层、交互层,层次结构如图2。

图2 层次结构

2.1 布局层

在3层结构中,布局层处于最底层,当布局层接收到布局请求,通过对图元进行测量、排列,生成布局信息,然后把布局信息通知到绘画层进行绘制。

这一层的布局计算由布局引擎(GraphicLayout Engine)来实现,布局引擎在测量图元的过程中通过测量工厂获取相应的图元测量器(IMeasure),然后根据测量器来计算图元的尺寸,最终决定画布的尺寸范围。布局引擎是框架内部类,不对外公开。

图形框架不提供任何滚动支持,当触发布局,画布尺寸发生变化,通过事件通知外部,由外部来实现滚动。

2.2 绘画层

加载Graphic模型文件或外部操作导致Graphic模型的布局发生变化,框架通知绘画层进行重新绘制。

绘画层根据布局和样式信息,将图元绘画到画板上。绘画层根据功能把绘画划分为3类,图元绘画(IRender)、选择过程绘画(ISelectingRender)、改变尺寸绘画(ISizeElementRender)。

2.2.1 图元绘画

图形框架定义了IRender接口,负责协调和通知图元绘制,具体的绘画过程由外部应用程序根据自身采用的技术来实现,比如WPF可以通过DrawingContext或者Graphics进行绘画。图形化建模大部分情况下都使用到矩形、椭圆、直线,在GraphicEditorExtension层中对上述3种图元进行了绘画封装(RectangleRender、EllipseRender、PolyLineRender),同时业务系统可以进一步对其进行扩展。

Render()方法针对图元外观进行绘画,其中绘画要素包括位置、尺寸、形状、背景色、文本、边框、边框宽度等等。Render()方法的接收参数为IGraphicContext(绘图上下文)、 VisualElement(绘画图元),从接收参数可见图元并非直接绘制到DrawingPanel上,而是绘制到IGraphicContext对象中。

IGraphicContext由IPanelOwner统一创建,DrawingPanel只负责管理绘制及刷新。派生类图元可以重写Render()方法来实现个性化绘制。

RenderSelectedAdorner()方法在图元被选中时调用,用于绘制带装饰器的外观,绘制原理与Render()方法一致。

RenderForDraging()方法用于绘制图元拖动效果,比Render()方法多了位置参数。

2.2.2 选择过程绘画

选择过程绘画是对画布效果的一种绘画,而图元选中状态绘画是针对图元,两者响应的操作行为是不一样的。选择过程绘画是按住鼠标,然后框选图元的过程,当画布接收到LeftMouseDown事件,记录当前鼠标位置Point1,及鼠标Down状态,接着鼠标移动,响应MouseMove事件,同时记录鼠标移动的位置,DrawingPanel通过绘画工厂(IRenderFactory)取到选择绘画器进行选择过程效果绘画。GraphicEditorExtension实现了ISelectingRender类,通过绘制矩形的方式把选中的图元“框”选起来。

2.2.3 改变图绘画

对选中的一个或多个图元进行拉伸,分3步进行绘制。首先遍历所有被选中的图元,并询问它们的尺寸,计算选中区域的位置及尺寸,然后调用方法Render()绘制出带有选中状态修饰的矩形框;接着按照鼠标拖动的方向及距离,调用方法RenderSizing()来绘制选中区域的边框;最后松开鼠标,按选中区域的缩放比例,使用RenderSizingPointElement()方法同步所有被“框”图元的尺寸及位置。GraphicEditorExtension提供了ISizeElementRender的实现类。

2.3 交互层

交互层负责对外部各类编辑操作进行封装,同时维护了已处理的编辑操作列表,保证所有编辑操作处理都可以进行撤销、恢复。

在用户与图形框架的交互过程中,框架把用户界面的请求转换为对Graphic模型的操作请求,这个过程中需要在各个层次进行逻辑转换,以完成用户的请求操作。

在交互层中需要处理两个问题,一是与输入设备的交互管理,二是编辑操作的封装。

2.3.1 输入设备的交互管理

图形框架允许外部模块对框架的交互行为进行扩展,因此对于输入设备的交互管理也必须提供必要的扩展性支持。

在图形框架中需要处理键盘和鼠标的输入事件,在处理过程中,要求当前光标或者鼠标所在的图元都能够有机会处理该事件,如有些图元要求右键鼠标,弹出菜单,列出属性编辑项;双击鼠标,进入下一层子模型。同样,键盘事件在处理不同的图元也可能有不同的要求。

基于上述要求,对输入事件进行封装,分别为鼠标左键单击操作、鼠标右键单击操作、鼠标双击操作、鼠标移动操作进行封装,如图3所示。

图3 鼠标交互接口

2.3.2 图元增加处理

处理鼠标点击画布添加图元的处理行为,包括MouseDown、MouseUp行为处理(业务应用系统可以在此进行个性化处理逻辑,如添加图元的合法性校验),通过CreateElement返回新建图元。GraphicEditorExtension实现部分常用图元添加处理。

2.3.3 编辑操作的封装

作为可视化建模的图形控件,必须具备基本的图形编辑操作功能,包括添加、删除、位置移动、尺寸拉伸,并且支持多个图元一并操作,同时还需要支持对操作的撤销、恢复功能。

在业务系统的开发过程中,不提倡开发人员直接对Graphic模型(Children子图元)进行操作,同时图形框架本身也需要操作Graphic模型完成界面编辑功能,两者的要求和操作方法是一致的,因此可对编辑操作进行封装,形成统一对外接口。GraphicEditor提供的实现如图4。

为保证对Graphic模型的编辑可进行撤销、恢复,图形框架引入Undo与Redo机制,建立编辑操作管理类OperationManager,其内部维护两个操作堆栈,分别是Execute堆栈和UnExecute堆栈。编辑操作执行时,调用操作管理类的方法ExecuteOperation()将编辑操作压入到Execute堆栈中,并执行Redo方法;如果用户需要撤销这次操作,则从Execute堆栈中弹出栈顶元素(编辑操作)并执行Undo方法,同时把编辑操作压入到UnExecute堆栈中;同样如用户要恢复此操作时,则取出UnExecute堆栈中的栈顶操作并执行Execute方法,同时把编辑操作压入到Execute堆栈中。

图4 操作类的类图

3 其它功能

3.1 缩放

缩放用于缩小和放大显示,DrawingPanel提供Scale属性设置,当Scale被设置之后,画布上所有图元都按比例进行布局调整并重绘。Scale初始值为1,如果设置为大于1,即放大,设置为小于1,即缩小,如Scale=1.2,即放大1.2倍。

3.2 持久化

Graphic Designer定义图的持久化器(IGraphic Serializer)并实现XML的持久化类。序列化过程通过遍历子图元,并调用图元持久化器进行单点序列化;反序列逆过程,根据XML节点标签找图元持久化器进行反序列化。

4 图形框架应用

图形框架已经应用到我们的开发项目中,比如测试性建模与分析工具、效能仿真平台、安全性仿真与分析平台、IETM的工作流实现。其中,测试性建模与分析工具是一款基于信号流建模,通过利用模块化推理方法,为用户提供测试性、诊断性的解决方案,要求能够对信号流进行可视化建模,同时要求通过可视化方式提供测试性、诊断性的解决方案;效能仿真平台借助计算机模拟技术进行装备保障性综合试验,对装备的战备完好性及任务持续性进行分析,为保障方案评价及验证提供技术手段,要求平台具备对保障任务的可视化建模;事故动态推演仿真平台基于功能的系统安全性分析,要求把Altarica建模方法通过简便易用的图形化建模方式来实现。下面介绍安全性仿真与分析平台对图形框架的应用。

4.1 安全性仿真与分析平台需求

安全性仿真与分析平台主要用于辅助SAE ARP4754《高度集成或复杂飞机系统适航审定考虑》标准流程的安全性工作,开展需求分析与功能分解、安全性分析、评估与验证工作等工作,将安全性工作与系统研制过程相结合,增加安全性工作结果的一致性和正确性,并提高安全性工作迭代的效率,及时为研制过程提供反馈。

安全性仿真与分析平台以Altarica模型为核心,基于Altarica模型自动进行安全性和可靠性仿真分析。用户通过模型设计功能来创建Altarica模型,模型设计模块包含增加模型元素、编辑模块属性、删除模型元素、连接模型元素、模型复制和粘贴、创建模型层级、撤销和恢复等功能。

以反应堆泵水系统为例进行介绍,用Altarica语言进行模型描述如图5。

泵水系统由蓄水池、水泵和反应堆组成,脚本描述的功能很简单,蓄水池有水,水泵就能正常工作,把水抽到反应堆。在图形建模中,蓄水池、水泵、反应堆等实体对象使用模块来表达,实体间的传递关系通过连接线来体现,如图6。

4.2 Altarica模型设计功能实现

4.2.1 图元扩展

Altarica的模型元素相对来说比较简单,包括模块(Brick Element)、端口(Connector Element)以及连接链(Connection Element)3种,分别继承矩形(Rectangle Element)、椭圆(Ellipse Element)、直线(DirectionConnectionElement)。这些图元不单只是可视化元素,而且还是Altarica数据的载体,除了具备VisualElement行为之外,还持有相应的模型实体。

图5 泵水系统的Altarica描述

图6 泵水系统的图形建模

4.2.2 绘画扩展

在业务处理中,模块被抽象为具有数据传递行为的块状元素,在绘画的时候,需要把输入输出端绘制出来。而端口分输入、输出,以便在展现上能更好区分,需要用不同背景颜色进行绘制。连接线与一把直线差异不大,简单扩展即可。

4.2.3 添加处理扩展

添加处理扩展更多体现在业务行为的处理上。添加模块需要默认生成一系列的数据,比如端口、状态、逻辑关系、事件转移等等。连接两个端口,需要进行合法性校验。

4.2.4 鼠标输入事件扩展

双击模块、端口弹出属性编辑界面。

5 结束语

本文从五性综保的一些建模软件需求出发,提出了使用可视化方式来实现模型构建的方案,基于创新技术实现的图形框架,为五性综保的建模软件提供了基础控件。

对图形框架的设计实现,以及安全性仿真与分析平台的应用介绍,总结得出图形框架能简便、快速地支持五性综保业务系统的应用开发。

图形框架支持WinForm、WPF、Silverlight等.Net开发环境,对于Java平台目前不能直接使用,需要转义框架代码,将在今后继续完善。

[1]Antoine B.Rauzy.AltaRica Data-Flow Language Specifcation -Version 2.1[R].Ecole Polytechnique,2013.

[2]MacDonald,Matthew.Pro WPF in C# 2010:Windows Presentation Foundation in .NET 4[M].3rd ed.Apress.2010.

(编辑:劳边)

V240.2

C

1003-6660(2016)06-0041-05

10.13237/j.cnki.asq.2016.06.010

猜你喜欢

画布鼠标绘制
绘制童话
作品赏析
全球首张人类细胞蓝图绘制成功
在画布上做梦的画家 夏加尔
在画布上做梦的画家 夏加尔
让鲜花在画布上盛开
神秘的不速之客
大师的画布
鼠标折叠笔
45岁的鼠标