discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Front_half, back_half.

L
larry
Mon, Aug 17, 2026 9:35 PM

Any reason why this gives me an error like this:

WARNING: [manifold] Minkowski failed with error, falling back to Nef
operation: bad any_cast

Code:

include <BOSL2/std.scad>
$fn=$preview ? 60 : 180;

back_half() plate();

module plate() {
cuboid([100,100,5],rounding=1.5,teardrop=true);
}

It sometimes works,and it sometimes works with front_half(),
and I have yet to have it work with both.

Do I have to go back to just differencing them with a cube?

Larry

Any reason why this gives me an error like this: WARNING: [manifold] Minkowski failed with error, falling back to Nef operation: bad any_cast Code: include <BOSL2/std.scad> $fn=$preview ? 60 : 180; back_half() plate(); module plate() { cuboid([100,100,5],rounding=1.5,teardrop=true); } It sometimes works,and it sometimes works with front_half(), and I have yet to have it work with both. Do I have to go back to just differencing them with a cube? Larry
CC
Cory Cross
Mon, Aug 17, 2026 10:48 PM

On 8/17/26 2:35 PM, larry via Discuss wrote:

Any reason why this gives me an error like this:

WARNING: [manifold] Minkowski failed with error, falling back to Nef
operation: bad any_cast

Code:

include <BOSL2/std.scad>
$fn=$preview ? 60 : 180;

back_half() plate();

module plate() {
cuboid([100,100,5],rounding=1.5,teardrop=true);
}

It sometimes works,and it sometimes works with front_half(),
and I have yet to have it work with both.

Do I have to go back to just differencing them with a cube?

back_half/front_half are literally just differencing with a cube. Fun
problem you got there :). (I assume you know it comes from the
rounding/teardrop)

Cory

On 8/17/26 2:35 PM, larry via Discuss wrote: > Any reason why this gives me an error like this: > > WARNING: [manifold] Minkowski failed with error, falling back to Nef > operation: bad any_cast > > Code: > > include <BOSL2/std.scad> > $fn=$preview ? 60 : 180; > > back_half() plate(); > > module plate() { > cuboid([100,100,5],rounding=1.5,teardrop=true); > } > > It sometimes works,and it sometimes works with front_half(), > and I have yet to have it work with both. > > Do I have to go back to just differencing them with a cube? back_half/front_half are literally just differencing with a cube. Fun problem you got there :). (I assume you know it comes from the rounding/teardrop) Cory
RD
Revar Desmera
Tue, Aug 18, 2026 12:42 AM

On Aug 17, 2026, at 3:48 PM, Cory Cross via Discuss discuss@lists.openscad.org wrote:

back_half/front_half are literally just differencing with a cube. Fun problem you got there :). (I assume you know it comes from the rounding/teardrop)

Cory

Technically, they are intersection()ing with a cube.  And yes, the cuboid() with the teardrop rounding internally does a minkowski().  I don't know why minkowski occasionally fires that message, but it should be harmless.

  • Revar
> On Aug 17, 2026, at 3:48 PM, Cory Cross via Discuss <discuss@lists.openscad.org> wrote: > > back_half/front_half are literally just differencing with a cube. Fun problem you got there :). (I assume you know it comes from the rounding/teardrop) > > Cory Technically, they are `intersection()`ing with a cube. And yes, the `cuboid()` with the teardrop rounding internally does a `minkowski()`. I don't know why minkowski occasionally fires that message, but it should be harmless. - Revar
L
larry
Tue, Aug 18, 2026 3:22 AM

On Mon, 2026-08-17 at 17:42 -0700, Revar Desmera via Discuss wrote:

On Aug 17, 2026, at 3:48 PM, Cory Cross via Discuss
discuss@lists.openscad.org wrote:

back_half/front_half are literally just differencing with a cube.
Fun problem you got there :). (I assume you know it comes from the
rounding/teardrop)

I definitely did not know that.

Technically, they are intersection()ing with a cube.  And yes, the
cuboid() with the teardrop rounding internally does a
minkowski().  I don't know why minkowski occasionally fires that
message, but it should be harmless.

