Converting a hollow STL file to solid ??

classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|

Converting a hollow STL file to solid ??

softfoot

I have a complex STL file that is hollow and I want to convert it to
solid without losing the surface detail.

What is the best way to achieve this ??

Dave



_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Converting a hollow STL file to solid ??

OpenSCAD mailing list-2
I would not consider your requirements to be limited to OpenSCAD, nor would I expect it to be the best approach. I could be wrong, of course. Meshmixer (free) has a "Make Solid" feature in the edit menu, which would require some adjustment to avoid destroying details, but should accomplish the objective. There may be other approaches as well. If you can attach the STL file, it opens a few doors to the solution.

On Saturday, January 16, 2021, 11:28:05 AM EST, Dave <[hidden email]> wrote:



I have a complex STL file that is hollow and I want to convert it to
solid without losing the surface detail.

What is the best way to achieve this ??

Dave



_______________________________________________
OpenSCAD mailing list

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Converting a hollow STL file to solid ??

cacb
It is an interesting mesh manipulation problem.

I tried the suggested Meshmixer solution. First I made a cube with an
internal spherical hole and saved it. Imported it into MeshMixer and
tried the "Make Solid" feature which created a huge model for some
reason. On export+investigation, it turned out to be a representation of
the inner sphere, with the outside cube removed, plus the sphere mesh
was modified in an undesirable way. It seems to me Meshmixer is not up
to that particular task.

Perhaps there is already some other existing solution elsewhere, but
below is how I would do it (written as C++ pseudo-code). Assume
"polyhedron" here is a datastructure with sufficient topoligical
information allowing direct traversal from a face to one of its
neighbour faces. Also assume polyhedron A is a *single* object with zero
or more internal voids to be removed:

polyhedron fill3d(polyhedron A)
{
    while (A.has_faces()) {
       face f = A.any_face();
       polyhedron B;  // empty
       B.vertices() = A.vertices();
       while (f != null) {
          face f_next = f.neighbour(); // a neighbour face
          A.remove(f)
          B.add(f)
          f = f_next;
       }
       if(B.volume() > 0.0) {
          B.remove_unused_vertices();
          return B;
       }
    }
    return A;
}

This should work for any single object A and would not modify the
resulting mesh in any way, other than remove inner voids as requested.

Carsten Arnholm


On 16.01.2021 17:58, fred via Discuss wrote:

> I would not consider your requirements to be limited to OpenSCAD, nor
> would I expect it to be the best approach. I could be wrong, of course.
> Meshmixer (free) has a "Make Solid" feature in the edit menu, which
> would require some adjustment to avoid destroying details, but should
> accomplish the objective. There may be other approaches as well. If you
> can attach the STL file, it opens a few doors to the solution.
>
> On Saturday, January 16, 2021, 11:28:05 AM EST, Dave
> <[hidden email]> wrote:
>
>
>
> I have a complex STL file that is hollow and I want to convert it to
> solid without losing the surface detail.
>
> What is the best way to achieve this ??
>
> Dave

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Converting a hollow STL file to solid ??

doug.moen
In reply to this post by softfoot
I have done this in Meshlab. I can't quite reconstruct the procedure I used (it was an older version of Meshlab than I have now), but here's what I think works in the current release.

Edit -> Select Connected Components in a Region
click on an outside face of the model to make the selection
Filters -> Selection -> Invert Selection
Filters -> Selection -> Delete Selected Faces and Vertices

This assumes that the interior void that you want to delete is not connected to the outside surface that you want to preserve.

If your model is entirely convex then you could also use the "hull" operator in OpenSCAD.

On Sat, Jan 16, 2021, at 11:27 AM, Dave wrote:

>
> I have a complex STL file that is hollow and I want to convert it to
> solid without losing the surface detail.
>
> What is the best way to achieve this ??
>
> Dave
>
>
>
> _______________________________________________
> OpenSCAD mailing list
> [hidden email]
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Converting a hollow STL file to solid ??

