Wissenswertes
- Clipping and offsetting algorithms
- 2D/3D Geometrie Glossar
- STL to Wireframe
- 3D Generatoren
- 3D Model Viewer / Browser
- Blender Tipps
- 3D Scan / Reverse Engineering
- SVG Werkzeuge
- Tools und Bibliotheken
- DXF to SVG, SVG to DXF
- SVG Thumbnail Previews in Windows Explorer
- SVG Splitting
- Slice STL in SVG Ebenen
- SVG Merging
- Messmethoden für Grafiken / GCode / Fertigungszeiten (Estimators)
- Tracing / Edge Detection Software
- Lasercutter / Waterjet Cutter Software
- fogleman/primitive mit Windows
- Puzzle Generatoren
- Abwicklungen von 3D Modellen zu 2D Patterns
Clipping and offsetting algorithms
For optimizing geometry for cutting technologies there are a lot of important tools and algorithms out there to solve a lot of common problems. There are a lot of clipping algorithms out there. Most of them work kind a sweep line algorithm - that's a kind of scanning routine which mostly works by visiting elements and brute-forcing them with different methods.
https://de.m.wikipedia.org/wiki/Sweep_(Informatik)
Greiner Hormann Clipping Algorithm
used for polygon clipping. It can process both self-intersecting and non-convex polygons) - also known as EvenOdd problem
- https://github.com/karimbahgat/Clippy (works for polygons, not for bezier paths)
- https://oreillymedia.github.io/Using_SVG/extras/ch06-fill-rule.html see "winding rule"
Bentley Ottmann Clipping Algorithm
a sweep line algorithm for listing all crossings in a set of line segments, i.e. it finds the intersection points (or, simply, intersections) of line segments (does not work for bezier paths)
Bush algorithm
https://github.com/anvaka/isect
Sutherland–Hodgman Algorithm
Vatti Clipping Algorithm
Allows clipping of any number of arbitrarily shaped subject polygons by any number of arbitrarily shaped clip polygons. Unlike the Sutherland–Hodgman and Weiler–Atherton polygon clipping algorithms, the Vatti algorithm does not restrict the types of polygons that can be used as subjects or clips. Even complex (self-intersecting) polygons, and polygons with holes can be processed. The algorithm is generally applicable only in 2D space.
Libraries:
- https://github.com/karimbahgat/Clippy
- https://github.com/fonttools/pyclipper (works for lines and polygons, not for bezier paths)
-
clipping and offsetting lines and polygons → performs line & polygon clipping - intersection, union, difference & exclusive-or, and line & polygon offsetting
- http://www.angusj.com/delphi/clipper/documentation/Docs/Overview/_Body.htm
- https://sourceforge.net/projects/polyclipping
-
Weiler-Atherton Algorithm
Martinez-Rueda polygon clipping algorithm
Libraries:
Offsetting curves
A really good primer about Bezier curves can be found at https://pomax.github.io/bezierinfo/#offsetting
2D/3D Geometrie Glossar
Für das Verständnis von 2D und 3D-Geometrie in Inkscape und Co. helfen ein paar Kurzerklärungen zu häufig verwendeten Begriffen und Abkürzungen.
- Objekt (auch Gegenstand oder Element, engl. object, item oder element)
- Ein Ding oder eine Sache
- Gestalt (auch Form, Figur, Umriss oder Darstellung, engl. shape)
-
umgangssprachlich die äußere Form, Umriss, Wuchs oder die Erscheinung von Personen, Skulpturen oder allgemein von Lebewesen
-
- Körper (engl. solid oder body)
- dreidimensionale Figur, die durch ihre Oberfläche beschrieben werden kann. Die Oberfläche eines Körpers kann dabei aus flachen oder gekrümmten Flächenstücken zusammengesetzt sein. Besteht die Oberfläche eines Körpers nur aus ebenen Flächenstücken, handelt es sich um einen Polyeder
-
Geometrie (engl. geometry)
-
Teilgebiet der Mathematik, das sich mit den räumlichen und nicht räumlichen (ebenen) Gebilden befasst
-
- Graph (engl. graph)
- abstrakte Struktur, die eine Menge von Objekten zusammen mit den zwischen diesen Objekten bestehenden Verbindungen repräsentiert. Die mathematischen Abstraktionen der Objekte werden dabei Knoten oder Ecken genannt
-
Topologie (engl. topology)
-
Lehre von der Lage und Anordnung geometrischer Gebilde im Raum
-
- Raum (engl. space)
-
eine mit einer Struktur versehene Menge, z.B. eine in Länge und Breite eingrenzte Flächenausdehnung oder eine in Länge, Breite und Höhe eingegrenzte Volumenausdehnung
-
- Menge (engl. set)
- ein Verbund oder eine Zusammenfassung einzelner Elementen
- Projektion (engl. projection)
- Abbildung dreidimensionaler Objekte auf einer zweidimensionalen Ebene
-
Abbildung (engl. image, figure oder presentation)
-
das Abgebildete, bildliche Wiedergabe, einem Buch- oder Zeitschriftentext beigegebene bildliche Darstellung, die im Text Behandeltes veranschaulicht; Bild
-
- Leinwand (engl. canvas)
- der Bildträger
- Zeichnung (engl. drawing)
- eine an Punkten und Strichzügen orientierte Darstellungsform der Computertechnik
- Primitiv (engl. primitive)
- Der Begriff (grafisches) Primitiv (das, Pl. Primitive) wird in der Computergrafik verwendet. Er bezeichnet elementare ein-, zwei- oder dreidimensionale geometrische Formen, z.B. Punkt, Linie, Polylinie, Spline, Polygon
- Vektor (engl. vector)
- Element eines Vektorraums:t ein Objekt, das zu anderen Vektoren addiert und mit Zahlen, die als Skalare bezeichnet werden, multipliziert werden kann
- Skalar (engl. scalar)
- mathematische Größe, die allein durch die Angabe eines Zahlenwertes charakterisiert ist
- Koordinate (auch Position, engl. coordinate)
- Position von Punkten innerhalb eines Koordinatensystems
- Achse (engl. axis)
- spezielle Bezugslinie, z.B. in einem Koordinatensystem
- Krümmung (engl. curvature oder bending)
-
bogenförmige Abweichung von einem geraden Verlauf
-
- Stetigkeit (engl. continuity)
- beschreibt die Güte des Kontaktes zweier ebener Kurven bzw. Flächen in einem gemeinsamen Punkt
- Punkt (engl. point)
-
ein Objekt ohne jede Ausdehnung in einem beliebigen Raum. In einem zweidimensionalen Koordinatensystem eine Position aus X- und Y-Koordinate
-
- Scheitelpunkt / Wendepunkt (engl. vertex)
- eine Stelle, an der sich Richtungen treffen. Allgemein auch als Punkt, Vektor oder Knoten bezeichnet
- Ebene (engl. plane)
- unbegrenzt ausgedehntes flaches zweidimensionales Objekt
- Länge (engl. length)
- Maß für den Weg (Ausdehnung) entlang einer Kurve
- Distanz (auch Entfernung oder Abstand, engl. distance)
- Länge der kürzesten Verbindung zweier Punkte
- Umfang (engl. circumference oder perimeter)
- Länge der Begrenzungslinie einer ebenen Figur
-
Fläche (engl. face oder surface)
-
zweidimensionale Teilmenge des dreidimensionalen Raumes. Eine Fläche kann sowohl flach, als auch gekrümmt sein
-
- Flächeninhalt (engl. area)
- Maß für die Größe einer Fläche
- Volumen (auch Rauminhalt oder Kubikinhalt, engl. volume)
- räumliche Inhalt eines geometrischen Körpers
- Begrenzung (auch Rand oder Umriss, engl. boundary)
-
äußere Linie eines Körpers, die sich von dem Hintergrund abhebt; der Abschluss ohne das Innere einer Teilmenge eines topologischen Raumes
-
- Hülle (auch Rumpf, engl. hull)
- allgemeiner Begriff, der Gegenstände umfasst, die einen Raum bilden, indem sie eine flächige und vollständige bzw. weitgehende Grenze zwischen innen und außen schaffen
- Interior (auch Inneres, engl. interior)
- Elemente, die im Inneren einer Begrenzung liegen
- Exterior (auch Äußeres, engl. exterior)
- Elemente, die außerhalb einer Begrenzung liegen
- Linie (auch Strich, engl. stroke, dash or line)
- zusammenhängendes, eindimensionales geometrisches Gebilde ohne Querausdehnung, Oberbegriff von Kurve, Gerade und Strecke; die kürzeste Verbindung zweier Punkte auf einer Oberfläche oder in einem Raum
- Strecke (engl. section oder segment)
- die kürzeste Verbindung zweier Punkte
- Strahl (auch Halbgerade, engl. ray oder half-line)
- gerade Linie, die auf einer Seite begrenzt ist, sich aber auf der anderen Seite ins Unendliche erstreckt
- Kante (engl. edge)
- Verbindungslinie zweiter benachbarter Ecken (bei Polyedern)
- Ecke (auch Knoten, engl. corner)
- Element der Knotenmenge eines Graphen
- Fase (auch Voute, engl. chamfer)
-
abgeschrägte Fläche an einer Ecke oder Kante
-
- Rundung (auch Hohlkehle, engl. fillet)
- Brechung einer Ecke oder Kante durch Ersetzen mit einem oder mehrenden tangential anschließenden Radien
- Pfad (auch Kantenzug, Weg oder Kantenfolge, engl. path)
- Folge von Knoten, in welcher jeweils zwei aufeinanderfolgende Knoten durch eine Kante verbunden sind
- Zug (auch Kette, Reihe oder Zusammensetzung, engl. chain)
- ein Verbund gleicher oder verschiedener Elemente
- Scheitelpunkt (Spitze, engl. cusp oder spinode)
- ein Punkt auf einer Kurve, an dem ein bewegter Punkt seine Richtung umkehren muss. Ein Scheitelpunkt ist eine Art singulärer Punkt einer Kurve
- Tangente (engl. tangent)
- eine Gerade, die eine gegebene Kurve in einem bestimmten Punkt berührt
- Sehne (engl. bowstring)
- Verbindungsstrecke zweier Punkte auf einer Kurve. Der Teil einer Sekante, der zwischen den beiden Kurvenpunkten liegt
- Lot (auch Senkrechte, engl. perpendicular)
- Strecke oder Gerade, die auf einer gegebenen Geraden oder Ebene senkrecht steht
- Sekante (engl. secant)
- Gerade, die durch zwei Punkte einer Kurve geht
- Kontur (engl. contour)
-
äußere Linie eines Körpers
-
- Polylinie (engl. polyline)
- zusammenhängende Folge von Liniensegmenten, die als einzelnes Objekt erstellt wird. Sie können gerade Liniensegmente, Bogensegmente oder eine Kombination aus beiden darstellen
- Gerade (auch gerade Linie, engl. straight line)
- eine gerade, unendlich lange, unendlich dünne und in beide Richtungen unbegrenzte Linie
- Polygon (auch Vieleck, engl. polygon)
- ebene geometrische Figur, die durch einen geschlossenen Streckenzug gebildet wird. Ein Polygon ist ein zweidimensionales Polytop
-
Polytop (engl. polytope)
- verallgemeinertes Polygon in beliebiger Dimension
- Polyeder (auc Vielflächner, engl. polyhedron)
- Teilmenge des dreidimensionalen Raumes, welche ausschließlich von geraden Flächen begrenzt wird (Körper), beispielsweise ein Würfel oder ein Oktant eines dreidimensionalen Koordinatensystems
- Polygonzug (auch Streckenzug oder Linienzug, engl. traverse oder polygonal chain)
- Ein Polygonzug oder Streckenzug ist in der Mathematik die Vereinigung der Verbindungsstrecken einer Folge von Punkten. Polygonzüge werden in vielen Teilgebieten der Mathematik verwendet, etwa in der Geometrie, der Numerik, der Topologie, der Analysis und der Funktionentheorie
- Kurve (auch gekrümmte Linie, engl. curve)
- eindimensionales Objekt. Im Gegensatz etwa zu einer Geraden muss eine Kurve grundsätzlich keinen geraden, sondern kann vielmehr jeden beliebigen Verlauf annehmen
- Bogen (engl. arc oder sweep)
- eil einer Kreislinie (Kreisbogen) oder beliebig nach einer Seite gekrümmte Linie
- Spirale (auch Schneckenlinie, engl. spiral)
- Kurve, die um einen Punkt oder eine Achse verläuft und sich je nach Betrachterperspektive von diesem Zentrum entfernt oder sich ihm annähert
-
Bézierkurve (engl. bezier curve)
-
Kurvenverläufe, die durch zwei Endpunkte einer Kurve und die Parameter der an ihnen angelegten Tangenten definiert sind. Durch Unterteilung von Kurvenzügen lassen sich alle Kurven als Bézier-Kurven darstellen
-
- Polynomzug (auch Spline-Kurve, engl. spline, flat spline oder flexible curve)
- mathematische Funktion, die eine Kurve parametrisch beschreibt
- Biarc (engl. biarc)
- glatte Kurve, die aus zwei Kreisbögen besteht. Um den Biarc glatt zu machen, sollten die beiden Bögen an dem Verbindungspunkt, an dem sie sich treffen, dieselbe Tangente haben
- B-Spline (basis spline, short: B-spline)
- Kubische C2-Spline (engl. cubic spline)
- Bikubische C2-Spline (engl. bicubic spline)
- nicht-uniforme rationale B-Splines (Non-uniform rational B-Splines, short "NURBS")
- mathematisch definierte Kurven oder Flächen
- Spur (engl. lane, track)
- Trajektorie (auch Bahnkurve, engl. trajectory)
- Pfad oder Weg,Verlauf der Raumkurve, entlang der sich ein Körper oder ein Punkt, beispielsweise der Schwerpunkt eines starren Körpers, bewegt
- Bahn (engl. track oder path)
-
Strecke, die ein Körper in einer vorgeschriebenen Richtung durchmisst; Linie, die ein Körper im Raum durchläuft
-
- Bewegung (engl. move)
- affine Drehung oder Drehspiegelung im Raum; Ortsveränderung mit der Zeit
- affine Drehung oder Drehspiegelung im Raum; Ortsveränderung mit der Zeit
- Füllung (engl. fill oder infill)
- Inhalt einer Fläche (Flächeninhalt) oder eines Volumen oder eine Ausfärbung
- Anfasser (engl. handle)
- visuelles Element zum Modifizieren einer Kurve im Raum
- Strukturknoten (engl. node)
- ein Punkt in einem Netzwerk oder Diagramm, an dem sich Linien oder Wege kreuzen oder verzweigen
- Transformation (engl. transform)
- Bewegung einer Punktmenge (Objekt) im als ruhend gedachten Raum (bzw. gegenüber einem als ruhend angenommenen Koordinatensystem)
- Muster (engl. pattern)
- Struktur, die durch erneutes oder paralleles gleichförmiges Auftreten gekennzeichnet ist (gleichförmige Wiederholung oder Reproduktion)
- Schnitt (auch Kreuzung, Kreuzschnitt, Querung oder Querschnitt, engl. cut, intersection oder crossing, cross section)
- Überschneidung oder Begegnung zweier oder mehrerer Elemente im gleichen Punkt oder der gleichen Kurve oder Fläche; es gibt Schnittpunkte, Schnittkurven und Schnittflächen (Querschnitt)
- Segment (auch Abschnitt, engl. segment)
- Er wird unterschieden vom Segment, das einen Abschnitt bezeichnet
- Sektor (auch Ausschnitt, engl. sector)
-
etwas, das schneidet; bezeichnet einen Ausschnitt
-
STL to Wireframe
Aus einem STL File ein Drahtgitter rendern:
https://github.com/osresearch/papercraft/blob/master/hiddenwire.c → Fork: https://gitea.fablabchemnitz.de/vmario/papercraft
./hiddenwire --no-hidden --prune 1 -v < nyc-50000.stl --camera 400,60,-600 --lookat 450,0,-800 --up 0,1,0 --fov 20 > test3.svg
3D Generatoren
Name | Hinweis/Zweck |
3Sweep | Tool zum Erzeugen von 3D-Körpern aus 2D-Fotos und Grafiken |
GCode Painter | Zeichnungswerkzeug mit .gcode-Output |
GCode Vessel | Gefäße modellieren und mit .gcode-Output |
osmbuildings.org | Gebäude von OpenStreetMaps in STL umwandeln |
Terrain2STL | Geländedaten zu 3D-Modellen (.stl) überführen |
Turbine .obj Generator | Prozedurales Modellieren mit .obj-Output |
3D Model Viewer / Browser
Hochladen, Managen, Darstellen, Einbetten von 3D-Modellen im Browser. Eine kleine Sammlung
- github.com/manyfold3d/manyfold (Beispiel siehe hardware.fab-access.org)
- github.com/prosthetichead/printBed
- github.com/Micky261/3d-model-manager-frontend
- github.com/Maker-Management-Platform
- github.com/kovacsv/Online3DViewer
- github.com/brentyi/stl_web_viewer2
- github.com/beige90/Madeleine.js
- https://www.viewstl.com
- Aras (PLM-Lösung)
- Gitea (und Codeberg)
Veraltetes, aber Interessantes
- https://github.com/cscott/thing-tracker
- https://github.com/garyhodgson/githubiverse-template
- https://github.com/garyhodgson/thing-tracker-site-template
- https://github.com/drewgates/models3d
- https://cadracks.github.io
Blender Tipps
Koplanare Flächen migrieren
Das Ziel: Flächenanzahl in Modellen reduzieren, z.B. weil man eine STL in ein OBJ konvertieren will. STL unterstützt nur Dreiecke, OBJ hingegen Polygone. OBJ Dateien haben in optimierter Struktur somit wesentlich weniger Kanten. Das ist vorteilhaft für Inkscape Plugins wie Import 3D Mesh und Paperfold.
Suchbegriffe
- Merge coplanar adjacent faces
- flat triangles to polygons
- triangles to quads
Lösung
"Decimate"-Modifier anwenden. Im Beispie reduzieren wir das Modell "M" von 26 Flächen auf 15 Flächen.
3D Scan / Reverse Engineering
Wir haben einen OpenScan 3D Scanner im FabLab.
Software
- Regard3D
- MeshLab
- VisualSFM
- + sehr schnelle Rekonstruktionszeit
- + übersichtliche Bedienoberfläche
- - zum Teil schwierig in Gang zu bekommen
- - Output: Punktwolke (weitere Software für Meshing benötigt, z.B. CloudCompare oder Meshlab)
- - nur private Nutzung gestattet
- Alicevision Meshroom
- + sehr angenehme Bedienoberfläche
- + wird aktiv weiterentwickelt
- + mittlere Rekonstruktionsgeschwindigkeit
- + One-Click-Rekonstruktion
- + Output: Punktwolke, Mesh, Textur
- - benötigt CUDA fähige Grafikkarte (Nvidia)
- Colmap
- + übersichtliche Bedienoberfläche
- + mittlere Rekonstruktionsgeschwindigkeit
- - benötigt CUDA fähige Grafikkarte (Nvidia)
- Autodesk MeshMixer
- QLone
Hardware
SVG Werkzeuge
Tools und Bibliotheken
- InkScape
- sk1 project
- CorelDraw
- vectorworks
- Adobe Illustrator
- Rhino 3D
- SolidEdge 2D
- Novograv Vektortool
JavaScript Bibliotheken
Python Bibliotheken
DXF to SVG, SVG to DXF
DXF and SVG are commonly used file formats to describe vector data for machine production (like laser cutters or waterjet machines). An also commonly occuring problem to solve is a conversion between DXF to SVG or vice versa because a lot of programs use only the one or the other format to perform steps like nesting or line optimization. That makes it harder to work without data loss or errors like offsets, wrong scaling, etc.
DXF to SVG
Tested and working
- Use Inkscape with default DXF importer (works with AutoCAD DXF R13) - fails on polylines sometimes
- AutodeskInventorLaserExporter (works but is very limited to only basic entities)
- DXF/DWG Importer - includes tools like ...
- https://github.com/bjnortier/dxf → works but polylines are a bit rough. missing parameter for granularity
- ezdxf (documentation)
- conversion from DXF to SVG works basically very good but creates large "stupid" files.
- Not good for CNC working
- contains an addon to import DWG files https://ezdxf.readthedocs.io/en/stable/addons/dwg.html)
- dxf2svg/pycore.py → "At the moment not all dxf entitles type are supported during converting. It convert LINE, CIRCE, TEXT and all those entities go to one linetype, color and weight." → output looks really strange
- UniConverter → https://github.com/sk1project/uniconvertor/blob/5ecfd71ec612c4c2dcf7ec2f45686a928668d542/uniconvertor/src/uniconvertor/filters/import/dxfloader.py - this gives the ultimate best quality
- https://github.com/voyager-gold/javascript-dxf-to-svg → works but seems to ignore units/sizes/scalefactors
-
https://github.com/abey79/vpype + https://github.com/tatarize/vpype-dxf
-
http://www.calvina.de/pstoedit
-
We can use winder/svgToDxf or Zigazou/svg2dxf to utilize pstoedit to convert the SVG first into an EPS, and from EPS to DXF finally. This toolchain could be integrated into Export Layers extension of InkScape for Example. We can also re-write Export Layers to integrate the inhouse DXF export extension from inkscape
-
Tested and failed
- https://github.com/mduggan/dxf2svg → did not compile using MSYS2 with GCC and make
- https://github.com/mondalaci/dxf2svg2kicad
- https://github.com/aegis1980/cad_to_shapely → QCAD has to be used manually because community edition has no command line
SVG to DXF
Possible ways to convert are ...
- inkscape-lasercut-dxf
- winder/svgToDxf
- Zigazou/svg2dxf
- Feuermurmel/inkscape-shape-cli → "Command line tool to export shapes from an Inkscape SVG document to DXF"
- https://awesome.tech/installing-the-inkscape-plugins (Gerbil) → totally outdated and not that useful (compared with actual DXF Export from InkScape using WinMerge)
- default InkScape exporters (included in regular installation)
SVG Thumbnail Previews in Windows Explorer
Ubuntu hat diese Funktions beispielsweise von Haus aus integriert. SVG-Vorschaubilder in Windows werden nur über externe Software generiert. Dafür eignet sich beispielsweise die Erweiterung von tibold:
Alternativen:
SVG Splitting
SVGSplit
SVGsplit dient dazu, „Gruppen“ (<g>-Tags) in svg-Dateien in einzelne svg-Dateien aufzuteilen. Es gibt sie dann auf der Seite aus und lädt sie automatisch herunter, verpackt als Zip-Datei. Dies ist nützlich für die Erstellung von SVG-Symbolen und funktioniert sehr gut mit Adobe Illustrator oder Inkscape. Speichern Sie einfach Ihre Quelldatei als SVG und legen Sie sie in das obige Feld. Alle Ebenennamen werden zu den neuen Dateinamen für die aufgeteilten SVGs.
- Source Code: https://github.com/tscanlin/svgsplit
- Web Interface: http://svgsplit.com
Slice STL in SVG Ebenen
Slicing mit IceSL
Output:
Beispiel-Import in Inkscape
Slicing mit Blender Laser Slicer Addon
Das folgende Addon zerschneidet ein 3D-Modell in SVG-Objekte: https://github.com/rgsouthall/laser_slicer
SVG Merging
Mehrere SVG in eine SVG verschmelzen
Um zum Beispiel geschnittenen Dateien von IceSL zu einem SVG zusammenzuführen, kann das Tool zum Zusammenführen verwendet werden.
git clone https://github.com/bruno-fs/svg_stack.git
Ein Script zum Benutzen (als merge.cmd
speichern)
@echo off
setlocal enabledelayedexpansion enableextensions
dir /b /a-d *_slice_*.svg > 000_files.list
set out=
for /F %%i in (000_files.list) do set out=!out! %%i
python C:\Users\youruser\Desktop\startup_slices_SVG\svg_stack\svg_stack.py %out% > test.svg
Messmethoden für Grafiken / GCode / Fertigungszeiten (Estimators)
Häufig fragt man sich während der Planung eines Projektes, wie man die Fertigungszeiten bzw. den Aufwand vorauskalkulieren kann. Auf dieser Seite finden sich Gedanken, Beispiele und Softwarelinks für die Estimation für übliche Aufwände wie Schneidzeiten (z.B. Laserschneiden, Wasserstrahlschneiden) von Konturen oder das Entgittern von Folien (Vinylschneiden).
Prinzipielle Abhängikeiten für Fertigungszeiten (wenn Linien "abgefahren" werden oder Bilddaten gerastert werden) sind u.a.:
- DPI (Liniendichte)
- Schneidgeschwindigkeit auf Geraden (Zweipunkt-Linien) und in Kurven (dynamischeres Verhalten mit "Slow Down" in der Kurve!)
- max. Schneidgeschwindigikeit der Maschine
- max. Leerlaufgeschwindigkeit der Maschine
- Materialparameter (Dicke, Art) - häufige Faustregel: je dicker/härter, desto langsamer
- Bearbeitungsmodus (vektoriell oder rasterisiert)
- Vektorsortierung (Linienreihenfolge)
Die Komplexität einer Grafik, welche gelasert oder geplottet werden soll, kann aus verschiedenen Parametern ermittelt werden. Parameter sind unter anderem ...
- ... bei Rastergrafiken
- Anzahl der Farben
- Flächenanteile der einzelnen Farben
- Auflösung - Länge x Breite (px) bzw. DPI
- Grafikschwerpunkt
- Anzahl der einzelnen Inseln bzw. geschlossenen Konturen
- Verhältnis Anzahl Inseln zu Bildgesamtgröße
- kleinste/größte Linienstärken
- ...
- ... bei Vektorgrafiken
- Anzahl der Farben
- Länge der Linien
- Flächenanteile der einzelnen Farben
- Grafikschwerpunkt
- Anzahl der einzelnen Inseln bzw. geschlossenen Konturen
- Verhältnis Anzahl Inseln zu Bildgesamtgröße
- Anzahl der Objekte (Warnung: kann auch Überschneidungen und Duplikate enthalten) - siehe Objekte in Grafiken zählen
- Anzahl der Layer (Ebenen)
- kleinste/größte Linienstärken
- Anzahl Linien und Bögen
- ...
Mit dem Zählen von Objekten in Grafiken lässt sich z.B: der Entgitteraufwand besser einschätzen, denn für jede Fläche, die aus einer Folie abgezogen werden muss, benötigt man mit Entgitterwerkzeugen viel Zeit - egal ob es sich um einen Schneidejob aus einem Laserschneider (z.B. Papier- oder Kartonbogen) oder ein Vinylplott (Folie) handekt. Setzt man pauschal für jede Fläche eine Zeit an, die es bedarf, um diese zu entfernen, lässt sich schnell abschätzen, ob es sinnvoll ist eine Grafik beispielsweise mit hohem Detailgrad zu plotten oder ob eine Detailgradreduktion sinnvoll ist. Professionelle Tools aus den Bereichen der Biologie und Naturwissenschaften (z.B. Zählen von Bakterien oder Zellen in einer Probe) können auch für das Zählen von Inseln in Plottgrafiken genutzt werden, z.B.
- ImageJ
- CellProfiler
- Media Cybernetics Image Pro Plus
Weitere hilfreiche Werkzeuge aus anderem Bereichen:
- Inkscape mit vorher verinselten Vektorgrafiken eignet sich ebenso zum Zählen von Inseln/Objekten. Hilfreiche Tools zur Verinselung und Vektorisierung von Rastergrafiken:
- Imagetracer.js (als InkScape Extension)
- VectorMagic (zum Vektorisieren von Grafiken)
als verinselte Vektorgrafiken zu verstehen sind Grafiken, bei denen Flächen gegeneinander sauber abgrenzen und nicht unsichtbar übereinanderlappen.
Übersicht Werkzeuge
ImageJ
ImageJ
Programm installieren und starten
Grafik öffnen (STRG + O)
Gezählt werden später die schwarzen Objekte auf weißem Hintergrund!
Threshold konfigurieren (STRG + UMSCHALT + T)
"apply" drücken und schließen
Counting Tool aufrufen
"Analyze" → "Analyze Particles ..."
- "Size (pixel^2)"
- Um alle Partikel zu zählen, belassen Sie es bei der Standardeinstellung 0 - Unendlich. Wenn zu viele kleine „Rauschpixel“ als Pixel gezählt werden oder Sie Partikel aufgrund ihrer Größe ausschließen möchten, passen Sie diese Werte an.
- "Circularity"
- Zirkularität schließt Partikel aus, je nachdem, wie nah an der perfekten Rundung sie sind. Um alles einzuschließen, bleiben Sie bei den Standardwerten 0,00 - 1,00. Um etwas auszuschließen, passen Sie diese Zahlen an, wobei Sie bedenken sollten, dass 1,00 ein perfekter Kreis und 0,00 eine gerade Linie ist.
- "Show"
- Outlines → zeigt nummierte Objekte an
Auswertung anpassen
"Results" → "Set Measurements ..."
- skewness = Schiefe
- kurtosis = Wölbung
- centroid = Schwerpunkt
Ergebnisse prüfen und vergleichen
Die Gesamtanzahl von Flächen in der Grafik ergibt sich aus Anzahl Positivbild + Anzahl Negativbild → im Beispiel: 18 + 11 = 29, wobei der Außenrahmen des Canvas im Negativ weitere Randflächen erzeugt!
Inkscape
Inkscape
Pfad ausmessen
Measure Path erlaubt das Messen von Flächeninhalten, Konturlängen, etc.
Objekte zählen
Oder auch über ...
Bildkonvertierung mit Imagetracer.js
mit den Optionen:
- Number of colors to use on palette = 2
- Color quantitization will be repeated this many times = 1
Indem wir die Erweiterung "Styles to layers" verwenden und nach Fill-Color sortieren, können wir die Elementmengen je Layer anzeigen
NC Corrector
NC Corrector
GCode analysieren (Schneidweg, Gesamtdauer des Schneidvorgangs):
- Gesamtpfadlänge
- Gesamtpfadlänge Bögen
- Gesamtpfadlänge Linien
- Gesamtanzahl Elemente
- Gesamtanzahl Linien
- Gesamtanzahl Bögen
Tracing / Edge Detection Software
Mit den folgenden Werkzeugen können Sie Bilder vektorisiert oder nachgezeichnet werden:
AutoSvg
Autosvg is tracing tool, which can convert image format like (jpg,png,gif) into vector
CorelDRAW
Inkdrop
Artsy pixel image to vector graphics converter
Inkscape
Siehe Tracing/Images/Edge Detection
IrfanView
LineTracer
LineTracer is a graphical application for vectorizing and tidying up scanned line-art sketches and drawings. It is primarily meant to to help illustrators and animators.
Roland CutStudio
Skeleton Tracing
A new algorithm for retrieving topological skeleton as a set of polylines from binary images.
StibbleGen
Software that can create stipple drawings and “TSP art,” from image files
Vector Magic
VTracer
Raster to Vector Graphics Converter
ZebraTrace
ein einfaches Werkzeug, um Bitmap-Bilder in ein Muster von Kurven mit variabler Breite umzuwandeln. Sie können die Anzahl der Kurven, die Auflösung, die minimale und maximale Breite und die Funktionen zum Plotten der Kurven einstellen. Die Anwendung wurde in erster Linie für die Gestaltung von Guilloché-Mustern und alle Arten von kreativen Gravuren entwickelt. ZebraTrace hat eine Qt5-basierte Benutzeroberfläche und ist in Python geschrieben.
Lasercutter / Waterjet Cutter Software
Reine Laser Software
- BOSSLASER Laser CAD / LaserWorks / RDWorks
- Cameo LaserDRAW (commerical)
- Epilog Dashboard (commerical)
- LaserGRAV
- LaserGRBL (free)
- Lasercut 5.3 (commerical)
- LaserSVG (free)
- laserweb.yurl.ch (open source)
- LightBurn (commercial)
- LotusCut (Lotus Laser) (commercial)
- RetinaEngrave3D (commercial)
- Visicut (open source)
Suites für Wasserstrahlschneiden, Plasmaschneiden und Laserschneiden
- igems (commerical)
- CutLeader (commerical)
- wam.wazer.com (nur für Wasserstrahlschneider "Wazer" einsetzbar)
fogleman/primitive mit Windows
Öffnen einer neuen cmd-Shell und ausführen:
go get -u github.com/fogleman/primitive
Windows 64 Bit Executable erzeugen
cd C:\
git clone https://github.com/fogleman/primitive.git
cd primitive
set GOOS=windows
set GOARCH=amd64
go build -o primitive.exe main.go
Puzzle Generatoren
Es gibt eine ganze Reihe verschiedener Puzzle Generatoren im Netz. Hier eine Auswahl bzw. unsere Recherche
- Inkscape Extensions
- bonnieeisenman.com clojure-puzzles
- juricho.me puzzle-generator
- tolgakarasa jittery-voronoi
- draradech jigsaw
Ein paar Beispiele von draradech
Laser Cutter Test mit draradech jigsaw
Ähnlich wie Lasercut Jigsaw sind auch in der Software von draradech keine Algorithmen verbaut, um die Teile einzeln im Vektorfile zu speichern. So wird das Puzzlegitter durch vertikale und horizontale Kurven ausgedrückt. Ein erster Test sieht vielversprechend aus, wenn auch die Puzzleteile leider viel zu klein geraten sind. Außerdem wurde im folgenden Beispiele erst danach festgestellt, dass es clever wäre, wenn man die Rückseite des Puzzles vorher einfärbt, damit sich später Teileober- und Unterseiten klar unterscheiden lassen. Das im Beispiel gelaserte Tempelhofer Feld (Berlin) hat einige Himmelspassagen, die genauso hell (=ungraviert) sind, wie die blanke Rückseite.
Als Empfehlung:
- Puzzle-Rückseite vorher einfärben / beizen
- Materialdicke nicht zu stark wählen (im Beispiel: 3 mm Pappelsperrholz; besser: 1,5 bis 2 mm finnische Holzpappe)
- Puzzle-Nasen mindestens 3 mm dick halten, damit sie beim Stecken nicht brechen
Offtopic: Vollfarb-Puzzle Test auf 0,9mm Finnpappe
Das folgende Lasercut-Beispiel aus Finnpappe wurde mit Inkscape (Puzzle Konturen) erzeugt und das Motiv mit Transferdruck vor dem Lasern aufgedruckt. Siehe Transferdruck (Sublimation) auf Holz und Pappe.
Abwicklungen von 3D Modellen zu 2D Patterns
dxf2papercraft
dxf2papercraft is an open source flattener, available at https://sourceforge.net/projects/dxf2papercraft/files
Documentation page: https://dxf2papercraft.sourceforge.net
command line options
Usage: ./dxf2papercraft [options] infile3D.dxf outfile2D.dxf
convert a polygonal 3D object into a 2D cut-out sheet for
producing a paper model of the object using glue and scissors
Copyright by Thomas Haenselmann <givenname@familyname.de>
Options:
-m, --nomerge no merging of faces into single polygon
-n, --number print face numbers
-d, --divide draw each face separate
-o, --overlap allow overlapping faces in cut-out sheet
-h, --hide hide glue tabs
-f, --force force glue tabs, even if intersecting faces
-p, --split 8,17 face number 8 and 17 get disconnected from the rest
(use -n to see face numbers in 2D DXF file)
-s, --strategy 0..5 0: draw smallest polygon first / 1: draw largest first
2: as ordered in file / 3: keep adjacent faces continuous
4: stretch 2D layout wide / 5: keep layout dense
-?, --help display this text
Converting dxf2papercraft generated DXF file output to SVG
Using dxf2papercraft generates 2D DXF output from 3D DXF input. We can use some tools to convert away the DXF to a neutral format like SVG.
kabeja (works)
Some tests with conversion of dxf2papercraft dxf output to SVG files
./dxf2papercraft/dxf2papercraft -d test3d.dxf test2d.dxf
sed -i 's/ENDSEQ/ENDSEC/g' test2d.dxf
cd kabeja/
java -jar launcher.jar -nogui -pipeline svg ../test2d.dxf ../test2d.svg
cd ../
inkscape test2d.svg
OpenSCAD (failed)
The dxf generated output from dxf2papercraft is not usable with openscad (we could use openscad to convert).
import(file="/home/tomate/mightyscape/papercraft_unfold/test.dxf");
WARNING: Unsupported DXF Entity 'SEQEND' (170) in "test.dxf".
WARNING: Unsupported DXF Entity 'VERTEX' (63c) in "test.dxf".
WARNING: Unsupported DXF Entity 'POLYLINE' (170) in "test.dxf".
How to create usable input files for dxf2papercraft?
dxf2papercraft only handles 3D DXF files. A lot of files are not shipped in this format. So how we can convert models to 3D DXF to use dxf2papercraft?
Blender "Import AutoCAD DXF format (.dxf) Addon
On Linux and Windows we can use Blender to import models like STL or OBJ. We can write a usable DXF file for dxf2papercraft.
admesh
admesh is a simple tool which works well to make 3D DXF files
sudo apt install admesh
admesh 3dprint-bolt.stl --write-dxf 3dprint-bolt.dxf
admesh is able to generate DXF files from STL files too. But trying to import larger files may give error
dimeModel::largestHandle: 0
terminate called after throwing an instance of 'std::bad_alloc'
hat(): std::bad_alloc
Aborted (core dumped)
How to improve dxf2papercraft?
In conclusion there are some ToDos to make dxf2papercraft better
- fix ENDSEQ bug (must be named "ENDSEC")
- update dime library to most recent one
- add native SVG file export option
- make colored output
- add STL input option (integrate admesh into conversion toolchain)
- allow to disable printing out numbers
- remove duplicate lines