Round-Anything icon indicating copy to clipboard operation
Round-Anything copied to clipboard

extrudeWithRadius rounds top and bottom differently

Open varalgit opened this issue 1 year ago • 3 comments

If you specify the same radius for top and bottom, the rendered shape is different for the top and the bottom. The top and bottom layers seem to be shifted by 1 layer. Example (see picture):

extrudeWithRadius(5,r1=2,r2=2,fn=10)
  offset(r = 5) 
    offset(delta = -5)  
      polygon([[0,0],[20,0],[20,20]]);


module extrudeWithRadius(length,r1=0,r2=0,fn=30){
  n1=sign(r1);n2=sign(r2);
  r1=abs(r1);r2=abs(r2);
 # translate([0,0,r1]){
    linear_extrude(length-r1-r2){
      children();
    }
  }
  for(i=[0:fn-1]){
    translate([0,0,i/fn*r1]){
      linear_extrude(r1/fn+0.01){
        offset(n1*sqrt(sq(r1)-sq(r1-i/fn*r1))-n1*r1){
          children();
        }
      }
    }
    translate([0,0,length-r2+i/fn*r2]){
      linear_extrude(r2/fn+0.01){
        offset(n2*sqrt(sq(r2)-sq(i/fn*r2))-n2*r2){
          children();
        }
      }
    }
  }

}

function sq(x)=x*x;

extrudeWithRadius-rounds-top-and-bottom-differently

varalgit avatar Jan 05 '23 02:01 varalgit