6 Punkte von GN⁺ 2025-12-22 | 2 Kommentare | Auf WhatsApp teilen
  • 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, numColumns und batteryType im Code lässt sich ein individueller Halter erzeugen, und dasselbe Ergebnis ist auch ohne teure CAD-Software möglich
  • Mit difference() und translate() 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.scad veröffentlicht

Code-Struktur und Funktionsweise

  • Als zentrale Variablen werden AA, AAA, heightCompartment, thicknessWall, numRows, numColumns, batteryType usw. definiert
    • widthBox, lengthBox und depthBox werden 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 und translate() werden die Positionen der Aussparungen berechnet, und mit cube() wird jede Aussparung erzeugt
    • Es wurde erwähnt, dass der Teil verwirrend war, in dem startColumn und startRow mit let() innerhalb der Schleife definiert werden mussten

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

 
GN⁺ 2025-12-22
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

    • Es stellt sich die Frage, worin genau der Unterschied zu anderen Python-basierten Modellierungswerkzeugen wie Build123d oder CadQuery liegt
      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
    • Es gibt die Hoffnung, dass diese Bibliothek vielleicht das Problem einer konischen Helix mit variabler Steigung lösen kann
    • PythonSCAD unterstützt SDF ebenfalls über libfive — auf der Beispielseite einfach ungefähr in der Mitte nach „sdf“ suchen
    • Besonders beeindruckend ist, wie leicht sich Metaball- (blobby-) Blending umsetzen lässt
    • Interessant ist auch die Möglichkeit, vorhandene STL-Dateien zu importieren, Löcher hineinzubohren oder andere Objekte damit zu vereinen
      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

    • Auch hier hat OpenSCAD geholfen, die Präzision für 3D-Druck-Designs zu erreichen
      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
    • Die git-master-Version rendert um ein Vielfaches schneller als ältere Versionen
    • Es wird nach einem Link zum Spickzettel gefragt
    • Allerdings bleibt es schwierig, Dinge wie das Entfernen scharfer Kanten umzusetzen
    • BOSL2 ist wirklich eine starke und nützliche Bibliothek
  • Schade ist, dass OpenSCAD kein Objektkonzept hat, sodass Zugriffe wie box1.width nicht möglich sind
    Build123d 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

    • OpenSCAD basiert auf absoluten Koordinaten, wodurch relative Platzierung oder Beziehungen zwischen Solids schwer auszudrücken sind
      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
    • OpenSCAD bietet auch hull und die Minkowski-Summe, was es zu einem mächtigen Werkzeug macht, wenn man sich damit eingearbeitet hat
    • Es gibt auch die browserbasierte JavaScript-Version OpenJSCAD
      Siehe dazu das GitHub-Repository
    • Empfohlen wird auch das Java-basierte Bowler Studio. Es bietet Clojure-Unterstützung und integrierte Physiksimulation
    • Man kann auch komplexe Formen erzeugen, indem man Punktkoordinaten direkt definiert, aber die richtige Reihenfolge ist so knifflig, dass es sich wie ein MENSA-Test anfühlt
  • 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

    • Früher wurde OpenSCAD viel verwendet, aber in der Praxis wirken klassische CAD-Systeme oft intuitiver
      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 $fn lässt sich die Auflösung steuern
    $fn = $preview ? 32 : 64;

    • Beim Export für FEM-Analysen sollte man allerdings keinen zu hohen $fn-Wert verwenden, weil sonst die Mesh-Performance leiden kann
      Fü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

    • Häufig geht es vor allem um Änderungen an Einzelteilen oder Varianten, und mit Python werden solche wiederholten Aufgaben viel einfacher
    • Für manche fühlt es sich natürlicher an, ein Modell mathematisch zu beschreiben
      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
 
ahwjdekf 2025-12-22

Ich empfehle FreeCAD nachdrücklich.