Kleine SCAD-Helfer
./images/Pyramide_3b_7_transp.png
./images/354px-Gnulinux.svg.png
./images/silhouette/showit_points.png

Kleine SCAD-Helfer

kleine Hilfsfunktionen für OpenSCAD

2025-12-08 (bs)

Kleine OpenSCAD-Helfer

Auf dieser Seite sammeln wir kleine, praktische Hilfsfunktionen, die beim Entwickeln von OpenSCAD-Modellen immer wieder nützlich sind. Alles ist so gehalten, dass es für Einsteiger leicht nachvollziehbar bleibt – im Stil unseres anderen Tutorials.

1. showit(): Punkte und Abstände sichtbar machen

Gerade bei Polygonen oder beim Nachzeichnen von Umrissen ist es oft schwer zu erkennen, ob ein Punkt an der richtigen Stelle liegt. showit() markiert alle Punkte sichtbar im Viewport.

Das Modul ist kurz und kann in jedes Projekt kopiert werden:


/*
CC0 BY (Public Domain)
2025 by bernhard (3d.bit-field.de) is licensed under the Creative Commons - Attribution license.
*/



module showit(p, sz=2)
{
  translate([0, 0, 0])
  {
    for (i = [0: len(p)- 1]) 
    {
      color("red") 
      linear_extrude(1.5)
      translate(p[i]) {
        {
          circle(1);
          translate([2, 0]) text(str(i), size=sz);
        }
      }
    }
  }
}



/*
difference()
{
   offset(0.3) polygon(p);
    polygon(p); 
}
*/


Verwendung:


  p = [ [0,0], [20,0], [20,30], [0,30] ];
  polygon(p);
  showit(p, sz=2);   // zeigt Punkte als kleine Kugeln

Ansicht im Renderer:

Visualisierung von Polygonpunkten

2. mirror_x(): Einfaches Spiegeln an X=0

Viele Modelle werden durch Spiegeln symmetrisch aufgebaut. Diese Hilfsfunktion spart Tipparbeit und vermeidet Fehler.


module mirror_x()
{
    mirror([1,0,0]) children();
}

Beispiel:


left_part = [ [0,0], [10,0], [10,15], [0,15] ];

polygon(left_part);
mirror_x() polygon(left_part);

3. move_to_origin(): Objekt an (0,0) ausrichten

Wenn ein importiertes Modell weit im Raum liegt, kann man es mit einem automatischen Versatz zurück an den Ursprung verschieben.

Minimalversion (2D):

module move_to_origin(p)
{
    minx = min([for(a=p) a[0]]);
    miny = min([for(a=p) a[1]]);
    translate([-minx, -miny]) children();
}

Beispiel:

p = [ [80,120], [120,120], [120,160], [80,160] ];

move_to_origin(p)
    polygon(p);

Titelbildquelle: eigenes Bild


Sende uns Deinen Kommentar

... because software matters