Topological Naming Project

This page is dedicated to the description of the Google Summer of Code project idea regarding topological naming. For the topic in itself please see Naming project. The linked wiki page can also serve as a starting point to get into the naming problem.

Outline
FreeCADs is a parametric modeling system, hence different modeling steps depend on one or multiple previous steps. Changes done to one object propagate through the modeling history to all dependend objects. This is achived through a linking system, implemented with properties. this linking is very robust when done on a object basis, however, many links need to be more fine grained and hence link to subparts of a certain object. In the Part workbench environment for example many links go to special topology entities like vertices, edges or faces. The stability of those links depend on the exact naming of the topology elements after a recompute. This is currently not guranteed within freecad, wich can lead to many errors in the dependend modeling steps after simple changes to a base object. As the current development direction of FreeCAD seems to lead to a stronger use of those links the naming issue needs to be resolved.

The GSoC project aims at laying the foundation to solve this issue in a theoretical manner and to prove the choosen approach in a prototype implementation.

Details

 * 1) Get familiar with opencascade, FreeCADs geometric modeling kernel, and grasp how the topology data structure works and how algorithms share, change and generate topology. Occ also provides support for topological naming, understanding how this works is also required. Preferable the student  already worked with opencascade, as the library is complex and getting into takes it's time.
 * 2) Get familiar with FreeCADs linking system and how it links to topology entities in the opencascade datastructures. It is also important to understand the usage of occ in FreeCAD, the use of a dedicated topology class combined with direct use of occ algorithms outside of that class. This dual approach may not be ideal for a solution of the naming problem, hence a good understanding of it is required to propose possible unification strategy
 * 3) Go through books and papers to study possible topology naming algorithms and compare them to the occ approach. It is essential to evaluate all available possibilities in context of FreeCADs architecture to choose one which fits into it. A short list of intros can be found on Naming project.
 * 4) Provide a first prototype implementation of the chosen approach within FreeCAD. This may include necessary changes to FreeCADs handling of topology in the shape class and in features. The implementation requires a set of test cases and an integration into the available test system to ensure its stable working..

Expected Outcome

 * 1) A extension of Naming project to include the reasoning for the chosen route of action, including references and comparisons of different algorithms.
 * 2) A prototype implementation within FreeCAD to show the working algorithm
 * 3) A set of test cases integrated into the available test system which show major cases of the topological naming problem and how they are resolved by the prototype implementation

Future Possibilities
If this project is finished successfully a full integration into the FreeCAD source can be part of further contribution or even a own GSoC project

Skills

 * Programming language C++
 * Deep understanding and use of APIs from FreeCAD and opencascade
 * Ability to read and understand scientific texts and papers
 * Knowledge of 3D modeling, topology and computational geometry is a plus

Difficulty
Hard