Strange Error in Render

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

Strange Error in Render

woodslanding
This displays fine, until I try a top-level render (either in code or from
the menu...)

Then I get:
ERROR: CGAL error in CGALUtils::applyBinaryOperator difference: CGAL ERROR:
assertion violation! Expr: G.mark(v1,0)==G.mark(v2,0)&&
G.mark(v1,1)==G.mark(v2,1) File:
/mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_S2/SM_overlayer.h
Line: 303

Thoughts?

[code]

/////////////////////////////////////////// MAIN CODE
////////////////////////////////

include <utilities/utils.scad>

module insertHole(depth)  {
  //scale([25.4,25.4,25.4]) {
    /*#10 insert*/ insH=6;insR =3.75;
         coneR1=insR-.5;coneR2=insR+.5;rad=2.25;
    insert(depth,insH,coneR1,coneR2,rad);
  //}
}

//module roundTube(height,radius,wallTh,x,y,z)
//NAME
////////////////////////// DIMENSIONS  //////////////////////////
mm=25.4;
latchW=46;
latchH=20;
latchD=6;
side=5;
w=80;
oW=150;
l=200;
slotW=64;
slotH=8.5;
slotMin=56;
gapY=18; //28 from end of slot
latchZ=28; //to top of slot...
//inset=46;
tabD=11;
rnd=3;
bagR=8;
pomR=25;
rackH=40;
fl=5;
scR=(.294*mm)/2;
sR=.078*mm;
tabW=24;
footR=tabW/2;

rightC=(2.5*mm) -.078;  //screw radius   //w/2-((w-slotW)/4);
leftC=-rightC;

module slot()  {
    translate([0,l/2+bagR+bagR,0])
    rotate([90,0,0])
    linear_extrude(height = l+20, center= true)
   
polygon([[-slotW/2,0],[slotW/2,0],[slotMin/2,slotH],[-slotMin/2,slotH]]);
}

module infill(length)  {
    render()
    rotate([-90,0,0])
    rotate([0,90,0])
    pillarFillet(bagR,length,rnd);
}  

module latchHole() {
    roundVol(-latchW/2,latchW/2,-50,50,slotH,latchZ,rnd);
    roundVol(-latchW/2,latchW/2,-tabD+latchD,10,slotH,50,rnd);
    translate([-latchW/2,-side-side,latchZ+ side])
    rotate([0,90,0]) render()
            pillarFillet(side,latchW,rnd);
}
module arch() {
    translate([w/2-pomR,0,rackH-pomR])
    rotate([90,0,0])
    invQuarterRoundCyl(pomR,tabD+rnd,rnd);
}
module leftarch() {
    mirror([1,0,0]) arch();
}

module pommel()  {
    difference() {
        union() {
            translate([-w/2,bagR,bagR+slotH]) infill(w);
            roundVol(-w/2,w/2,-tabD-rnd,0,-fl-rnd,rackH,rnd);
            volume(-slotW/2,slotW/2,-10,bagR,-10,slotH);  
        }
        volume(-100,100,-100,10,-100,-fl);
        volume(-100,100,-100,-tabD,-100,100);
        latchHole();
        arch();
        leftarch();
        //slot();
    }
}
module plusIns(yVal)  {
    translate([oW/2-footR,yVal,-fl-10+2])
        insertHole(10);
}
module minusIns(yVal)  {
    mirror([1,0,0]) plusIns(yVal);
}
module inserts(yVal) {minusIns(yVal);plusIns(yVal); }
module rack()  { //render()
    //legs
    roundMintVol(-oW/2,oW/2,0,tabW,-fl-rnd,2,footR,rnd);
   
roundMintVol(-oW/2,oW/2,(l/2)-(tabW/2),(l/2)+(tabW/2),-fl-rnd,2,footR,rnd);
    roundMintVol(-oW/2,oW/2,l-tabW,l,-fl-rnd,2,footR,rnd);
    difference()   {        
        union() {
            //main body
            roundMintVol(-w/2,w/2,-20,l,-fl-rnd,8.5,footR,rnd*2);
             
        }  
         
        //volume(-100,100,-10,200,-20,-5);
        volume(-100,100,-25,-latchD,-20,20);
       
       
        //mintVol(-slotMin/2,slotMin/2,tabW,80,-10,10,10);
        volume(-slotMin/2,slotMin/2,0,l,-10,10);
       
       
    }
}

