Developer hub: Difference between revisions
m (29 revisions) |
(Licence->License) |
||
(92 intermediate revisions by 23 users not shown) | |||
Line 1: | Line 1: | ||
<languages/> |
|||
[[Image:Crystal_Clear_app_tutorials.png|right|150]] |
|||
{{TOCright}} |
|||
[[Image:Crystal_Clear_app_tutorials.png|64px]] |
|||
---- |
|||
<translate> |
|||
<!--T:2--> |
|||
This is the place to come if you want to contribute to the development of the FreeCAD software. |
This is the place to come if you want to contribute to the development of the FreeCAD software. |
||
<!--T:3--> |
|||
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 [http://juergen-riegel.net/FreeCAD/Docu/index.php?title=Talk:Developer_hub&action=edit§ion=new the talk page] 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--> |
|||
<!--T:4--> |
|||
== Developer Documentation == |
|||
The developer documentation comprises the following sections: |
The developer documentation comprises the following sections: |
||
=== |
=== Compiling FreeCAD === <!--T:33--> |
||
* [[Tracker|Find assistance]] when you have a problem or think you may have found a bug |
|||
* [[CompileOnWindows|Compiling on Windows]] |
|||
* [[CompileOnUnix|Compiling on Unix]] |
|||
* [[Licence|Licence details]] about the FreeCAD licences |
|||
* [[Third Party Libraries]] |
|||
* [[Third Party Tools]] |
|||
* [[Start up and Configuration]] |
|||
* [[Source documentation]] |
|||
<!--T:5--> |
|||
=== Build Support Tools === |
|||
* [https://github.com/FreeCAD/FreeCAD Github repo]. If you are new to git, read [[Source code management|Source code management]] |
|||
* The [[FreeCAD Build Tool]] |
|||
* [[Compile_on_Docker|Compile with Docker]] |
|||
** [[Module Creation|Adding an application module]] to FreeCAD |
|||
* [[Compile_on_Windows|Compiling on Windows]] |
|||
* [[Debugging]] FreeCAD |
|||
* [[Compile_on_Linux|Compiling on Linux]] |
|||
* [[Testing]] FreeCAD |
|||
* [[Compile_on_MacOS|Compiling on MacOS]] |
|||
* [[License|License details]] about the FreeCAD licences |
|||
* [[Third Party Libraries|Third Party Libraries]] |
|||
* [[Third Party Tools|Third Party Tools]] |
|||
* [[Start up and Configuration|Start up and Configuration]] |
|||
* [[Source documentation|Source documentation]] |
|||
* Use the [[Tracker|bug tracker]] when you have a problem or think you may have found a bug |
|||
=== |
=== Packaging === <!--T:19--> |
||
<!--T:26--> |
|||
[[Packaging|Packaging]] consists in taking the compiled binaries and Python source files of FreeCAD, and distributing them for use in a particular system. |
|||
<!--T:20--> |
|||
* [[Linux_packaging|Linux packaging]] |
|||
** [[Debian_development|Debian development]] |
|||
** [[Debian_Unstable|Debian Unstable]] |
|||
** [[Git_buildpackage|Git buildpackage]] |
|||
* [[Windows_packaging|Windows packaging]] |
|||
* [[MacOS_packaging|MacOS packaging]] |
|||
=== Build Support Tools === <!--T:34--> |
|||
<!--T:6--> |
|||
* The [[FreeCAD Build Tool|FreeCAD Build Tool]] |
|||
** [[Workbench_creation|Adding an application module]] to FreeCAD |
|||
* [[Debugging|Debugging]] FreeCAD |
|||
* [[Testing|Testing]] FreeCAD |
|||
* [[Compiling (Speeding up)|Compiling (Speeding up)]] FreeCAD |
|||
* [[Continuous Integration|Continuous Integration]] |
|||
=== Modifying FreeCAD === <!--T:35--> |
|||
<!--T:7--> |
|||
* Understanding [[The FreeCAD source code|The FreeCAD source code]] |
|||
* [[Tracker#Submitting_patches|Submitting patches]] |
|||
* Add [[Gui Command|Features]] to FreeCAD or a Workbench |
* Add [[Gui Command|Features]] to FreeCAD or a Workbench |
||
* [[Branding]] or ''how to give FreeCAD a unique look'' |
* [[Branding|Branding]] or ''how to give FreeCAD a unique look'' |
||
* [[Artwork|Artwork]] we made for FreeCAD, that you can freely reuse |
|||
* [[Artwork_Guidelines|Artwork guidelines]] standards for icons |
|||
* [[Localisation|Translating FreeCAD]] |
* [[Localisation|Translating FreeCAD]] |
||
* [[Extra python modules]], or ''how to extend python functionality within FreeCAD'' |
* [[Extra python modules|Extra python modules]], or ''how to extend python functionality within FreeCAD'' |
||
* [[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 |
|||
* [[Wrapping_a_Cplusplus_class_in_Python|Wrapping a C++ class in Python]] shows how to create the Python wrapper for a C++ class |
|||
* [[NewFeatureCheckList_C++|Checklist for adding a Feature to a C++ workbench]] provides an aid for contributors. |
|||
<!--T:16--> |
|||
* [[Translating an external workbench|Translating an external workbench]] |
|||
=== 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. |
|||
<!--T:14--> |
|||
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 |
|||
<!--T:15--> |
|||
Latest pdf preview can be downoaded from [https://github.com/qingfengxia/FreeCAD_Mod_Dev_Guide/tree/master/pdf pdf folder] of this git repo |
|||
=== Internals === <!--T:21--> |
|||
==== OpenCascade Documentation ==== <!--T:8--> |
|||
<!--T:17--> |
|||
OpenCascade is a software development platform for 3D surface and solid modeling, CAD data exchange, and visualization, mostly in the form of C++ libraries. |
|||
<!--T:18--> |
|||
* [http://opencascade.wikidot.com/romansarticles Roman Lygin's tutorials] |
|||
* [https://dev.opencascade.org/cdoc/overview/html/index.html Full Online Documentation] |
|||
* [https://dev.opencascade.org/doc/refman/html/index.html Reference Manual] |
|||
* [http://opencascade.wikidot.com The openCascade wiki] (currently containing ?? Chinese spam) |
|||
==== File format ==== <!--T:27--> |
|||
<!--T:28--> |
|||
[[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--> |
|||
<!--T:23--> |
|||
* [https://forum.freecadweb.org/viewtopic.php?f=10&t=36355 Sketcher Solver Architecture Booklet] (forum thread), [https://github.com/abdullahtahiriyo/FreeCADBooks/tree/master/FreeCAD_Solver_Architecture source] in GitHub. |
|||
* [https://github.com/FreeCAD/FreeCAD/blob/master/src/Mod/Sketcher/App/planegcs/ PlaneGCS solver] in the FreeCAD source code; important files are [https://github.com/FreeCAD/FreeCAD/blob/master/src/Mod/Sketcher/App/planegcs/GCS.cpp GCS.cpp] and [https://github.com/FreeCAD/FreeCAD/blob/master/src/Mod/Sketcher/App/planegcs/SubSystem.cpp SubSystem.cpp]. |
|||
* [https://forum.freecadweb.org/viewtopic.php?f=9&t=29192 Recent Several Sketcher improvements]. |
|||
<!--T:24--> |
|||
The sketcher solver isn't perfect, as there are some issues with numerical precision when using large values, see [https://forum.freecadweb.org/viewtopic.php?f=10&t=40502 Adventure of fixing sketcher solver for large sketches]. |
|||
<!--T:25--> |
|||
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: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 |
|||
to reach a state where we can compete with commercial software. |
|||
<!--T:39--> |
|||
[[FreeCAD_1.0_Development_Cycle|FreeCAD 1.0 Development Cycle]] |
|||
== Community == <!--T:30--> |
|||
<!--T:31--> |
|||
* [ircs://irc.libera.chat:6697/freecad IRC channel] ,synchronized with [https://gitter.im/FreeCAD/FreeCAD gitter channel] |
|||
* [https://forum.freecad.org/viewforum.php?f=6 Development forum] |
|||
<!--T:10--> |
|||
* [[Development roadmap|Development roadmap]] |
|||
<!--T:11--> |
|||
== Credits == |
== Credits == |
||
[[Contributors]] |
[[Contributors|Contributors]] |
||
</translate> |
|||
{{Devdocnavi}} |
|||
{{Userdocnavi{{#translation:}}}} |
|||
[[Category:Hubs{{#translation:}}]] |
|||
[[Category:Developer Documentation{{#translation:}}]] |
Latest revision as of 16:24, 4 April 2024
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
- Github repo. If you are new to git, read Source code management
- Compile with Docker
- Compiling on Windows
- Compiling on Linux
- Compiling on MacOS
- License details about the FreeCAD licences
- Third Party Libraries
- Third Party Tools
- Start up and Configuration
- Source documentation
- Use the bug tracker when you have a problem or think you may have found a bug
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
- The FreeCAD Build Tool
- Adding an application module to FreeCAD
- Debugging FreeCAD
- Testing FreeCAD
- Compiling (Speeding up) FreeCAD
- Continuous Integration
Modifying FreeCAD
- Understanding The FreeCAD source code
- Submitting patches
- Add Features to FreeCAD or a Workbench
- Branding or how to give FreeCAD a unique look
- Artwork we made for FreeCAD, that you can freely reuse
- Artwork guidelines standards for icons
- Translating FreeCAD
- Extra python modules, or how to extend python functionality within FreeCAD
- Google Summer of Code get involved via Google's student support program
- Fine-tuning shows different options and parameter switches that can overcome problems
- Wrapping a C++ class in Python shows how to create the Python wrapper for a C++ class
- Checklist for adding a Feature to a C++ workbench provides an aid for contributors.
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.
- Roman Lygin's tutorials
- Full Online Documentation
- Reference Manual
- The openCascade wiki (currently containing ?? Chinese spam)
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
- Sketcher Solver Architecture Booklet (forum thread), source in GitHub.
- PlaneGCS solver in the FreeCAD source code; important files are GCS.cpp and SubSystem.cpp.
- Recent Several Sketcher improvements.
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.
Community
- IRC channel ,synchronized with gitter channel
- Development forum
Credits
![](/images/thumb/9/94/User_hub.png/24px-User_hub.png)
- 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, Arch, Assembly, CAM, Draft, FEM, Inspection, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Surface, TechDraw, Test Framework
- Hubs: User hub, Power users hub, Developer hub