LD
lee.deraud@roadrunner.com
Sat, May 30, 2026 2:34 AM
One thing about this subject in general: my brain persists in the illusion(?) that a closed surface and a solid object are not quite the same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss discuss@lists.openscad.org
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org
Cc: Glenn Butcher glenn.butcher@gmail.com
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone walls, and ran into all the fussiness of making 'manifold' meshes. I then wrote a short blog post on why STL files are problematic representing object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
The explanation of what “manifold”, the geometric concept, means, that I learned and seems simple and understandable, is that an ant walking on the surface will never fall off an edge, and will never be presented with multiple choices of which surface to walk on next. A bit more formally, every edge is connected to exactly two faces, and the surface never intersects itself.
With respect to Manifold, the library, and CGAL: OpenSCAD supports those two libraries for doing geometric operations like unions, differences, and so on. CGAL is the library that it has used for many years; Manifold is a newer and far faster library. Manifold (or perhaps the way that OpenSCAD uses it) seems to be more tolerant of imperfection.
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
One thing about this subject in general: my brain persists in the illusion(?) that a closed surface and a solid object are not *quite* the same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss <discuss@lists.openscad.org>
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org
Cc: Glenn Butcher <glenn.butcher@gmail.com>
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone walls, and ran into all the fussiness of making 'manifold' meshes. I then wrote a short blog post on why STL files are problematic representing object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
> The explanation of what “manifold”, the geometric concept, means, that I learned and seems simple and understandable, is that an ant walking on the surface will never fall off an edge, and will never be presented with multiple choices of which surface to walk on next. A bit more formally, every edge is connected to exactly two faces, and the surface never intersects itself.
>
> With respect to Manifold, the library, and CGAL: OpenSCAD supports those two libraries for doing geometric operations like unions, differences, and so on. CGAL is the library that it has used for many years; Manifold is a newer and far faster library. Manifold (or perhaps the way that OpenSCAD uses it) seems to be more tolerant of imperfection.
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
GB
Glenn Butcher
Sat, May 30, 2026 2:48 AM
Interesting question. I might be wrong in this, so anyone with more
knowledge can correct me, but the inside of a manifold mesh is
considered 'solid' because the 'other' sides, or, inward-facing sides of
the triangles do not form a valid surface. One of the criteria of a
manifold mesh is that the triangles are all specified
'counter-clockwise', that is, the order of the three points is given
such that a round trip through them goes in a counter-clockwise path.
Looking at the triangle from the inside, its points 'wind' clockwise, if
properly defined. If I have it right, this convention enables
'inside/outside' tests, where a point in space is determined to be
inside or outside the mesh.
The triangle mesh that defines an object is a description of its
boundary, just one aspect of the object.
On 5/29/2026 8:34 PM, Lee DeRaud via Discuss wrote:
One thing about this subject in general: my brain persists in the illusion(?) that a closed surface and a solid object are not quite the same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss discuss@lists.openscad.org
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org
Cc: Glenn Butcher glenn.butcher@gmail.com
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone walls, and ran into all the fussiness of making 'manifold' meshes. I then wrote a short blog post on why STL files are problematic representing object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
The explanation of what “manifold”, the geometric concept, means, that I learned and seems simple and understandable, is that an ant walking on the surface will never fall off an edge, and will never be presented with multiple choices of which surface to walk on next. A bit more formally, every edge is connected to exactly two faces, and the surface never intersects itself.
With respect to Manifold, the library, and CGAL: OpenSCAD supports those two libraries for doing geometric operations like unions, differences, and so on. CGAL is the library that it has used for many years; Manifold is a newer and far faster library. Manifold (or perhaps the way that OpenSCAD uses it) seems to be more tolerant of imperfection.
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
Interesting question. I might be wrong in this, so anyone with more
knowledge can correct me, but the inside of a manifold mesh is
considered 'solid' because the 'other' sides, or, inward-facing sides of
the triangles do not form a valid surface. One of the criteria of a
manifold mesh is that the triangles are all specified
'counter-clockwise', that is, the order of the three points is given
such that a round trip through them goes in a counter-clockwise path.
Looking at the triangle from the inside, its points 'wind' clockwise, if
properly defined. If I have it right, this convention enables
'inside/outside' tests, where a point in space is determined to be
inside or outside the mesh.
The triangle mesh that defines an object is a description of its
boundary, just one aspect of the object.
On 5/29/2026 8:34 PM, Lee DeRaud via Discuss wrote:
> One thing about this subject in general: my brain persists in the illusion(?) that a closed surface and a solid object are not *quite* the same thing, i.e. that a manifold STL is inherently hollow.
> Is this a distinction without a difference?
>
> -----Original Message-----
> From: Glenn Butcher via Discuss <discuss@lists.openscad.org>
> Sent: Friday, May 29, 2026 6:03 PM
> To: discuss@lists.openscad.org
> Cc: Glenn Butcher <glenn.butcher@gmail.com>
> Subject: [OpenSCAD] Re: beginners question
>
> I recently finished writing code to do a specific sort of mesh, stone walls, and ran into all the fussiness of making 'manifold' meshes. I then wrote a short blog post on why STL files are problematic representing object boundaries:
>
> https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
>
> Tried to make it understandable; anyone has questions, post them here.
>
> Glenn
>
> On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
>> The explanation of what “manifold”, the geometric concept, means, that I learned and seems simple and understandable, is that an ant walking on the surface will never fall off an edge, and will never be presented with multiple choices of which surface to walk on next. A bit more formally, every edge is connected to exactly two faces, and the surface never intersects itself.
>>
>> With respect to Manifold, the library, and CGAL: OpenSCAD supports those two libraries for doing geometric operations like unions, differences, and so on. CGAL is the library that it has used for many years; Manifold is a newer and far faster library. Manifold (or perhaps the way that OpenSCAD uses it) seems to be more tolerant of imperfection.
>> _______________________________________________
>> OpenSCAD mailing list
>> To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
MM
Michael Marx (spintel)
Sat, May 30, 2026 3:43 AM
that a closed surface and a solid object are not quite the same thing,
i.e. that a manifold STL is inherently hollow.
That is if you focus on surface, as a thin layer, it is not, the surface is a boundary.
Consider the green insides below, in the middle. It IS the solid, defined by the boundary.
It is different to the right side hollow cyan space, inside a solid.
So hollow must be created, by differencing. That is absence of solid.
Re Glenn's winding, the winding of the cyan is reversed, so the inside face is the hollow surface facing inwards.
Code:
$fs=0.2;
translate([-10,0,0])
hollowSphereShow(10,5,"blue");
difference() {
sphere(d=10);
translate([-15,-30,-15])
cube([30,30,30]);
}
translate([10,0,0])
difference() {
hollowSphere(10,5,"cyan");
translate([-15,-30,-15])
cube([30,30,30]);
}
module hollowSphere(outD,inD,colIn=undef) {
difference() {
sphere(d=outD);
color(colIn) sphere(d=inD);
}
}
module hollowSphereShow(outD,inD,colIn=undef) {
difference() {
%sphere(d=outD);
color(colIn) sphere(d=inD);
}
}
-----Original Message-----
Sent: Saturday, May 30, 2026 12:35 PM
To: 'OpenSCAD general discussion Mailing-list'
Subject: [OpenSCAD] Re: beginners question
One thing about this subject in general: my brain persists in the illusion(?) that a
closed surface and a solid object are not quite the same thing, i.e. that a manifold STL
Is this a distinction without a difference?
-----Original Message-----
Sent: Friday, May 29, 2026 6:03 PM
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone walls, and ran into
all the fussiness of making 'manifold' meshes. I then wrote a short blog post on why STL
files are problematic representing object boundaries:
Tried to make it understandable; anyone has questions, post them here.
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
The explanation of what “manifold”, the geometric concept, means, that I learned and
seems simple and understandable, is that an ant walking on the surface will never fall off
an edge, and will never be presented with multiple choices of which surface to walk on
next. A bit more formally, every edge is connected to exactly two faces, and the surface
With respect to Manifold, the library, and CGAL: OpenSCAD supports those two libraries
for doing geometric operations like unions, differences, and so on. CGAL is the library
that it has used for many years; Manifold is a newer and far faster library. Manifold (or
perhaps the way that OpenSCAD uses it) seems to be more tolerant of imperfection.
> that a closed surface and a solid object are not *quite* the same thing,
> i.e. that a manifold STL is inherently hollow.
That is if you focus on surface, as a thin layer, it is not, the surface is a boundary.
Consider the green insides below, in the middle. It IS the solid, defined by the boundary.
It is different to the right side hollow cyan space, inside a solid.
So hollow must be created, by differencing. That is absence of solid.
Re Glenn's winding, the winding of the cyan is reversed, so the inside face is the hollow surface facing inwards.
Code:
$fs=0.2;
translate([-10,0,0])
hollowSphereShow(10,5,"blue");
difference() {
sphere(d=10);
translate([-15,-30,-15])
cube([30,30,30]);
}
translate([10,0,0])
difference() {
hollowSphere(10,5,"cyan");
translate([-15,-30,-15])
cube([30,30,30]);
}
module hollowSphere(outD,inD,colIn=undef) {
difference() {
sphere(d=outD);
color(colIn) sphere(d=inD);
}
}
module hollowSphereShow(outD,inD,colIn=undef) {
difference() {
%sphere(d=outD);
color(colIn) sphere(d=inD);
}
}
> -----Original Message-----
> From: Lee DeRaud via Discuss [mailto:discuss@lists.openscad.org]
> Sent: Saturday, May 30, 2026 12:35 PM
> To: 'OpenSCAD general discussion Mailing-list'
> Cc: lee.deraud@roadrunner.com
> Subject: [OpenSCAD] Re: beginners question
>
> One thing about this subject in general: my brain persists in the illusion(?) that a
> closed surface and a solid object are not *quite* the same thing, i.e. that a manifold STL
> is inherently hollow.
> Is this a distinction without a difference?
>
> -----Original Message-----
> From: Glenn Butcher via Discuss <discuss@lists.openscad.org>
> Sent: Friday, May 29, 2026 6:03 PM
> To: discuss@lists.openscad.org
> Cc: Glenn Butcher <glenn.butcher@gmail.com>
> Subject: [OpenSCAD] Re: beginners question
>
> I recently finished writing code to do a specific sort of mesh, stone walls, and ran into
> all the fussiness of making 'manifold' meshes. I then wrote a short blog post on why STL
> files are problematic representing object boundaries:
>
> https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
>
> Tried to make it understandable; anyone has questions, post them here.
>
> Glenn
>
> On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
> > The explanation of what “manifold”, the geometric concept, means, that I learned and
> seems simple and understandable, is that an ant walking on the surface will never fall off
> an edge, and will never be presented with multiple choices of which surface to walk on
> next. A bit more formally, every edge is connected to exactly two faces, and the surface
> never intersects itself.
> >
> > With respect to Manifold, the library, and CGAL: OpenSCAD supports those two libraries
> for doing geometric operations like unions, differences, and so on. CGAL is the library
> that it has used for many years; Manifold is a newer and far faster library. Manifold (or
> perhaps the way that OpenSCAD uses it) seems to be more tolerant of imperfection.
> > _______________________________________________
> > OpenSCAD mailing list
> > To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
AM
Adrian Mariano
Sat, May 30, 2026 2:10 PM
Lee, the technical mathematical definition of a 2-dimensional manifold is a
surface that looks locally like a plane at every point, or more formally,
one where you can map a neighborhood of every point continuously into the
plane. In 3d modeling we are using the 2d manifold to define a 3d object
by specifying its boundary. If the manifold is bounded (and orientable--a
technical condition) then it has an inside and an outside and the points
inside will form a well-behaved bounded 3d solid. (Examples of unbounded
manifolds: plane, paraboloid, infinitely long cylinder. Bounded: sphere,
torus. Bounded but not orientable: klein bottle.)
On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss <
discuss@lists.openscad.org> wrote:
One thing about this subject in general: my brain persists in the
illusion(?) that a closed surface and a solid object are not quite the
same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss discuss@lists.openscad.org
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org
Cc: Glenn Butcher glenn.butcher@gmail.com
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone
walls, and ran into all the fussiness of making 'manifold' meshes. I then
wrote a short blog post on why STL files are problematic representing
object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
The explanation of what “manifold”, the geometric concept, means, that I
learned and seems simple and understandable, is that an ant walking on the
surface will never fall off an edge, and will never be presented with
multiple choices of which surface to walk on next. A bit more formally,
every edge is connected to exactly two faces, and the surface never
intersects itself.
With respect to Manifold, the library, and CGAL: OpenSCAD supports those
two libraries for doing geometric operations like unions, differences, and
so on. CGAL is the library that it has used for many years; Manifold is a
newer and far faster library. Manifold (or perhaps the way that OpenSCAD
uses it) seems to be more tolerant of imperfection.
Lee, the technical mathematical definition of a 2-dimensional manifold is a
surface that looks locally like a plane at every point, or more formally,
one where you can map a neighborhood of every point continuously into the
plane. In 3d modeling we are using the 2d manifold to define a 3d object
by specifying its boundary. If the manifold is bounded (and orientable--a
technical condition) then it has an inside and an outside and the points
inside will form a well-behaved bounded 3d solid. (Examples of unbounded
manifolds: plane, paraboloid, infinitely long cylinder. Bounded: sphere,
torus. Bounded but not orientable: klein bottle.)
On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss <
discuss@lists.openscad.org> wrote:
> One thing about this subject in general: my brain persists in the
> illusion(?) that a closed surface and a solid object are not *quite* the
> same thing, i.e. that a manifold STL is inherently hollow.
> Is this a distinction without a difference?
>
> -----Original Message-----
> From: Glenn Butcher via Discuss <discuss@lists.openscad.org>
> Sent: Friday, May 29, 2026 6:03 PM
> To: discuss@lists.openscad.org
> Cc: Glenn Butcher <glenn.butcher@gmail.com>
> Subject: [OpenSCAD] Re: beginners question
>
> I recently finished writing code to do a specific sort of mesh, stone
> walls, and ran into all the fussiness of making 'manifold' meshes. I then
> wrote a short blog post on why STL files are problematic representing
> object boundaries:
>
>
> https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
>
> Tried to make it understandable; anyone has questions, post them here.
>
> Glenn
>
> On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
> > The explanation of what “manifold”, the geometric concept, means, that I
> learned and seems simple and understandable, is that an ant walking on the
> surface will never fall off an edge, and will never be presented with
> multiple choices of which surface to walk on next. A bit more formally,
> every edge is connected to exactly two faces, and the surface never
> intersects itself.
> >
> > With respect to Manifold, the library, and CGAL: OpenSCAD supports those
> two libraries for doing geometric operations like unions, differences, and
> so on. CGAL is the library that it has used for many years; Manifold is a
> newer and far faster library. Manifold (or perhaps the way that OpenSCAD
> uses it) seems to be more tolerant of imperfection.
> > _______________________________________________
> > OpenSCAD mailing list
> > To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
LD
lee.deraud@roadrunner.com
Sat, May 30, 2026 3:35 PM
Yeah, we’re kinda getting into some theoretical weeds here…
Change of perspective: consider slicing a cuboid into two pieces using an arbitrary surface. And by arbitrary, I mean like a bounded chunk of mesh or surface points coming from a 3D scanner.
Alternatively, consider it as a 3D extension of ‘projection()’ from an arbitrary non convex surface. I can compute a ‘line’ (more precisely a sequence of points) projecting from any given point on the surface to an arbitrary base plane. Repeating at any desired density eventually gives me a dense, more-or-less solid point-cloud. But how do I then generate a triangle mesh that wraps that quasi-solid?
(Note: I have no real confidence that OpenSCAD can handle either case. Most likely I’d end up using something like open3d.)
From: Adrian Mariano via Discuss discuss@lists.openscad.org
Sent: Saturday, May 30, 2026 7:10 AM
To: OpenSCAD general discussion Mailing-list discuss@lists.openscad.org
Cc: Adrian Mariano avm4@cornell.edu
Subject: [OpenSCAD] Re: beginners question
Lee, the technical mathematical definition of a 2-dimensional manifold is a surface that looks locally like a plane at every point, or more formally, one where you can map a neighborhood of every point continuously into the plane. In 3d modeling we are using the 2d manifold to define a 3d object by specifying its boundary. If the manifold is bounded (and orientable--a technical condition) then it has an inside and an outside and the points inside will form a well-behaved bounded 3d solid. (Examples of unbounded manifolds: plane, paraboloid, infinitely long cylinder. Bounded: sphere, torus. Bounded but not orientable: klein bottle.)
On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org > wrote:
One thing about this subject in general: my brain persists in the illusion(?) that a closed surface and a solid object are not quite the same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org mailto:discuss@lists.openscad.org
Cc: Glenn Butcher <glenn.butcher@gmail.com mailto:glenn.butcher@gmail.com >
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone walls, and ran into all the fussiness of making 'manifold' meshes. I then wrote a short blog post on why STL files are problematic representing object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
The explanation of what “manifold”, the geometric concept, means, that I learned and seems simple and understandable, is that an ant walking on the surface will never fall off an edge, and will never be presented with multiple choices of which surface to walk on next. A bit more formally, every edge is connected to exactly two faces, and the surface never intersects itself.
With respect to Manifold, the library, and CGAL: OpenSCAD supports those two libraries for doing geometric operations like unions, differences, and so on. CGAL is the library that it has used for many years; Manifold is a newer and far faster library. Manifold (or perhaps the way that OpenSCAD uses it) seems to be more tolerant of imperfection.
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
Yeah, we’re kinda getting into some theoretical weeds here…
Change of perspective: consider slicing a cuboid into two pieces using an arbitrary surface. And by arbitrary, I mean like a bounded chunk of mesh or surface points coming from a 3D scanner.
Alternatively, consider it as a 3D extension of ‘projection()’ from an arbitrary non convex surface. I can compute a ‘line’ (more precisely a sequence of points) projecting from any given point on the surface to an arbitrary base plane. Repeating at any desired density eventually gives me a dense, more-or-less solid point-cloud. But how do I then generate a triangle mesh that wraps that quasi-solid?
(Note: I have no real confidence that OpenSCAD can handle either case. Most likely I’d end up using something like open3d.)
From: Adrian Mariano via Discuss <discuss@lists.openscad.org>
Sent: Saturday, May 30, 2026 7:10 AM
To: OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org>
Cc: Adrian Mariano <avm4@cornell.edu>
Subject: [OpenSCAD] Re: beginners question
Lee, the technical mathematical definition of a 2-dimensional manifold is a surface that looks locally like a plane at every point, or more formally, one where you can map a neighborhood of every point continuously into the plane. In 3d modeling we are using the 2d manifold to define a 3d object by specifying its boundary. If the manifold is bounded (and orientable--a technical condition) then it has an inside and an outside and the points inside will form a well-behaved bounded 3d solid. (Examples of unbounded manifolds: plane, paraboloid, infinitely long cylinder. Bounded: sphere, torus. Bounded but not orientable: klein bottle.)
On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss <discuss@lists.openscad.org <mailto:discuss@lists.openscad.org> > wrote:
One thing about this subject in general: my brain persists in the illusion(?) that a closed surface and a solid object are not *quite* the same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss <discuss@lists.openscad.org <mailto:discuss@lists.openscad.org> >
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org <mailto:discuss@lists.openscad.org>
Cc: Glenn Butcher <glenn.butcher@gmail.com <mailto:glenn.butcher@gmail.com> >
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone walls, and ran into all the fussiness of making 'manifold' meshes. I then wrote a short blog post on why STL files are problematic representing object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
> The explanation of what “manifold”, the geometric concept, means, that I learned and seems simple and understandable, is that an ant walking on the surface will never fall off an edge, and will never be presented with multiple choices of which surface to walk on next. A bit more formally, every edge is connected to exactly two faces, and the surface never intersects itself.
>
> With respect to Manifold, the library, and CGAL: OpenSCAD supports those two libraries for doing geometric operations like unions, differences, and so on. CGAL is the library that it has used for many years; Manifold is a newer and far faster library. Manifold (or perhaps the way that OpenSCAD uses it) seems to be more tolerant of imperfection.
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org>
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org>
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org>
AM
Adrian Mariano
Sat, May 30, 2026 4:34 PM
I don't understand the question you're asking, or the description in the
3rd paragraph. If you slice a cube into two pieces....it's two
pieces...and...? If you project a manifold onto an arbitrary plane you'll
get a set of points on the plane. Then what...? You want a triangle mesh
for the projection?
On Sat, May 30, 2026 at 11:35 AM Lee DeRaud via Discuss <
discuss@lists.openscad.org> wrote:
Yeah, we’re kinda getting into some theoretical weeds here…
Change of perspective: consider slicing a cuboid into two pieces using an
arbitrary surface. And by arbitrary, I mean like a bounded chunk of mesh or
surface points coming from a 3D scanner.
Alternatively, consider it as a 3D extension of ‘projection()’ from an
arbitrary non convex surface. I can compute a ‘line’ (more precisely a
sequence of points) projecting from any given point on the surface to an
arbitrary base plane. Repeating at any desired density eventually gives me
a dense, more-or-less solid point-cloud. But how do I then generate a
triangle mesh that wraps that quasi-solid?
(Note: I have no real confidence that OpenSCAD can handle either case.
Most likely I’d end up using something like open3d.)
From: Adrian Mariano via Discuss discuss@lists.openscad.org
Sent: Saturday, May 30, 2026 7:10 AM
To: OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org
Cc: Adrian Mariano avm4@cornell.edu
Subject: [OpenSCAD] Re: beginners question
Lee, the technical mathematical definition of a 2-dimensional manifold is
a surface that looks locally like a plane at every point, or more formally,
one where you can map a neighborhood of every point continuously into the
plane. In 3d modeling we are using the 2d manifold to define a 3d object
by specifying its boundary. If the manifold is bounded (and orientable--a
technical condition) then it has an inside and an outside and the points
inside will form a well-behaved bounded 3d solid. (Examples of unbounded
manifolds: plane, paraboloid, infinitely long cylinder. Bounded: sphere,
torus. Bounded but not orientable: klein bottle.)
On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss <
discuss@lists.openscad.org> wrote:
One thing about this subject in general: my brain persists in the
illusion(?) that a closed surface and a solid object are not quite the
same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss discuss@lists.openscad.org
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org
Cc: Glenn Butcher glenn.butcher@gmail.com
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone
walls, and ran into all the fussiness of making 'manifold' meshes. I then
wrote a short blog post on why STL files are problematic representing
object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
The explanation of what “manifold”, the geometric concept, means, that I
learned and seems simple and understandable, is that an ant walking on the
surface will never fall off an edge, and will never be presented with
multiple choices of which surface to walk on next. A bit more formally,
every edge is connected to exactly two faces, and the surface never
intersects itself.
With respect to Manifold, the library, and CGAL: OpenSCAD supports those
two libraries for doing geometric operations like unions, differences, and
so on. CGAL is the library that it has used for many years; Manifold is a
newer and far faster library. Manifold (or perhaps the way that OpenSCAD
uses it) seems to be more tolerant of imperfection.
I don't understand the question you're asking, or the description in the
3rd paragraph. If you slice a cube into two pieces....it's two
pieces...and...? If you project a manifold onto an arbitrary plane you'll
get a set of points on the plane. Then what...? You want a triangle mesh
for the projection?
On Sat, May 30, 2026 at 11:35 AM Lee DeRaud via Discuss <
discuss@lists.openscad.org> wrote:
> Yeah, we’re kinda getting into some theoretical weeds here…
>
>
>
> Change of perspective: consider slicing a cuboid into two pieces using an
> arbitrary surface. And by arbitrary, I mean like a bounded chunk of mesh or
> surface points coming from a 3D scanner.
>
>
>
> Alternatively, consider it as a 3D extension of ‘projection()’ from an
> arbitrary non convex surface. I can compute a ‘line’ (more precisely a
> sequence of points) projecting from any given point on the surface to an
> arbitrary base plane. Repeating at any desired density eventually gives me
> a dense, more-or-less solid point-cloud. But how do I then generate a
> triangle mesh that wraps that quasi-solid?
>
>
>
> (Note: I have no real confidence that OpenSCAD can handle either case.
> Most likely I’d end up using something like open3d.)
>
>
>
> *From:* Adrian Mariano via Discuss <discuss@lists.openscad.org>
> *Sent:* Saturday, May 30, 2026 7:10 AM
> *To:* OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org
> >
> *Cc:* Adrian Mariano <avm4@cornell.edu>
> *Subject:* [OpenSCAD] Re: beginners question
>
>
>
> Lee, the technical mathematical definition of a 2-dimensional manifold is
> a surface that looks locally like a plane at every point, or more formally,
> one where you can map a neighborhood of every point continuously into the
> plane. In 3d modeling we are using the 2d manifold to define a 3d object
> by specifying its boundary. If the manifold is bounded (and orientable--a
> technical condition) then it has an inside and an outside and the points
> inside will form a well-behaved bounded 3d solid. (Examples of unbounded
> manifolds: plane, paraboloid, infinitely long cylinder. Bounded: sphere,
> torus. Bounded but not orientable: klein bottle.)
>
>
>
> On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss <
> discuss@lists.openscad.org> wrote:
>
> One thing about this subject in general: my brain persists in the
> illusion(?) that a closed surface and a solid object are not *quite* the
> same thing, i.e. that a manifold STL is inherently hollow.
> Is this a distinction without a difference?
>
> -----Original Message-----
> From: Glenn Butcher via Discuss <discuss@lists.openscad.org>
> Sent: Friday, May 29, 2026 6:03 PM
> To: discuss@lists.openscad.org
> Cc: Glenn Butcher <glenn.butcher@gmail.com>
> Subject: [OpenSCAD] Re: beginners question
>
> I recently finished writing code to do a specific sort of mesh, stone
> walls, and ran into all the fussiness of making 'manifold' meshes. I then
> wrote a short blog post on why STL files are problematic representing
> object boundaries:
>
>
> https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
>
> Tried to make it understandable; anyone has questions, post them here.
>
> Glenn
>
> On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
> > The explanation of what “manifold”, the geometric concept, means, that I
> learned and seems simple and understandable, is that an ant walking on the
> surface will never fall off an edge, and will never be presented with
> multiple choices of which surface to walk on next. A bit more formally,
> every edge is connected to exactly two faces, and the surface never
> intersects itself.
> >
> > With respect to Manifold, the library, and CGAL: OpenSCAD supports those
> two libraries for doing geometric operations like unions, differences, and
> so on. CGAL is the library that it has used for many years; Manifold is a
> newer and far faster library. Manifold (or perhaps the way that OpenSCAD
> uses it) seems to be more tolerant of imperfection.
> > _______________________________________________
> > OpenSCAD mailing list
> > To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
>
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
>
LD
lee.deraud@roadrunner.com
Sat, May 30, 2026 5:30 PM
(A picture would be worth a thousand words, but if I could draw the picture in OpenSCAD, I wouldn’t be asking the question. 😊)
Picture an arbitrary bounded non-planar surface hovering above a plane. Projection gives you its “shadow” on that plane (X/Y by convention). What I want is to fill the space between the surface and the shadow in the Z direction to produce a solid.
Maybe a better way to describe it is a 3D extrusion, although even that assumes the surface, and by extension the derived solid, is convex in Z.
And yet another conceptual picture: in CorelDraw, draw a square and then draw a non-linear curve through it, forming two new 2D shapes. Fill one of them and export as an SVG. (“Smart Fill” in Corel creates a new filled 2D object, I assume Inkscape has a similar function.) I just want to extend that concept to 3D.
From: Adrian Mariano via Discuss discuss@lists.openscad.org
Sent: Saturday, May 30, 2026 9:35 AM
To: OpenSCAD general discussion Mailing-list discuss@lists.openscad.org
Cc: Adrian Mariano avm4@cornell.edu
Subject: [OpenSCAD] Re: beginners question
I don't understand the question you're asking, or the description in the 3rd paragraph. If you slice a cube into two pieces....it's two pieces...and...? If you project a manifold onto an arbitrary plane you'll get a set of points on the plane. Then what...? You want a triangle mesh for the projection?
On Sat, May 30, 2026 at 11:35 AM Lee DeRaud via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org > wrote:
Yeah, we’re kinda getting into some theoretical weeds here…
Change of perspective: consider slicing a cuboid into two pieces using an arbitrary surface. And by arbitrary, I mean like a bounded chunk of mesh or surface points coming from a 3D scanner.
Alternatively, consider it as a 3D extension of ‘projection()’ from an arbitrary non convex surface. I can compute a ‘line’ (more precisely a sequence of points) projecting from any given point on the surface to an arbitrary base plane. Repeating at any desired density eventually gives me a dense, more-or-less solid point-cloud. But how do I then generate a triangle mesh that wraps that quasi-solid?
(Note: I have no real confidence that OpenSCAD can handle either case. Most likely I’d end up using something like open3d.)
From: Adrian Mariano via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Sent: Saturday, May 30, 2026 7:10 AM
To: OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Cc: Adrian Mariano <avm4@cornell.edu mailto:avm4@cornell.edu >
Subject: [OpenSCAD] Re: beginners question
Lee, the technical mathematical definition of a 2-dimensional manifold is a surface that looks locally like a plane at every point, or more formally, one where you can map a neighborhood of every point continuously into the plane. In 3d modeling we are using the 2d manifold to define a 3d object by specifying its boundary. If the manifold is bounded (and orientable--a technical condition) then it has an inside and an outside and the points inside will form a well-behaved bounded 3d solid. (Examples of unbounded manifolds: plane, paraboloid, infinitely long cylinder. Bounded: sphere, torus. Bounded but not orientable: klein bottle.)
On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org > wrote:
One thing about this subject in general: my brain persists in the illusion(?) that a closed surface and a solid object are not quite the same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org mailto:discuss@lists.openscad.org
Cc: Glenn Butcher <glenn.butcher@gmail.com mailto:glenn.butcher@gmail.com >
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone walls, and ran into all the fussiness of making 'manifold' meshes. I then wrote a short blog post on why STL files are problematic representing object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
The explanation of what “manifold”, the geometric concept, means, that I learned and seems simple and understandable, is that an ant walking on the surface will never fall off an edge, and will never be presented with multiple choices of which surface to walk on next. A bit more formally, every edge is connected to exactly two faces, and the surface never intersects itself.
With respect to Manifold, the library, and CGAL: OpenSCAD supports those two libraries for doing geometric operations like unions, differences, and so on. CGAL is the library that it has used for many years; Manifold is a newer and far faster library. Manifold (or perhaps the way that OpenSCAD uses it) seems to be more tolerant of imperfection.
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
(A picture would be worth a thousand words, but if I could draw the picture in OpenSCAD, I wouldn’t be asking the question. 😊)
Picture an arbitrary bounded non-planar surface hovering above a plane. Projection gives you its “shadow” on that plane (X/Y by convention). What I want is to fill the space between the surface and the shadow in the Z direction to produce a solid.
Maybe a better way to describe it is a 3D extrusion, although even that assumes the surface, and by extension the derived solid, is convex in Z.
And yet another conceptual picture: in CorelDraw, draw a square and then draw a non-linear curve through it, forming two new 2D shapes. Fill one of them and export as an SVG. (“Smart Fill” in Corel creates a new filled 2D object, I assume Inkscape has a similar function.) I just want to extend that concept to 3D.
From: Adrian Mariano via Discuss <discuss@lists.openscad.org>
Sent: Saturday, May 30, 2026 9:35 AM
To: OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org>
Cc: Adrian Mariano <avm4@cornell.edu>
Subject: [OpenSCAD] Re: beginners question
I don't understand the question you're asking, or the description in the 3rd paragraph. If you slice a cube into two pieces....it's two pieces...and...? If you project a manifold onto an arbitrary plane you'll get a set of points on the plane. Then what...? You want a triangle mesh for the projection?
On Sat, May 30, 2026 at 11:35 AM Lee DeRaud via Discuss <discuss@lists.openscad.org <mailto:discuss@lists.openscad.org> > wrote:
Yeah, we’re kinda getting into some theoretical weeds here…
Change of perspective: consider slicing a cuboid into two pieces using an arbitrary surface. And by arbitrary, I mean like a bounded chunk of mesh or surface points coming from a 3D scanner.
Alternatively, consider it as a 3D extension of ‘projection()’ from an arbitrary non convex surface. I can compute a ‘line’ (more precisely a sequence of points) projecting from any given point on the surface to an arbitrary base plane. Repeating at any desired density eventually gives me a dense, more-or-less solid point-cloud. But how do I then generate a triangle mesh that wraps that quasi-solid?
(Note: I have no real confidence that OpenSCAD can handle either case. Most likely I’d end up using something like open3d.)
From: Adrian Mariano via Discuss <discuss@lists.openscad.org <mailto:discuss@lists.openscad.org> >
Sent: Saturday, May 30, 2026 7:10 AM
To: OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org <mailto:discuss@lists.openscad.org> >
Cc: Adrian Mariano <avm4@cornell.edu <mailto:avm4@cornell.edu> >
Subject: [OpenSCAD] Re: beginners question
Lee, the technical mathematical definition of a 2-dimensional manifold is a surface that looks locally like a plane at every point, or more formally, one where you can map a neighborhood of every point continuously into the plane. In 3d modeling we are using the 2d manifold to define a 3d object by specifying its boundary. If the manifold is bounded (and orientable--a technical condition) then it has an inside and an outside and the points inside will form a well-behaved bounded 3d solid. (Examples of unbounded manifolds: plane, paraboloid, infinitely long cylinder. Bounded: sphere, torus. Bounded but not orientable: klein bottle.)
On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss <discuss@lists.openscad.org <mailto:discuss@lists.openscad.org> > wrote:
One thing about this subject in general: my brain persists in the illusion(?) that a closed surface and a solid object are not *quite* the same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss <discuss@lists.openscad.org <mailto:discuss@lists.openscad.org> >
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org <mailto:discuss@lists.openscad.org>
Cc: Glenn Butcher <glenn.butcher@gmail.com <mailto:glenn.butcher@gmail.com> >
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone walls, and ran into all the fussiness of making 'manifold' meshes. I then wrote a short blog post on why STL files are problematic representing object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
> The explanation of what “manifold”, the geometric concept, means, that I learned and seems simple and understandable, is that an ant walking on the surface will never fall off an edge, and will never be presented with multiple choices of which surface to walk on next. A bit more formally, every edge is connected to exactly two faces, and the surface never intersects itself.
>
> With respect to Manifold, the library, and CGAL: OpenSCAD supports those two libraries for doing geometric operations like unions, differences, and so on. CGAL is the library that it has used for many years; Manifold is a newer and far faster library. Manifold (or perhaps the way that OpenSCAD uses it) seems to be more tolerant of imperfection.
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org>
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org>
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org>
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org>
RW
Raymond West
Sat, May 30, 2026 6:36 PM
On 30/05/2026 18:30, Lee DeRaud via Discuss wrote:
(A picture would be worth a thousand words, but if I could draw the
picture in OpenSCAD, I wouldn’t be asking the question. 😊)
draw the picture with pen and paper, post a photo, or scan.
Picture an arbitrary bounded non-planar surface hovering above a
plane. Projection gives you its “shadow” on that plane (X/Y by
convention). What I want is to fill the space between the surface and
the shadow in the Z direction to produce a solid.
if you are thinking that the non-planar surface is 2d, I've no idea how
you work with that in a 3d world. If it is the surface of a 3d object,
then linear extrude the projection, and difference the object.
Maybe a better way to describe it is a 3D extrusion, although even
that assumes the surface, and by extension the derived solid, is
convex in Z.
And yet another conceptual picture: in CorelDraw, draw a square and
then draw a non-linear curve through it, forming two new 2D shapes.
Fill one of them and export as an SVG. (“Smart Fill” in Corel creates
a new filled 2D object, I assume Inkscape has a similar function.) I
just want to extend that concept to 3D.
*From:*Adrian Mariano via Discuss discuss@lists.openscad.org
Sent: Saturday, May 30, 2026 9:35 AM
To: OpenSCAD general discussion Mailing-list
discuss@lists.openscad.org
Cc: Adrian Mariano avm4@cornell.edu
Subject: [OpenSCAD] Re: beginners question
I don't understand the question you're asking, or the description in
the 3rd paragraph. If you slice a cube into two pieces....it's two
pieces...and...? If you project a manifold onto an arbitrary plane
you'll get a set of points on the plane. Then what...? You want a
triangle mesh for the projection?
On Sat, May 30, 2026 at 11:35 AM Lee DeRaud via Discuss
discuss@lists.openscad.org wrote:
Yeah, we’re kinda getting into some theoretical weeds here…
Change of perspective: consider slicing a cuboid into two pieces
using an arbitrary surface. And by arbitrary, I mean like a
bounded chunk of mesh or surface points coming from a 3D scanner.
Alternatively, consider it as a 3D extension of ‘projection()’
from an arbitrary non convex surface. I can compute a ‘line’ (more
precisely a sequence of points) projecting from any given point on
the surface to an arbitrary base plane. Repeating at any desired
density eventually gives me a dense, more-or-less solid
point-cloud. But how do I then generate a triangle mesh that wraps
that quasi-solid?
(Note: I have no real confidence that OpenSCAD can handle either
case. Most likely I’d end up using something like open3d.)
*From:*Adrian Mariano via Discuss <discuss@lists.openscad.org>
*Sent:* Saturday, May 30, 2026 7:10 AM
*To:* OpenSCAD general discussion Mailing-list
<discuss@lists.openscad.org>
*Cc:* Adrian Mariano <avm4@cornell.edu>
*Subject:* [OpenSCAD] Re: beginners question
Lee, the technical mathematical definition of a 2-dimensional
manifold is a surface that looks locally like a plane at every
point, or more formally, one where you can map a neighborhood of
every point continuously into the plane. In 3d modeling we are
using the 2d manifold to define a 3d object by specifying its
boundary. If the manifold is bounded (and orientable--a technical
condition) then it has an inside and an outside and the points
inside will form a well-behaved bounded 3d solid. (Examples of
unbounded manifolds: plane, paraboloid, infinitely long cylinder.
Bounded: sphere, torus. Bounded but not orientable: klein bottle.)
On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss
<discuss@lists.openscad.org> wrote:
One thing about this subject in general: my brain persists in
the illusion(?) that a closed surface and a solid object are
not *quite* the same thing, i.e. that a manifold STL is
inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss <discuss@lists.openscad.org>
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org
Cc: Glenn Butcher <glenn.butcher@gmail.com>
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of
mesh, stone walls, and ran into all the fussiness of making
'manifold' meshes. I then wrote a short blog post on why STL
files are problematic representing object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post
them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
The explanation of what “manifold”, the geometric concept,
means, that I learned and seems simple and understandable, is
that an ant walking on the surface will never fall off an
edge, and will never be presented with multiple choices of
which surface to walk on next. A bit more formally, every edge
is connected to exactly two faces, and the surface never
intersects itself.
With respect to Manifold, the library, and CGAL: OpenSCAD
supports those two libraries for doing geometric operations
like unions, differences, and so on. CGAL is the library that
it has used for many years; Manifold is a newer and far faster
library. Manifold (or perhaps the way that OpenSCAD uses it)
seems to be more tolerant of imperfection.
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email todiscuss-leave@lists.openscad.org
On 30/05/2026 18:30, Lee DeRaud via Discuss wrote:
>
> (A picture would be worth a thousand words, but if I could draw the
> picture in OpenSCAD, I wouldn’t be asking the question. 😊)
>
draw the picture with pen and paper, post a photo, or scan.
>
> Picture an arbitrary bounded non-planar surface hovering above a
> plane. Projection gives you its “shadow” on that plane (X/Y by
> convention). What I want is to fill the space between the surface and
> the shadow in the Z direction to produce a solid.
>
if you are thinking that the non-planar surface is 2d, I've no idea how
you work with that in a 3d world. If it is the surface of a 3d object,
then linear extrude the projection, and difference the object.
>
> Maybe a better way to describe it is a 3D extrusion, although even
> that assumes the surface, and by extension the derived solid, is
> convex in Z.
>
> And yet another conceptual picture: in CorelDraw, draw a square and
> then draw a non-linear curve through it, forming two new 2D shapes.
> Fill one of them and export as an SVG. (“Smart Fill” in Corel creates
> a new filled 2D object, I assume Inkscape has a similar function.) I
> just want to extend that concept to 3D.
>
> *From:*Adrian Mariano via Discuss <discuss@lists.openscad.org>
> *Sent:* Saturday, May 30, 2026 9:35 AM
> *To:* OpenSCAD general discussion Mailing-list
> <discuss@lists.openscad.org>
> *Cc:* Adrian Mariano <avm4@cornell.edu>
> *Subject:* [OpenSCAD] Re: beginners question
>
> I don't understand the question you're asking, or the description in
> the 3rd paragraph. If you slice a cube into two pieces....it's two
> pieces...and...? If you project a manifold onto an arbitrary plane
> you'll get a set of points on the plane. Then what...? You want a
> triangle mesh for the projection?
>
> On Sat, May 30, 2026 at 11:35 AM Lee DeRaud via Discuss
> <discuss@lists.openscad.org> wrote:
>
> Yeah, we’re kinda getting into some theoretical weeds here…
>
> Change of perspective: consider slicing a cuboid into two pieces
> using an arbitrary surface. And by arbitrary, I mean like a
> bounded chunk of mesh or surface points coming from a 3D scanner.
>
> Alternatively, consider it as a 3D extension of ‘projection()’
> from an arbitrary non convex surface. I can compute a ‘line’ (more
> precisely a sequence of points) projecting from any given point on
> the surface to an arbitrary base plane. Repeating at any desired
> density eventually gives me a dense, more-or-less solid
> point-cloud. But how do I then generate a triangle mesh that wraps
> that quasi-solid?
>
> (Note: I have no real confidence that OpenSCAD can handle either
> case. Most likely I’d end up using something like open3d.)
>
> *From:*Adrian Mariano via Discuss <discuss@lists.openscad.org>
> *Sent:* Saturday, May 30, 2026 7:10 AM
> *To:* OpenSCAD general discussion Mailing-list
> <discuss@lists.openscad.org>
> *Cc:* Adrian Mariano <avm4@cornell.edu>
> *Subject:* [OpenSCAD] Re: beginners question
>
> Lee, the technical mathematical definition of a 2-dimensional
> manifold is a surface that looks locally like a plane at every
> point, or more formally, one where you can map a neighborhood of
> every point continuously into the plane. In 3d modeling we are
> using the 2d manifold to define a 3d object by specifying its
> boundary. If the manifold is bounded (and orientable--a technical
> condition) then it has an inside and an outside and the points
> inside will form a well-behaved bounded 3d solid. (Examples of
> unbounded manifolds: plane, paraboloid, infinitely long cylinder.
> Bounded: sphere, torus. Bounded but not orientable: klein bottle.)
>
> On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss
> <discuss@lists.openscad.org> wrote:
>
> One thing about this subject in general: my brain persists in
> the illusion(?) that a closed surface and a solid object are
> not *quite* the same thing, i.e. that a manifold STL is
> inherently hollow.
> Is this a distinction without a difference?
>
> -----Original Message-----
> From: Glenn Butcher via Discuss <discuss@lists.openscad.org>
> Sent: Friday, May 29, 2026 6:03 PM
> To: discuss@lists.openscad.org
> Cc: Glenn Butcher <glenn.butcher@gmail.com>
> Subject: [OpenSCAD] Re: beginners question
>
> I recently finished writing code to do a specific sort of
> mesh, stone walls, and ran into all the fussiness of making
> 'manifold' meshes. I then wrote a short blog post on why STL
> files are problematic representing object boundaries:
>
> https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
>
> Tried to make it understandable; anyone has questions, post
> them here.
>
> Glenn
>
> On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
> > The explanation of what “manifold”, the geometric concept,
> means, that I learned and seems simple and understandable, is
> that an ant walking on the surface will never fall off an
> edge, and will never be presented with multiple choices of
> which surface to walk on next. A bit more formally, every edge
> is connected to exactly two faces, and the surface never
> intersects itself.
> >
> > With respect to Manifold, the library, and CGAL: OpenSCAD
> supports those two libraries for doing geometric operations
> like unions, differences, and so on. CGAL is the library that
> it has used for many years; Manifold is a newer and far faster
> library. Manifold (or perhaps the way that OpenSCAD uses it)
> seems to be more tolerant of imperfection.
> > _______________________________________________
> > OpenSCAD mailing list
> > To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
>
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
>
>
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email todiscuss-leave@lists.openscad.org
LD
lee.deraud@roadrunner.com
Sat, May 30, 2026 7:14 PM
I’ve attached an example surface. What I want is to fill the volume between it and the XY plane. I realize that creating this particular shape as the top surface of a cuboid can be done easily: that’s how I generated it in the first place. But I’m looking for a generalized that works with a surface extracted from a 3D scan.
And yes, I understand that this kind of surface is not 2D. Linear extruding the projection of it works right up until you get to the lower bound of the surface. If you go past that point, the extrusion wipes out part of the surface, if you stop there, there will be gaps between the extrusion and the surface. Difference is zero help, as it just leaves a cuboid with a surface-shaped slice through it and no way to separate the two disjoint portions.
From: Raymond West via Discuss discuss@lists.openscad.org
Sent: Saturday, May 30, 2026 11:37 AM
To: Lee DeRaud via Discuss discuss@lists.openscad.org
Cc: Raymond West raywest@raywest.com
Subject: [OpenSCAD] Re: beginners question
On 30/05/2026 18:30, Lee DeRaud via Discuss wrote:
(A picture would be worth a thousand words, but if I could draw the picture in OpenSCAD, I wouldn’t be asking the question. 😊)
draw the picture with pen and paper, post a photo, or scan.
Picture an arbitrary bounded non-planar surface hovering above a plane. Projection gives you its “shadow” on that plane (X/Y by convention). What I want is to fill the space between the surface and the shadow in the Z direction to produce a solid.
if you are thinking that the non-planar surface is 2d, I've no idea how you work with that in a 3d world. If it is the surface of a 3d object, then linear extrude the projection, and difference the object.
Maybe a better way to describe it is a 3D extrusion, although even that assumes the surface, and by extension the derived solid, is convex in Z.
And yet another conceptual picture: in CorelDraw, draw a square and then draw a non-linear curve through it, forming two new 2D shapes. Fill one of them and export as an SVG. (“Smart Fill” in Corel creates a new filled 2D object, I assume Inkscape has a similar function.) I just want to extend that concept to 3D.
From: Adrian Mariano via Discuss mailto:discuss@lists.openscad.org discuss@lists.openscad.org
Sent: Saturday, May 30, 2026 9:35 AM
To: OpenSCAD general discussion Mailing-list mailto:discuss@lists.openscad.org discuss@lists.openscad.org
Cc: Adrian Mariano mailto:avm4@cornell.edu avm4@cornell.edu
Subject: [OpenSCAD] Re: beginners question
I don't understand the question you're asking, or the description in the 3rd paragraph. If you slice a cube into two pieces....it's two pieces...and...? If you project a manifold onto an arbitrary plane you'll get a set of points on the plane. Then what...? You want a triangle mesh for the projection?
On Sat, May 30, 2026 at 11:35 AM Lee DeRaud via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org > wrote:
Yeah, we’re kinda getting into some theoretical weeds here…
Change of perspective: consider slicing a cuboid into two pieces using an arbitrary surface. And by arbitrary, I mean like a bounded chunk of mesh or surface points coming from a 3D scanner.
Alternatively, consider it as a 3D extension of ‘projection()’ from an arbitrary non convex surface. I can compute a ‘line’ (more precisely a sequence of points) projecting from any given point on the surface to an arbitrary base plane. Repeating at any desired density eventually gives me a dense, more-or-less solid point-cloud. But how do I then generate a triangle mesh that wraps that quasi-solid?
(Note: I have no real confidence that OpenSCAD can handle either case. Most likely I’d end up using something like open3d.)
From: Adrian Mariano via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Sent: Saturday, May 30, 2026 7:10 AM
To: OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Cc: Adrian Mariano <avm4@cornell.edu mailto:avm4@cornell.edu >
Subject: [OpenSCAD] Re: beginners question
Lee, the technical mathematical definition of a 2-dimensional manifold is a surface that looks locally like a plane at every point, or more formally, one where you can map a neighborhood of every point continuously into the plane. In 3d modeling we are using the 2d manifold to define a 3d object by specifying its boundary. If the manifold is bounded (and orientable--a technical condition) then it has an inside and an outside and the points inside will form a well-behaved bounded 3d solid. (Examples of unbounded manifolds: plane, paraboloid, infinitely long cylinder. Bounded: sphere, torus. Bounded but not orientable: klein bottle.)
On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org > wrote:
One thing about this subject in general: my brain persists in the illusion(?) that a closed surface and a solid object are not quite the same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org mailto:discuss@lists.openscad.org
Cc: Glenn Butcher <glenn.butcher@gmail.com mailto:glenn.butcher@gmail.com >
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone walls, and ran into all the fussiness of making 'manifold' meshes. I then wrote a short blog post on why STL files are problematic representing object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
The explanation of what “manifold”, the geometric concept, means, that I learned and seems simple and understandable, is that an ant walking on the surface will never fall off an edge, and will never be presented with multiple choices of which surface to walk on next. A bit more formally, every edge is connected to exactly two faces, and the surface never intersects itself.
With respect to Manifold, the library, and CGAL: OpenSCAD supports those two libraries for doing geometric operations like unions, differences, and so on. CGAL is the library that it has used for many years; Manifold is a newer and far faster library. Manifold (or perhaps the way that OpenSCAD uses it) seems to be more tolerant of imperfection.
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
I’ve attached an example surface. What I want is to fill the volume between it and the XY plane. I realize that creating this particular shape as the top surface of a cuboid can be done easily: that’s how I generated it in the first place. But I’m looking for a generalized that works with a surface extracted from a 3D scan.
And yes, I understand that this kind of surface is not 2D. Linear extruding the projection of it works right up until you get to the lower bound of the surface. If you go past that point, the extrusion wipes out part of the surface, if you stop there, there will be gaps between the extrusion and the surface. Difference is zero help, as it just leaves a cuboid with a surface-shaped slice through it and no way to separate the two disjoint portions.
From: Raymond West via Discuss <discuss@lists.openscad.org>
Sent: Saturday, May 30, 2026 11:37 AM
To: Lee DeRaud via Discuss <discuss@lists.openscad.org>
Cc: Raymond West <raywest@raywest.com>
Subject: [OpenSCAD] Re: beginners question
On 30/05/2026 18:30, Lee DeRaud via Discuss wrote:
(A picture would be worth a thousand words, but if I could draw the picture in OpenSCAD, I wouldn’t be asking the question. 😊)
draw the picture with pen and paper, post a photo, or scan.
Picture an arbitrary bounded non-planar surface hovering above a plane. Projection gives you its “shadow” on that plane (X/Y by convention). What I want is to fill the space between the surface and the shadow in the Z direction to produce a solid.
if you are thinking that the non-planar surface is 2d, I've no idea how you work with that in a 3d world. If it is the surface of a 3d object, then linear extrude the projection, and difference the object.
Maybe a better way to describe it is a 3D extrusion, although even that assumes the surface, and by extension the derived solid, is convex in Z.
And yet another conceptual picture: in CorelDraw, draw a square and then draw a non-linear curve through it, forming two new 2D shapes. Fill one of them and export as an SVG. (“Smart Fill” in Corel creates a new filled 2D object, I assume Inkscape has a similar function.) I just want to extend that concept to 3D.
From: Adrian Mariano via Discuss <mailto:discuss@lists.openscad.org> <discuss@lists.openscad.org>
Sent: Saturday, May 30, 2026 9:35 AM
To: OpenSCAD general discussion Mailing-list <mailto:discuss@lists.openscad.org> <discuss@lists.openscad.org>
Cc: Adrian Mariano <mailto:avm4@cornell.edu> <avm4@cornell.edu>
Subject: [OpenSCAD] Re: beginners question
I don't understand the question you're asking, or the description in the 3rd paragraph. If you slice a cube into two pieces....it's two pieces...and...? If you project a manifold onto an arbitrary plane you'll get a set of points on the plane. Then what...? You want a triangle mesh for the projection?
On Sat, May 30, 2026 at 11:35 AM Lee DeRaud via Discuss <discuss@lists.openscad.org <mailto:discuss@lists.openscad.org> > wrote:
Yeah, we’re kinda getting into some theoretical weeds here…
Change of perspective: consider slicing a cuboid into two pieces using an arbitrary surface. And by arbitrary, I mean like a bounded chunk of mesh or surface points coming from a 3D scanner.
Alternatively, consider it as a 3D extension of ‘projection()’ from an arbitrary non convex surface. I can compute a ‘line’ (more precisely a sequence of points) projecting from any given point on the surface to an arbitrary base plane. Repeating at any desired density eventually gives me a dense, more-or-less solid point-cloud. But how do I then generate a triangle mesh that wraps that quasi-solid?
(Note: I have no real confidence that OpenSCAD can handle either case. Most likely I’d end up using something like open3d.)
From: Adrian Mariano via Discuss <discuss@lists.openscad.org <mailto:discuss@lists.openscad.org> >
Sent: Saturday, May 30, 2026 7:10 AM
To: OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org <mailto:discuss@lists.openscad.org> >
Cc: Adrian Mariano <avm4@cornell.edu <mailto:avm4@cornell.edu> >
Subject: [OpenSCAD] Re: beginners question
Lee, the technical mathematical definition of a 2-dimensional manifold is a surface that looks locally like a plane at every point, or more formally, one where you can map a neighborhood of every point continuously into the plane. In 3d modeling we are using the 2d manifold to define a 3d object by specifying its boundary. If the manifold is bounded (and orientable--a technical condition) then it has an inside and an outside and the points inside will form a well-behaved bounded 3d solid. (Examples of unbounded manifolds: plane, paraboloid, infinitely long cylinder. Bounded: sphere, torus. Bounded but not orientable: klein bottle.)
On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss <discuss@lists.openscad.org <mailto:discuss@lists.openscad.org> > wrote:
One thing about this subject in general: my brain persists in the illusion(?) that a closed surface and a solid object are not *quite* the same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss <discuss@lists.openscad.org <mailto:discuss@lists.openscad.org> >
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org <mailto:discuss@lists.openscad.org>
Cc: Glenn Butcher <glenn.butcher@gmail.com <mailto:glenn.butcher@gmail.com> >
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone walls, and ran into all the fussiness of making 'manifold' meshes. I then wrote a short blog post on why STL files are problematic representing object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
> The explanation of what “manifold”, the geometric concept, means, that I learned and seems simple and understandable, is that an ant walking on the surface will never fall off an edge, and will never be presented with multiple choices of which surface to walk on next. A bit more formally, every edge is connected to exactly two faces, and the surface never intersects itself.
>
> With respect to Manifold, the library, and CGAL: OpenSCAD supports those two libraries for doing geometric operations like unions, differences, and so on. CGAL is the library that it has used for many years; Manifold is a newer and far faster library. Manifold (or perhaps the way that OpenSCAD uses it) seems to be more tolerant of imperfection.
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org>
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org>
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org>
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org>
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org>
AM
Adrian Mariano
Sat, May 30, 2026 7:30 PM
If you have a surface with an edge defined as a point list it's a simple
matter in openscad to make that into a solid by extending it down to the xy
plane---assuming that no points on the surface are below the bounding edge
by building a polyhedron for your original surface and then adding edges
and a base. BOSL2 provides textured_tile() and plot3d() that can do this
directly and handle the annoying bookkeeping of building the polyhedron.
You can also potentially have more flexibility (and more work) with
vnf_vertex_array().
If you don't have the surface as a point list then it's going to be a lot
more difficult, especially in the general case. The shape you posted you
could do by taking the union of a bunch of translated copies. Other folks
are better at figuring out complex ways to get stuff done in vanilla
OpenSCAD.... But that shape also looks like it was (or could be)
constructed mathematically in which case it would be ideally suited to
using textured_tile() or plot3d().
Here's the method of translated copies:
include<BOSL2/std.scad>
module thing(){
import("TestSurface.stl");
}
zcopies(n=30,spacing=.9) thing();
down(20)linear_extrude(height=30)projection()thing();
On Sat, May 30, 2026 at 1:31 PM Lee DeRaud via Discuss <
discuss@lists.openscad.org> wrote:
(A picture would be worth a thousand words, but if I could draw the
picture in OpenSCAD, I wouldn’t be asking the question. 😊)
Picture an arbitrary bounded non-planar surface hovering above a plane.
Projection gives you its “shadow” on that plane (X/Y by convention). What I
want is to fill the space between the surface and the shadow in the Z
direction to produce a solid.
Maybe a better way to describe it is a 3D extrusion, although even that
assumes the surface, and by extension the derived solid, is convex in Z.
And yet another conceptual picture: in CorelDraw, draw a square and then
draw a non-linear curve through it, forming two new 2D shapes. Fill one of
them and export as an SVG. (“Smart Fill” in Corel creates a new filled 2D
object, I assume Inkscape has a similar function.) I just want to extend
that concept to 3D.
From: Adrian Mariano via Discuss discuss@lists.openscad.org
Sent: Saturday, May 30, 2026 9:35 AM
To: OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org
Cc: Adrian Mariano avm4@cornell.edu
Subject: [OpenSCAD] Re: beginners question
I don't understand the question you're asking, or the description in the
3rd paragraph. If you slice a cube into two pieces....it's two
pieces...and...? If you project a manifold onto an arbitrary plane you'll
get a set of points on the plane. Then what...? You want a triangle mesh
for the projection?
On Sat, May 30, 2026 at 11:35 AM Lee DeRaud via Discuss <
discuss@lists.openscad.org> wrote:
Yeah, we’re kinda getting into some theoretical weeds here…
Change of perspective: consider slicing a cuboid into two pieces using an
arbitrary surface. And by arbitrary, I mean like a bounded chunk of mesh or
surface points coming from a 3D scanner.
Alternatively, consider it as a 3D extension of ‘projection()’ from an
arbitrary non convex surface. I can compute a ‘line’ (more precisely a
sequence of points) projecting from any given point on the surface to an
arbitrary base plane. Repeating at any desired density eventually gives me
a dense, more-or-less solid point-cloud. But how do I then generate a
triangle mesh that wraps that quasi-solid?
(Note: I have no real confidence that OpenSCAD can handle either case.
Most likely I’d end up using something like open3d.)
From: Adrian Mariano via Discuss discuss@lists.openscad.org
Sent: Saturday, May 30, 2026 7:10 AM
To: OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org
Cc: Adrian Mariano avm4@cornell.edu
Subject: [OpenSCAD] Re: beginners question
Lee, the technical mathematical definition of a 2-dimensional manifold is
a surface that looks locally like a plane at every point, or more formally,
one where you can map a neighborhood of every point continuously into the
plane. In 3d modeling we are using the 2d manifold to define a 3d object
by specifying its boundary. If the manifold is bounded (and orientable--a
technical condition) then it has an inside and an outside and the points
inside will form a well-behaved bounded 3d solid. (Examples of unbounded
manifolds: plane, paraboloid, infinitely long cylinder. Bounded: sphere,
torus. Bounded but not orientable: klein bottle.)
On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss <
discuss@lists.openscad.org> wrote:
One thing about this subject in general: my brain persists in the
illusion(?) that a closed surface and a solid object are not quite the
same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss discuss@lists.openscad.org
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org
Cc: Glenn Butcher glenn.butcher@gmail.com
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone
walls, and ran into all the fussiness of making 'manifold' meshes. I then
wrote a short blog post on why STL files are problematic representing
object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
The explanation of what “manifold”, the geometric concept, means, that I
learned and seems simple and understandable, is that an ant walking on the
surface will never fall off an edge, and will never be presented with
multiple choices of which surface to walk on next. A bit more formally,
every edge is connected to exactly two faces, and the surface never
intersects itself.
With respect to Manifold, the library, and CGAL: OpenSCAD supports those
two libraries for doing geometric operations like unions, differences, and
so on. CGAL is the library that it has used for many years; Manifold is a
newer and far faster library. Manifold (or perhaps the way that OpenSCAD
uses it) seems to be more tolerant of imperfection.
If you have a surface with an edge defined as a point list it's a simple
matter in openscad to make that into a solid by extending it down to the xy
plane---assuming that no points on the surface are below the bounding edge
by building a polyhedron for your original surface and then adding edges
and a base. BOSL2 provides textured_tile() and plot3d() that can do this
directly and handle the annoying bookkeeping of building the polyhedron.
You can also potentially have more flexibility (and more work) with
vnf_vertex_array().
If you don't have the surface as a point list then it's going to be a lot
more difficult, especially in the general case. The shape you posted you
could do by taking the union of a bunch of translated copies. Other folks
are better at figuring out complex ways to get stuff done in vanilla
OpenSCAD.... But that shape also looks like it was (or could be)
constructed mathematically in which case it would be ideally suited to
using textured_tile() or plot3d().
Here's the method of translated copies:
include<BOSL2/std.scad>
module thing(){
import("TestSurface.stl");
}
zcopies(n=30,spacing=.9) thing();
down(20)linear_extrude(height=30)projection()thing();
On Sat, May 30, 2026 at 1:31 PM Lee DeRaud via Discuss <
discuss@lists.openscad.org> wrote:
> (A picture would be worth a thousand words, but if I could draw the
> picture in OpenSCAD, I wouldn’t be asking the question. 😊)
>
>
>
> Picture an arbitrary bounded non-planar surface hovering above a plane.
> Projection gives you its “shadow” on that plane (X/Y by convention). What I
> want is to fill the space between the surface and the shadow in the Z
> direction to produce a solid.
>
>
>
> Maybe a better way to describe it is a 3D extrusion, although even that
> assumes the surface, and by extension the derived solid, is convex in Z.
>
>
>
> And yet another conceptual picture: in CorelDraw, draw a square and then
> draw a non-linear curve through it, forming two new 2D shapes. Fill one of
> them and export as an SVG. (“Smart Fill” in Corel creates a new filled 2D
> object, I assume Inkscape has a similar function.) I just want to extend
> that concept to 3D.
>
>
>
> *From:* Adrian Mariano via Discuss <discuss@lists.openscad.org>
> *Sent:* Saturday, May 30, 2026 9:35 AM
> *To:* OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org
> >
> *Cc:* Adrian Mariano <avm4@cornell.edu>
> *Subject:* [OpenSCAD] Re: beginners question
>
>
>
> I don't understand the question you're asking, or the description in the
> 3rd paragraph. If you slice a cube into two pieces....it's two
> pieces...and...? If you project a manifold onto an arbitrary plane you'll
> get a set of points on the plane. Then what...? You want a triangle mesh
> for the projection?
>
>
>
> On Sat, May 30, 2026 at 11:35 AM Lee DeRaud via Discuss <
> discuss@lists.openscad.org> wrote:
>
> Yeah, we’re kinda getting into some theoretical weeds here…
>
>
>
> Change of perspective: consider slicing a cuboid into two pieces using an
> arbitrary surface. And by arbitrary, I mean like a bounded chunk of mesh or
> surface points coming from a 3D scanner.
>
>
>
> Alternatively, consider it as a 3D extension of ‘projection()’ from an
> arbitrary non convex surface. I can compute a ‘line’ (more precisely a
> sequence of points) projecting from any given point on the surface to an
> arbitrary base plane. Repeating at any desired density eventually gives me
> a dense, more-or-less solid point-cloud. But how do I then generate a
> triangle mesh that wraps that quasi-solid?
>
>
>
> (Note: I have no real confidence that OpenSCAD can handle either case.
> Most likely I’d end up using something like open3d.)
>
>
>
> *From:* Adrian Mariano via Discuss <discuss@lists.openscad.org>
> *Sent:* Saturday, May 30, 2026 7:10 AM
> *To:* OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org
> >
> *Cc:* Adrian Mariano <avm4@cornell.edu>
> *Subject:* [OpenSCAD] Re: beginners question
>
>
>
> Lee, the technical mathematical definition of a 2-dimensional manifold is
> a surface that looks locally like a plane at every point, or more formally,
> one where you can map a neighborhood of every point continuously into the
> plane. In 3d modeling we are using the 2d manifold to define a 3d object
> by specifying its boundary. If the manifold is bounded (and orientable--a
> technical condition) then it has an inside and an outside and the points
> inside will form a well-behaved bounded 3d solid. (Examples of unbounded
> manifolds: plane, paraboloid, infinitely long cylinder. Bounded: sphere,
> torus. Bounded but not orientable: klein bottle.)
>
>
>
> On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss <
> discuss@lists.openscad.org> wrote:
>
> One thing about this subject in general: my brain persists in the
> illusion(?) that a closed surface and a solid object are not *quite* the
> same thing, i.e. that a manifold STL is inherently hollow.
> Is this a distinction without a difference?
>
> -----Original Message-----
> From: Glenn Butcher via Discuss <discuss@lists.openscad.org>
> Sent: Friday, May 29, 2026 6:03 PM
> To: discuss@lists.openscad.org
> Cc: Glenn Butcher <glenn.butcher@gmail.com>
> Subject: [OpenSCAD] Re: beginners question
>
> I recently finished writing code to do a specific sort of mesh, stone
> walls, and ran into all the fussiness of making 'manifold' meshes. I then
> wrote a short blog post on why STL files are problematic representing
> object boundaries:
>
>
> https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
>
> Tried to make it understandable; anyone has questions, post them here.
>
> Glenn
>
> On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
> > The explanation of what “manifold”, the geometric concept, means, that I
> learned and seems simple and understandable, is that an ant walking on the
> surface will never fall off an edge, and will never be presented with
> multiple choices of which surface to walk on next. A bit more formally,
> every edge is connected to exactly two faces, and the surface never
> intersects itself.
> >
> > With respect to Manifold, the library, and CGAL: OpenSCAD supports those
> two libraries for doing geometric operations like unions, differences, and
> so on. CGAL is the library that it has used for many years; Manifold is a
> newer and far faster library. Manifold (or perhaps the way that OpenSCAD
> uses it) seems to be more tolerant of imperfection.
> > _______________________________________________
> > OpenSCAD mailing list
> > To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
>
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
>
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
>