Avisos
Vaciar todo

Unwanted Bridge and Infill.  

  RSS
eishboet
(@eishboet)
New Member
Unwanted Bridge and Infill.

Hi All

I've create a custom PSU cover (based on the look of the Prusa cover) using Openscad and sliced it using PrusaSlicer 2.3.0.

 

The openscad model is empty in the center, but PrusaSlicer adds a bridge and infill from layer 45.80 - 48.00. My slicer settings are default (0.2mm quality).

 

Do any of you know whether this is a PrusaSlicer setting adding the bridge and infill or could this be a bug?

This is the Openscad code for the PSU case:

 

 

 

$fn = 100;

psu_x = 114.8;
psu_y = 50.3;
psu_z = 80;

module psu() {
    union() {
        difference() {
            translate([0, -psu_y - 30, 0]) {
                cube([psu_x + (4 * 2), psu_y + (2.6 * 2), psu_z]);
            }
        
            translate([4, -psu_y - 30 + 2.6, -1]) {
                cube([psu_x, psu_y, psu_z + 2]);
            }
            
            translate([psu_x - 1.99 , -(psu_y / 2) - 30 + 2.6, 6.5]) {
                rotate([0, 90, 0]) {
                    countersunkScrew(10, 1.7, 6, 3);
                }
            }
            
            translate([9.99, -(psu_y / 2) - 30 + 2.6, 6.5]) {
                rotate([0, 270, 0]) {
                    countersunkScrew(10, 1.7, 6, 3);
                }
            }
            
            translate([(psu_x / 2) + 2, -30 - 4 - 0.79, 6.5]) {
                rotate([90, 0, 180]) {
                    countersunkScrew(10, 1.7, 6, 3);
                }
            }
            
            translate([(psu_x / 2) + 2, -(psu_y / 2) - 60 + 2.6 + 12.249, 6.5]) {
                rotate([90, 0, 0]) {
                    countersunkScrew(10, 1.7, 6, 3);
                }
            }
            
            switchAndPlugCutOut(15, -83, 6);
    
            trimCorners(psu_y + 10, 5, 5, -1, -51, -1, 45, 0, 90);
            trimCorners(psu_y + 10, 5, 5, psu_x + (4 * 2) + 1, -51, -1, 45, 0, -90);
            trimCorners(psu_y + 10, 5, 5, -1, -51, psu_z + 1, 45, 0, 90);
            trimCorners(psu_y + 10, 5, 5, psu_x + (4 * 2) + 1 , -51, psu_z + 1, 45, 0, -90);
            trimCorners(psu_x + 10, 5, 12, (psu_x / 2) + 4, -30 + 4 + 2, psu_z + 1.20, 45, 0, 0);
            trimCorners(psu_x + 10, 5, 5, (psu_x / 2) + 4, -81.1, psu_z + 1.20, 45, 0, 0);
    
            psuMountingHoles(0, -30 + 2.6 - (50.3 / 2), 40 + 31, 0, 0, 90);
            psuMountingHoles(psu_x + 4, -30 + 2.6 - (50.3 / 2), 40 + 31, 0, 0, 90);
            
            cableCutOut(30, -30 + 4, 0, 0, 0, 0);
        }
            
        difference() {
            translate([psu_x + (4 * 2) - (35 + 10), -30 + (2.6 * 2), 0]) {
                cube([35, 20, 2]);
            }

            translate([psu_x + (4 * 2) - (35 + 10) + 10, - 30 + (2.6 * 2) + 10, 0]) {
                rotate([0, 0, 0]) {
                    cylinder(r = 2, h = 6, center = true);
                }
            }
        
            translate([psu_x + (4 * 2) - (35 + 10) + 25, - 30 + (2.6 * 2) + 10, 0]) {
                rotate([0, 0, 0]) {
                    cylinder(r = 2, h = 6, center = true);
                }
            }

            trimCorners(psu_y + 10, 5, 5, psu_x + (4 * 2) - (35 + 10), -30 + (2.6 * 2) + 20, 0, 0, 90, 45);
            trimCorners(psu_y + 10, 5, 5, psu_x + (4 * 2) - 10, -30 + (2.6 * 2) + 20, 0, 0, 90, 45);
        }
    
        difference() {
            translate([4, -30 + 2.2 + 3, 0]) {
                rotate([0, 0, 0]) {
                    cube([13.6, 3, psu_z]);
                }
            }
            
            trimCorners(psu_x + 10, 5, 12, (psu_x / 2) + 4, -30 + 4 + 2, psu_z + 1.20, 45, 0, 0);
        }
        
