====== 开发指南 ====== ===== 概览 ===== XT框架是一个由数据驱动的支持多应用多文档多视图的工业软件框架平台。如下图所示,数据以文档(XDocument)为载体和管理中枢,每一种文档都由一套相应的界面代理(UIProxy)基于主框架(MainFrame)为文档提供图形交互服务,数据可以以多种视图形式(XView)显示给用户并接受用户的交互操作,这些视图受界面代理的管理,各种各样的应用功能则通过命令管理器(CommandManager)完成与文档的对接。 {{ pics:dev_Framework.png }} 主框架的界面基本组成控件包括菜单栏、工具栏、属性窗口、消息窗口、选择窗口、脚本窗口、对象树窗口以及功能对话框,在应用层面包含命令管理器、选择器以及文档队列,其中文档队列负责管理数据,命令管理器负责管理功能命令,选择器主要用于功能交互中选择的数据对象的管理。 给定一个应用场景,那么首先需要明确需要关心的数据,由这些数据出发,确定与用户交互的方式,如何让用户创建、修改、删除数据,如何显示给用户等等,接着将工作流程分解为若干个输入输出明确的步骤,对每一个步骤确立具体的交互方式使之成为一个独立的功能,然后把这些功能整合到界面上,最后便构建了应用场景下的一套解决方案。上述过程也是在XT框架下开发应用程序的基本流程: - 定义应用数据; * 定义数据对象管理类:从XManager类继承实现新的管理类 * 定义数据对象类:从XItem继承实现新的对象类; * 界定应用数据集:从XDocument继承实现新的文档类; - 定制应用界面; * 定制显示数据的视图:从XView视图继承实现新的视图类; * 定制对象树:从XTreeModel继承实现新的对象树类; * 定制界面布局:从UIProxy继承实现定制新的界面代理; - 按步骤实现应用功能; * 定制功能:从ICommand继承实现新的功能; - 配置应用方案; * 配置菜单栏:编辑Menubar的配置文件; * 配置工具条:编辑Ribbon配置文件; * 配置导航栏:编辑Toolbar配置文件; * 配置对象树设置:编辑TreeContext配置文件; * 配置应用方案:编辑Solution文件; 在完成以上开发之后,运行时主框架首先按照应用方案的solution文件载入库,在载入库的过程中实现数据对象的注册、应用功能的注册,在主框架界面启动完成之后,数据对象、应用功能都变为可用,如用户新建一个文档,主框架会根据文档的信息自动创建对应的界面代理并配置功能入口、布局各通用控件,然后便进入数据与用户的循环交互过程中直至用户关闭程序。 在需要应用数据与第三方数据转换时,还需要开发相应的接口: * 定制接口:从XInterface继承实现新的转换接口 现在以结构分析应用为例,它的目的是分析物理模型在特定约束与载荷条件下的应力分布,分析方法是使用有限元方程对离散后的物理模型求解,这里需要考虑的数据有:几何数据、网格数据、材料数据、约束与载荷条件数据、分析设定数据、应力结果数据,这些数据有不同的构造方式和交互方式,其中几何数据从几何模型文件导入,需要三维渲染,允许用户用鼠标操作模型;网格数据由网格划分程序对几何模型划分获得,允许用户查看网格单元和节点;材料数据是物理模型的物性参数,它在有限元方程中使用;约束与载荷加载在几何物理模型上,它是有限元方程的边界条件;分析设定数据是对如何求解方程的一个设定;应力结果数据是物理模型的应力分布,由求解器求解得到,用户需要通过云图的形式看到应力分布;接着继续考虑工作流程,首先导入几何模型,然后对几何模型进行网格划分,为各部件指定材料,并定义约束和载荷等边界条件,在设置求解设定之后导出文件给求解器进行求解,求解完成之后查看结果的应力云图。 ===== 定义应用数据 ===== * [[dev_guide:declManager|定义数据对象管理类]] * [[dev_guide:declItem|定义数据对象类]] * [[dev_guide:declDocument|界定应用数据集]] * [[dev_guide:useModel|使用模型对象]] * [[dev_guide:predefitems|常用预置对象库]] * [[dev_guide:commonItem|常用数据对象扩展]] ===== 定制应用功能 ===== * [[dev_guide:adddlgcommand|添加对话框功能]] * [[dev_guide:addstatuscommand|添加状态功能]] ===== 定制应用界面 ===== * [[dev_guide:addview|定制视图类]] * [[dev_guide:adduiproxy|定制界面布局]] ===== 配置应用方案 ===== * [[dev_guide:configMenubar|配置菜单]] * [[dev_guide:configToolbar|配置工具条]] * [[dev_guide:configRibbon|配置导航栏]] * [[dev_guide:configTreeContext|配置对象树]] * [[dev_guide:configSolution|配置解决方案]] ===== 定制数据接口 ===== * [[dev_guide:addinterface|定制接口]]