discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Getting more information

N
NateTG
Sat, Jul 6, 2019 2:43 AM

I did start writing up a polyhedron checker:

http://forum.openscad.org/Mesh-Polyhedron-Test-Script-td23106.html

I'm not sure how quickly or easily you could run something like that on that
on the polyhedron you're generating, or if it would find the issue that
you're running into, but it should find holes and topologically incorrectly
oriented faces.

It won't detect if you're generating a self-intersecting extrusion profile.

I've run into issues because OpenSCAD doesn't do exact geometry or because
of floating point problems.  So you can get into trouble if you have very
short line segments or wall thickness.

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

I did start writing up a polyhedron checker: http://forum.openscad.org/Mesh-Polyhedron-Test-Script-td23106.html I'm not sure how quickly or easily you could run something like that on that on the polyhedron you're generating, or if it would find the issue that you're running into, but it should find holes and topologically incorrectly oriented faces. It won't detect if you're generating a self-intersecting extrusion profile. I've run into issues because OpenSCAD doesn't do exact geometry or because of floating point problems. So you can get into trouble if you have very short line segments or wall thickness. -- Sent from: http://forum.openscad.org/
M
MichaelAtOz
Sat, Jul 6, 2019 3:44 AM

Well I can give you a clue to the CGAL error.

I looked at arches2(16,4).
Exported a .stl, where Netfabb pointed to self-intersections at the top end.
http://forum.openscad.org/file/t359/Capture_arches2_full.jpg

I then changed arches2() to just make the end slice, ie "for (i=[103 : 1 :
105])"

STL:  arch2e.stl http://forum.openscad.org/file/t359/arch2e.stl

http://forum.openscad.org/file/t359/Capture_arches2_end.jpg

Note the red edges v's orange faces.

Close-up, near the arrow above:
http://forum.openscad.org/file/t359/Capture_arches2_end_close.jpg
Those lines are what looks red edges above.

Closer:
http://forum.openscad.org/file/t359/Capture_arches2_end_close2.jpg

Closer:
http://forum.openscad.org/file/t359/Capture_arches2_end_close3.jpg
That is an overhang.

From below:

http://forum.openscad.org/file/t359/Capture_arches2_end_close_below.jpg

Above:
http://forum.openscad.org/file/t359/Capture_arches2_end_close_above.jpg
Note that is not legal triangulation I believe.

I don't know whether that is due to your input to skin() or skin().

I change it to the following so the vector can be examined.

module arches2(verticies=192, thickness = 8, solid = false) {

yxzpath = ogeepolyPath(650, 3, 600, 600, 420, 1, 10);

//echo(yxzpath);
//echo("blah");
//echo(yxzpath[10]);

skinv= [
      for (i=[103 : 1 :  105]) 
        transform( translation(yxzpath[i]) * rotation([0,0,0])
                  , wave(i,verticies,thickness,solid))
      ];
echo(skinv);
skin(skinv); 

}

