I'm generating faces as a list of points.  However the list of faces comprises a mixture of faces and lists of faces.  I need to flatten this mixed list.  So far I'm using

<pre>
function depth(a) =
   len(a)== undef 
       ? 0
       : 1+depth(a[0]);

function flatten(l) = [ for (a = l) for (b = a) b ] ;

function dflatten(l,d=2) =
// hack to flatten mixed list and list of lists
    flatten([for (a = l) depth(a) > d ? [for (b=a) b] : [a]]);
 
l= [  [[1,2],[2,3]], [[[1,2],[2,3]]] ];
lf = dflatten(l);
echo(len(lf),lf);
</pre>

but it doesn't really work generally : d = 1 should yield 4 , not 3  I've really struggled to come up with a correct recursive formulation.


        
        
        
<br/><hr align="left" width="300" />
View this message in context: <a href="http://forum.openscad.org/flattening-mixed-lists-of-lists-tp12316.html">flattening mixed lists of lists</a><br/>
Sent from the <a href="http://forum.openscad.org/">OpenSCAD mailing list archive</a> at Nabble.com.<br/>