FreeCAD多文档管理及文档组成

news2024/12/23 2:20:33

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层的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1860655.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视创云展虚拟展厅融入AI智能助手,有哪些优势?

随着科技的日新月异,AI人工智能技术在各行业中已经得到了广泛的应用和实践,正深刻改变着我们的工作和生活方式。 为了给企业的营销展示注入新的活力,视创云展在其虚拟展厅中巧妙融入了「AI智能助手」。当用户沉浸在虚拟展厅的自由探索之中时…

finalize——释放内存

重写 没写的话就按照定义的方法,object的默认方法 system.gc会主动调用垃圾回收器,不会使用finalize方法。需求不大 对于用debug怎么进入jdk源码,ararry.sort的源码进入

ravynOS 0.5.0 发布 - 基于 FreeBSD 的 macOS 兼容开源操作系统

ravynOS 0.5.0 发布 - 基于 FreeBSD 的 macOS 兼容开源操作系统 ravynOS - 一个旨在提供 macOS 的精致性和 FreeBSD 的自由度的操作系统 请访问原文链接:https://sysin.org/blog/ravynos/,查看最新版。原创作品,转载请保留出处。 作者主页…

未来科技中的RTK接收机应用探索

RTK实时差分定位技术(RTK,Real-Time Kinematic),作为高精度定位技术的一种重要手段,已经在地理测绘、测量工程、航空航天等领域取得了广泛应用。随着科技的不断发展,RTK导航接收机的应用领域也日益拓宽。首…

stm32学习笔记---TIM输出比较(理论部分)

目录 TIM简介 定时器类型 基本定时器的结构图 时基单元 预分频器 计数器 自动重装寄存器 主模式触发DAC的功能 通用定时器的结构图 计数器的计数模式 内外时钟源选择和主从触发模式的结构 外部时钟模式2 外部时钟模式1 其他部分 输出比较电路 输入捕获电路 高…

HBase:大数据时代的分布式存储利器

HBase:大数据时代的分布式存储利器 HBase:大数据时代的分布式存储利器1. HBase简介2. HBase特点3. HBase应用场景4. 总结 HBase:大数据时代的分布式存储利器 随着互联网和大数据技术的飞速发展,数据存储和计算需求呈现出爆炸式增…

VMware Workstation环境下,用作测试的客户端,ubuntu安装体验案例

需求说明: 作为学习者,为了学习网络技术,网络操作系统管理技术,学习者首先需要有台计算机,其次需要在自己的计算机安装学习要用到的网络操作系统、模拟软件等。但由于计算机上一般使用的是Windows 10或Windows 7桌面操作系统&…

7款三维地球软件/框架:Google Earth SkylineGlobe,Cesium等

可视化大屏已经不满足于2D和3D展示了,开始向着星辰大海迈进了,本文介绍7款三维地球软件/开发框架,带各位老铁入个门。 1. Google Earth: 大名鼎鼎,Google Earth 是由 Google 开发的一款免费的虚拟地球软件。它提供了全球范围内的…

无线领夹麦克风哪个牌子好,一篇教你无线领夹麦克风怎么挑选!

对于领夹麦克风这一术语,可能在非专业人士听来颇为生僻,然而在互联网行业工作者和短视频博主中,它却是一个常见的必备工具。如果你正计划成为一名短视频创作者,或者即将涉足视频拍摄与直播等互动媒体活动,那么熟悉并掌…

python-九九乘法表(对齐式1)

[题目描述] 输出九九乘法表,输出格式见样例。输入格式: 无输出格式: 输出乘法表,对齐方式见样例输出。样例输入 无样例输出 来源/分类(难度系数:一星) 完整代码展示: #对齐式1 a[] …

【CT】LeetCode手撕—124. 二叉树中的最大路径和

目录 题目1- 思路递归 dfs 思路 2- 实现⭐124. 二叉树中的最大路径和——题解思路 3- ACM 实现 题目 原题连接:124. 二叉树中的最大路径和 1- 思路 模式识别:最大路径和 ——> 递归 递归 dfs 思路 递归公式 sum 自己 左 右 递归中的返回结果…

PowerPaint:强大扩图编辑工具,兼具上下文感知和文本引导对象修复,ComfyUI体验指南

大家好我是极客菌! ComfyUI扩图编辑工具,是一款功能强大的图像编辑软件,集成了多种先进的图像处理技术和创意工具。无论你是想要放大图像、修复图像中的缺陷,还是想要实现上下文感知和文本引导对象修复,ComfyUI都能轻…

TypeError: compilation.getPathWithInfo is not a function

本地运行,npm run dev 正常启动,当修改内容后保存,出现报错,中断编译。 TypeError: compilation.getPathWithInfo is not a function 项目首次能成功运行,热更新时报错而中断; 参考网上的解决办法&#x…

Webpack: 底层配置逻辑

概述 Webpack 5 提供了非常强大、灵活的模块打包功能,配合其成熟生态下数量庞大的插件、Loader 资源,已经能够满足大多数前端项目的工程化需求,但代价则是日益复杂、晦涩的使用方法,开发者通常需要根据项目环境、资源类型、编译目…

Python生成器嵌套太多?使用yield from秒变简洁!

目录 1、yield from基础概念 🌐 1.1 yield关键字回顾 1.2 yield from引入动机 2、yield from深入解析 🧭 2.1 语法与用法 2.2 传递生成器控制权 2.3 与迭代器的高效整合 2.4 与传统yield对比优势 3、实战应用示例 📈 3.1 链接多个生成器 3.2 简化递归生成器实…

什么牌子的开放式耳机好?五大优质机型,新手必看!小白闭眼入系列

音乐技术的不断进步为耳机市场的发展有了更多的选择,开放式耳机成为音乐爱好者们新的一个选择。从最初的基础音质到如今的高解析度音频,开放式耳机经历了一次次的技术革新和升级。这类耳机以开放式不入耳的设计,舒适的佩戴体验著称&#xff0…

C语言实现的飞机票系统解析

前言 操作系统:Windows下运行。如果需要在Linux运行(单机版),则需要修改删除conio.h,自己写个头文件获取键盘输入。我已经写好了getch.h文件,需要将其导入使用。 开发环境:CodeBlocks || VS C…

界面组件DevExpress WinForms v24.1 - 支持DateOnly TimeOnly类型

DevExpress WinForms拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜…

嘀嗒出行项目管理专家和项目管理负责人王禹华受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 嘀嗒出行项目管理专家和项目管理负责人王禹华女士受邀为第十三届中国PMO大会演讲嘉宾,演讲议题为“AI时代项目经理挑战机会和个人成长”。大会将于6月29-30日在北京举办,敬请关注! 议题简要: AI时代对互…

Pyecharts入门

数据可视化 Pyecharts简介 Apache ECharts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时&#…