        difference() {
            translate([psu_x - 4 - 4, -30 + 2.2 + 3, 0]) {
                rotate([0, 0, 0]) {
                    cube([13.6, 3, psu_z]);
                }
            }
            
            trimCorners(psu_x + 10, 5, 12, (psu_x / 2) + 4, -30 + 4 + 2, psu_z + 1.20, 45, 0, 0);
        }
        
        psuRest(psu_y + 2.7, 4, -30 + 3, 40, 90, 0, 0);
        psuRest(psu_y + 2.6, psu_x + 4 , -psu_y - 2.5 - 26, 40, 270, 180, 0);
        psuRest(psu_x, psu_x + 4, -30 + 3, 40, 90, 0, 270);
    }
}

module psuBottomCover() {
    union() {
        difference() {
            translate([1.5, 0, 0]) {
                cube([psu_x + (4 * 2) - 3, psu_y + (2.6 * 2), 2]);
            }
        
            //trimCorners(psu_y + 10, 5, 5, 0, (psu_y + 10) / 2 - 1, -1, 45, 0, 90);
            //trimCorners(psu_y + 10, 5, 5, psu_x + (4 * 2) + 1, ((psu_y + 10) / 2) -1, 0, 45, 0, -90);
        }
    
        difference() {
            translate([psu_x + (4 * 2) - (35 + 10), psu_y + (2.6 * 2) , 0]) {
                cube([35, 20, 2]);
            }
        
            translate([psu_x + (4 * 2) - (35 + 10) + 10, psu_y + (2.6 * 2) + 10, 0]) {
                rotate([0, 0, 0]) {
                    cylinder(r = 2, h = 6, center = true);
                }
            }
        
            translate([psu_x + (4 * 2) - (35 + 10) + 25, psu_y + (2.6 * 2) + 10, 0]) {
                rotate([0, 0, 0]) {
                    cylinder(r = 2, h = 6, center = true);
                }
            }
    
            trimCorners(psu_y + 10, 5, 5, psu_x + (4 * 2) - (35 + 10), psu_y + (2.6 * 2) + 20, 0, 0, 90, 45);
            trimCorners(psu_y + 10, 5, 5, psu_x + (4 * 2) - 10, psu_y + (2.6 * 2) + 20, 0, 0, 90, 45);
        }
    
        translate([psu_x - 4 - 4, psu_y + (2.6 * 2) , 0]) {
            rotate([0, 0, 0]) {
                cube([13.6, 3, 2]);
            }
        }
    
        translate([4, psu_y + (2.6 * 2) , 0]) {
            rotate([0, 0, 0]) {
                cube([13.6, 3, 2]);
            }
        }
    
        longCaptiveNuts(4, (psu_y / 2) + 2.6, 6.5, 0, 0, 0);
        longCaptiveNuts(psu_x + 4 , (psu_y / 2) + 2.6, 6.5, 0, 0, 180);
        shortCaptiveNuts((psu_x / 2) + 2, 1.5 + 4, 6.5, 0, 0, 90);
        shortCaptiveNuts((psu_x / 2) + 2, 3.5 + psu_y - 4, 6.5, 0, 0, 270);
    }
}

module longCaptiveNuts(x, y, z, xa, ya, za) {
    translate([x, y, z]){
         difference(){
            rotate([xa, ya, za]) {
                union() {
                    cube([3, psu_y - 10, 9], center = true);
                
                    translate([3.5, 0, 0]) {
                        cube([4, 10, 9], center = true);
                    }
                }
            }
            
            translate([0, 0, 0]) {
                rotate([0, 90, 0]) {
                    cylinder(r = 2, h = 15, center = true);
                }
            }
        }
    }
}

module shortCaptiveNuts(x, y, z, xa, ya, za) {
    translate([x, y, z]) {
        difference() {
            rotate([xa, ya, za]) {
                union() {
                    cube([3, 15, 9], center = true);
                
                    translate([3.5, 0, 0]) {
                        cube([4, 10, 9], center = true);
                    }
                }
            }
            
            translate([0, 0, 0]) {
                rotate([90, 0, 0]) {
                    cylinder(r = 2, h = 15, center = true);
                }
            }
        }
    }
}


module psuRest(length, x, y, z, xa, ya, za) {
    translate([x, y, z]) {
        rotate([xa, ya, za]) {
            linear_extrude(height = length, convexity = 1) {
                polygon(points = [[0, 0], [0, 8], [3, 8], [3, 5], [0, 0]], paths=[[0,1,2,3,4]], convexity = 2);
            }
        }
    }
}

