Naming project

This template is the guideline for a FreeCAD development project. It follows the rules of the Getting Things Done (GTD) process. The projects are collected in the Development roadmap.

Purpose and principles
This is an development and design effort to implement a robust topological naming in FreeCAD.

Outcome

 * 1) Interface in (Part::TopoShape) to robustly reference (name) shapes and sub-shapes (faces, edges, vertexes) through a string (sub-element name like "Face1") Here we need a interface to provide Part::TopoShape with all information need to do the Naming, e.g. NewShape, additional information from a algos like deleted faces, modeling step (for 2.) and ......
 * 2) Association of modeling steps with the resulting faces/edges. In case of a big model the user is lost if he/she has hundreds of fillets or bore hole. So if the faces/edges would know what modeling step  it created we could implement a double click on edge/face opens the right feature!
 * 3) An algorithm to keep the naming stable throughout changes in modeling history, like splitting edge/faces and moving vertexes [[File:NamingExample.jpg]]
 * 4) (optional) memory optimized data structure to keep only changed faces/edges in each modeling feature. This will become important when the models get bigger. Its not efficient to copy most of the shape just through. Would be much more effective to share the unchanged faces/edges between Feautures and copy only whats changed.

Brainstorming
A lot was discussed in the "Robust Reference" Post of jrheinlaender.

Others

 * Catia V5 and Topology Naming
 * Naming in OpenCasCade OCAF

Literature & Papers

 * J Kripac, "A mechanism for persistently naming topological entities in history-based parametric solid models"
 * Describes a method to do the first three points in the List. Would say the is the approach used by Catia and OCC-TNaming. At least the interface looks the same. The paper was nowhere to download. I had to buy it. If someone is interested I can send it via E-Mail.


 * Dago AGBODAN, David MARCHEIX and Guy PIERRA, "PERSISTENT NAMING FOR PARAMETRIC MODELS"
 * Interesting approach via shell-graphs, takekels


 * Duhwan Mun and Soonhung Han, "Identification of Topological Entities and Naming Mapping for Parametric CAD Model Exchanges"
 * Very good overview and Examples

Next actions

 * Defining the scope
 * Python test cases
 * Interface in Part::TopoShape (+ python binding)