FreeCAD GUI模块概述
FreeCAD的GUI模块提供了丰富的功能和工具,用于构建和交互用户界面,处理3D视图渲染,管理文档和选择,以及实现任务面板和命令框架等。以下是关键部分的总结:
重要类和功能
- Gui::Application:提供了访问和管理GUI应用的全局接口,如
activeDocument()
方法用于获取当前活动文档。 - Gui::Document:封装了与文档相关的GUI功能,但不直接继承自
App::Document
。 - GUI组件:包括视图(如
BaseView
)、属性视图(PropertyView
和PropertyDockView
)等,用于展示和管理对象属性。
服务API
- Application.h:用于打开和关闭文档文件,控制多个文档。
- Selection.h:处理3D场景中的选择,提供了C++和Python API。
- Command.h:支持脚本和撤销操作。
选择API
- C++ API:通过
SelectionSingleton
类跟踪整个应用的选择状态,提供了如getObjectsOfType()
和getSelection()
等方法。 - Python API:是C++ API的包装,提供了类似
addSelection()
,clearSelection()
,isSelected()
等方法。
ViewProvider框架和3D渲染
- Gui::ViewProvider:是所有在FreeCAD中可视化对象的通用接口,实现了对象从应用层到用户的展示。
- Gui::DocumentObjectViewProvider:与
DocumentObject
在GUI空间中的对应类,提供了展示和管理3D视图和树视图中的对象所需的一切。 - View3DInventor:基于Qt MdiView的3D视图类,管理Open Inventor场景图。
任务视图框架
- TaskView:用于交互式设计的UI框架,支持Qt C++和Python(文件名以TaskPanel开头)。
- TaskDialog和TaskBox:用于构建任务面板的关键类。
命令框架
- 实现了QAction和MainWindow的解耦,通过
Gui::CommandBase
和Gui::Action
类将Qt动作与FreeCAD命令世界连接起来。
国际化(i18n)
- FreeCAD使用Qt的国际化支持,通过
.ts
和.qm
文件进行翻译管理。 - 新的语言可以通过Qt Linguist工具进行翻译,并集成到GUI库中。