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.

Autres

 * Catia V5 and Topology Naming et CAAMmrGenericNaming
 * Naming dans OpenCasCade OCAF

Bibliographie & Documents

 * J Kripac, « Un mécanisme pour nommer constamment les entités topologiques axé sur l'histoire des modèles solides paramétriques »
 * Décrit une méthode pour faire les trois premiers points dans la liste. Donne l'approche utilisée par Catia et OCC-TNaming. Garde au moins la même apparence d'interface. Le document n'est plus accessible au téléchargement. J'ai du l'acheter. Si quelqu'un est intéressé, je peux lui envoyer par courrier électronique.


 * Dago AGBODAN, David MARCHEIX and Guy PIERRA, "PERSISTENT NAMING FOR PARAMETRIC MODELS"
 * Approche intéressante via shell-graphs, s'attaque au point quatre de la liste en réutilisant des faces/arêtes non modifiées.


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


 * et quelques autres à venir...


 * Assembly Solving for Neutral Re-Imported Product Models Tahir A. Jauhar, Soonhung Han, Soonjo Kwon, p.108-123 , CAD Journal 2020, Volume 17 Number 1

Résumé des travaux à ce jour
Au 13 juin 2016, voici un résumé des travaux effectués pour ce projet :


 * jrheinlaender a produit beaucoup de code en 2012 qui s'appuie fortement sur l'atelier Sketch pour résoudre les "références robustes"
 * ickby a tenté de l'incorporer au nouveau code de FreeCAD. Cet article a un lien vers son dépôt github.
 * En 2016, ezzieyguywuf a relancé le fil de jrheinlaender et a ensuite lancé le sien. Vous pouvez le voir ici.
 * ezzieyguywuf a développé un programme opencascade "léger" pour simuler des résultats de dénomination topologique et tester des solutions potentielles. Voir son dépôt github
 * ezzieyguywuf a incorporé la boîte à outils TNaming opencascade dans son code de test, et a montré en quoi cela pouvait aider à résoudre certains problèmes de dénomination topologique. Voir le dépôt github

Information sur TNaming
Voir ici pour un article sérieux sur le dépôt github de ezzieyguywuf. Voici quelques faits saillants :


 * Le TNaming opencascade s’appuie sur l'environnement de travail TDF_Data.
 * TDF_Data est un composant clé du logiciel OPAF opencascade, mais peut être utilisé indépendamment de celui-ci.
 * TDF_Data est essentiellement une arborescence dans lequel des données sont ajoutées puis lues à une date ultérieure
 * Lorsqu'un attribut TNaming_NamedShape est ajouté à un nœud de l'arborescence TDF_Data, un attribut TNaming_UsedShapes est ajouté à la racine de l'arborescence.
 * REMARQUE : cet attribut TNaming_UsedShapes est essentiel pour l'utilitaire de la boîte à outils TNaming. Il contient l’historique de toutes les TopoDS_Shape utilisées pendant l’historique de la pièce.
 * TNaming_Builder est utilisé pour ajouter des informations à l'arborescence TDF_Data. Il ajoute un TNaming_NamedShape à un nœud donné de l’arbre et met à jour la base de données TNaming_UsedShapes selon les besoins.
 * Chaque fois que TopoDS_Shape est modifié, il doit être enregistré dans la structure TDF_Data.
 * TNaming_Builder est encore utilisé pour cela
 * Voir ici dans la documentation opencascade pour un tableau listant ce qui doit être stocké dans la base de données. REMARQUE : ce tableau semble être incomplet. Des tests supplémentaires peuvent être nécessaires
 * En bref, chaque fois que TopoDS_Shape est modifié, toutes les fonctions modifiées/générées/supprimées doivent être consignées. Pour la plupart, étant donné que nous traitons avec des solides, cela signifie que nous devons consigner les faces modifiées/générées/supprimées sur le solide.
 * La classe TNaming_Selector est utilisée pour "sélectionner" une fonctionnalité suivie dans l'arborescence TDF_Data
 * Un élément "sélectionné" est unique pour l'algorithme TNaming d'OpenCascade qui conserve une référence constante, quels que soient les changements topologiques

Actions prochaines

 * Définition de la portée
 * Protocole de test Python
 * Interface pour Part::TopoShape (+ liaison python)

Prochaines étapes (à compter du 13 juin 2016)

 * 1) Déterminer si le toolkit opencascade TNaming résout complètement le problème de dénomination topologique dans FreeCAD
 * 2) * Quels sont tous les cas où la dénomination topologique est un problème ?
 * 3) * Quels sont les scénarios complexes où cette approche devra fonctionner ?
 * 4) Incorporer du code TNaming dans FreeCAD
 * 5) Commencer par une approche simple, c'est-à-dire créer un cube et un cylindre, fusionner, arrondir, puis redimensionner le cylindre. L'arrondi ne doit pas bouger.
 * 6) Ajouter progressivement plus de fonctionnalités.
 * 7) Déterminer si TNaming sera la solution à long terme.
 * 8) Que TNaming soit ou non la solution à long terme, trouver un moyen de "sérialiser/désérialiser" les données que TNaming utilise pour la persistance entre les sessions