Open Labauke opened 1 year ago
Ein paar Ideen...
Ebene (offset + x-achse + z-normal):
|
|- Gitter-Ebene (major, minor grid distance, extend)
|- Imported2DGeometry-Ebene (2D-offset (wird an 3D offset gemappt), scale x, scale y
(negative Skalierungsfaktoren für's Flippen)
Alternativ alle Attribute in ein Objekt und dort einen Auswahltyp "Gitter" oder "2D Geometrie" (enum).
In der Programmoberfläche würde ich die Ebenen im TreeView darstellen, mit eigenem FeatureWidget für die Eigenschaftsanzeige (dazu gibt es schon ein Ticket irgendwo...).
Hier gibt es viele Spielarten:
Die Schnitt-Algorithmen haben hohe Komplexität (jede Linie mit jeder anderen). Daher sollte man dies möglichst effizient implementieren, zumindest für Stufe 3.
Snap-Algorithmus: Snap-Koordinaten x,y in 2D Ebene bestimmen, dann Suche durch alle Snap-Kandidaten und finden des dichtesten; wenn lineare Suche zu lange dauert, red-back-tree search/quadranten search nutzen (ist eine schöne Aufgabe für unseren Informatikernachwuchs :-)
Im Moment ist ein erster Import von dxf Dateien implementiert. Folgende Punkte sind noch offen für den Import:
Eine Orientierung gibt das Interface der dxf library
drw_interface.h
. Dort sind virtuelle Funktionen deklariert die selbst implementiert werden müssen. Maik hat sich damit tiefer beschäftigt und kann Fragen beantworten.Außerdem noch offen für das Handling in der Oberfläche:
dwg2dxf
Funktion vorhanden (https://github.com/codelibs/libdxfrw/tree/master/dwg2dxf)