ECHO:
[
[
[23.7722, 0, 763.327], [22.2656, 16.6424, 763.327],
[17.5469, 33.136, 763.327], [10.6125, 48.2908, 763.327],
[1.32186, 61.5592, 763.327], [-8.0577, 47.8162, 763.327],
[-15.4296, 32.2882, 763.327], [-19.7167, 16.1361, 763.327],
[-21.041, 0, 763.327], [-20.0367, 0.474642, 763.327],
[-17.221, 21.6275, 763.327], [-10.0349, 41.2904, 763.327],
[1.32186, 58.5576, 763.327], [12.7961, 41.0483, 763.327],
[20.2811, 21.0021, 763.327], [22.7694, 0, 763.327]
],
[
[22.7821, 0, 771.996], [21.3229, 16.5331, 771.996],
[16.9285, 32.6534, 771.996], [9.94616, 47.6982, 771.996],
[0.5, 61.1888, 771.996], [-8.96845, 47.5793, 771.996],
[-16.0605, 32.4408, 771.996], [-20.3467, 16.4062, 771.996],
[-21.7601, 0, 771.996], [-20.8072, 0.118986, 771.996],
[-18.2633, 21.1468, 771.996], [-11.0469, 40.9534, 771.996],
[0.5, 58.5097, 771.996], [12.0764, 40.8928, 771.996],
[19.3677, 20.9901, 771.996], [21.8295, 0, 771.996]
],
[
[22.7258, 0, 771.996], [21.2825, 16.4966, 771.996],
[16.9966, 32.4919, 771.996], [9.99819, 47.5, 771.996],
[0.5, 61.0648, 771.996], [-8.99819, 47.5, 771.996],
[-15.9966, 32.4919, 771.996], [-20.2825, 16.4966, 771.996],
[-21.7258, 0, 771.996], [-20.79, 0, 771.996],
[-18.337, 20.986, 771.996], [-11.1105, 40.8407, 771.996],
[0.5, 58.4937, 771.996], [12.1105, 40.8407, 771.996],
[19.337, 20.986, 771.996], [21.79, 0, 771.996]
]
]


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

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

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

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

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

Well I can give you a clue to the CGAL error. I looked at arches2(16,4). Exported a .stl, where Netfabb pointed to self-intersections at the top end. <http://forum.openscad.org/file/t359/Capture_arches2_full.jpg> I then changed arches2() to just make the end slice, ie "for (i=[103 : 1 : 105])" STL: arch2e.stl <http://forum.openscad.org/file/t359/arch2e.stl> <http://forum.openscad.org/file/t359/Capture_arches2_end.jpg> Note the red edges v's orange faces. Close-up, near the arrow above: <http://forum.openscad.org/file/t359/Capture_arches2_end_close.jpg> Those lines are what looks red edges above. Closer: <http://forum.openscad.org/file/t359/Capture_arches2_end_close2.jpg> Closer: <http://forum.openscad.org/file/t359/Capture_arches2_end_close3.jpg> That is an overhang. >From below: <http://forum.openscad.org/file/t359/Capture_arches2_end_close_below.jpg> Above: <http://forum.openscad.org/file/t359/Capture_arches2_end_close_above.jpg> Note that is not legal triangulation I believe. I don't know whether that is due to your input to skin() or skin(). I change it to the following so the vector can be examined. module arches2(verticies=192, thickness = 8, solid = false) { yxzpath = ogeepolyPath(650, 3, 600, 600, 420, 1, 10); //echo(yxzpath); //echo("blah"); //echo(yxzpath[10]); skinv= [ for (i=[103 : 1 : 105]) transform( translation(yxzpath[i]) * rotation([0,0,0]) , wave(i,verticies,thickness,solid)) ]; echo(skinv); skin(skinv); } ECHO: [ [ [23.7722, 0, 763.327], [22.2656, 16.6424, 763.327], [17.5469, 33.136, 763.327], [10.6125, 48.2908, 763.327], [1.32186, 61.5592, 763.327], [-8.0577, 47.8162, 763.327], [-15.4296, 32.2882, 763.327], [-19.7167, 16.1361, 763.327], [-21.041, 0, 763.327], [-20.0367, 0.474642, 763.327], [-17.221, 21.6275, 763.327], [-10.0349, 41.2904, 763.327], [1.32186, 58.5576, 763.327], [12.7961, 41.0483, 763.327], [20.2811, 21.0021, 763.327], [22.7694, 0, 763.327] ], [ [22.7821, 0, 771.996], [21.3229, 16.5331, 771.996], [16.9285, 32.6534, 771.996], [9.94616, 47.6982, 771.996], [0.5, 61.1888, 771.996], [-8.96845, 47.5793, 771.996], [-16.0605, 32.4408, 771.996], [-20.3467, 16.4062, 771.996], [-21.7601, 0, 771.996], [-20.8072, 0.118986, 771.996], [-18.2633, 21.1468, 771.996], [-11.0469, 40.9534, 771.996], [0.5, 58.5097, 771.996], [12.0764, 40.8928, 771.996], [19.3677, 20.9901, 771.996], [21.8295, 0, 771.996] ], [ [22.7258, 0, 771.996], [21.2825, 16.4966, 771.996], [16.9966, 32.4919, 771.996], [9.99819, 47.5, 771.996], [0.5, 61.0648, 771.996], [-8.99819, 47.5, 771.996], [-15.9966, 32.4919, 771.996], [-20.2825, 16.4966, 771.996], [-21.7258, 0, 771.996], [-20.79, 0, 771.996], [-18.337, 20.986, 771.996], [-11.1105, 40.8407, 771.996], [0.5, 58.4937, 771.996], [12.1105, 40.8407, 771.996], [19.337, 20.986, 771.996], [21.79, 0, 771.996] ] ] ----- Admin - email* me if you need anything, or if I've done something stupid... * click on my MichaelAtOz label, there is a link to email me. Unless specifically shown otherwise above, my contribution is in the Public Domain; to the extent possible under law, I have waived all copyright and related or neighbouring rights to this work. Obviously inclusion of works of previous authors is not included in the above. The TPP is no simple “trade agreement.” Fight it! http://www.ourfairdeal.org/ time is running out! -- Sent from: http://forum.openscad.org/
M
MichaelAtOz
Sat, Jul 6, 2019 6:30 AM