Thank to both. I'll change the bottom to have no rounding.
I agree it should be harmless, but after I get the warning, it often
(perhaps always) needs to be forced to exit.

Larry

On Mon, 2026-08-17 at 17:42 -0700, Revar Desmera via Discuss wrote: > > > > On Aug 17, 2026, at 3:48 PM, Cory Cross via Discuss > > <discuss@lists.openscad.org> wrote: > > > > back_half/front_half are literally just differencing with a cube. > > Fun problem you got there :). (I assume you know it comes from the > > rounding/teardrop) I definitely did not know that. > > Technically, they are `intersection()`ing with a cube.  And yes, the > `cuboid()` with the teardrop rounding internally does a > `minkowski()`.  I don't know why minkowski occasionally fires that > message, but it should be harmless. Thank to both. I'll change the bottom to have no rounding. I agree it should be harmless, but after I get the warning, it often (perhaps always) needs to be forced to exit. Larry
RW
Rogier Wolff
Wed, Aug 19, 2026 10:08 AM

On Mon, 2026-08-17 at 17:42 -0700, Revar Desmera via Discuss wrote:

Technically, they are intersection()ing with a cube.  And yes, the
cuboid() with the teardrop rounding internally does a
minkowski().  I don't know why minkowski occasionally fires that
message, but it should be harmless.

Small tip:

I've found that "intersection" somehow is much slower than difference.
So whenever I do a "half" of something I will difference out the half
I don't want as opposed to intersecting with a cube across the part
that I do want.

Same with Minkovski. It is usually very slow.

So instead of

minkovski () {
  cube ([x,y,z], center=true), 
      sphere (r);
    }

I will rather do:

hull () {
  mz () dup4 () translate ([x/2,y/2,z/2]) sphere (r);
}

where mz mirrors a copy in z direction, and dup4 rotates around z to
produce 4 copies. (I also have dup2 (), dup3 () and dupn (n) . )

(live-coding while writing an Email: The rounded cube becomes bigger
than the xyz provided. Doing a real project I'd correct for that.)

Premature optimization is the root of all evil.

But in this case, the optimized code isn't all that unreadable,
and it will speed up your development cycles as you'll be quicker
to see you've made a mistake, fix it and try again.

Roger. 

--
** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110 **
** Verl. Spiegelmakerstraat 37 2645 LZ  Delfgauw, The Netherlands.
** KVK: 27239233    **
f equals m times a. When your f is steady, and your m is going down
your a** is going up.  -- Chris Hadfield about flying up the space shuttle.
**  'a' for accelleration.

On Mon, 2026-08-17 at 17:42 -0700, Revar Desmera via Discuss wrote: > Technically, they are `intersection()`ing with a cube.  And yes, the > `cuboid()` with the teardrop rounding internally does a > `minkowski()`.  I don't know why minkowski occasionally fires that > message, but it should be harmless. Small tip: I've found that "intersection" somehow is much slower than difference. So whenever I do a "half" of something I will difference out the half I don't want as opposed to intersecting with a cube across the part that I do want. Same with Minkovski. It is usually very slow. So instead of minkovski () { cube ([x,y,z], center=true), sphere (r); } I will rather do: hull () { mz () dup4 () translate ([x/2,y/2,z/2]) sphere (r); } where mz mirrors a copy in z direction, and dup4 rotates around z to produce 4 copies. (I also have dup2 (), dup3 () and dupn (n) . ) (live-coding while writing an Email: The rounded cube becomes bigger than the xyz provided. Doing a real project I'd correct for that.) Premature optimization is the root of all evil. But in this case, the optimized code isn't all that unreadable, and it will speed up your development cycles as you'll be quicker to see you've made a mistake, fix it and try again. Roger. -- ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110 ** ** Verl. Spiegelmakerstraat 37 2645 LZ Delfgauw, The Netherlands. ** KVK: 27239233 ** f equals m times a. When your f is steady, and your m is going down your a** is going up. -- Chris Hadfield about flying up the space shuttle. ** 'a' for accelleration.
JB
Jordan Brown
Thu, Aug 20, 2026 11:41 PM

On 8/19/2026 3:08 AM, Rogier Wolff via Discuss wrote:

I've found that "intersection" somehow is much slower than difference.
So whenever I do a "half" of something I will difference out the half
I don't want as opposed to intersecting with a cube across the part
that I do want.

Same with Minkovski. It is usually very slow.

Minkowski is very slow.

I think that intersection is slow only for preview, not for render. 
Previewing is black magic.  I understand how union works in preview - it
draws all of the pixels, and retains the one that's closest to you.  I
have occasionally understood how difference works in preview, kind of. 
How intersection works is beyond me, but my understanding is that
combinations involving intersection can make the complexity of the
preview processing skyrocket.

On 8/19/2026 3:08 AM, Rogier Wolff via Discuss wrote: > I've found that "intersection" somehow is much slower than difference. > So whenever I do a "half" of something I will difference out the half > I don't want as opposed to intersecting with a cube across the part > that I do want. > > Same with Minkovski. It is usually very slow. Minkowski is very slow. I think that intersection is slow only for preview, not for render.  Previewing is black magic.  I understand how union works in preview - it draws all of the pixels, and retains the one that's closest to you.  I have occasionally understood how difference works in preview, kind of.  How intersection works is beyond me, but my understanding is that combinations involving intersection can make the complexity of the preview processing skyrocket.
RW
Rogier Wolff
Fri, Aug 21, 2026 8:43 AM

On Thu, Aug 20, 2026 at 04:41:02PM -0700, Jordan Brown wrote:

I understand how union works in preview - it
draws all of the pixels, and retains the one that's closest to you.  I
have occasionally understood how difference works in preview, kind of. 
How intersection works is beyond me,

Ahhh! That makes sense!  But I still care about preview speed: That is
what influences my development cycle.

In fact, I have a background process running that will start a render
and export-to-stl behind the scenes, so whenever I've convinced myself
I'd like to go ahead and print my design, the background process will
have finished rendering my project. So almost never do I have to wait
for that to finish. (I can even start arranging things in the slicer
and if I'm afraid I was too quick and didn't catch the last change, hit
F5 in the slicer once the rendering has finished.

But since "manifold" renders of more than a few seconds are a thing of
the past. (With occasionally preview-rendering problems, I wish there
would be an "auto-render" as well as the "auto-preview" that I use
now).

Roger. 

--
** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110 **
** Verl. Spiegelmakerstraat 37 2645 LZ  Delfgauw, The Netherlands.
** KVK: 27239233    **
f equals m times a. When your f is steady, and your m is going down
your a** is going up.  -- Chris Hadfield about flying up the space shuttle.
**  'a' for accelleration.

On Thu, Aug 20, 2026 at 04:41:02PM -0700, Jordan Brown wrote: > I understand how union works in preview - it > draws all of the pixels, and retains the one that's closest to you.  I > have occasionally understood how difference works in preview, kind of.  > How intersection works is beyond me, Ahhh! That makes sense! But I still care about preview speed: That is what influences my development cycle. In fact, I have a background process running that will start a render and export-to-stl behind the scenes, so whenever I've convinced myself I'd like to go ahead and print my design, the background process will have finished rendering my project. So almost never do I have to wait for that to finish. (I can even start arranging things in the slicer and if I'm afraid I was too quick and didn't catch the last change, hit F5 in the slicer once the rendering has finished. But since "manifold" renders of more than a few seconds are a thing of the past. (With occasionally preview-rendering problems, I wish there would be an "auto-render" as well as the "auto-preview" that I use now). Roger. -- ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110 ** ** Verl. Spiegelmakerstraat 37 2645 LZ Delfgauw, The Netherlands. ** KVK: 27239233 ** f equals m times a. When your f is steady, and your m is going down your a** is going up. -- Chris Hadfield about flying up the space shuttle. ** 'a' for accelleration.