Topologisches Benennungsproblem

From FreeCAD Documentation
This page is a translated version of the page Topological naming problem and the translation is 79% complete.
Outdated translations are marked like this.

Einleitung

Das topologische Benennungsproblem in FreeCAD bezieht sich auf die Frage, ob eine Form ihren internen Namen nach einer Modellierungsoperation (Polstern, Schnitt, Vereinigung, Fase, Verrundung, usw.) ändert. Dies führt dazu, dass andere parametrische Merkmale, die von dieser Form abhängen, brechen oder falsch berechnet werden. Dieser Sachverhalt betrifft alle Objekte in FreeCAD, ist aber besonders bemerkenswert, wenn Volumenkörper mit der Arbeitsbereich PartDesign erstellt und diese mit der TechDraw Arbeitsbereich dimensioniert werden.

  • Wenn in PartDesign ein Merkmal auf einer Fläche (oder Kante oder Scheitelpunkt) unterstützt wird, kann das Merkmal brechen, wenn der zugrunde liegende Volumenkörper seine Größe oder Ausrichtung ändert, da die ursprüngliche Fläche (oder Kante oder Scheitelpunkt) intern umbenannt werden kann.
  • Wenn in TechDraw eine Dimension die Länge einer projizierten Kante misst, kann die Dimension brechen, wenn das 3D-Modell geändert wird, da die Knoten umbenannt werden können, wodurch die gemessene Kante geändert wird.

Das Problem der topologischen Benennung ist ein komplexes Problem bei der CAD-Modellierung, das daraus herrührt, wie die internen FreeCAD-Routinen Aktualisierungen der mit dem OCCT Kernel erstellten geometrischen Formen handhaben.

Seit FreeCAD 0.19 gibt es noch andauernde Entwicklungsanstrengungen, um den Kern im Umgang mit Formen zu verbessern und damit den Einfluss dieser Probleme zu verringern. Der Benennunngsalgorithmus, der im Forum unter Topological Naming, My Take beschrieben wurde, ist ausgelegt, den manuellen Aufwand zu reduzieren, manchmal durch automatisches Beheben von Problemen, in andern Fällen durch Vorstellen einer wahrscheinlichen Lösung oder wenigstens durch Aufzeigen, was das Problem verursachte. Die erste stabile Veröffentlichung von FreeCAD, die den neuen Benennungsalgorithmus beinhaltet wird die Version 1.0 sein. Nach und nach wird dieser Algorithmus auf weitere Teile von FreeCAD übertragen und weitere Funktionen zum automatischen und angeleiteten Reparieren werden in späteren Versionen hinzugefügt.

Das Problem der topologischen Benennung betrifft und verwirrt neue Anwender von FreeCAD am häufigsten. In PartDesign wird dem Anwender empfohlen, die auf der Seite Funktionsbearbeitung beschriebenen optimalen Vorgehensweisen zu befolgen. Die Verwendung von unterstützenden Bezugsobjekten wie Ebenen und local coordinate systems wird dringend empfohlen, Modelle zu erstellen, die nicht leicht solchen topologischen Fehlern ausgesetzt sind. In TechDraw wird dem Anwender empfohlen, Bemaßungen nur dann hinzuzufügen, wenn das 3D-Modell vollständig ist und nicht mehr geändert wird.

Beispiel

1. Erstelle in der Arbeitsbereich PartDesign einen PartDesign Körper, verwende dann PartDesign Neue Skizze und wählen die XY-Ebene, um die Basisskizze zu zeichnen; führe dann ein PartDesign Polster aus, um einen ersten Volumenkörper zu erstellen.

2. Wählen Sie die Oberseite des vorherigen Volumenkörpers aus und verwende dann PartDesign NewSketch, um eine weitere Skizze zu zeichnen; führe dann ein zweites Polster aus.

3. Wähle die Oberseite der vorherigen Extrusion aus und erstelle erneut eine Skizze und ein Polster.