module switchAndPlugCutOut(x, y, z) {
    translate([x, y, z]) {
        translate([0, 0, 0]) {
            rotate([0, 0, 0]) {
                cube([20.7, 6, 25]);
            }
        }
    
        translate([60, 0, 3]) {
            rotate([0, 0, 0]) {
                cube([27.5, 6, 20]);
            }
        }
        
        translate([53.75, 6, 13]) {
            rotate([90, 0, 0]) {
                cylinder(r = 1.5, h = 6);
            }
        }
        
        translate([93.75, 6, 13]) {
            rotate([90, 0, 0]) {
                cylinder(r = 1.5, h = 6);
            }
        }
    }
}

module psuMountingHoles(x, y, z, xa, ya, za) {
    translate([x, y, z]) {
        rotate([xa, ya, za]) {
            translate([-12.61, 1, 0]) {
                rotate([90, 0, 0]) {
                    cylinder(r = 2, h = 6);
                }
            }
            translate([12.61, 1, 0]) {
                rotate([90, 0, 0]) {
                    cylinder(r = 2, h = 6);
                }
            }
        }
    }
}
//31 

module trimCorners(length, width, height, x, y, z, xa, ya, za) {
    translate([x, y, z]) {
        rotate([xa, ya, za]) {
            //translate([0, -2.5, -2.5]) {
                cube([length, width, height], center = true);
            //}
        }
    }
}

module cableCutOut(x, y, z, xa, ya, za) {
    translate([x, y, z]) {
        rotate([xa, ya, za]) {
            union() {
                translate([-5.5, 5, 3.25]) {
                    rotate([90, 0, 0]) {
                        cylinder(r = 3.25, h = 10);
                    }
                }
    
                translate([0, 0, 3.25]) {
                    rotate([0, 0, 0]) {
                        cube([11, 10, 6.5], center = true);
                    }
                }
    
                translate([5.5, 5, 3.25]) {
                    rotate([90, 0, 0]) {
                        cylinder(r = 3.25, h = 10);
                    }
                }
            }
        }
    }
}

module countersunkScrew(length, headLength, headDiameter, shaftDiameter) {
    union(){
        translate([0, 0, length - 1.7]) {
            translate([0, 0, 1.7 / 2]) {
                rotate([0, 0, 0]) {
                    cylinder(d1 = shaftDiameter, d2 = headDiameter, h = headLength, center = true);
                }
            }
   
            translate([0, 0, -(length - headLength) / 2 + 1]) {
                rotate([0, 0, 0]) {
                    cylinder(d = shaftDiameter, h = (length - headLength) + 1, center = true);
                }
            }
        }
    }
}

psu();

 

Respondido : 14/02/2021 7:06 pm
Neophyl
(@neophyl)
Illustrious Member
RE: Unwanted Bridge and Infill.

Unless you generate an openscad model perfectly they are the most common type that cause PS issues.  They often have manifold errors or others that cause problems.  Every single one that someone has posted due to it not slicing correctly their generated stl when examined has issues.

If you save and post here either your 3mf project from PS or your stl file (both have to be zipped into an archive for the forum to accept them) then we can take a look.  I can almost guarantee though that the file is wrong though.  Just because it looks ok when imported does not mean the file is actually good.

Respondido : 14/02/2021 7:17 pm
FoxRun3D
(@foxrun3d)
Famed Member
RE: Unwanted Bridge and Infill.

As usual, @neophyl is right. I have found OpenSCAD to produce lots of artifacts, which unfortunately are not always detected by PrusaSlicer. I rendered your script, and it loads fine in PrusaSlicer, without an error message, but you end up with the bridge you described. So I manually loaded the STL into Netfabb, and sure enough there were like 30 degenerate faces on one of the long sides around one of the screw holes. Here's the fixed file which seems to slice correctly now:

 

 
Attachment removed

Formerly known on this forum as @fuchsr -- until all hell broke loose with the forum software...

Respondido : 14/02/2021 7:49 pm
FoxRun3D
(@foxrun3d)
Famed Member
RE: Unwanted Bridge and Infill.

I just wish there was a way in this forum to encourage folks with slicing problems to run their models through a tool like Netfabb first. Prusaslicer "bugs" almost always turn out to be errors in the model. But I do wish PS were better at catching some of these errors in the first place.

 

Formerly known on this forum as @fuchsr -- until all hell broke loose with the forum software...

Respondido : 14/02/2021 7:52 pm
Compartir: