ghorwin / SIM-VICUS

Building and District Energy Simulation and more...
https://ghorwin.github.io/SIM-VICUS/
Other
33 stars 12 forks source link

dxf Import vollständig implementieren #640

Open Labauke opened 1 year ago

Labauke commented 1 year ago

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:

ghorwin commented 1 year ago

Ein paar Ideen...

Ebenenverwaltung

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...).

Snap-Funktionalität

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 :-)