module envelope() {
   
     pommel();
     rack();    
}


module unit()  {
    difference()  {      
        envelope();
        volume(-100,100,-10,250,-100,-fl);
        inserts(footR);inserts(l-footR);inserts(l/2);
        slot();
    }  
}

//scale([25.4,25.4,25.4]) {  //to mm      
    $fn = 64;  //render()
           unit();
           //pommel();
           //plusInsert(0);
           //translate([100,0,-slotH]) rotate([90,0,180])
import("mtx_mount_6.stl");
           //translate([0,.5,.75]) unit();
           //}    
    //$fn = 16; render() unit();
//}

//////////////////////////////////////////UTILITIES.SCAD///////////////////////////////
mm=25.4;
$fn=16;

module mintBox(length,width,height,rad) {
    hull()  {
        translate([rad,rad,0]) cylinder(r=rad,h=height);
        translate([length-rad,rad,0]) cylinder(r=rad,h=height);
        translate([rad,width-rad,0]) cylinder(r=rad,h=height);
        translate([length-rad,width-rad,0]) cylinder(r=rad,h=height);
    }
}
module donut(radius,thickness,x,y,z)  {
    total = thickness+radius; //larger than either!
    translate([x,y,z+thickness/2])
    rotate_extrude()
        intersection()  {
            translate([radius-thickness/2,0,0])
                circle(r = thickness/2);
            translate([0,-total]) square(total*2);
        }
}
module mouth(rad,h) {
    intersection()  {
        donut(rad+h,h*2,0,0,-h);  
        cylinder(h=5,r=rad);  
    }
}
module quartermouth(rad,h)  {
    intersection()  {
        mouth(rad,h);
        volume(0,rad,0,rad,0,h);
    }  
}
module quarterCyl(rad,h) {
    intersection() {
        cylinder(h=h,r=rad);
        volume(0,rad,0,rad,0,l);
    }

}
module fillet(rad,h)  {
    difference() {
        volume(0,rad,0,rad,0,h);
        cylinder(h=h,r=rad);
    }
}
module mintFillet(rad,h,w,d)  {  
    // width and depth are exterior.  Interior is minus height...
    //corners
    translate([w-rad,d-rad,0]) quartermouth(rad,h);
    translate([rad,d-rad,0]) rotate([0,0,90]) quartermouth(rad,h);
    translate([w-rad,rad,0]) rotate([0,0,-90]) quartermouth(rad,h);
    translate([rad,rad,0]) rotate([0,0,180]) quartermouth(rad,h);
    //edges
    translate([0,d-rad,0]) rotate([90,0,0]) quarterCyl(h,d-rad-rad);
    translate([w,d-rad,0]) rotate([90,-90,0]) quarterCyl(h,d-rad-rad);
    translate([rad,0,0]) rotate([90,0,90]) quarterCyl(h,w-rad-rad);
    translate([w-rad,d,0]) rotate([90,0,-90]) quarterCyl(h,w-rad-rad);
}
module roundTube(height,radius,wallTh,x,y,z)  {
    donut(radius,wallTh,x,y,z);
    donut(radius,wallTh,x,y,z+height-wallTh);
    difference()  {
        translate([x,y,wallTh/2+z]) cylinder(r=radius,h=height-wallTh);
        translate([x,y,wallTh/2+z])
cylinder(r=radius-wallTh,h=height-wallTh);
    }
}
module pillar(rad,height,rnd)  {
    difference() {
        cylinder(r=rad+rnd,h=height);
        roundTube(height,rad+rnd+rnd,rnd*2,0,0,0);
    }
}
module quarterPillar(rad,height,rnd)  {
    intersection() {
        volume(0,rad,0,rad,0,height);
        pillar(rad,height,rnd);
    }
}

