[OpenSCAD] CGAL error depends on order of unioning

Shaporev, Timur tim at auriga.com
Wed Jul 24 05:07:41 EDT 2019

Hi Michael,

thank you for the answer but what I was asking is not preview artifact or a way to tweak my design to get around a trap in OpenSCAD. (Preview is not an issue and as I wrote I have found a way to get the result).

The final geometry is valid but OpenSCAD failed to output it, so I see this as a bug, no matter how difficult it is to fix.

Well, anyway, now it is off my hands.

Thank you,

From: Discuss <discuss-bounces at lists.openscad.org> on behalf of MichaelAtOz <oz.at.michael at gmail.com>
Sent: 24 July 2019 07:43
To: discuss at lists.openscad.org
Subject: Re: [OpenSCAD] CGAL error depends on order of unioning

Shaporev, Timur wrote
> While working on https://www.thingiverse.com/thing:3762730 I faced strange
> effect: script produce
> ERROR: CGAL error in CGALUtils::applyBinaryOperator union: CGAL ERROR:
> assertion violation! Expr: itl != it->second.end() File:
> /mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_3/SNC_external_structure.h
> Line: 1152
> on F6 but some change in order of unioning yields expected result.
> I am attaching an archive with both faulty and good versions of scripts.
> (The scripts render long enough: more than 20 minutes to preview the first
> script on my PC and 6 more minutes to render, yet more for the second
> script.)
> If this is new issue I'd appreciate advice on how to (get a ticket number)
> register it.
> Thank you,
> Tim
> _______________________________________________
> OpenSCAD mailing list

> Discuss at .openscad

> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
> 20190722.zip (8K)
> <http://forum.openscad.org/attachment/27016/0/20190722.zip>

I had a look at the code.
With the combination of operations, mostly lined-up at the same boundaries
you are prone to getting edges of two objects aligning, which creates
non-manifold geometry.
At such high resolution you increase the chances of such common edges

Firstly, the preview artefacts you have can be fixed by using convexity=10
in linear_extrude (in two places), it makes looking at the detail easier.

At first I suspected the four quarters probably had the symmetry to cause
But not this time.
It is an art you learn, but I look for points of convergence.

Second try was here:
The middle edge of the inside of the central ring hole, that aligns with the
surface of the back of the face.

Try this as an example


F6 gets "UI-WARNING: Object may not be a valid 2-manifold and may need

So in fail1.scad the easy way to fix it is to rotate that cylinder around
z-axis a small amount, so the line is not co-incident with that face.

difference() {
    union() {
        // assemble them back again
        quarter(); mirror([0,1,0]) quarter();
        mirror([0,0,1]) {
            quarter(); mirror([0,1,0]) quarter();
        rotate([0,0,1])    //
            hull() {
                translate([Rmid,ring_min_width/2-Rth]) circle(Rth);
                translate([Rmid,Rth-ring_min_width/2]) circle(Rth);
        hull() {
            translate([Rmid, yl,zl-Rm]) sphere(Rth);

With that F6 completes without error.

Admin - email* me if you need anything, or if I've done something stupid...

* click on my MichaelAtOz label, there is a link to email me.

Unless specifically shown otherwise above, my contribution is in the Public Domain; to the extent possible under law, I have waived all copyright and related or neighbouring rights to this work. Obviously inclusion of works of previous authors is not included in the above.

The TPP is no simple “trade agreement.”   Fight it! http://www.ourfairdeal.org/   time is running out!
Sent from: http://forum.openscad.org/

OpenSCAD mailing list
Discuss at lists.openscad.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscad.org/pipermail/discuss_lists.openscad.org/attachments/20190724/bf99c128/attachment.html>

More information about the Discuss mailing list