[OpenSCAD] Openscad Indirect Functions

otto otto at 123phase.com
Mon Oct 10 04:53:26 EDT 2016


I have hacked the openscad source code to support function indirection.

Here is a sample of how it works.  Function is decorated with the "@"
character when it is created and when it is used, but not when it is
passed to another function.

//Preferred usage//
function @xsq(x) = x*x;
function @recip(x)=1/x;
vec1=[1,2,3];
vec2=[.1,.7];

function map(func,vec) = [for (i=vec) @func(i)];
echo(map(xsq,vec1));
echo(map(xsq,vec2));
echo(map(recip,vec1));
echo(map(recip,vec2));

//Other crazy usage//
function div3(x)=x/3;
indirect = "div3";
echo(map(indirect,vec2));

Output is:

ECHO: [1, 4, 9]
ECHO: [0.01, 0.49]
ECHO: [1, 0.5, 0.333333]
ECHO: [10, 1.42857]
ECHO: [0.0333333, 0.233333]


Everything is contained in the github repositor:
https://github.com/ottojas/openscad-affine

There is a pdf file there with some sample 3D and 2D output.  In order
to get this capability you need to add about 30 lines of code in
changes to five files in the source directory.  These are relatively
stable files and you may get away with simply copying them from the
ojasSources directory.

This is very much a work in progress.  Comments, questions, flames,
laughter, mockery etc. all welcome.  If anyone tests this please let me
know what your experience is.  Everything is gnu public license as is
the source code for openscad.

Regards
Otto








More information about the Discuss mailing list