When you render an object by itself, CGAL doesn't get invoked and
bogus objects generate no error. Introducing a second object forces
CGAL to run and reveals the error in the first object.
In this case the "thrown together" view mode reveals that half the
faces are reversed (purple). I would say that a library that supplied
that face set is useless...unless you want to do some serious
debugging to flip all the reversed faces.
You might consider instead BOSL2 which includes a polyhedra library
https://github.com/revarbat/BOSL2/wiki/polyhedra.scad
which implements a range of polyhedra, including the icosahedron. And
it actually works. See also:
https://github.com/revarbat/BOSL2/wiki/shapes3d.scad#functionmodule-spheroid
On Fri, Sep 24, 2021 at 8:31 PM Dan White via Discuss
discuss@lists.openscad.org wrote:
---------- Forwarded message ----------
From: Dan White d_e_white@icloud.com
To: discuss@lists.openscad.org
Cc:
Bcc:
Date: Sat, 25 Sep 2021 00:30:58 -0000
Subject: [OpenSCAD] WTF ? ERROR: The given mesh is not closed! Unable to convert to CGAL_Nef_Polyhedron.
Trying something with code from Geodesic Maths for OpenScad - Thingiverse
Preview is fine.
Trying to render coughs out
Rendering Polygon Mesh using CGAL...
ERROR: The given mesh is not closed! Unable to convert to CGAL_Nef_Polyhedron.
If I take out the cylinder, no error.
I even extracted code from maths_geodesic.scad so I might isolate any problem, but no joy.
OpenSCAD 2021.01
running on a MacBookPro running Big Sur (macOS 11.6)
//include <maths_geodesic.scad>
//--------------------------------------------
//WITHOUT <maths_geodesic.scad>
Cepsilon = 0.00000001;
function sph(long, lat, rad=1) = [long, lat, rad];
// Clean: Corrected
function clean(n) = (n < 0) ? ((n < -Cepsilon) ? n : 0) : (n < Cepsilon) ? 0 : n;
// Convert spherical to cartesian
function sph_to_cart(s) = [
clean(s[2]*sin(s[1])*cos(s[0])),
clean(s[2]*sin(s[1])*sin(s[0])),
clean(s[2]*cos(s[1]))
];
//--------------------------------------------
module icosahedron ( radius = 1 ) {
foo = atan ( 0.500 ) ;
polyhedron(
points = [
sph_to_cart ( sph( 0, 0, rad = radius ) ) , // 0
sph_to_cart ( sph( 36, 90 - foo, rad = radius ) ) , // 1
sph_to_cart ( sph( 108, 90 - foo, rad = radius ) ) , // 2
sph_to_cart ( sph( 180, 90 - foo, rad = radius ) ) , // 3
sph_to_cart ( sph( 252, 90 - foo, rad = radius ) ) , // 4
sph_to_cart ( sph( 324, 90 - foo, rad = radius ) ) , // 5
sph_to_cart ( sph( 72, 90 + foo, rad = radius ) ) , // 6
sph_to_cart ( sph( 144, 90 + foo, rad = radius ) ) , // 7
sph_to_cart ( sph( 216, 90 + foo, rad = radius ) ) , // 8
sph_to_cart ( sph( 288, 90 + foo, rad = radius ) ) , // 9
sph_to_cart ( sph( 360, 90 + foo, rad = radius ) ) , // 10
sph_to_cart ( sph( 0, 180, rad = radius ) ) // 11
],
faces = [
[ 0, 1, 2],
[ 0, 2, 3 ],
[ 0, 3, 4 ],
[ 0, 4, 5 ],
[ 0, 5, 1 ],
[ 1, 6, 10 ],
[ 2, 6, 1 ],
[ 2, 6, 7 ],
[ 2, 3, 7 ],
[ 3, 7, 8 ],
[ 3, 8, 4 ],
[ 4, 8, 9 ],
[ 4, 9, 5 ],
[ 5, 9, 10 ],
[ 5,10, 1 ],
[ 11, 6, 7 ],
[ 11, 7, 8 ],
[ 11, 8, 9 ],
[ 11, 9, 10 ],
[ 11, 10, 6 ]
],
convexity = 1
) ;
}
icosahedron ( ) ;
cylinder ( h = 0.01, r = 1, $fn = 25 ) ;
Dan White | d_e_white@icloud.com ------------------------------------------------ “Sometimes I think the surest sign that intelligent life exists elsewhere in the universe is that none of it has tried to contact us.” (Bill Waterson: Calvin & Hobbes)
---------- Forwarded message ----------
From: Dan White via Discuss discuss@lists.openscad.org
To: discuss@lists.openscad.org
Cc: Dan White d_e_white@icloud.com
Bcc:
Date: Sat, 25 Sep 2021 00:30:58 -0000
Subject: [OpenSCAD] WTF ? ERROR: The given mesh is not closed! Unable to convert to CGAL_Nef_Polyhedron.
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org