Diese Seite dokumentiert jcc242s Verständnis des Zeichnungsmoduls. Sie enthält Dateien und Funktionen, an denen er derzeit arbeitet und die möglicherweise noch nicht im Master-Zweig enthalten sind. Die Quelle für diese Dateien befindet sich auf seinem Github, aber man sei vorsichtig, da diese sehr instabil ist!
Python-Skript, das SVG-Schnipsel für Dinge wie GD&T-Symbole, Maßsymbole und grundlegende SVG-Elemente wie Linien, Kreise und Pfade generiert.
Es enthält mehrere Support-Dateien, die nicht wirklich viel bewirken. Man führt DrawingTest.py aus, um eine Reihe von SVG-Symbolen im Symbolverzeichnis zu erstellen, die eine Vorschau verschiedener Symbole in der Datei gdtsvg.py anzeigt. settingslist.py, dimesettings und convert.py sind alle veraltete Einstellungsmethoden und sollten wahrscheinlich entfernt werden, da der Drawing-Zweig kurz vor der Zusammenführung mit dem Master steht.
Erstellt SVG-Linien aus einer Liste von Knoten und unterstützt sowohl versteckte als auch sichtbare Kanten. Sollte wahrscheinlich mit gdtsvg.py zusammengeführt werden, sobald diese Datei ausgereift ist.
Akzeptiert Teil als Argument, projiziert den Teil in Linien aus dem Drawing.project-Objekt und zeichnet dann die SVG-Datei für jede Linie.
Enthält die Backend-Seite des Zeichenmoduls.
Initialisiert die verschiedenen Namespaces, Module und Elemente, die im Drawing-Modul verwendet werden. Wenn das Part-Modul nicht geladen werden kann, wird eine Fehlermeldung ausgegeben.
Zwei Klassen: SVGOutput und DXFOutput. Beide enthalten Methoden zum Ausgeben des Codes in ihrer jeweiligen Sprache. In der Regel benötigen sie ein Objekt des entsprechenden Typedefs und manchmal zusätzliche Identifikationsinformationen.
Callback-Methoden (?) für die Feature-Clipping-GUI, so scheint es. Allein aufgerufen erstellt sie den Clip-Pfad, wenn ShowFrame.getValue auf TRUE gesetzt ist, zeigt sie auch den Rahmenrand an.
Verwaltet die Ansichten.
onChanged() zum Ausführen von Aktionen, wenn Eigenschaften geändert werden.
execute() zum Neuberechnen einer Formelement-Ansicht, so wird es zumindest behauptet. Es scheint Funktionen zum Überprüfen von bearbeitbaren Texten und zum Speichern von Zeichnungen zu geben. Muss noch weiter untersucht werden.
getEditableTextsFromTemplate() zum Abrufen von Text, der von FreeCAD aus einer SVG-Datei bearbeitet werden kann.
Objekt zu einem 2D-Bild abflachen?
Definiert die Ansichts-Eigenschaften.
Definiert Eigenschaften für Anmerkungen (derzeit nur Text) und verfügt über eine Ausführungsmethode, um den Text bei Änderungen/Verschiebungen zu aktualisieren.
Konstruktor zum Hinzufügen von Eigenschaften. Ruft Darstellungselemente für projizierte Teile ab.
Fügt lediglich eine Eigenschaft für eine Liste von Seiten hinzu, sonst nichts weiter.
Nur #include "PreCompiled.h"
Der Konstruktor führt lediglich die Methode execute() aus, um seine Inhalte zu aktualisieren.
invertY: Da SVG seine Y-Achse im Vergleich zu allen anderen Koordinatensystemen der Welt umgekehrt darstellt, müssen wir sie bei der Konvertierung von einem FreeCAD-Teil in eine SVG-Projektion für die Zeichnungsansicht umkehren.
getSVG: holt den SVG-Code aus dem DrawingExport-Zeug. Formatiert je nach Art der Linie (versteckt oder nicht und einige andere Dinge, die ich noch herausfinden muss).
getDXF: Wie getSVG, nur für das DXF-Format.
Initialisiert die Grafische Benutzeroberfläche von drawing.
Bietet Schnittstellen zum Öffnen, Importieren und Exportieren? Sieht so aus, als wäre es mit Python kompatibel.
Verarbeitet Befehle (aus der Symbolleiste?), wie z. B. das Erstellen neuer Zeichnungen und ähnliches. Es sieht so aus, als würde dies QT-Aufrufe vom Klicken auf die Schaltfläche bis zu dem jeweiligen Befehl verarbeiten, der ausgeführt werden muss. Wenn man beispielsweise auf die Schaltfläche CmdDrawingOrthoViews klickt, wird die Ortho-Ansicht-GUI im Aufgaben-Dialogfeld angezeigt.
Macht eine Menge Qt-GUI-Sachen, muss mich noch mehr damit beschäftigen.
Erstellt das Aufgaben-Dialogfeld an der Seite und wechselt gegebenenfalls von der Baumansicht dorthin.
Erstellt den Aufgabenfenster zum Platzieren der orthogonalen Ansichten!
Führt viele Berechnungen durch, um zu bestimmen, wo Dinge positioniert werden sollen (anscheinend auch automatische Berechnungen).
Nimmt die Eingabe aus der TaskOrthoViews-GUI entgegen und verarbeitet sie. Verwendet die auf der Qt-Website unter [1] beschriebene Methode der einfachen Vererbung.
Der Konstruktor fügt einige Eigenschaften für die Ansicht hinzu. Der Destruktor führt keine Aktion aus. Fügt etwas hinzu (was fügt er hinzu? Fügt er die Ansicht zur Seite hinzu?) Legt Anzeigemodi fest und ruft sie ab (was sind Anzeigemodi? Was bewirken sie und welche Optionen gibt es?) Führt eine Aktion zur Aktualisierung bestimmter Daten aus Verfügt über ein Kontextmenü mit der Option "Zeichnung anzeigen" – findet man heraus, was dies bedeutet Verfügt über eine Funktion zum Auswählen der Ansicht durch Doppelklick (glaube ich zumindest)
showDrawingView scheint einige Einrichtungsaufgaben zu übernehmen: Es ruft das aktuelle Dokument ab, legt das Fenstersymbol und den Fenstertitel fest und fügt es zum Hauptfenster (von FreeCAD?) hinzu.
Es scheint nicht viel zu bewirken, obwohl ich mir sicher bin, dass es wichtig ist.
Fügt die Symbole zu den Symbolleisten und so weiter hinzu.
CanvasView ist das eigentliche QGraphicsScene-Objekt, und DrawingView verarbeitet eine Liste von FeatureView, die durch Referenz in /App/FeatureViewPage verknüpft sind. DrawingView wählt dann die geeignete QGraphicsItem-Klasse (QGraphicsItemViewPart oder QGraphicsItemViewDimension) aus und ruft anschließend eine Funktion in CanvasView auf, um diese zu erstellen und zur Szene hinzuzufügen.
4 einfache Schritte: