Naming project/de

Diese Vorlage ist der Leitfaden für ein FreeCAD Entwicklungsprojekt. Sie folgt den Regeln des Getting Things Done (GTD) Prozesses. Die Projekte sind in der Development roadmap/de zusammengefasst.

Zweck und Prinzipien
Dies ist ein Entwicklungs- und Designvorhaben zur Implementierung einer robusten topologischen Benennung in FreeCAD.

Weitere Details zur topologischen Benennung findest Du unter Topologisches Benennungsproblem.

Ergebnis

 * 1) Interface in (Part::TopoShape), um (Namens)Formen und Unterformen (Flächen, Kanten, Eckpunkte) durch eine Zeichenfolge (Sub Elementname wie "Face1") robust zu referenzieren Hier brauchen wir ein Interface, um Part::TopoShape mit allen Informationen zu versorgen, die für die Benennung benötigt werden, z.B. NewShape, zusätzliche Informationen aus einem Algos wie gelöschte Flächen, Modellierungsschritt (für 2.) und ...
 * 2) Assoziation" von Modellierungsschritten mit den resultierenden Gesichtern/Kanten. Im Falle eines großen Modells ist der Anwender verloren, wenn er hunderte von Verrundungen oder Bohrungen hat. Wenn die Flächen/Kanten also wüssten, welcher Modellierungsschritt erzeugt wurde, könnten wir durch einen Doppelklick auf Kante/Fläche das richtige Feature aufrufen!
 * 3) Ein Algorithmus, um die Benennung bei Änderungen in der Modellierungsgeschichte stabil zu halten, wie z.B. das Aufteilen von Kanten/Flächen und das Verschieben von Vertexen [[Datei:Benennungsbeispiel.jpg]]
 * 4) (optional) speicheroptimierte Datenstruktur, um nur geänderte Flächen/Kanten in jeder Modellierungsfunktion zu behalten. Dies wird wichtig, wenn die Modelle größer werden. Es ist nicht effizient, den größten Teil der Form einfach durchzukopieren. Es wäre viel effektiver, die unveränderten Flächen/Kanten zwischen den Features zu teilen und nur die geänderten zu kopieren.

Ideenfindung
Vieles wurde in dem "Robust Reference" Post diskutiert von jrheinlaender.

Weitere

 * Catia V5 and Topology Naming und CAAMmrGenericNaming
 * Naming in OpenCasCade OCAF

Literatur & Aufsätze

 * J Kripac, "A mechanism for persistently naming topological entities in history-based parametric solid models"
 * Beschreibt eine Methode, um die ersten drei Punkte in der Liste zu erledigen. Würde sagen, das ist der Ansatz, der von Catia und OCC-TNaming verwendet wird. Zumindest sieht das Interface gleich aus. Das Papier war nirgendwo herunterzuladen. Ich musste es kaufen. Wenn jemand interessiert ist, kann ich es per E-Mail schicken.


 * Dago AGBODAN, David MARCHEIX and Guy PIERRA, "PERSISTENT NAMING FOR PARAMETRIC MODELS"
 * Interessanter Ansatz über Shell-Grafiken, geht den vierten Punkt der Liste an, indem er nicht veränderte Flächen/Kanten wiederverwendet.


 * Duhwan Mun and Soonhung Han, "Identification of Topological Entities and Naming Mapping for Parametric CAD Model Exchanges"
 * Sehr gute Übersicht und Beispiele


 * und es werden noch einige kommen.....


 * 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

Zusammenfassung der bisherigen Arbeit
Mit Stand 13. Juni 2016 ist hier eine Zusammenfassung der Arbeiten, die für dieses Projekt geleistet wurden:


 * jrheinlaender produzierte 2012 eine Menge Code, der sich stark auf den Skizzierer Arbeitsbereich verlässt, um "Robuste Referenzen" aufzulösen.
 * Ickby hatte einen Versuch unternommen, einige oder jrheinländische Codes in die moderne Freecad zu integrieren. Dieser Beitrag hat einen Link zu seinem Github-Repo.
 * Im Jahr 2016 hat Ezzieyguywuf jrheinlaenders Thread wiederbelebt und anschließend seinen eigenen gestartet. Ihr könnt ihn hier sehen.
 * ezzieyguywuf hat ein "leichtes" Open Cascade Programm entwickelt, um das Problem der topologischen Benennung zu duplizieren und mögliche Lösungen zu testen. Siehe sein github-Repo hier
 * ezzieyguywuf hat das opencascade TNaming Werkzeugsatz in seinen Testcode integriert und gezeigt, wie dies helfen könnte, einige der Topologischen Benennungsprobleme zu lösen. Siehe das github Repo

