FreeCAD文件框架有两个程序入口,一个是通过命令行的方式打开时使用,一个在程序正常运行时使用。 这个流程图列举了三种以命令参数的形式打开文档的方式: 以控制台模式启动 这个模式直接调用App::Application::runApplication(),在这个函数中获取命令行中的参数,通过参数提供的路径打开文档。 以GUI方式启动,单实例模式 这个模式会调用Gui::Application::runApplication(),在这个函数中判断是否是单实例模式。在这个模式里如果程序已经被启动了一次,那么会通过lo…

2022年3月16日 0条评论 5003点热度 2人点赞 大脸猫 阅读全文

FreeCAD中可以同时打开多个工程,每个工程都会有一两个与之对应的视窗,当同时打开多个工程时freeCAD是如何管理这些视窗的呢? 源码中定义了一个叫做BaseView的抽象类,想要与Document(工程对应的数据管理类)与之对应,最好是继承这个类。这个类中实现了一些与Document建立联系的方法,通过这些方法可以将BaseView绑定到Document中,在双方的对象中都可以获取到对方,十分的方便。 class GuiExport BaseView : public Base::BaseClass { TY…

2021年1月23日 0条评论 4648点热度 1人点赞 大脸猫 阅读全文

前言 最近一个接到这样一个需求,需要在FreeCAD的中加入一个自定义的工程文件。这需要搞懂原本框架中的新建工程、打开工程到保存撤销回复再到保存另存的一整套流程,还需要搞懂工程与UI之间的对应关系。于是开始翻看FreeCAD得源代码,一边看一边惊呼,居然还这样操作。然是我才疏学浅,这源代码使我受益匪浅。 整个工程得流程,可以分为三个部分: Command。这部分主要往程序主框架中注册一些命令,如新建、打开、保存等这些基本操作,然后将这些命令放到界面上去供用户使用。 UI。这个主要指工程所对应的ui,比如在一个模型工…

2020年11月26日 0条评论 4863点热度 3人点赞 大脸猫 阅读全文