Disregard the above. I think I introduced a side effect when formatting the
code.


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

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

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

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

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

Disregard the above. I think I introduced a side effect when formatting the code. ----- Admin - email* me if you need anything, or if I've done something stupid... * click on my MichaelAtOz label, there is a link to email me. Unless specifically shown otherwise above, my contribution is in the Public Domain; to the extent possible under law, I have waived all copyright and related or neighbouring rights to this work. Obviously inclusion of works of previous authors is not included in the above. The TPP is no simple “trade agreement.” Fight it! http://www.ourfairdeal.org/ time is running out! -- Sent from: http://forum.openscad.org/
M
MichaelAtOz
Sat, Jul 6, 2019 8:45 AM

OK re-regard the above, I got confounded by a F6 before F5 artifact...

So plotting the points

module plotvv3(vv,size=2)
for(j=vv) plotv3(j,size,"red");

module plotv3(v,size=4,c="blue") { // v=[ [x,y,z], ... ]
for(i=v)
translate([i.x,i.y,i.z])
color(c)
sphere(size,$fn=12);
}

//this makes the shape I want a transtion between
//roman and ogee arches on a pathway that is half
//an ogee arch
//I'd use 6 of these to make the hallways I want
//16 verticies simplifies things

module arches2(verticies=192, thickness = 8, solid = false) {
yxzpath = ogeepolyPath(650, 3, 600, 600, 420, 1, 10);

//echo(yxzpath);
//echo("blah");
//echo(yxzpath[10]);
translate([0,0,750]) cube();
skinv=[
       for (i=[103 : 1 :  105])
          transform(translation(yxzpath[i]) * rotation([0,0,0]), 
                    wave(i,verticies,thickness,solid))
      ];  
echo(len(skinv),skinv=skinv);
plotvv3(skinv,size=0.3);
skin(skinv);

}

Shows:
http://forum.openscad.org/file/t359/arches2_plot_orig.jpg

Looking at the 103-105 points, which are black, red, blue respectively
http://forum.openscad.org/file/t359/Capture_arches2_skinv_plot_103-105.jpg

The 104 & 105 are likely the cause.

Doing,

plotv3(yxzpath);

Shows:
http://forum.openscad.org/file/t359/Capture_arches2_yxzpath.jpg

Looking into ogeepolyPath(),