Information über TNaming
Siehe hier für einen anständigen Bericht über Ezzieyguywufs Github-Repo. Hier sind einige Highlights:


 * opencascade's TNaming basiert auf dem TDF_Data Datenframework.
 * TDF_Data ist eine Schlüsselkomponente der opencascade OCAF-Sache, kann aber unabhängig davon verwendet werden
 * TDF_Data ist im Wesentlichen ein Baum, in dem Daten hinzugefügt und dann zu einem späteren Zeitpunkt gelesen werden
 * Immer wenn ein TNaming_NamedShape-Attribut zu einem Knoten im TDF_Data-Baum hinzugefügt wird, wird ein TNaming_UsedShapes-Attribut zur Wurzel des Baumes hinzugefügt.
 * 'HINWEIS: dieses TNaming_UsedShapes Attribut ist entscheidend für den Nutzen des TNaming Toolkits. Es enthält eine Historie aller TopoDS_Shape, die während der 'Historie' des Teils verwendet wurden.
 * TNaming_Builder wird verwendet, um Informationen zum TDF_Data-Baum hinzuzufügen. Es fügt ein TNaming_NamedShape zu einem gegebenen Knoten im Baum hinzu und aktualisiert die TNaming_UsedShapes-Datenbank, wenn nötig.
 * Jedes Mal, wenn das TopoDS_Shape geändert wird, muss es in der TDF_Data-Struktur protokolliert werden.
 * Auch hier wird TNaming_Builder verwendet.
 * Siehe hier in der opencascade-Dokumentation für eine Tabelle, die auflistet, was in der Datenbank gespeichert werden muss. HINWEIS: diese Tabelle scheint unvollständig zu sein. Einige zusätzliche Tests können notwendig sein
 * Kurz gesagt, jedes Mal, wenn der TopoDS_Shape geändert wird, müssen alle geänderten/erzeugten/gelöschten Features protokolliert werden. Da wir es mit Solids zu tun haben, bedeutet dies, dass wir die modifizierten/generierten/gelöschten Faces auf dem Solid protokollieren müssen.
 * Die TNaming_Selector Klasse wird verwendet, um ein Feature "auszuwählen", das im TDF_Data Baum verfolgt wird.
 * ein "ausgewähltes" Feature ist eines, auf das der TNaming-Algorithmus von opencascade unabhängig von topologischen Änderungen einen konstanten Bezug auf

Nächste Aktionen

 * Festlegung des Umfangs
 * Python Testfälle
 * Schnittstelle im Teil::TopoShape (+ Pythonbindung)

Nächste Schritte (ab 13. Juni 2016)
~ Was sind alle Belegstellen wo Topologische Benennung ein Problem ist? ~ TNaming-Code in FreeCAD integrieren ~
 * 1) Ermittle, ob das opencascade TNaming Toolkit das Problem der topologischen Benennung in FreeCAD vollständig löst
 * 1) *Was sind komplexe Szenarien, in denen dieser Ansatz funktionieren muss?
 * 1) Beginne mit einem Bare-Bones Ansatz, d.h. Mache einen Würfel und einen Zylinder, verschmelze Sie, verrunde ihn und passe dann die Größe des Zylinders an. Die Verrundung sollte sich nicht bewegen.
 * 2) Allmählich mehr Funktionalität hinzufügen
 * 3) Bestimme, ob TNaming langfristig die Lösung sein wird
 * 4) Ob TNaming die langfristige Lösung ist oder nicht, findest Du einen Weg, die Daten, die TNaming für die Persistenz über die Sitzungen hinweg verwendet, zu 'serialisieren/deserialisieren'.