<div dir="ltr">Thanks for all your hard work.  I am confused on some things though:<div><br></div><div>1) " But Thrown-together still shows purple...</div><<a href="http://forum.openscad.org/file/t359/arches2_fixed_purple.jpg" rel="noreferrer" target="_blank">http://forum.openscad.org/file/t359/arches2_fixed_purple.jpg</a>> "<div>So that is the kind of thing I have been seeing but the image shows the facets in shades of yellow, and only the edges are purple/magenta/pink.  I have been operating under the assumption that whole faces/facets should be purple/magenta/pink to show a problem.  Another person suggested those "edges" were really very narrow facets or gaps.  But it seems hard for me to believe that every single face / facet in my object also is bordered on all sides by either facets with a very tiny width or holes with a tiny width.  Or does this mean I have been looking for the wrong thing in "thrown together" and edges with purple/magenta/pink mean there is a problem (that is still somewhat confusing because it suggests that somehow everything is in error; I'd think it would be almost impossible to generate something that was all bad or nearly all bad)?  So I think I don't know how to interpret "thrown together" properly</div><div><br></div><div>2) the overhang thing you found I believe is the problem, but I don't really get how it happens.  Lately I've been doing arches2(16) specifying only 16 points per arch.  The advantage of doing that is (given the other defaults) the points should be widely enough spaced apart that floating point vagaries don't cause two points to end up (with rounding errors) at the same coordinate.  Also I set some debug messages in the code to spit out how many points each arch had.  All the messages said "16", so with equal number of point I don't see how an overhang should happen.  You mentioned there might be some problem with skin() (I didn't realize skin() had known bugs) which could explain things; otherwise I don't understand how when knitting together polygons (with roughly similar shapes, non degenerate points, the same order of points, and the same number of vertices) gives an overhang</div><div><br></div><div>That being said it did occur to me that ogeepolyPath (which is generating the coordinate path to center the arches on) is generating 402 points, whereas my wave() routine is generating 105 arch polygons.  I could see that it might cause a problem (if skin() has to interpolate or do something like that to make them match).  I did go back to force ogeepolyPath to generate 105 points so it would match the number of archways being generated.  Unfortunately I still get the "<span style="white-space:pre-wrap;color:rgb(0,0,0);background-color:rgb(255,176,176)">ERROR: CGAL error in CGAL_Nef_polyhedron3(): CGAL ERROR: assertion violation! Expr: e_below != SHalfedge_handle() File: /opt/mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_3/SNC_FM_decorator.h Line: 426</span><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">" error when I try to build the hallway, subtract a solid mirrored version, then add the mirror version</span></div></div>