Developer hub: Difference between revisions

From FreeCAD Documentation
mNo edit summary
(Relocated the icon for consistency with other hubs)
(17 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
[[Image:Crystal_Clear_app_tutorials.png|64px]]
----
__NOTOC__
<translate>
<translate>

<!--T:1-->
[[Image:Crystal_Clear_app_tutorials.png|right|150]]


<!--T:2-->
<!--T:2-->
Line 11: Line 11:
These pages are in the early stage of development. If you can't find the information you are looking for, or have found useful information somewhere we have not linked to, then please leave a comment on the [http://forum.freecadweb.org/index.php?sid=5f84150e79db8842e277b042077097ff forum] and someone will look into it (or, if you are feeling bold, why not edit this page directly!).
These pages are in the early stage of development. If you can't find the information you are looking for, or have found useful information somewhere we have not linked to, then please leave a comment on the [http://forum.freecadweb.org/index.php?sid=5f84150e79db8842e277b042077097ff forum] and someone will look into it (or, if you are feeling bold, why not edit this page directly!).


== Developer Documentation == <!--T:32-->


== Developer Documentation == <!--T:4-->
<!--T:4-->
The developer documentation comprises the following sections:
The developer documentation comprises the following sections:


=== Compiling FreeCAD === <!--T:5-->
=== Compiling FreeCAD === <!--T:33-->

<!--T:5-->
* [https://github.com/FreeCAD/FreeCAD Github repo]. If you are new to git, read [[Source code management|Source code management]]
* [https://github.com/FreeCAD/FreeCAD Github repo]. If you are new to git, read [[Source code management|Source code management]]
* [[Compile_on_Docker|Compile with Docker]]
* [[Compile_on_Docker|Compile with Docker]]
Line 41: Line 44:
* [[MacOS_packaging|MacOS packaging]]
* [[MacOS_packaging|MacOS packaging]]


=== Build Support Tools === <!--T:6-->
=== Build Support Tools === <!--T:34-->

<!--T:6-->
* The [[FreeCAD Build Tool|FreeCAD Build Tool]]
* The [[FreeCAD Build Tool|FreeCAD Build Tool]]
** [[Module_Creation|Adding an application module]] to FreeCAD
** [[Workbench_creation|Adding an application module]] to FreeCAD
* [[Debugging|Debugging]] FreeCAD
* [[Debugging|Debugging]] FreeCAD
* [[Testing|Testing]] FreeCAD
* [[Testing|Testing]] FreeCAD
Line 49: Line 54:
* [[Continuous Integration|Continuous Integration]]
* [[Continuous Integration|Continuous Integration]]


=== Modifying FreeCAD === <!--T:7-->
=== Modifying FreeCAD === <!--T:35-->

<!--T:7-->
* Understanding [[The FreeCAD source code|The FreeCAD source code]]
* Understanding [[The FreeCAD source code|The FreeCAD source code]]
* [[Tracker#Submitting_patches|Submitting patches]]
* [[Tracker#Submitting_patches|Submitting patches]]
Line 60: Line 67:
* [[Google Summer of Code|Google Summer of Code]] get involved via Google's student support program
* [[Google Summer of Code|Google Summer of Code]] get involved via Google's student support program
* [[Fine-tuning|Fine-tuning]] shows different options and parameter switches that can overcome problems
* [[Fine-tuning|Fine-tuning]] shows different options and parameter switches that can overcome problems
* [[Wrapping_a_Cplusplus_class_in_Python|Wrapping a C++ class in Python]] shows how to create the Python wrapper for a C++ class


<!--T:16-->
<!--T:16-->
* [[Translating an external workbench|Translating an external workbench]]
* [[Translating an external workbench|Translating an external workbench]]


=== Module developer's guide === <!--T:13-->
=== Module developer's guide === <!--T:36-->

<!--T:13-->
[https://github.com/qingfengxia/FreeCAD_Mod_Dev_Guide FreeCAD Mod Dev Guide]: This is an ebook under writing on github, please fork and send pull request to contribute.
[https://github.com/qingfengxia/FreeCAD_Mod_Dev_Guide FreeCAD Mod Dev Guide]: This is an ebook under writing on github, please fork and send pull request to contribute.


Line 99: Line 109:


<!--T:28-->
<!--T:28-->
[[File_Format_FCStd|File Format FCStd]]. The files created with FreeCAD are {{incode|.zip}} files that include the BREP geometry, as well as XML data that describes the document.
[[File_Format_FCStd|File Format FCStd]]. The files created with FreeCAD are {{incode|.zip}} files that include the [https://en.wikipedia.org/wiki/Boundary_representation BREP] geometry, as well as XML data that describes the document.


==== Sketcher solver ==== <!--T:22-->
==== Sketcher solver ==== <!--T:22-->
Line 114: Line 124:
The development of a new solver architecture could improve the way the solver is used both in the [[Sketcher Workbench|Sketcher Workbench]], and for assembly of 3D bodies. See [https://forum.freecadweb.org/viewtopic.php?f=20&t=40525 Reimplementing constraint solver].
The development of a new solver architecture could improve the way the solver is used both in the [[Sketcher Workbench|Sketcher Workbench]], and for assembly of 3D bodies. See [https://forum.freecadweb.org/viewtopic.php?f=20&t=40525 Reimplementing constraint solver].


== Roadmap == <!--T:9-->
== Roadmap == <!--T:37-->

<!--T:9-->
FreeCAD, though usable in certain areas, is at the beginning of a long way into the CAD mainstream. There is still a lot to do
FreeCAD, though usable in certain areas, is at the beginning of a long way into the CAD mainstream. There is still a lot to do
to reach a state where we can compete with commercial software.
to reach a state where we can compete with commercial software.


<!--T:38-->
[[0.20_Development_Cycle|0.20 Development Cycle]]
[[0.20_Development_Cycle|0.20 Development Cycle]]



Revision as of 14:39, 21 January 2022



This is the place to come if you want to contribute to the development of the FreeCAD software.

These pages are in the early stage of development. If you can't find the information you are looking for, or have found useful information somewhere we have not linked to, then please leave a comment on the forum and someone will look into it (or, if you are feeling bold, why not edit this page directly!).

Developer Documentation

The developer documentation comprises the following sections:

Compiling FreeCAD

Packaging

Packaging consists in taking the compiled binaries and Python source files of FreeCAD, and distributing them for use in a particular system.

Build Support Tools

Modifying FreeCAD

Module developer's guide

FreeCAD Mod Dev Guide: This is an ebook under writing on github, please fork and send pull request to contribute.

Chapters:

  • Overview and Software Architecture
  • Source code structure
  • Base and App module
  • Gui module
  • Python wrapping
  • Modular design
  • Fem module source analysis (mixed C++ and Python)
  • Development of CFD Module (pure Python)
  • Module testing and debugging
  • Contribute code with git

Latest pdf preview can be downoaded from pdf folder of this git repo

Internals

OpenCascade Documentation

OpenCascade is a software development platform for 3D surface and solid modeling, CAD data exchange, and visualization, mostly in the form of C++ libraries.

File format

File Format FCStd. The files created with FreeCAD are .zip files that include the BREP geometry, as well as XML data that describes the document.

Sketcher solver

The sketcher solver isn't perfect, as there are some issues with numerical precision when using large values, see Adventure of fixing sketcher solver for large sketches.

The development of a new solver architecture could improve the way the solver is used both in the Sketcher Workbench, and for assembly of 3D bodies. See Reimplementing constraint solver.

Roadmap

FreeCAD, though usable in certain areas, is at the beginning of a long way into the CAD mainstream. There is still a lot to do to reach a state where we can compete with commercial software.

0.20 Development Cycle

Community

Credits

Contributors