module pillarFillet(rad,height,rnd) {
    difference() {
        volume(0,rad+rnd,0,rad+rnd,0,height);
        pillar(rad,height,rnd);
    }
}
module roundedCube(x,y,z,rad)  {
     hull()  {
         translate([rad,rad,rad]) sphere(rad);
         translate([x-rad,rad,rad]) sphere(rad);
         translate([x-rad,y-rad,rad]) sphere(rad);
         translate([rad,y-rad,rad]) sphere(rad);
         translate([rad,rad,z-rad]) sphere(rad);
         translate([x-rad,rad,z-rad]) sphere(rad);
         translate([x-rad,y-rad,z-rad]) sphere(rad);
         translate([rad,y-rad,z-rad]) sphere(rad);
     }
}

module pill(radius,thickness,x,y,z)  {
    hull() { donut(radius,thickness,x,y,z); }
}
module quarterPill(radius,thickness)  {
    intersection() {
        vol(0,radius,0,radius,0,thickness);
        pill(radius,thickness,0,0,0);
    }
}
   
module mintVol(xmin,xmax,ymin,ymax,zmin,zmax,rad) {
    hull()  {
        translate([xmin+rad,ymin+rad,zmin]) cylinder(r=rad,h=zmax-zmin);
        translate([xmax-rad,ymax-rad,zmin]) cylinder(r=rad,h=zmax-zmin);
        translate([xmin+rad,ymax-rad,zmin]) cylinder(r=rad,h=zmax-zmin);
        translate([xmax-rad,ymin+rad,zmin]) cylinder(r=rad,h=zmax-zmin);
    }  
   
}
module roundMintVol(xmin,xmax,ymin,ymax,zmin,zmax,rmax,rmin) {
    hull()  {
        donut(rmax,rmin,xmin+rmax,ymin+rmax,zmin);
        donut(rmax,rmin,xmax-rmax,ymax-rmax,zmin);
        donut(rmax,rmin,xmin+rmax,ymax-rmax,zmin);
        donut(rmax,rmin,xmax-rmax,ymin+rmax,zmin);
        donut(rmax,rmin,xmin+rmax,ymin+rmax,zmax-rmin);
        donut(rmax,rmin,xmax-rmax,ymax-rmax,zmax-rmin);
        donut(rmax,rmin,xmin+rmax,ymax-rmax,zmax-rmin);
        donut(rmax,rmin,xmax-rmax,ymin+rmax,zmax-rmin);
    }      
}
module roundVol(xmin,xmax,ymin,ymax,zmin,zmax,rad) {
    hull()  {
        translate([xmin+rad,ymin+rad,zmin+rad]) sphere(r=rad);
        translate([xmax-rad,ymax-rad,zmin+rad]) sphere(r=rad);
        translate([xmin+rad,ymax-rad,zmin+rad]) sphere(r=rad);
        translate([xmax-rad,ymin+rad,zmin+rad]) sphere(r=rad);
        translate([xmin+rad,ymin+rad,zmax-rad]) sphere(r=rad);
        translate([xmax-rad,ymax-rad,zmax-rad]) sphere(r=rad);
        translate([xmin+rad,ymax-rad,zmax-rad]) sphere(r=rad);
        translate([xmax-rad,ymin+rad,zmax-rad]) sphere(r=rad);
    }
}
module volume(x,xTop,y,yTop,z,zTop) {
    box(x,xTop-x,y,yTop-y,z,zTop-z);
}

module box(a,x,b,y,c,z) {
    translate([a,b,c]) cube([x,y,z]);
}

module roundCyl(rad,height,rnd) {
    hull() {
        pill(rad,rnd*2,0,0,0);
        pill(rad,rnd*2,0,0,height-rnd-rnd);
    }  
}
module quarterRoundCyl(rad,height,rnd){
    intersection() {
        volume(0,rad,0,rad,0,height);
        roundCyl(rad,height,rnd);
    }  
}
module invQuarterRoundCyl(rad,height,rnd){
    difference() {
        volume(0,rad,0,rad,0,height);
        roundCyl(rad,height,rnd);
    }  
}

   

module ring(iD,oD,height,rnd)  {
    diam=(oD-iD)/2;
    difference()  {
        translate([0,0,rnd/2]) cylinder(r=oD,h=height);
        translate([0,0,rnd/2]) cylinder(r1=largeR,r2=smallR,h=height);
    }
    donut(diam,rnd,0,0,0);
    donut(diam,rnd,0,0,height);
}