cbernhardt
In reply to this post by cacb
Blender has a Solidify Modifier function that allows you to make a "shell" of
user defined thickness and direction (place the thickened section on the
inside or outside of the model).



--
Sent from: http://forum.openscad.org/

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Converting a hollow STL file to solid ??

softfoot
Hmmm, none of these really appeal to me.

I was hoping for some devious method using scad ;-)

I cannot get on with conventional CAD/3D design tools - OpenSCAD fits
the way my mind works, yes it's a little odd!

The item I want to print would be OK on a resin printer (I use filament)
but with filament the support structure would ruin the downward face.

However, it occurred to me that if I split it in half with Slic3r's nice
cutting tool so that the inside is facing down, then I don't care about
the support as it will be inside when I glue it together.

Dave



_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Converting a hollow STL file to solid ??

OpenSCAD mailing list-2
If you are comfortable with gluing parts together, as you've noted, your options expand greatly.

Disregarding the above, run your original through a boolean subtract with any suitably large primitive, then do it again to get the solid result. That can be done in OpenSCAD with a few lines, I'd think. The result would be only the "outside" of the original model.
On Sunday, January 17, 2021, 2:11:30 PM EST, Dave <[hidden email]> wrote:


Hmmm, none of these really appeal to me.

I was hoping for some devious method using scad ;-)

I cannot get on with conventional CAD/3D design tools - OpenSCAD fits
the way my mind works, yes it's a little odd!

The item I want to print would be OK on a resin printer (I use filament)
but with filament the support structure would ruin the downward face.

However, it occurred to me that if I split it in half with Slic3r's nice
cutting tool so that the inside is facing down, then I don't care about
the support as it will be inside when I glue it together.

Dave




_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Converting a hollow STL file to solid ??

JordanBrown
On 1/17/2021 11:33 AM, fred via Discuss wrote:
Disregarding the above, run your original through a boolean subtract with any suitably large primitive, then do it again to get the solid result. That can be done in OpenSCAD with a few lines, I'd think. The result would be only the "outside" of the original model.

Unless I totally misunderstand what you mean... no.
module hollowsphere() {
    difference() {
        sphere(10);
        sphere(6);
    }
}

Hollow sphere, right?

Confirm by chopping out a chunk:

difference() {
    hollowsphere();
    cube(20);
}


Now, you're saying that we can turn that into a filled sphere with something like this?

difference() {
    cube(21, center=true);
    difference() {
        cube(22, center=true);
        hollowsphere();
    }
}

(Note that the 21vs 22 is to avoid Z-fighting.)

Now let's chop a chunk out of that to look inside...

difference() {
    difference() {
        cube(21, center=true);
        difference() {
            cube(22, center=true);
            hollowsphere();
        }
    }
    cube(20);
}

Nope, still hollow.

Difference doesn't mold a shape around another shape.  (If it did, then this scheme would work.)  Rather, given a shape A and a shape B, for every point in B that is also in A, it removes that point from A.  The result of the initial cube-minus-hollow-sphere subtract is not a cube with a sphere carved out of it; it's a cube with a spherical shell carved out of it - a cube, with a gap, with a sphere inside that.

Let's look inside it:

difference() {
    difference() {
        cube(22, center=true);
        hollowsphere();
    }
    cube(20);
}


There's no way to fill a hollow shape using Boolean operations - or at least not without destroying the shape.  Mathematically, the volume inside the hollow shape is the same as the volume outside the hollow shape - the entire rest of the universe.  It's just that the outside is bigger.  Any boolean operation that would fill in the inside would also fill in the outside.

Hope that makes sense.

https://xkcd.com/2403/


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Converting a hollow STL file to solid ??

OpenSCAD mailing list-2
I must be misunderstanding the objective. I pictured the original model as one with two (or more) independent, separated surfaces, with the outer surface "encapsulating" the inner surface. To the best of my (mis)understanding, one can create an STL file with this characteristic, but I believe it would be considered non-manifold. I may be wrong; I'm often wrong.

Based on this, I also believed the objective was to remove the inner surface from the original STL file, leaving only the outer shell.

Again, based on my limited comprehension (another word for understanding), an STL file is not solid and cannot be made solid, as it is a collection of (properly) joined surfaces of zero thickness. In a manner of speaking, a properly constructed STL file is defining a solid, as long as there isn't anything else "inside" it.

In the iterative build of the previous message, I see my error. The "empty" volume of the original becomes non-empty during the difference process and is also integrated in the next difference action.

In a different way of phrasing the objective, would one accept that the goal is to remove the "stuff" inside the outer shell?

On Sunday, January 17, 2021, 3:07:11 PM EST, Jordan Brown <[hidden email]> wrote:


On 1/17/2021 11:33 AM, fred via Discuss wrote:
Disregarding the above, run your original through a boolean subtract with any suitably large primitive, then do it again to get the solid result. That can be done in OpenSCAD with a few lines, I'd think. The result would be only the "outside" of the original model.


Unless I totally misunderstand what you mean... no.
module hollowsphere() {
    difference() {
        sphere(10);
        sphere(6);
    }
}

Hollow sphere, right?

Confirm by chopping out a chunk:

difference() {
    hollowsphere();
    cube(20);
}


Now, you're saying that we can turn that into a filled sphere with something like this?

difference() {
    cube(21, center=true);
    difference() {
        cube(22, center=true);
        hollowsphere();
    }
}

(Note that the 21vs 22 is to avoid Z-fighting.)

Now let's chop a chunk out of that to look inside...

difference() {
    difference() {
        cube(21, center=true);
        difference() {
            cube(22, center=true);
            hollowsphere();
        }
    }
    cube(20);
}

Nope, still hollow.

Difference doesn't mold a shape around another shape.  (If it did, then this scheme would work.)  Rather, given a shape A and a shape B, for every point in B that is also in A, it removes that point from A.  The result of the initial cube-minus-hollow-sphere subtract is not a cube with a sphere carved out of it; it's a cube with a spherical shell carved out of it - a cube, with a gap, with a sphere inside that.

Let's look inside it:

difference() {
    difference() {
        cube(22, center=true);
        hollowsphere();
    }
    cube(20);
}


There's no way to fill a hollow shape using Boolean operations - or at least not without destroying the shape.  Mathematically, the volume inside the hollow shape is the same as the volume outside the hollow shape - the entire rest of the universe.  It's just that the outside is bigger.  Any boolean operation that would fill in the inside would also fill in the outside.

Hope that makes sense.

https://xkcd.com/2403/



_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Converting a hollow STL file to solid ??

JordanBrown
On 1/17/2021 12:41 PM, fred via Discuss wrote:
I must be misunderstanding the objective. I pictured the original model as one with two (or more) independent, separated surfaces, with the outer surface "encapsulating" the inner surface. To the best of my (mis)understanding, one can create an STL file with this characteristic, but I believe it would be considered non-manifold. I may be wrong; I'm often wrong.

I don't know whether it has a name but no, I don't think it's non-manifold.  I don't understand the math in the abstract, but I believe the definition is that of a 2-manifold is that each edge is attached to exactly two faces.  It may also be required to be non-self-intersecting, or maybe that's a separate requirement.

As best I can tell, it would be a shape with two "boundary components".  Ref https://en.wikipedia.org/wiki/Boundary_(topology) .

BTW, the Wikipedia articles on this stuff are remarkably poor at explaining it if you don't already understand most of it.  I'm not a dummy, and generally I'm lost after the second paragraph.  To be fair, they're reference material, not tutorial material, but ... still.

In some ways the first few paragraphs of the geographically-oriented article on Enclaves and exclaves are a simpler way of looking at it.  (They might be a *better* way, too, because they map straightforwardly to multi-material construction.)  Ref https://en.wikipedia.org/wiki/Enclave_and_exclave .

Based on this, I also believed the objective was to remove the inner surface from the original STL file, leaving only the outer shell.

Yes, that's my understanding too.

