Ich arbeite an Mesh-Slicing-Dienstprogramm für 3D-Druck-Zwecken. Im Allgemeinen sollte ein 3D-Mesh-Modell in 2D-Formen (eine Anzahl von Polygonen, wahrscheinlich mit Löchern) geschnitten werden und diese mit Pfaden einer bestimmten Dicke unter Verwendung eines spezifischen Musters füllen. Diese Pfade werden verwendet, um einen gcode-Befehl für eine 3d-Drucker-Firmware zu generieren.Polygon Infill-Algorithmus
Es gibt verschiedene Open-Source-Tools mit gleichen Zwecken, geschrieben auf Python und Perl. Aber mein Ziel ist es, den Arbeitsablauf von Slicer zu verstehen und mein eigenes Werkzeug in C oder C++ zu schreiben.
Bis jetzt bin ich in der Lage Kontur von Scheibe zu bekommen und werde sie jetzt mit Pfaden füllen. Das Problem ist, dass ich keinen effizienten Algorithmus dafür gefunden habe. Ein schematischer Prozess des Füllbeispiels:
Kann jemand empfehlen, wie man diese füllenden Wege erzeugt? Vielen Dank.
Derzeit bin ich mit dem folgenden Algorithmus:
- Finden Sie einen Begrenzungsrahmen der Form
- Split bb vertikal mit Linien (Anzahl der Zeilen = bb.width/path.thickness)
- Suche Schnittpunkte für die Form und jede Zeile
- Construct a-Segmente von diesen Punkten (sollten zwei Punkte pro Zeile sein) mit von Grenzoffset
- ein Segment hinzufügen, die ein ursprünglichen Segmente zusammen eine Linie Streife
- Wir sind bereit zu erzeugen gcode oder zeichnen Sie einen Pfad
Dies ist ein einfaches und schneller Algorithmus verbinden bilden, aber es funktioniert funktioniert nicht für konkave Polygone und Polygone mit Löchern. Außerdem verwendet es nur ein bestimmtes Muster.
Beide Punkte auf der Abbildung sind blau. Sollte einer von ihnen grün sein? – ElKamina
Welche Beschränkungen gibt es auch für den Füllweg? – ElKamina
Bitte beachten Sie, dass es zwei verschiedene Pfade gibt und jeder hat Start- und Endpunkte. – san