4. Doppelklicke nun auf die zweite Skizze und ändere sie so, dass ihre Länge entlang der X-Richtung liegt; dadurch wird das zweite Pad neu erstellt. Die dritte Skizze und das Polster bleiben an der gleichen Stelle.

5. Doppelklicke nun erneut auf die zweite Skizze und passe Deine Punkte so an, dass ein Teil davon außerhalb der durch das erste Pad definierten Grenzen liegt. Dadurch wird das zweite Pad korrekt neu berechnet, aber beim Betrachten der Baumansicht wird im dritten Pad ein Fehler angezeigt.

6. Indem man die dritte Skizze und das Polster sichtbar macht, wird deutlich, dass die Berechnung des neuen Solids nicht korrekt durchgeführt wurde. Die dritte Skizze, anstatt von der Oberseite des zweiten Pads getragen zu werden, erscheint an einer seltsamen Stelle, mit ihrer Normalen, die in X Richtung ausgerichtet ist. Dies führt zu einem ungültigen Polster, da dieses Polster vom Rest des PartDesign Körper getrennt wird, was nicht erlaubt ist.

Das Problem scheint darin zu bestehen, dass bei der Änderung der zweiten Skizze die Oberseite des zweiten Polsters von Face13 in Face14 umbenannt wurde. Die dritte Skizze ist wie ursprünglich an Face13 angehängt, aber da sich diese Fläche nun auf der Seite befindet (nicht oben), folgt die Skizze ihrer Ausrichtung und ist nun falsch positioniert.

7. Um das Problem zu beheben, sollte die dritte Skizze wieder auf die Oberseite abgebildet werden. Wähle die Skizze aus, klicke auf die Ellipse (drei Punkte) neben der Eigenschaft Daten-EigenschaftMap Mode, und wähle erneut die Oberseite des zweiten Polsters. Dann geht die Skizze an die Spitze des vorhandenen Volumenkörpers, und das dritte Pad wird ohne Probleme erzeugt.

Die Umschlüsselung einer Skizze auf diese Weise kann bei jedem topologischen Benennungsfehler erfolgen, dies kann jedoch mühsam sein, wenn das Modell kompliziert ist und es viele solcher Skizzen gibt, die angepasst werden müssen.

Lösung

Der Abhängigkeitsgraph ist ein Werkzeug, das hilfreich ist, um die Beziehungen zwischen den verschiedenen Körpern im Dokument zu beobachten. Die Verwendung des ursprünglichen Modellierungs Arbeitsablaufs zeigt die direkte Beziehung, die zwischen den Skizzen und den Polstern besteht. Wie eine Kette ist es leicht zu erkennen, dass diese direkte Abhängigkeit mit topologischen Benennungsproblemen behaftet sein wird, wenn sich eines der Glieder in der Reihenfolge ändert.

Wie auf der Seite Formelemente bearbeiten erläutert, besteht eine Lösung für dieses Problem darin, Skizzen nicht auf Flächen, sondern auf Bezugsebenen zu stützen, die mit einem Abstand an die Hauptebenen des Ursprungs der PartDesign Körper angefügt wurden.

1. Wähle den Ursprung des PartDesign Body und stelle sicher, dass er sichtbar ist. Wähle dann die XY-Ebene aus und klicke auf PartDesign Fläche. Gib im Anhang des Dialogfelds für den Versatz einen Versatz in Z-Richtung an, so dass die Bezugsebene koplanar mit der Oberseite des ersten Polsters ist.

2. Wiederhole den Vorgang, füge aber diesmal einen größeren Versatz hinzu, so dass die zweite Bezugsebene koplanar mit der Oberseite der zweiten Auflage ist.

3. Wähle die zweite Skizze aus, klicke auf die Ellipse nahe der Daten-EigenschaftMap Mode Eigenschaft und wähle dann die erste Bezugsebene. Die Bezugsebene ist bereits von der XY-Ebene des Körpers versetzt, so dass für die Skizze kein weiterer Z-Versatz erforderlich ist.

4. Wiederhole den Vorgang mit der dritten Skizze und wähle die zweite Bezugsebene als Auflage. Auch hier ist kein weiterer Z-Offset erforderlich.