Again, based on my limited comprehension (another word for understanding), an STL file is not solid and cannot be made solid, as it is a collection of (properly) joined surfaces of zero thickness. In a manner of speaking, a properly constructed STL file is defining a solid, as long as there isn't anything else "inside" it.

An STL file is just a list of triangles.  For a well-formed STL file, you can look at the triangles and how they connect to one another, and (based on some assumptions) you can decide from that which volumes are part of the shape and which volumes are not part of the shape.  For simple shapes that's the same as "inside" and "outside", but more complex shapes like hollow shapes can have volumes that are in some sense "inside" but are not part of the shape.

In 2D, with lines instead of triangles, we can have



and the conventional interpretation is that the green section is part of the shape, and everything else (including the white section in the middle) is not part of the shape.

There are other interpretations of those lines.  You could say that the shape is the center rectangle, and the entire universe outside the outer rectangle, and *not* the green section.  (But that's not very useful in most cases.)

You could say that shape is the green area plus the center white area.  (But that would leave the inner rectangle meaningless.)

In the iterative build of the previous message, I see my error. The "empty" volume of the original becomes non-empty during the difference process and is also integrated in the next difference action.

Right.

There certainly could be an operation that was "remove any shape that is completely enclosed by another shape", or something like that, but we don't have it.

In a different way of phrasing the objective, would one accept that the goal is to remove the "stuff" inside the outer shell?

I believe that's correct.


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Converting a hollow STL file to solid ??

thehans
Well, for the simple case of hollow spheres and cubes (and any other *convex* object), you can use hull() to fill in the empty space.

But generally, no I don't think it's possible given our current builtin functionality.

On Sun, Jan 17, 2021 at 4:18 PM Jordan Brown <[hidden email]> wrote:
On 1/17/2021 12:41 PM, fred via Discuss wrote:
I must be misunderstanding the objective. I pictured the original model as one with two (or more) independent, separated surfaces, with the outer surface "encapsulating" the inner surface. To the best of my (mis)understanding, one can create an STL file with this characteristic, but I believe it would be considered non-manifold. I may be wrong; I'm often wrong.

I don't know whether it has a name but no, I don't think it's non-manifold.  I don't understand the math in the abstract, but I believe the definition is that of a 2-manifold is that each edge is attached to exactly two faces.  It may also be required to be non-self-intersecting, or maybe that's a separate requirement.

As best I can tell, it would be a shape with two "boundary components".  Ref https://en.wikipedia.org/wiki/Boundary_(topology) .

BTW, the Wikipedia articles on this stuff are remarkably poor at explaining it if you don't already understand most of it.  I'm not a dummy, and generally I'm lost after the second paragraph.  To be fair, they're reference material, not tutorial material, but ... still.

In some ways the first few paragraphs of the geographically-oriented article on Enclaves and exclaves are a simpler way of looking at it.  (They might be a *better* way, too, because they map straightforwardly to multi-material construction.)  Ref https://en.wikipedia.org/wiki/Enclave_and_exclave .

Based on this, I also believed the objective was to remove the inner surface from the original STL file, leaving only the outer shell.

Yes, that's my understanding too.

Again, based on my limited comprehension (another word for understanding), an STL file is not solid and cannot be made solid, as it is a collection of (properly) joined surfaces of zero thickness. In a manner of speaking, a properly constructed STL file is defining a solid, as long as there isn't anything else "inside" it.

An STL file is just a list of triangles.  For a well-formed STL file, you can look at the triangles and how they connect to one another, and (based on some assumptions) you can decide from that which volumes are part of the shape and which volumes are not part of the shape.  For simple shapes that's the same as "inside" and "outside", but more complex shapes like hollow shapes can have volumes that are in some sense "inside" but are not part of the shape.

In 2D, with lines instead of triangles, we can have



and the conventional interpretation is that the green section is part of the shape, and everything else (including the white section in the middle) is not part of the shape.

There are other interpretations of those lines.  You could say that the shape is the center rectangle, and the entire universe outside the outer rectangle, and *not* the green section.  (But that's not very useful in most cases.)

You could say that shape is the green area plus the center white area.  (But that would leave the inner rectangle meaningless.)

In the iterative build of the previous message, I see my error. The "empty" volume of the original becomes non-empty during the difference process and is also integrated in the next difference action.

Right.

There certainly could be an operation that was "remove any shape that is completely enclosed by another shape", or something like that, but we don't have it.

In a different way of phrasing the objective, would one accept that the goal is to remove the "stuff" inside the outer shell?

I believe that's correct.

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Converting a hollow STL file to solid ??

softfoot


An interesting discussion, I've learnt quite a lot from it :-)

Thanks all,
Dave


On 18/01/2021 00:14, Hans L wrote:
Well, for the simple case of hollow spheres and cubes (and any other *convex* object), you can use hull() to fill in the empty space.

But generally, no I don't think it's possible given our current builtin functionality.

On Sun, Jan 17, 2021 at 4:18 PM Jordan Brown <[hidden email]> wrote:
On 1/17/2021 12:41 PM, fred via Discuss wrote:
I must be misunderstanding the objective. I pictured the original model as one with two (or more) independent, separated surfaces, with the outer surface "encapsulating" the inner surface. To the best of my (mis)understanding, one can create an STL file with this characteristic, but I believe it would be considered non-manifold. I may be wrong; I'm often wrong.

I don't know whether it has a name but no, I don't think it's non-manifold.  I don't understand the math in the abstract, but I believe the definition is that of a 2-manifold is that each edge is attached to exactly two faces.  It may also be required to be non-self-intersecting, or maybe that's a separate requirement.

As best I can tell, it would be a shape with two "boundary components".  Ref https://en.wikipedia.org/wiki/Boundary_(topology) .

BTW, the Wikipedia articles on this stuff are remarkably poor at explaining it if you don't already understand most of it.  I'm not a dummy, and generally I'm lost after the second paragraph.  To be fair, they're reference material, not tutorial material, but ... still.

In some ways the first few paragraphs of the geographically-oriented article on Enclaves and exclaves are a simpler way of looking at it.  (They might be a *better* way, too, because they map straightforwardly to multi-material construction.)  Ref https://en.wikipedia.org/wiki/Enclave_and_exclave .

Based on this, I also believed the objective was to remove the inner surface from the original STL file, leaving only the outer shell.

Yes, that's my understanding too.

Again, based on my limited comprehension (another word for understanding), an STL file is not solid and cannot be made solid, as it is a collection of (properly) joined surfaces of zero thickness. In a manner of speaking, a properly constructed STL file is defining a solid, as long as there isn't anything else "inside" it.

An STL file is just a list of triangles.  For a well-formed STL file, you can look at the triangles and how they connect to one another, and (based on some assumptions) you can decide from that which volumes are part of the shape and which volumes are not part of the shape.  For simple shapes that's the same as "inside" and "outside", but more complex shapes like hollow shapes can have volumes that are in some sense "inside" but are not part of the shape.

In 2D, with lines instead of triangles, we can have



and the conventional interpretation is that the green section is part of the shape, and everything else (including the white section in the middle) is not part of the shape.

There are other interpretations of those lines.  You could say that the shape is the center rectangle, and the entire universe outside the outer rectangle, and *not* the green section.  (But that's not very useful in most cases.)

You could say that shape is the green area plus the center white area.  (But that would leave the inner rectangle meaningless.)

In the iterative build of the previous message, I see my error. The "empty" volume of the original becomes non-empty during the difference process and is also integrated in the next difference action.

Right.

There certainly could be an operation that was "remove any shape that is completely enclosed by another shape", or something like that, but we don't have it.

In a different way of phrasing the objective, would one accept that the goal is to remove the "stuff" inside the outer shell?

I believe that's correct.

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Converting a hollow STL file to solid ??

JordanBrown
In reply to this post by JordanBrown
On 1/17/2021 2:18 PM, Jordan Brown wrote:
I don't know whether [a hollow object] has a name but no, I don't think it's non-manifold.

I waded through enough of the Wikipedia text to find that "Manifolds need not be connected (all in "one piece"); an example is a pair of separate circles."  Ref: https://en.wikipedia.org/wiki/Manifold#Other_curves

Critically, a 2-manifold (which is what we usually talk about here) is a *surface*.  It isn't exactly a 3-dimensional object; it is only the surface of that 3-dimensional object.

Note that the overall shape of the surface is not important.  What is important is that you can take any immediate "neighborhood", flatten it out, and it will look like a boring flat surface.

What we usually deal with are 2-manifolds without boundaries.  As an ant walking along the surface, you can always keep walking; you will never encounter "the end of the world".  Ref:  https://en.wikipedia.org/wiki/Manifold#Manifold_with_boundary
Incomplete polyhedra, ones that don't have a fully-connected set of faces, do have boundaries.  But they're arguably in the same class as non-2-manifolds and self-intersecting surfaces, structures that the language allows us to make but that are malformed for many purposes.
The objects themselves are 3-manifolds *with* boundaries.  Their boundaries are... the 2-manifold surfaces that we're designing.  Unlike the ant, a fly flying through the sphere *can* run into the side of the sphere.

This ties back to the green rectangle from my previous message.  We're defining the boundaries, but it's something of a matter of interpretation what those boundaries mean to the solids that they enclose.  A sphere is a boundary, but is the object the ball-shaped thing inside, or is it the infinite-space thing outside less a ball-shaped exclusion?

(Anybody who *does* understand the math is welcome to jump in and explain this stuff better... please!)


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: Converting a hollow STL file to solid ??

Kenneth Sloan
Well...strictly speaking, the stated intention of OpenSCAD is to define SOLIDS.  The boundaries are simply one representation of the solid.  Alas, the created boundaries are not always correct representations of the solids, and OpenSCAD really has no way of dealing with the boundaries, per se.

One difficulty is that the created boundaries are limited to a set of triangles.  There are good reasons for this choice, but it is important to realize that it *is* a choice.

Failure  to recognize the differences between {triangles} and 2-manifolds and 3D solids leads to many misunderstandings.

Alas, OpenSCAD practitioners (and the writers of the OpenSCAD manuals) often confuse these  three very different things.

--
Kenneth Sloan
[hidden email]
Vision is the art of seeing what is invisible to others.





On Jan 17, 2021, at 20:52, Jordan Brown <[hidden email]> wrote:

On 1/17/2021 2:18 PM, Jordan Brown wrote:
I don't know whether [a hollow object] has a name but no, I don't think it's non-manifold.

I waded through enough of the Wikipedia text to find that "Manifolds need not be connected (all in "one piece"); an example is a pair of separate circles."  Ref: https://en.wikipedia.org/wiki/Manifold#Other_curves

Critically, a 2-manifold (which is what we usually talk about here) is a *surface*.  It isn't exactly a 3-dimensional object; it is only the surface of that 3-dimensional object.

Note that the overall shape of the surface is not important.  What is important is that you can take any immediate "neighborhood", flatten it out, and it will look like a boring flat surface.

What we usually deal with are 2-manifolds without boundaries.  As an ant walking along the surface, you can always keep walking; you will never encounter "the end of the world".  Ref:  https://en.wikipedia.org/wiki/Manifold#Manifold_with_boundary
Incomplete polyhedra, ones that don't have a fully-connected set of faces, do have boundaries.  But they're arguably in the same class as non-2-manifolds and self-intersecting surfaces, structures that the language allows us to make but that are malformed for many purposes.
The objects themselves are 3-manifolds *with* boundaries.  Their boundaries are... the 2-manifold surfaces that we're designing.  Unlike the ant, a fly flying through the sphere *can* run into the side of the sphere.

This ties back to the green rectangle from my previous message.  We're defining the boundaries, but it's something of a matter of interpretation what those boundaries mean to the solids that they enclose.  A sphere is a boundary, but is the object the ball-shaped thing inside, or is it the infinite-space thing outside less a ball-shaped exclusion?

(Anybody who *does* understand the math is welcome to jump in and explain this stuff better... please!)

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org