开发者中心
如果您对开发FreeCAD软件有兴趣,想贡献于这个项目的开发,您已经来到了对的地方。以下许多页面可能已经过时。请查阅官方的 FreeCAD 开发者手册以获取最新信息:https://freecad.github.io/DevelopersHandbook/
这些页面还在建设当中。如果您找不到想看的信息,或者在我们尚未链接到的地方看到了有用的信息,那么请在论坛里留下你的评论,会有人进行跟进处理。
开发者文档
开发者文档由以下部分构成:
编译 FreeCAD
- Github 代码库:如果您是 git 新手,请阅读源代码管理
- 在 Docker 上编译
- 在 Windows 上编译
- 在 Linux 上编译
- 在 Mac OS X 上编译
- 许可证细节:关于 FreeCAD 的许可证,以及对源代码和应用程序的允许使用。
- Logo 和其它资源:如何使用 FreeCAD logo 和 FreeCAD 的其它资源。
- 第三方程序库
- 第三方工具库
- 启动和配置
- 源文档
- 当您有问题或您认为发现了一个 bug 的时候,请使用 bug 跟踪。
打包
打包 包括取得编译好的 FreeCAD 的二进制文件和 Python 源文件,并将其分发到某个特定系统中以备使用。
制作支持工具
修改FreeCAD
- 理解 FreeCAD 的源代码
- 提交补丁
- 向 FreeCAD 添加功能或工作台
- 品牌设计或者说“如何让FreeCAD看起来很特别”
- 我们为 FreeCAD 做的美术资源,您可以自由重用
- 美术资源规范列出了图标设计的标准
- 翻译 FreeCAD
- 附加Python模块——在 FreeCAD 里扩展 Python 功能
- 谷歌代码之夏,参与谷歌的学生支持计划
- 微调展示可用于解决问题的不同选项和参数开关
- 在 Python 中封装 C++ 类展示如何为 C++ 类创建 Python 封装
- C++ 工作台新增功能检查清单为贡献者提供帮助
模块开发者指南
FreeCAD模块开发指南:这是一本在Github上写作的电子书。如要贡献,请fork然后发送pull request。
章节:
- 总体情况和软件架构
- 源代码结构
- Base和App模块
- Gui模块
- Python包封
- 模块设计
- FEM模块源代码分析(混合了C++和Python)
- CFD模块的开发(纯Python)
- 模块测试和纠错
- 通过git贡献代码
这个git仓库的最新pdf预览版,可以在pdf文件夹下载到。
内部结构
OpenCascade文档
OpenCascade是一个用于三维曲面和实体建模、CAD数据交换和可视化的软件开发平台,主要采用c++库的形式出现。
文件格式
FCStd 文件格式。
由 FreeCAD 创建的文件是 .zip 格式,其中包含 BREP 几何数据,以及 XML 数据,用于描述文档。
Sketcher 求解器
- Sketcher 求解器架构手册(论坛主题), source GitHub 源码。
- FreeCAD 源码中的 PlaneGCS 求解器;重要文件包括 GCS.cpp 以及 SubSystem.cpp.
- 最近的一些 Sketcher 改进。
Sketcher 求解器并不完美,在使用较大数值时会出现一些数值精度问题,详见 修复大型草图 Sketcher 求解器的历程。
开发新的求解器架构有望改善求解器在 草图工作台 中的使用方式,以及在 3D 实体装配中的应用。详见 [[1](https://forum.freecad.org/viewtopic.php?f=20&t=40525) 重新实现约束求解器]。
路线图
FreeCAD虽然在特定领域已经可用了,但是在跨入主流CAD的路途上,它才走了万里长征第一步。要登上与商业软件一争高下的平台,我们还有很多工作要做。
社区
- IRC channel, 和 gitter channel 同步
- 开发者论坛
鸣谢
- Getting started
- Installation: Download, Windows, Linux, Mac, Additional components, Docker, AppImage, Ubuntu Snap
- Basics: About FreeCAD, Interface, Mouse navigation, Selection methods, Object name, Preferences, Workbenches, Document structure, Properties, Help FreeCAD, Donate
- Help: Tutorials, Video tutorials
- Workbenches: Std Base, Assembly, BIM, CAM, Draft, FEM, Inspection, Material, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Surface, TechDraw, Test Framework
- Hubs: User hub, Power users hub, Developer hub