module teensy()  {
    x=35.56;y=17.78;z=1.57;//circuit board
    usbY=8.06;usbI=(y-usbY)/2;//usb jack
    scale([1/mm,1/mm,1/mm]) translate([-x/2,-y/2,-z/2]) color([.3,.5,.3])  {
        cube([x,y,z]);  
        volume(-.06,5,usbI,usbI+usbY,z,z+2.5);
    }
}
module breadboard()  {
    cube([3.22,2.02,.08]);
}

module flatheadHole(length,shaftRad,headRad,headTh,recess) {  
    translate([0,0,-length-.001]) cylinder(r=shaftRad,h=length+.002);
    //for flathead
    translate([0,0,.001-headTh]) cylinder(r1=shaftRad,r2=headRad,h=headTh);
    translate([0,0,0]) cylinder(r=headRad,h=recess);
}
module insert(scrLength,insH,coneR1,coneR2,scr) {
    union() {
        translate([0,0,-.01]) cylinder(r=scr,h=scrLength+.02);
        translate([0,0,scrLength])
           // cylinder($fn=6,r=hexR,h=hexLength);
           cylinder(d1=coneR1,d2=coneR2,h=insH);
    }
}

module insertHole(xpos,ypos,zpos)  {
    top=.25;bottom=.21;height=.312;sR=.084;
    translate([xpos,ypos,zpos-height]) cylinder(d1=bottom,d2=top,h=height);
    translate([xpos,ypos,-1]) cylinder(r=sR,h=zpos+1);
}
module sm58() color([.3,0,.7])  {
    rimD=2.01;  //diameter
    ballD=1.925;
    rimH=.18;
    handleD=1.33;  //diameter
    handleH=.24;
    collarH=.21;
    collarD=1.525;
    rimToTube=1.145;//bottom of tube to center of rim
    intersection()  {
        sphere(d=ballD);
        volume(-2,2,-2,2,-rimToTube,2);
    }
    translate([0,0,-rimH/2]) cylinder(d=rimD,h=rimH);
    translate([0,0,-rimToTube-.75]) cylinder(d=handleD,h=handleH+.75);  
//handle
    translate([0,0,-rimToTube+handleH])
cylinder(d1=handleD,d2=collarD,h=collarH);//collar
    translate([0,0,-rimToTube+handleH+collarH])
cylinder(d=collarD,h=.5);//collar smoother
}

//tests
module mintFilletTest()  {
    x=50;y=18;rad=2;
    mintFillet(rad,1.6,x,y);
    mintVol(0,x,0,y,-3,0,rad);
}
module mouthTest()  {
    quartermouth(4,1);
}
module filletTest(){
    fillet(1,4);
}
module pillarTest() {
    pillarFillet(16,100,3);
}
//render() quarterPillar(5,10,3);
//render() pillarTest();
//filletTest();
//mouthTest();

[/code]



--
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: Strange Error in Render

woodslanding
If it helps, the same main file using this (slightly modified) version of
utlities.scad fails silently without giving any error at all....

utils.scad <http://forum.openscad.org/file/t2632/utils.scad>  



--
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: Strange Error in Render

woodslanding
Did some more sleuthing....

I found it will render module pommel() or module rack(), BUT NOT BOTH!

I tried encosing them in a union, in case that mattered, but it doesn't
help....

I tried moving pommel() inside rack(), but that doesn't help either.

I tried rendering both modules before unioning them, that didn't help.

I should mention I'm using 2019.05 under win10 64.

Frustrating that it doesn't indicate what in my code caused the error.

Here's the latest trace:
Loaded design 'C:/Users/emoon/Documents/Drawings/OPENSCAD/topeakRack.scad'.
Compiling design (CSG Tree generation)...
Compiling design (CSG Products generation)...
ERROR: CGAL error in CGALUtils::applyBinaryOperator union: CGAL ERROR:
assertion violation! Expr: itl != it->second.end() File:
/mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_3/SNC_external_structure.h
Line: 1152
Geometries in cache: 146
Geometry cache size in bytes: 33118200
CGAL Polyhedrons in cache: 8
CGAL cache size in bytes: 85562872
Compiling design (CSG Products normalization)...
Normalized CSG tree has 1 elements
Compile and preview finished.
Total rendering time: 0 hours, 1 minutes, 1 seconds