// Lower Right Outer arc
lro = [ for (i = [0:1:lowerpoints-1]) 

Remove the '-1' fixes that gap.

Then:
http://forum.openscad.org/file/t359/arches2_plot_fixed.jpg

No more CGAL error with a cube().

STL fixed:  arches2_fixed_w_cube.stl
http://forum.openscad.org/file/t359/arches2_fixed_w_cube.stl
No self-intersections.

But Thrown-together still shows purple...
http://forum.openscad.org/file/t359/arches2_fixed_purple.jpg

I suspect that may be a skin() thing...looking...


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

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

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

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

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

OK re-regard the above, I got confounded by a F6 before F5 artifact... So plotting the points module plotvv3(vv,size=2) for(j=vv) plotv3(j,size,"red"); module plotv3(v,size=4,c="blue") { // v=[ [x,y,z], ... ] for(i=v) translate([i.x,i.y,i.z]) color(c) sphere(size,$fn=12); } //this makes the shape I want a transtion between //roman and ogee arches on a pathway that is half //an ogee arch //I'd use 6 of these to make the hallways I want //16 verticies simplifies things module arches2(verticies=192, thickness = 8, solid = false) { yxzpath = ogeepolyPath(650, 3, 600, 600, 420, 1, 10); //echo(yxzpath); //echo("blah"); //echo(yxzpath[10]); translate([0,0,750]) cube(); skinv=[ for (i=[103 : 1 : 105]) transform(translation(yxzpath[i]) * rotation([0,0,0]), wave(i,verticies,thickness,solid)) ]; echo(len(skinv),skinv=skinv); plotvv3(skinv,size=0.3); skin(skinv); } Shows: <http://forum.openscad.org/file/t359/arches2_plot_orig.jpg> Looking at the 103-105 points, which are black, red, blue respectively <http://forum.openscad.org/file/t359/Capture_arches2_skinv_plot_103-105.jpg> The 104 & 105 are likely the cause. Doing, plotv3(yxzpath); Shows: <http://forum.openscad.org/file/t359/Capture_arches2_yxzpath.jpg> Looking into ogeepolyPath(), // Lower Right Outer arc lro = [ for (i = [0:1:lowerpoints-1]) Remove the '-1' fixes that gap. Then: <http://forum.openscad.org/file/t359/arches2_plot_fixed.jpg> No more CGAL error with a cube(). STL fixed: arches2_fixed_w_cube.stl <http://forum.openscad.org/file/t359/arches2_fixed_w_cube.stl> No self-intersections. But Thrown-together still shows purple... <http://forum.openscad.org/file/t359/arches2_fixed_purple.jpg> I suspect that may be a skin() thing...looking... ----- Admin - email* me if you need anything, or if I've done something stupid... * click on my MichaelAtOz label, there is a link to email me. Unless specifically shown otherwise above, my contribution is in the Public Domain; to the extent possible under law, I have waived all copyright and related or neighbouring rights to this work. Obviously inclusion of works of previous authors is not included in the above. The TPP is no simple “trade agreement.” Fight it! http://www.ourfairdeal.org/ time is running out! -- Sent from: http://forum.openscad.org/
DS
Dan Shriver
Sat, Jul 6, 2019 1:38 PM

Thanks for all your hard work.  I am confused on some things though:

  1. " But Thrown-together still shows purple...
    http://forum.openscad.org/file/t359/arches2_fixed_purple.jpg "
    So that is the kind of thing I have been seeing but the image shows the
    facets in shades of yellow, and only the edges are purple/magenta/pink.  I
    have been operating under the assumption that whole faces/facets should be
    purple/magenta/pink to show a problem.  Another person suggested those
    "edges" were really very narrow facets or gaps.  But it seems hard for me
    to believe that every single face / facet in my object also is bordered on
    all sides by either facets with a very tiny width or holes with a tiny
    width.  Or does this mean I have been looking for the wrong thing in
    "thrown together" and edges with purple/magenta/pink mean there is a
    problem (that is still somewhat confusing because it suggests that somehow
    everything is in error; I'd think it would be almost impossible to generate
    something that was all bad or nearly all bad)?  So I think I don't know how
    to interpret "thrown together" properly

  2. the overhang thing you found I believe is the problem, but I don't
    really get how it happens.  Lately I've been doing arches2(16) specifying
    only 16 points per arch.  The advantage of doing that is (given the other
    defaults) the points should be widely enough spaced apart that floating
    point vagaries don't cause two points to end up (with rounding errors) at
    the same coordinate.  Also I set some debug messages in the code to spit
    out how many points each arch had.  All the messages said "16", so with
    equal number of point I don't see how an overhang should happen.  You
    mentioned there might be some problem with skin() (I didn't realize skin()
    had known bugs) which could explain things; otherwise I don't understand
    how when knitting together polygons (with roughly similar shapes, non
    degenerate points, the same order of points, and the same number of
    vertices) gives an overhang

That being said it did occur to me that ogeepolyPath (which is generating
the coordinate path to center the arches on) is generating 402 points,
whereas my wave() routine is generating 105 arch polygons.  I could see
that it might cause a problem (if skin() has to interpolate or do something
like that to make them match).  I did go back to force ogeepolyPath to
generate 105 points so it would match the number of archways being
generated.  Unfortunately I still get the "ERROR: CGAL error in
CGAL_Nef_polyhedron3(): CGAL ERROR: assertion violation! Expr: e_below !=
SHalfedge_handle() File:
/opt/mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_3/SNC_FM_decorator.h
Line: 426 " error when I try to build the hallway, subtract a solid
mirrored version, then add the mirror version

Thanks for all your hard work. I am confused on some things though: 1) " But Thrown-together still shows purple... <http://forum.openscad.org/file/t359/arches2_fixed_purple.jpg> " So that is the kind of thing I have been seeing but the image shows the facets in shades of yellow, and only the edges are purple/magenta/pink. I have been operating under the assumption that whole faces/facets should be purple/magenta/pink to show a problem. Another person suggested those "edges" were really very narrow facets or gaps. But it seems hard for me to believe that every single face / facet in my object also is bordered on all sides by either facets with a very tiny width or holes with a tiny width. Or does this mean I have been looking for the wrong thing in "thrown together" and edges with purple/magenta/pink mean there is a problem (that is still somewhat confusing because it suggests that somehow everything is in error; I'd think it would be almost impossible to generate something that was all bad or nearly all bad)? So I think I don't know how to interpret "thrown together" properly 2) the overhang thing you found I believe is the problem, but I don't really get how it happens. Lately I've been doing arches2(16) specifying only 16 points per arch. The advantage of doing that is (given the other defaults) the points should be widely enough spaced apart that floating point vagaries don't cause two points to end up (with rounding errors) at the same coordinate. Also I set some debug messages in the code to spit out how many points each arch had. All the messages said "16", so with equal number of point I don't see how an overhang should happen. You mentioned there might be some problem with skin() (I didn't realize skin() had known bugs) which could explain things; otherwise I don't understand how when knitting together polygons (with roughly similar shapes, non degenerate points, the same order of points, and the same number of vertices) gives an overhang That being said it did occur to me that ogeepolyPath (which is generating the coordinate path to center the arches on) is generating 402 points, whereas my wave() routine is generating 105 arch polygons. I could see that it might cause a problem (if skin() has to interpolate or do something like that to make them match). I did go back to force ogeepolyPath to generate 105 points so it would match the number of archways being generated. Unfortunately I still get the "ERROR: CGAL error in CGAL_Nef_polyhedron3(): CGAL ERROR: assertion violation! Expr: e_below != SHalfedge_handle() File: /opt/mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_3/SNC_FM_decorator.h Line: 426 " error when I try to build the hallway, subtract a solid mirrored version, then add the mirror version
P
Parkinbot
Sat, Jul 6, 2019 8:46 PM

well, to be honest, your coding is a bit callenging. But having played a bit
with your code, I can say that

 translate([0,0,750]) cube();
 skinv=[
       for (i=[0 : 1 :  104])
          reverse(transform(translation(yxzpath[i]) * rotation([0,0,0]),
                    wave(i,verticies,thickness,solid)))
      ];  
skin(skinv);

works well with F6. Note that I had to include a reverse() to correct the
point order. Further I count the 105 polygons from 0 to 104. Your problem
might be that a loop from 104 to 105 will return two identical polygons,
which will trigger the CGAL error, when skinned.

 skinv=[
       for (i=[104 : 1 :  105])  // identical polygons

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

well, to be honest, your coding is a bit callenging. But having played a bit with your code, I can say that translate([0,0,750]) cube(); skinv=[ for (i=[0 : 1 : 104]) reverse(transform(translation(yxzpath[i]) * rotation([0,0,0]), wave(i,verticies,thickness,solid))) ]; skin(skinv); works well with F6. Note that I had to include a reverse() to correct the point order. Further I count the 105 polygons from 0 to 104. Your problem might be that a loop from 104 to 105 will return two identical polygons, which will trigger the CGAL error, when skinned. skinv=[ for (i=[104 : 1 : 105]) // identical polygons -- Sent from: http://forum.openscad.org/
DS
Dan Shriver
Sat, Jul 6, 2019 9:35 PM

Thanks everyone!

I hope to print out the 1/3 of the main hallways soon.  Then I'll move on
to the domes, and after that buttresses etc.

Parkinbot- how did you quickly determine that the last two polygons were
the same?  Did you look for the purple in the display and then compare
points or....?

On Sat, Jul 6, 2019 at 4:47 PM Parkinbot rudolf@digitaldocument.de wrote:

well, to be honest, your coding is a bit callenging. But having played a
bit
with your code, I can say that

  translate([0,0,750]) cube();
  skinv=[
        for (i=[0 : 1 :  104])
           reverse(transform(translation(yxzpath[i]) *

rotation([0,0,0]),
wave(i,verticies,thickness,solid)))
];
skin(skinv);

works well with F6. Note that I had to include a reverse() to correct the
point order. Further I count the 105 polygons from 0 to 104. Your problem
might be that a loop from 104 to 105 will return two identical polygons,
which will trigger the CGAL error, when skinned.

  skinv=[
        for (i=[104 : 1 :  105])  // identical polygons

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


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

Thanks everyone! I hope to print out the 1/3 of the main hallways soon. Then I'll move on to the domes, and after that buttresses etc. Parkinbot- how did you quickly determine that the last two polygons were the same? Did you look for the purple in the display and then compare points or....? On Sat, Jul 6, 2019 at 4:47 PM Parkinbot <rudolf@digitaldocument.de> wrote: > well, to be honest, your coding is a bit callenging. But having played a > bit > with your code, I can say that > > translate([0,0,750]) cube(); > skinv=[ > for (i=[0 : 1 : 104]) > reverse(transform(translation(yxzpath[i]) * > rotation([0,0,0]), > wave(i,verticies,thickness,solid))) > ]; > skin(skinv); > > works well with F6. Note that I had to include a reverse() to correct the > point order. Further I count the 105 polygons from 0 to 104. Your problem > might be that a loop from 104 to 105 will return two identical polygons, > which will trigger the CGAL error, when skinned. > > skinv=[ > for (i=[104 : 1 : 105]) // identical polygons > > > > > -- > Sent from: http://forum.openscad.org/ > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
M
MichaelAtOz
Sat, Jul 6, 2019 11:55 PM

Parkinbot wrote

Note that I had to include a reverse() to correct the
point order.

Your problem
might be that a loop from 104 to 105 will return two identical polygons,
which will trigger the CGAL error, when skinned.

  skinv=[
        for (i=[104 : 1 :  105])  // identical polygons

Note the 105 prolem is caused by a gap in the ogee, see ogeepolyPath(),

// Lower Right Outer arc
lro = [ for (i = [0:1:lowerpoints-1])

Remove the '-1' fixes that gap, and [0:1:105] is good geometry.
[Dan, same issue with ogeepoly()]

When I included reverse() the result is everything is inside-out.
http://forum.openscad.org/file/t359/arches2_fixed_all_purple.jpg
(note on closer examination the cube() has no purple, that is an artefact)

Without reverse(), without show-edges:
http://forum.openscad.org/file/t359/arches2_fixed_purple_close.jpg
Those purple bits behave as if there is z-fighting, when you rotate the
model.

It gets very psychedelic:
http://forum.openscad.org/file/t359/arches2_fixed_purple_side1.jpg
http://forum.openscad.org/file/t359/arches2_fixed_purple_side2.jpg

With show-edges:
http://forum.openscad.org/file/t359/arches2_fixed_purple_close_edges.jpg

I have no idea what's going on...


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

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

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

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

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

Parkinbot wrote > Note that I had to include a reverse() to correct the > point order. > > Your problem > might be that a loop from 104 to 105 will return two identical polygons, > which will trigger the CGAL error, when skinned. > > skinv=[ > for (i=[104 : 1 : 105]) // identical polygons Note the 105 prolem is caused by a gap in the ogee, see ogeepolyPath(), // Lower Right Outer arc lro = [ for (i = [0:1:lowerpoints-1]) Remove the '-1' fixes that gap, and [0:1:105] is good geometry. [Dan, same issue with ogeepoly()] When I included reverse() the result is everything is inside-out. <http://forum.openscad.org/file/t359/arches2_fixed_all_purple.jpg> (note on closer examination the cube() has no purple, that is an artefact) Without reverse(), without show-edges: <http://forum.openscad.org/file/t359/arches2_fixed_purple_close.jpg> Those purple bits behave as if there is z-fighting, when you rotate the model. It gets very psychedelic: <http://forum.openscad.org/file/t359/arches2_fixed_purple_side1.jpg> <http://forum.openscad.org/file/t359/arches2_fixed_purple_side2.jpg> With show-edges: <http://forum.openscad.org/file/t359/arches2_fixed_purple_close_edges.jpg> I have no idea what's going on... ----- Admin - email* me if you need anything, or if I've done something stupid... * click on my MichaelAtOz label, there is a link to email me. Unless specifically shown otherwise above, my contribution is in the Public Domain; to the extent possible under law, I have waived all copyright and related or neighbouring rights to this work. Obviously inclusion of works of previous authors is not included in the above. The TPP is no simple “trade agreement.” Fight it! http://www.ourfairdeal.org/ time is running out! -- Sent from: http://forum.openscad.org/
P
Parkinbot
Sun, Jul 7, 2019 11:20 AM

DanS wrote

Parkinbot- how did you quickly determine that the last two polygons were
the same?  Did you look for the purple in the display and then compare
points or....?

two identical polygons are not visualized as purple by F12, but trigger CGAL
errors due to self intersection. When playing, I wondered why the loop going
from 103 to 105 produced only a single segment and there was no difference
to a loop going from 103 to 104. Thus I suspected that 104 to 105 will
generate a flat segment, which proved to be true.

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

DanS wrote > Parkinbot- how did you quickly determine that the last two polygons were > the same? Did you look for the purple in the display and then compare > points or....? two identical polygons are not visualized as purple by F12, but trigger CGAL errors due to self intersection. When playing, I wondered why the loop going from 103 to 105 produced only a single segment and there was no difference to a loop going from 103 to 104. Thus I suspected that 104 to 105 will generate a flat segment, which proved to be true. -- Sent from: http://forum.openscad.org/