Naming project/fr

Ce modèle est la ligne directrice pour un projet de développement de FreeCAD. Il suit les règles de la procédure Getting Things Done (GTD). Les projets sont rassemblés dans la feuille de route du développement.

Buts et principes
Il s'agit d'un développement et d'un effort de conception pour mettre en œuvre un robuste nommage topologique dans FreeCAD.

Plus de détails au sujet du nommage topologique dans Problème de dénomination topologique.

Résultat

 * 1) Interface  en (Part::TopoShape) pour référencer (nommer) des formes et sous-formes (faces, arêtes, sommets), grâce à une chaîne de caractères (nom du sous-élément comme « Face1 ») Nous avons besoin d'une interface de Part::TopoShape avec toutes les informations nécessaires pour le nommage, par exemple NewShape, des renseignements supplémentaires auprès d'une "part", comme supprimer une face, modélisation de l'étape (pour 2) et...
 * 2) Association  des étapes de modélisation avec les faces/arêtes résultantes. Dans le cas d'un grand modèle, l'utilisateur est perdu s'il y a des centaines de congés ou de trous traversants. Donc, si les faces/arêtes savaient à quelle étape de modélisation elles étaient créées, nous pourrions appliquer un double-clic sur arête/face pour ouvrir la bonne fonctionnalité !
 * 3)  Algorithme  pour conserver l'appellation stable tout au long de l'évolution de l'historique de modélisation, comme le fractionnement de bord/faces, et le déplacement des sommets. [[File:NamingExample.jpg]]
 * 4) (facultatif) optimisation de la structure des données en mémoire, seulement pour garder les changements des faces et arêtes de chaque étapes de la modélisation. Cela devient important lorsque les modèles s'agrandissent. Ce n'est pas efficace pour copier la plupart des formes juste "à travers". Il serait beaucoup plus efficace de partager des faces/arêtes inchangées entre Éléments et ne copier que ce qui est modifié.

Réflexions
Beaucoup de discussions ont été débattues dans le "Robust Reference" Post de jrheinlaender.

Autre documentation

 * Catia V5 et Topologie Naming et CAAMmrGenericNaming
 * Naming dans OpenCasCade OCAF

Literature & Documents

 * J Kripac, « Un mécanisme pour nommer constamment les entités topologiques axées sur l'histoire des modèles solides paramétriques »
 * Très souvent citée, ne pouvait pas obtenir une emprise sur ce document pour l'instant....

Décrire une méthode pour faire les trois premiers points dans la liste. Dis l'approche utilisée par Catia et OCC-TNaming. Avoir au moins la même apparence d'interface. Le papier a été perdu au téléchargement. J'ai du l'acheter. Si quelqu'un est intéressé, je peux l'envoyer par courrier électronique.


 * Dago AGBODAN, David MARCHEIX and Guy PIERRA, "PERSISTENT NAMING FOR PARAMETRIC MODELS"
 * Approche intéressante via shell-graphs


 * Duhwan Mun and Soonhung Han, "Identification of Topological Entities and Naming Mapping for Parametric CAD Model Exchanges"
 * Très bonne vue d'ensemble et d'exemples


 * 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

Organisation

 * opencascade's TNaming relies upon the TDF_Data data framework.
 * TDF_Data is a key component of the opencascade OCAF thing, but can be used independent of it
 * TDF_Data is essentially a tree in which data is added and then read at a later date
 * Whenever a TNaming_NamedShape attribute is added to a node on the TDF_Data tree, a TNaming_UsedShapes attribute is added to the root of the tree
 * NOTE: this TNaming_UsedShapes attribute is critical to the utility of the TNaming toolkit. It contains a history of all the TopoDS_Shape used during the 'history' of the part
 * TNaming_Builder is used to add information to the TDF_Data tree. It adds a TNaming_NamedShape to a given node on the tree, as well as updating the TNaming_UsedShapes database as necessary.
 * Any time the TopoDS_Shape is changed, it must be logged in the TDF_Data structure
 * Again, TNaming_Builder is used for this
 * See here in the opencascade documentation for a table listing what must be stored in the database. NOTE: this table appears to be incomplete. Some additional testing may need to be done
 * In short, any time the TopoDS_Shape is modified, any modified/generated/deleted features must be logged. For the most part, since we're dealing with solids, this means we must log the modified/generated/deleted Faces on the solid
 * The TNaming_Selector class is used to "select" a feature that is being tracked on the TDF_Data tree
 * a "selected" feature is one that opencascade's TNaming algorithm will maintain a constant reference to, regardless of topological changes

Actions suivantes
Définition de la portée test cases de Python Interface Part::TopoShape (+ liaison python)

Next Steps (as of June 13th, 2016)

 * 1) Determine if opencascade TNaming toolkit fully resolves Topological Naming issue in FreeCAD
 * 2) * What are all instances where Topological Naming is a problem?
 * 3) *What are complex scenarios where this approach will need to work?
 * 4) Incorporate TNaming code into FreeCAD
 * 5) Start with a bare-bones approach, i.e. Make a Cube and a Cylinder, Fuse, Fillet, and then re-size the Cylinder. Fillet should not move
 * 6) Gradually add more functionality
 * 7) Determine if TNaming will be the solution long-term
 * 8) Whether or not TNaming is the long-term solution, figure out a way to 'serialize/deserialize' the data that TNaming uses for persistence across sessions