--
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: Strange Error in Render

acwest
Generally, if something works with one object but not two, one of the objects is probably non-manifold. We only use cgal for the rendering if there is more than one object. You can try rendering each object alone with a simple cube to find which one is failing 

On Tue, 9 Jun 2020, 16:34 woodslanding, <[hidden email]> wrote:
Did some more sleuthing....

I found it will render module pommel() or module rack(), BUT NOT BOTH!

I tried encosing them in a union, in case that mattered, but it doesn't
help....

I tried moving pommel() inside rack(), but that doesn't help either.

I tried rendering both modules before unioning them, that didn't help.

I should mention I'm using 2019.05 under win10 64.

Frustrating that it doesn't indicate what in my code caused the error.

Here's the latest trace:
Loaded design 'C:/Users/emoon/Documents/Drawings/OPENSCAD/topeakRack.scad'.
Compiling design (CSG Tree generation)...
Compiling design (CSG Products generation)...
ERROR: CGAL error in CGALUtils::applyBinaryOperator union: CGAL ERROR:
assertion violation! Expr: itl != it->second.end() File:
/mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_3/SNC_external_structure.h
Line: 1152
Geometries in cache: 146
Geometry cache size in bytes: 33118200
CGAL Polyhedrons in cache: 8
CGAL cache size in bytes: 85562872
Compiling design (CSG Products normalization)...
Normalized CSG tree has 1 elements
Compile and preview finished.
Total rendering time: 0 hours, 1 minutes, 1 seconds



--
Sent from: http://forum.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: Strange Error in Render

woodslanding
Thanks for the tip.  I have tried to track it down from there, and got to
this point:

This works:

            rack();
            //translate([-w/2,bagR,bagR+slotH])
            infill(w);


but this doesn't:

            rack();
            translate([-w/2,bagR,bagR+slotH])  infill(w);

How can just moving one of the (all rendering individually without
complaint) parts create a non-manifold???

infill is fine by itself, it's fine with rack, but if I move it it's not?
What do I do??



--
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: Strange Error in Render

woodslanding


Additionally, both the lines

            rack();

and

            translate([-w/2,bagR,bagR+slotH])  infill(w);

can be unioned with a cube without issue.

Full current code attached.... topeakRack.scad
<http://forum.openscad.org/file/t2632/topeakRack.scad>  
woodslanding wrote

>
> This works:
>
>             rack();
>             //translate([-w/2,bagR,bagR+slotH])
>             infill(w);
>
>
> but this doesn't:
>
>             rack();
>             translate([-w/2,bagR,bagR+slotH])  infill(w);
>
> How can just moving one of the (all rendering individually without
> complaint) parts create a non-manifold???
>
> infill is fine by itself, it's fine with rack, but if I move it it's not?
> What do I do??





--
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: Strange Error in Render

nophead
Are the two objects touching? If they are, then they can union to form a non-manifold. For example two cubes touching on an edge or a corner makes a non-manifold.



On Tue, 9 Jun 2020 at 23:13, woodslanding <[hidden email]> wrote:


Additionally, both the lines

            rack();

and

            translate([-w/2,bagR,bagR+slotH])  infill(w);

can be unioned with a cube without issue.

Full current code attached.... topeakRack.scad
<http://forum.openscad.org/file/t2632/topeakRack.scad
woodslanding wrote
>
> This works:
>
>             rack();
>             //translate([-w/2,bagR,bagR+slotH])
>             infill(w);
>
>
> but this doesn't:
>
>             rack();
>             translate([-w/2,bagR,bagR+slotH])  infill(w);
>
> How can just moving one of the (all rendering individually without
> complaint) parts create a non-manifold???
>
> infill is fine by itself, it's fine with rack, but if I move it it's not?
> What do I do??





--
Sent from: http://forum.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: Strange Error in Render

woodslanding
nophead wrote
> Are the two objects touching? If they are, then they can union to form a
> non-manifold. For example two cubes touching on an edge or a corner makes
> a
> non-manifold.

I read around a bit, and just realized this.  What I can't understand is why
virtually every model I've ever designed hasn't had this problem.

I'm sorry, but from an intuitive standpoint that is utterly insane.  Two 1
unit cubes 1 unit apart is not a valid manifold???

