最近在做一个CAD系统.首先声明没有经验作这样的系统.
首先介绍该系统,我们把零件定义成XML文件,然后通过拖放得方式放到绘图区域中.
最后保存成XML文件,当然需要完成大部分的CAD的功能,比如说描画,吸附,零件组装,
分组等,比较有特色的是某个零件仅仅能在另外一个零件上,比如说螺丝孔,必须位于结构钢板上,不能独立存在.
我在进行架构设计的时候,考虑到分散开发和目前的流行的架构.
制定了如下的架构.
XML 解析 :负责把XML文件解析成一个可以描画得类
描画: 负责把XML解析的结果描画到画布上
选择: 负责根据命令和零件的类型 显示不同的选择框,方便进行下一步操作
命令控制: 负责生成一系列的动作
运动控制: 负责零件的运动轨迹的控制
DO/Undo: 负责撤销的动作
界面生成: 专门有一个XML文档 负责描述界面的样式,根据XML文档可以生成不同的界面样式.
XML 生成: 负责把画面上的零件以及位置保存到一个XML里面.
在整个画面动作区间,传递的仅仅是零件本身的一个实例.
每个模块中间都是靠这个实例还进行传递的.
这样设计的目的是在零件增加的时候不需要更改代码,可以自由添加零件.
只要零件符合要求,
有点类似于插件的方式.
想和大家讨论,这样的设计是否合理,以及在类似的系统中,如何进行合理的架构设计.
------解决方案--------------------------------------------------------
感觉似乎还没到架构设计的阶段。如果能继续把要实现的主要功能再分析的清楚、细致一些,对架构设计会有更多帮助。
加油!
------解决方案--------------------------------------------------------
恩,明白你的想法。可以先做个简单的架子当原型使。顺便熟悉一下此类系统的设计。好的架构需要一定的经验积累,包括成功和失败的经验。其实这个系统里面图形学的内容是比较多的。不知道你打算在什么平台上开发。如果有比OpenGL或者DirectX更高的开发平台,你应该可以省了很多麻烦。但通用性可能差一些。另外,这个系统中,模型间几何关系的确定等也很重要,否则无法保证视觉和实际几何关系是一致的。