本文共 2487 字,大约阅读时间需要 8 分钟。
FreeCADMain主要用于根据配置参数启动FreeCAD软件,核心功能包括以下几个方面:
配置参数管理
FreeCADMain能够生成默认配置参数,解析用户输入参数,并基于配置参数定制FreeCAD的启动特性。崩溃信息处理
当软件意外崩溃时,FreeCADMain会将堆栈信息导出到crash.dmp文件(默认路径:%APPDATA%\FreeCAD\crash.dmp)。日志重定向
FreeCADMain支持将标准输出、标准错误、标准日志等重定向到日志文件,方便后续分析和调试。软件启动
根据配置参数,FreeCADMain可以启动FreeCAD的GUI模式或控制台模式_FreeCADGui和_FreeCADMainCmd。通过分析Main.cpp文件可以看出FreeCADMain的主要实现流程主要包括以下几个步骤:
移除PYTHONHOME环境变量
在Linux或MACOSX系统上,FreeCADMain会移除PYTHONHOME环境变量,以避免多个Python版本干扰软件运行。配置默认软件参数
FreeCADMain使用static成员函数Config返回mConfig对象,通过修改mConfig即可设置FreeCAD的运行模式和其他参数。启动模式切换
FreeCAD支持两种运行模式:控盘模式(Console)和图形界面模式(Gui或Internal)。以下是启动模式的具体配置:崩溃信息导出
当程序崩溃时,FreeCADMain会调用dbghelp.dll中的MiniDumpWriteDump函数,将堆栈信息写入mConfig["UserAppData"]中并保存到crash.dmp文件。日志输出重定向
FreeCADBase模块提供了RedirectStdOutput、RedirectStdError和RedirectStdLog类,用于将标准输出、错误信息和日志信息重定向到指定目标。初始化过程
App::Application类的init函数负责完成应用程序的初始化工作。参数和文档管理
FreeCADBase模块中的 RedirectStdOutput、RedirectStdError 和 RedirectStdLog 类主要用于日志输出重定向,其代码实现如下:
RedirectStdOutput实现
ConsoleSigleton的作用
FreeCADMainCmd模块
FreeCADMainCmd的主要职责是构建FreeCADCmd(_d).exe程序。实际上,它直接调用FreeCADApp模块完成FreeCAD的启动。FreeCADMainPy模块
FreeCADMainPy的作用是为Python环境下导入FreeCAD模块。其实现主要包括以下几个步骤:| 参数名称 | 默认值 | 描述 JSONArray|----------------------|---------------------|-------------------------------->>| APPDATA | 操作系统内置环境变量,例如C:\Users\Administrator\AppData | 操作系统用户目录。| AppDataSkipVendor | true | 是否跳过厂商路径。| ExeVendor | FreeCAD | 软件厂商名称。| ExeName | FreeCAD | 软件程序名称。| UserAppData | $(APPDATA)\FreeCAD | 用户应用数据目录。| UserParameter | $(UserAppData)\user.cfg | 用户参数配置文件。| SystemParameter | $(UserAppData)\system.cfg | 系统参数配置文件。
转载地址:http://xsowk.baihongyu.com/