5. Das Abhängigkeitsdiagramm zeigt nun, dass die Skizzen und Polster von den Bezugsebenen unterstützt werden. Dieses Modell ist stabiler, da jede Skizze im Wesentlichen unabhängig voneinander modifiziert werden kann.

6. Doppelklicke auf die zweite Skizze und ändere die Form. Das zweite Polster sollte sofort aktualisiert werden, ohne topologische Probleme mit der dritten Skizze und dem dritten Polster zu verursachen.

7. Tatsächlich kann jede Skizze geändert werden, ohne die Polster der anderen zu beeinträchtigen. Solange die Polster eine ausreichende Extrusionslänge haben, so dass sie sich berühren und einen zusammenhängenden Körper bilden, ist der gesamte Körper gültig.

Tradeoffs

Das Hinzufügen von Bezugsobjekten ist mehr Arbeit für den Anwender, erzeugt aber letztlich stabilere Modelle, die weniger dem topologischen Benennungsproblem unterliegen.

Natürlich können Bezugsobjekte erstellt werden, bevor Skizzen gezeichnet werden, und es werden Polster erstellt. Dies kann hilfreich sein, um die ungefähre Form und Dimension des Endkörpers zu visualisieren.

Bezugsflächen können auch auf anderen Bezugsflächen basieren. Dies schafft eine Kette von Abhängigkeiten, die auch zu topologischen Problemen führen können; da es sich bei Bezugsebenen jedoch um sehr einfache Objekte handelt, ist das Risiko, dass diese Probleme auftreten, geringer, als wenn die Fläche eines festen Objekts als Träger verwendet wird.

Bezugsobjekte, Punkte, Linien, Flächen und Koordinatensysteme, können auch als Referenzgeometrie, d.h. als visuelle Hilfsmittel zur Darstellung der wichtigen Merkmale im Modell nützlich sein, auch wenn keine Skizze direkt an ihnen angebracht ist.

Topological naming algorithm

Realthunder's topological naming algorithm selected to reduce the impact of this problem has been widely described as "fixing the topological naming problem," which has unintentionally misled many users into thinking that it will no longer be helpful to use techniques like datums, explicit sketch placement, and Feature editing to make models more stable. The algorithm is not intended to fix every failure introduced by topological naming ambiguity. Rather, it has three purposes.

  1. The first and most important purpose is, whenever possible, to identify broken references from topological changes and display an error to the user. Instead of having to work through a series of operations to find the first operation that diverges from the design intent, the operation that changes the names will normally be flagged with an error, making it much easier to manually fix model problems introduced by changes to operations or parameters.
  2. Sometimes, FreeCAD will be able to identify a likely fix for a broken reference, so that when the user is manually fixing up the flagged broken reference, a candidate will be presented for them to accept or change. A common example of this is dress-up operations like fillets and chamfers, where user might have to to edit the operation and either accept the proposed replacement feature selection or change it to correct it.
  3. In some cases, FreeCAD will be able to automatically resolve the broken reference, because enough information about the reference is stored to have high confidence that the replacement is correct. For example, when sketching directly on a face, the algorithm will frequently (but not always) correctly repair the reference to the face when the underlying geometry is changed parametrically. (When changing the structure, such as by adding or deleting operations in the middle of a Part Design Body, this kind of automatic repair will be less likely.) However, FreeCAD will do this only with high confidence in the correctness of the repair, because an incorrect automatic repair may re-introduce the problem of having to hunt for where a problem was introduced in order to repair a model after a modification. First, do no harm.

The goal for FreeCAD 1.0 is that the implementation of this algorithm in the official FreeCAD release has reached feature parity with Realthunder's "Linkstage 3" fork, where he originally developed the algorithm, as of the time the integration work started. There are new FreeCAD features that could use the algorithm but do not yet, and there will always be more opportunities to add candidate fixes and automatic repair. The initial work has provided a framework to use for these additional improvements over time, both in core FreeCAD and in Addons.

Verweise

Videos