Extracting 2D mendel outlines using OpenSCAD

Here is a quick and easy way to get 2D DXF drawings extracted from 3D STL shapes using OpenSCAD. Launch OpenSCAD and enter the following:

projection(cut=false) import_stl("/full/path/to/stl");

Replace “/full/path/to/stl” with the path to your stl file, and hit F6 to compile and render using CGAL.

From the Design pull down menu choose Export as DXF.

The resulting DXF file as viewed in QCad is basic (circles are made from several straight line segments), but its good for making measurements or printing out templates.

You might find that you have to rotate the STL if you want to get a projection from a different side. You can also set cut=true if you want to cut the object using the XY-plane instead of projecting onto the XY-plane, if you do you will need to translate your object by a negative Z value. e.g:

projection(cut=true) translate([0,0,-10]) rotate([0,90,0]) import_stl("file.stl");

See the projection function in the OpenSCAD manual for more details.

projection

10 thoughts on “Extracting 2D mendel outlines using OpenSCAD”

  1. Is there a way to get or set the scale of the plot? i.e. 1:1,or 2:1. I get DXF files with wildly varying scales and they are very difficult to print. I am using LibreCAD to visualise and do the printing.

    1. By default OpenSCAD will treat the STL at a 1:1 scale. If you know what scale factor you want you can use:

      projection(cut=false) scale([0.5,0.5,0.5]) import_stl("/full/path/to/stl");

      You can read more about the scale operation in the openscad manual.

  2. If you want automate creating DXF from STL parts, you may use bash-script in directory with STL files:

    ls Slice-*.stl | while read r; do openscad -o "$r".dxf 1.scad -Dr=\"$r\"; done

    Where the contents of the file1.scad:

    r=””;
    projection(cut = false) import (str(r), convexity=3);

Leave a comment