OpenSCAD ist ziemlich cool
(nuxx.net)- Entwurf eines einfachen Batteriehalters mit OpenSCAD als Beispiel zur Erkundung der Grundkonzepte von codebasiertem CAD
- Zuvor wurde mit Autodesk Fusion eine parametrisierte Box für AA- und AAA-Batterien erstellt; diese wurde zum Lernen in OpenSCAD neu umgesetzt
- Durch das Ändern von Variablen wie
numRows,numColumnsundbatteryTypeim Code lässt sich ein individueller Halter erzeugen, und dasselbe Ergebnis ist auch ohne teure CAD-Software möglich - Mit
difference()undtranslate()werden Box und Aussparungen wiederholt erzeugt bzw. entfernt – eine einfache, aber effiziente Konstruktionsweise - Für komplexe Modelle gibt es Grenzen, doch als Werkzeug für einfache geometrische Strukturen wie Abstandshalter oder Bearing Drifts wird es als nützlich bewertet
Entwurf eines Batteriehalters mit OpenSCAD
- Nach dem Entwurf eines grundlegenden boxförmigen Organizers für AA- und AAA-Batterien in Autodesk Fusion wurde dieser in OpenSCAD erneut umgesetzt
- Das bestehende Fusion-Modell hatte eine parametrisierte Struktur, bei der sich Batteriegröße sowie Anzahl von Reihen und Spalten über Variablen ändern lassen
- Das fertige Modell wurde auf Printables hochgeladen
- OpenSCAD ist ein CAD-Werkzeug, das 3D-Objekte durch das Schreiben von Code erzeugt, und eignet sich gut zum Lernen an Modellen mit einfacher Struktur
- Der Autor arbeitete dabei etwa eine Stunde lang mit Verweis auf Teile eines OpenSCAD-Tutorials
- Das Ergebnis wurde als Datei
battery_holder_generator.scadveröffentlicht
Code-Struktur und Funktionsweise
- Als zentrale Variablen werden
AA,AAA,heightCompartment,thicknessWall,numRows,numColumns,batteryTypeusw. definiertwidthBox,lengthBoxunddepthBoxwerden aus den jeweiligen Variablenkombinationen berechnet
- Mit der Funktion
difference()wird zunächst eine Basisbox (cube) erzeugt, aus der anschließend im Inneren die Batteriefächer wiederholt herausgeschnitten werden- Mit
for-Schleifen undtranslate()werden die Positionen der Aussparungen berechnet, und mitcube()wird jede Aussparung erzeugt - Es wurde erwähnt, dass der Teil verwirrend war, in dem
startColumnundstartRowmitlet()innerhalb der Schleife definiert werden mussten
- Mit
Vergleich von OpenSCAD und Fusion
- Dasselbe Modell wurde jeweils in Fusion und OpenSCAD erzeugt und anschließend im Slicer verglichen
- Das Ergebnis ist praktisch identisch, und OpenSCAD ermöglicht durch den leichtgewichtigen codebasierten Ansatz schnelle Änderungen
- Auch ohne teure CAD-Software lässt sich ein Ergebnis auf vergleichbarem Niveau erzielen
Einsatzmöglichkeiten und Grenzen
- Für komplexe Entwürfe ist es nicht ideal, doch für die Erstellung einfacher geometrischer Strukturen wie Abstandshalter oder Bearing Drifts ist es sehr nützlich
- Besonders stark ist es bei der Automatisierung der Herstellung einfacher Teile, die im Alltag häufig gebraucht werden
- Der codezentrierte Entwurfsansatz von OpenSCAD ist effizient für die Erzeugung wiederholender und regelmäßiger Strukturen
Fazit
- OpenSCAD wird als codebasiertes CAD-Werkzeug bewertet, mit dem sich einfache 3D-Modelle schnell erzeugen lassen
- Der Autor beschreibt es sinngemäß als „eigentlich nur Kästen zeichnen und Löcher hineinmachen, aber ziemlich cool“
- Für künftige einfache Entwurfsaufgaben könnte OpenSCAD praktischer als Fusion sein
2 Kommentare
Hacker-News-Kommentare
OpenSCAD ist ein CAD-Tool, das perfekt zur Denkweise von Programmierern passt
Da sich alles parametrisieren lässt, kann man ein einmal erstelltes Gehäuseprojekt durch das Ändern weniger Variablen in vielen Varianten erzeugen
Wenn man im aktuellen Nightly-Build das Manifold-Backend aktiviert, sinkt die Renderzeit von Minuten auf Sekunden
Das offizielle Release von 2021 ist inzwischen zu alt und schwer benutzbar
Die BOSL2-Bibliothek ergänzt Funktionen wie Fillets, Rundungen und Attachments und macht OpenSCAD von einem Spielzeug zu einem praktischen Konstruktionswerkzeug
Es ist auch sehr Git-freundlich, weil sich Änderungen in .scad-Dateien viel leichter vergleichen lassen als in den Binärdateien von Fusion 360
Wegen der Grenzen von OpenSCAD wurde mit Python selbst die SDF-basierte (Signed Distance Function) 3D-Mesh-Erzeugungsbibliothek sdf entwickelt
Mit der flexiblen Logik von Python lassen sich Modelle aufbauen, und vorhandene 3D-Meshes können importiert werden, um Operationen wie Erosion, Expansion, Schneiden und Aushöhlen auszuführen
In diesem Projekt gibt es noch viel zu tun, aber das Themenfeld wirkt sehr spannend
STL speichert Dreieckskoordinaten wie eine Bitmap, während STEP Befehle zur Modellerzeugung eher wie Vektorgrafik speichert
Die meisten GUI-CAD-Systeme basieren auf STEP und sind deshalb gut kompatibel
Falls SDF nur STL erzeugt, wäre es mit Blick auf die Kompatibilität zu GUI-CAD vielleicht sinnvoller, Build123d oder CadQuery zu lernen
Build123d folgt wie Fusion360 oder FreeCAD dem Konzept, erst 2D-Skizzen zu erstellen und sie dann in 3D umzuwandeln, was den Wechsel zwischen GUI- und Code-basiertem CAD erleichtert
Tools wie Meshlab sind an unverständlichen Fehlermeldungen gescheitert, während dieser Ansatz deutlich intuitiver wirkt
Vor Kurzem wurde OpenSCAD benutzt, und während die meisten CAD-Programme verlangen, unzählige Funktionen zu lernen, lässt sich OpenSCAD mit einem A4-Spickzettel erklären
Wenn man statt des 2021er Releases die git-master-Version verwendet, bekommt man deutlich mehr Geschwindigkeit und neuere Funktionen
Mit der BOSL2-Bibliothek muss man komplexe Funktionen klassischer CAD-Systeme nicht selbst implementieren, und es macht Spaß, in die internen Implementierungen hineinzuschauen
In GUI-CAD war es frustrierend, dass bei einer Änderung von 0,25 mm alle Löcher und Aussparungen neu angepasst werden mussten, während der Code-basierte Ansatz dieses Problem vermeidet
Durch den BOSL2-Standardwert center origin werden Transformationen viel einfacher
Schade ist, dass OpenSCAD kein Objektkonzept hat, sodass Zugriffe wie
box1.widthnicht möglich sindBuild123d wurde ausprobiert, hatte aber viele Bugs und eine schwache Dokumentation. Hoffentlich wird das irgendwann besser
Ein Vorteil von OpenSCAD ist, dass sich Modelle leicht durch die mathematische Kombination von Kugeln, Zylindern und Würfeln erstellen lassen
Der Nachteil ist, dass genau diese mathematische Kombinierbarkeit auch die Modellierungsgrenzen festlegt
Der Python unterstützende Fork PythonSCAD soll bald in das Hauptrelease integriert werden
Um ein Modell wie eine Schraube zu bauen, muss man die einzelnen Teile separat erzeugen und überlappen lassen
Für die Ausrichtung an realen Bauteilen ist viel manuelle Berechnung nötig, und hartkodierte Maße lassen sich nur schwer ändern
Der Renderer in der aktuellen Beta ist deutlich schneller und definitiv einen Versuch wert
Siehe dazu das GitHub-Repository
Als leichtgewichtiger 3D-Modeller überzeugt OpenSCAD durch seine Einfachheit
Statt eines riesigen GUI-CAD-Systems kann man Modelle wie beim grafischen Programmieren nur aus Grundkörpern und Transformationen aufbauen
Selbst wenn man den Code nach langer Zeit wieder öffnet, reichen ein paar Zeilen, um alles sofort zu verstehen
Wenn mathematische Constraints nötig sind, sind die Skizzenfunktionen von GUI-CAD deutlich einfacher
In CAD kann man schrittweise zurückgehen und die Struktur sehen, ohne ein Skript interpretieren zu müssen
OpenSCAD kann statt des integrierten Editors auch mit einem externen Editor verwendet werden
Wenn man im externen Editor speichert, wird die Vorschau automatisch aktualisiert
Anleitung zur Einrichtung eines externen Editors
Früher wurde als Einführung in OpenSCAD ein Tutorial zu den „10 wichtigsten Konzepten“ geschrieben
Link zum Tutorial
Tipp: Mit der Variablen
$fnlässt sich die Auflösung steuern$fn = $preview ? 32 : 64;$fn-Wert verwenden, weil sonst die Mesh-Performance leiden kannFür die Analysegenauigkeit ist nicht die visuelle Glätte entscheidend, daher sind etwa 32 bis 64 passend
Um in der Praxis nützliche Modelle zu erstellen, ist zwar einiges an Handarbeit nötig, aber die Möglichkeit, ein vollständig parametrisches Modell in einer 2-KB-Textdatei auszudrücken, ist enorm attraktiv
Git diff funktioniert sinnvoll, und über das Customizer-Panel kann man ein Modell fast wie eine App anpassen
Das ist deutlich effizienter als die riesigen XML-Dateien von FreeCAD
Allerdings ist es umständlich, dass Funktionen wie Fasen (chamfer) oder Rundungen nicht standardmäßig vorhanden sind und über Minkowski-Operationen mit Kegeln oder Kugeln umgesetzt werden müssen
Ich empfehle FreeCAD nachdrücklich.