So yeah, I moved the bridge piece .00001mm in some random direction and it
compiles.

I'm sure there's some mathmatical reason why this matters.  There's also got
to be some mathmatical way of dealing with the idea that when two objects
share a face, the face goes away.

Anyway, thanks for the help.  I can't believe I've created hundreds of
models without encountering this before!




--
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: Strange Error in Render

nophead
Two cubes can share a face or a part of a face, or they can overlap. They can't share just and edge of a single vertex as it creates a zero thickness section that isn't physically possible, 

On Tue, 9 Jun 2020 at 23:32, woodslanding <[hidden email]> wrote:
nophead wrote
> Are the two objects touching? If they are, then they can union to form a
> non-manifold. For example two cubes touching on an edge or a corner makes
> a
> non-manifold.

I read around a bit, and just realized this.  What I can't understand is why
virtually every model I've ever designed hasn't had this problem.

I'm sorry, but from an intuitive standpoint that is utterly insane.  Two 1
unit cubes 1 unit apart is not a valid manifold???

So yeah, I moved the bridge piece .00001mm in some random direction and it
compiles.

I'm sure there's some mathmatical reason why this matters.  There's also got
to be some mathmatical way of dealing with the idea that when two objects
share a face, the face goes away.

Anyway, thanks for the help.  I can't believe I've created hundreds of
models without encountering this before!




--
Sent from: http://forum.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: Strange Error in Render

nophead
Sorry I meant: They can't share just an edge or a single vertex as it creates a zero thickness section that isn't physically possible, 


On Tue, 9 Jun 2020 at 23:48, nop head <[hidden email]> wrote:
Two cubes can share a face or a part of a face, or they can overlap. They can't share just and edge of a single vertex as it creates a zero thickness section that isn't physically possible, 

On Tue, 9 Jun 2020 at 23:32, woodslanding <[hidden email]> wrote:
nophead wrote
> Are the two objects touching? If they are, then they can union to form a
> non-manifold. For example two cubes touching on an edge or a corner makes
> a
> non-manifold.

I read around a bit, and just realized this.  What I can't understand is why
virtually every model I've ever designed hasn't had this problem.

I'm sorry, but from an intuitive standpoint that is utterly insane.  Two 1
unit cubes 1 unit apart is not a valid manifold???

So yeah, I moved the bridge piece .00001mm in some random direction and it
compiles.

I'm sure there's some mathmatical reason why this matters.  There's also got
to be some mathmatical way of dealing with the idea that when two objects
share a face, the face goes away.

Anyway, thanks for the help.  I can't believe I've created hundreds of
models without encountering this before!




--
Sent from: http://forum.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: Strange Error in Render

woodslanding
Well, that actually didn't fix it.  I had commented out the render line.
I've tried wiggling its position in all 3 dimensions to no effect.

topeakRack.scad <http://forum.openscad.org/file/t2632/topeakRack.scad>  
utils.scad <http://forum.openscad.org/file/t2632/utils.scad>  

I've always gotten a warning about manifolds before, not an incomprehensible
stack trace....


nophead wrote
> Sorry I meant: They can't share just an edge or a single vertex as it
> creates a zero thickness section that isn't physically possible,
>
>
> On Tue, 9 Jun 2020 at 23:48, nop head &lt;

> nop.head@

> &gt; wrote:
>
>> Two cubes can share a face or a part of a face, or they can overlap. They
>> can't share just and edge of a single vertex as it creates a zero
>> thickness
>> section that isn't physically possible,
>>
>> On Tue, 9 Jun 2020 at 23:32, woodslanding &lt;

> temiqui@

> &gt; wrote:
>>
>>> nophead wrote
>>> > Are the two objects touching? If they are, then they can union to form
>>> a
>>> > non-manifold. For example two cubes touching on an edge or a corner
>>> makes
>>> > a
>>> > non-manifold.
>>>
>>> I read around a bit, and just realized this.  What I can't understand is
>>> why
>>> virtually every model I've ever designed hasn't had this problem.
>>>
>>> I'm sorry, but from an intuitive standpoint that is utterly insane.  Two
>>> 1
>>> unit cubes 1 unit apart is not a valid manifold???
>>>
>>> So yeah, I moved the bridge piece .00001mm in some random direction and
>>> it
>>> compiles.
>>>
>>> I'm sure there's some mathmatical reason why this matters.  There's also
>>> got
>>> to be some mathmatical way of dealing with the idea that when two
>>> objects
>>> share a face, the face goes away.
>>>
>>> Anyway, thanks for the help.  I can't believe I've created hundreds of
>>> models without encountering this before!
>>>
>>>
>>>
>>>
>>> --
>>> Sent from: http://forum.openscad.org/
>>>
>>> _______________________________________________
>>> OpenSCAD mailing list
>>>

