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 and CAAMmrGenericNaming
 * 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, tackles the point four on the list by reusing faces/edges not changed.


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


 * and some more to come....

Summary of Work To-Date
As of June 13th, 2016, here is a summary of the work that has been done for this project:


 * jrheinlaender produced a lot of code in 2012 that relies heavily on the Sketch workbench for resolving "Robust References"
 * ickby had taken a stab at incorporating some or jrheinlaender's code into modern freecad. This post has a link to his github repo.
 * In 2016, ezzieyguywuf revived jrheinlaender's thread and subsequently started his own. You can see it here
 * ezzieyguywuf developed a "light weight" opencascade program for duplicating the Topological Naming issue and for testing potential solutions. See his github repo here
 * ezzieyguywuf incorporated the opencascade TNaming toolkit into his test code, and showed how this could help resolve some of the Topological Naming issues. See the github repo

Next actions

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