discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Why is this not an error?

MK
Marius Kintel
Sat, Dec 3, 2016 8:41 PM

On Dec 3, 2016, at 14:25, Ronaldo rcmpersiano@gmail.com wrote:

I don't believe that polyhedron repair is possible. The set of non-manifold
topologies are much broader that the manifold ones. And to find a manifold
that meet most the adjacencies of a non-manifold is an ill-defined problem.

I think we can constrain the allowed input to be locally manifold, but where multiple topologically different vertices can have the same position in space, as I suggested in my previous email in this thread.

-Marius

> On Dec 3, 2016, at 14:25, Ronaldo <rcmpersiano@gmail.com> wrote: > > I don't believe that polyhedron repair is possible. The set of non-manifold > topologies are much broader that the manifold ones. And to find a manifold > that meet most the adjacencies of a non-manifold is an ill-defined problem. I think we can constrain the allowed input to be locally manifold, but where multiple topologically different vertices can have the same position in space, as I suggested in my previous email in this thread. -Marius
MK
Marius Kintel
Sat, Dec 3, 2016 9:00 PM

On Dec 3, 2016, at 15:29, Carsten Arnholm arnholm@arnholm.org wrote:

Ok, I guess my code will fail on some of them... if there is an index of those cases it could be of interest to try.

Not yet, but I’ll start categorizing more failing tests and list them under the appropriate github issue.

As a start, it would be interesting if you could handle the 8 test cases listed here:
https://github.com/openscad/openscad/issues/1580

They all cause zero area triangles on export from OpenSCAD today.

However, let me give you an idea of the algorithm.

By first glance it looks like your algorithm is equivalent to iteratively performing edge flips, except you handle all vertex-edge intersections per split operation, instead of just one.
I’ll take a closer look later.

-Marius

> On Dec 3, 2016, at 15:29, Carsten Arnholm <arnholm@arnholm.org> wrote: > > Ok, I guess my code will fail on some of them... if there is an index of those cases it could be of interest to try. > Not yet, but I’ll start categorizing more failing tests and list them under the appropriate github issue. As a start, it would be interesting if you could handle the 8 test cases listed here: https://github.com/openscad/openscad/issues/1580 They all cause zero area triangles on export from OpenSCAD today. > However, let me give you an idea of the algorithm. By first glance it looks like your algorithm is equivalent to iteratively performing edge flips, except you handle all vertex-edge intersections per split operation, instead of just one. I’ll take a closer look later. -Marius
CA
Carsten Arnholm
Sat, Dec 3, 2016 9:02 PM

On 03. des. 2016 20:25, Ronaldo wrote:

I don't believe that polyhedron repair is possible.

Well, it is possible under certain assumptions, most importantly when a
model can be interpreted as manifold, using coordinate matching, and a
couple of other techniques.

In 3d printing, most models are (or should be) manifolds, so it is a
reasonable assumption to work from when attempting to 'heal'

But the healing algorithms are not able to read your mind, so to turn
your example into a usable manifold (if that is your goal), you need to
edit it.

Carsten Arnholm

On 03. des. 2016 20:25, Ronaldo wrote: > I don't believe that polyhedron repair is possible. Well, it is possible under certain assumptions, most importantly when a model can be interpreted as manifold, using coordinate matching, and a couple of other techniques. In 3d printing, most models are (or should be) manifolds, so it is a reasonable assumption to work from when attempting to 'heal' But the healing algorithms are not able to read your mind, so to turn your example into a usable manifold (if that is your goal), you need to edit it. Carsten Arnholm
CA
Carsten Arnholm
Sat, Dec 3, 2016 10:51 PM

On 03. des. 2016 22:00, Marius Kintel wrote:

As a start, it would be interesting if you could handle the 8 test cases listed here:
https://github.com/openscad/openscad/issues/1580

They all cause zero area triangles on export from OpenSCAD today.

Not sure I understood which exact 8 cases that is, but I tried these:

issue1580-back-to-back.stl      result: no warnings
issue1580-back-to-back2.stl      result: no warnings
issue1580-zero-area-triangle.stl result: no warnings
issue945e.stl                    result: no warnings
issue945f.stl                    result: no warnings
issue1803.stl                    result: no warnings
adns2610_dev_circuit_inv_ascii.stl  result: no warnings  (ascii)
issue1876.stl                    result: no warnings

See attached file with more info.

In short, all appears to end with no warning, and using simple
visualisation of the resulting AMF file seems to confirm they are all ok.

issue1876.stl  was an interesting case of having also a duplicated face,
it was handled ok.

By first glance it looks like your algorithm is equivalent to
iteratively performing edge flips, except you handle all vertex-edge
intersections per split operation, instead of just one.
I’ll take a closer look later.

Yes it is true all edge splits are done done at once for any given edge.

From the above tests, my scheme seems to work, but I guess there are
more complex  problems

Carsten Arnholm

On 03. des. 2016 22:00, Marius Kintel wrote: > As a start, it would be interesting if you could handle the 8 test cases listed here: > https://github.com/openscad/openscad/issues/1580 > > They all cause zero area triangles on export from OpenSCAD today. Not sure I understood which exact 8 cases that is, but I tried these: issue1580-back-to-back.stl result: no warnings issue1580-back-to-back2.stl result: no warnings issue1580-zero-area-triangle.stl result: no warnings issue945e.stl result: no warnings issue945f.stl result: no warnings issue1803.stl result: no warnings adns2610_dev_circuit_inv_ascii.stl result: no warnings (ascii) issue1876.stl result: no warnings See attached file with more info. In short, all appears to end with no warning, and using simple visualisation of the resulting AMF file seems to confirm they are all ok. issue1876.stl was an interesting case of having also a duplicated face, it was handled ok. > By first glance it looks like your algorithm is equivalent to > iteratively performing edge flips, except you handle all vertex-edge > intersections per split operation, instead of just one. > I’ll take a closer look later. Yes it is true all edge splits are done done at once for any given edge. From the above tests, my scheme seems to work, but I guess there are more complex problems Carsten Arnholm
MK
Marius Kintel
Sat, Dec 3, 2016 11:10 PM

On Dec 3, 2016, at 17:51, Carsten Arnholm arnholm@arnholm.org wrote:

Not sure I understood which exact 8 cases that is, but I tried these:

Cool, looks like you’re a good step ahead of me in terms of success rate.

From the above tests, my scheme seems to work, but I guess there are more complex  problems

There are more complex ones, but they’re all based on original bug reports which I haven’t properly organized yet.

-Marius

> On Dec 3, 2016, at 17:51, Carsten Arnholm <arnholm@arnholm.org> wrote: > > Not sure I understood which exact 8 cases that is, but I tried these: > Cool, looks like you’re a good step ahead of me in terms of success rate. > From the above tests, my scheme seems to work, but I guess there are more complex problems > There are more complex ones, but they’re all based on original bug reports which I haven’t properly organized yet. -Marius