> Discuss@.openscad

>>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>>>
>>
>
> _______________________________________________
> OpenSCAD mailing list

> Discuss@.openscad

> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org





--
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: Strange Error in Render

Ronaldo
I've always gotten a warning about manifolds before, not an incomprehensible
stack trace....

The last experimental version of OpenSCAD has implemented lazzy unions, which means that union is taken only if explicitly called. Then,

  cube(1);
  translate([1,1,0]) cube(1);
}

is different from:

union() { 
  cube(1);
  translate([1,1,0]) cube(1);
}

The later is not a manifold and the former are two manifolds that happen to have points in common.


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

Re: Strange Error in Render

MichaelAtOz
Administrator
In reply to this post by woodslanding
woodslanding wrote

> Well, that actually didn't fix it.  I had commented out the render line.
> I've tried wiggling its position in all 3 dimensions to no effect.
>
> topeakRack.scad
> &lt;http://forum.openscad.org/file/t2632/topeakRack.scad&gt; 
> utils.scad &lt;http://forum.openscad.org/file/t2632/utils.scad&gt; 
>
> I've always gotten a warning about manifolds before, not an
> incomprehensible
> stack trace....

Unfortunately with those two files and

translate([0,0,-30]) cube(1);
rack();
translate([-w/2,bagR,bagR+slotH])  infill(w);

I do not get a CGAL error on F6. Tried 2019.05 & a recent development
version.





-----
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.

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

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
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.
Reply | Threaded
Open this post in threaded view
|

Re: Strange Error in Render

MichaelAtOz
Administrator
No error, regardless of Lazy-union on/off.



-----
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.

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

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
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.
Reply | Threaded
Open this post in threaded view
|

Re: Strange Error in Render

woodslanding
Figured it out!

It didn't like the render() in the infill() module.  Took that out and it
rendered fine.



--
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: Strange Error in Render

Tim Hawkins
In reply to this post by woodslanding
Would it be feassble to have an auto-manifold fix mode that inflates all objects by a very very small amount (but greater than tbe rounding) so that the 1unit cube example is fixed. It wont help with with things liked differenced cylinders,  it it may fix many headscratchers. 

Alternativly is it feasible to highlight non-manifold surfaces on the display?

On Wed, Jun 10, 2020, 06:32 woodslanding, <[hidden email]> wrote:
nophead wrote
> Are the two objects touching? If they are, then they can union to form a
> non-manifold. For example two cubes touching on an edge or a corner makes
> a
> non-manifold.

I read around a bit, and just realized this.  What I can't understand is why
virtually every model I've ever designed hasn't had this problem.

I'm sorry, but from an intuitive standpoint that is utterly insane.  Two 1
unit cubes 1 unit apart is not a valid manifold???

So yeah, I moved the bridge piece .00001mm in some random direction and it
compiles.

I'm sure there's some mathmatical reason why this matters.  There's also got
to be some mathmatical way of dealing with the idea that when two objects
share a face, the face goes away.

Anyway, thanks for the help.  I can't believe I've created hundreds of
models without encountering this before!




--
Sent from: http://forum.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: Strange Error in Render

MichaelAtOz
Administrator
Tim Hawkins wrote
> Would it be feassble to have an auto-manifold fix mode that inflates all
> objects by a very very small amount (but greater than tbe rounding) so
> that
> the 1unit cube example is fixed. It wont help with with things liked
> differenced cylinders,  it it may fix many headscratchers.

When you start looking at the details it is difficult. Your very very small
amount may then butt up against another edge or point.


> Alternativly is it feasible to highlight non-manifold surfaces on the
> display?

see thrown-together
https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids#Mis-ordered_faces




-----
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.

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

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
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.