FreeCAD多文档管理及文档组成

FreeCAD的Application和Document都分为App和Gui两层。

1.App::Application功能

  • App层的Application主要包含两个功能:管理文件和管理配置。
  1. 分析App::Application的成员变量。

App::Application具有一个存储文档对象的容器DocMap以及其他管理文档用到的变量。另外App::Application还定义了一系列的接口用于创建、销毁、操作文档。

2.创建文档的流程

①获取一个有效的文档名

②创建文档

③引出文档事件到Application内(将各个文档的事件连接到Application中,然后Application统一产生事件,各个组件响应Application的事件)

④设置Python层属性,发出新建文件事件

App::Application还还包含成员变量:

这些变量都是与软件配置相关的参数,定义了软件的一些行为。App::Application还有许多方法用来读取和设置这些配置参数。

从以上可以看出,App::application主要功能就是管理文档和管理配置。另外该类还提供了一些初始化接口,用于程序启动时初始化程序环境。

3.App::Document功能

分析其成员变量:

以上这些变量都是文档本身的属性,用于文件名、路径、创建者、创建日期等等信息。

以上变量是与文档的撤销重做功能有关的成员变量,从这里可以看出,FreeCAD的撤销重做栈是以文档为单位的。

以上变量是Document的主要数据内容的存储容器,可以看出,Document是由一些列的DocumentObject对象构成的。

4.Gui::Application功能

分析其成员变量:

该类只有两个变量:ApplicationP和_pcWorkbenchDictionary。其中

_pcWorkbenchDictionary是存储“工作台Workbench”的python词典,可以看出,FreeCAD Workbench的概念只存在于Gui层。

ApplicationP中保存着一系列的Gui::Document以及App::Document和Gui::Document的对应关系,同时包含宏管理器macroMngr和命令管理器commandManager。可以看出,FreeCAD的命令体系和宏脚本体系都是建立在Gui层上的。

分析其成员函数:

从以上成员函数可以看出,Gui::Application主要实现了操作文档、发送文档事件到视图、响应和转发文档操作时间等接口。

Gui层的Application除了是Gui::Document的容器之外,还负责连接视图与文档、转发文档事件、保持App层和Gui层的Document的对应关系的功能,并管理程序的命令及工作台。

5.Gui::Document功能

分析其成员变量:

从以上可以看出,Gui::Document主要数据内容为一系列的

ViewProviderDocumentObject,可以认为Gui::Document就是一系列的ViewProviderDocumentObject的集合,但是其中并没有撤销重做相关的事宜,所以对于Gui层属性的改变并不能被撤回。

此外,Gui::Document还存储了一系列相关的view视图,用于将这些数据进行可视化显示;还存储了一些用于连接连接组件信号的Connection,用于控制组件之间信号的连接状态。

分析Gui::Document的成员函数:

以上成员函数的功能主要是响应App层的Document的操作事件、产生Gui层的Document的操作事件。

以上成员函数主要处理Document视图相关的内容。

6.总结

通过以上分析可以看出,App层的Document主要存储实质性的数据DocumentObject,而App层的Application用来存储和管理App层的Document。Gui层的Document主要存储App层的Document所对应的显示数据,Gui层的Application则管理Gui层的Document以及工作台、命令管理器等Gui层的内容。

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值