discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Tangential join/infill two parallel vertical cylindrical tubes.

CJ
Chris Johnson
Mon, Apr 19, 2021 10:49 PM

I have 2 parallel vertical cylinders with different diameters that are
adjacent and touching.  I want to fill the space 'between' the cylinders to
join them securely.  I did think about creating a polygon block that I join
with the two cylinders before taking the inner cylinders away to make a
straight edge join but I thought this is a simple enough model to learn how
to use the roundanything library  to create a fill with a radius of my
choosing.  However , being a noob, Not sure where to start.

back story: The larger cylinder fits over my monitor stand.  The smaller
Cylinder is for an anglepoise arm for a webcam/ video light.  I just need
to be able to join them nicely so that they don't break apart.
Here's what I've got so far.:

include <Round-Anything/MinkowskiRound.scad>;
$fn=10;
br=32;
sr=12.3;
bw=5;
sw=4;
height=12;
boundingEnvelope=[50,50,50];
OR=0.7;
IR=1;
enable=1;

minkowskiRound(OR, IR, enable, boundingEnvelope) {
union(){
translate([0,0,-10]){
difference(){
cylinder (height,br+bw,br+bw,center=true);
cylinder (height+2,br,br,center=true);
}
translate([br+sr+sw+bw,0,0]){
difference(){
cylinder (height,sr+sw,sr+sw,center=true);
cylinder (height+2,sr,sr,center=true);
}
}
}
}
}

But I just get a spinning circle on my Mac.
not sure how the bounding envelope works or how long I should expect to
wait for a result.

Any help appreciated:

Chris Johnson

I have 2 parallel vertical cylinders with different diameters that are adjacent and touching. I want to fill the space 'between' the cylinders to join them securely. I did think about creating a polygon block that I join with the two cylinders before taking the inner cylinders away to make a straight edge join but I thought this is a simple enough model to learn how to use the roundanything library to create a fill with a radius of my choosing. However , being a noob, Not sure where to start. back story: The larger cylinder fits over my monitor stand. The smaller Cylinder is for an anglepoise arm for a webcam/ video light. I just need to be able to join them nicely so that they don't break apart. Here's what I've got so far.: include <Round-Anything/MinkowskiRound.scad>; $fn=10; br=32; sr=12.3; bw=5; sw=4; height=12; boundingEnvelope=[50,50,50]; OR=0.7; IR=1; enable=1; minkowskiRound(OR, IR, enable, boundingEnvelope) { union(){ translate([0,0,-10]){ difference(){ cylinder (height,br+bw,br+bw,center=true); cylinder (height+2,br,br,center=true); } translate([br+sr+sw+bw,0,0]){ difference(){ cylinder (height,sr+sw,sr+sw,center=true); cylinder (height+2,sr,sr,center=true); } } } } } But I just get a spinning circle on my Mac. not sure how the bounding envelope works or how long I should expect to wait for a result. Any help appreciated: Chris Johnson
D
doug@milmac.com
Tue, Apr 20, 2021 12:26 PM

I’ve learned that it’s much faster to make a cylinder by using linear_extrude() circle() than by using cylinder() — and it’s very very much faster to make a hollow cylinder by using linear_extrude() difference() { circle(); circle();} than by using difference() { cylinder(); cylinder();}.

I’ve also discovered that hull() and offset() are much faster than minkowski().

So try this (which, on my machine, renders in less than one second):

$fn=150;
br=32;
sr=12.3;
bw=5;
sw=4;
height=12;

linear_extrude(height=height)
	difference() {
		hull() {
			circle(r=br+bw);
			translate([br+sr+sw+bw,0,0]) circle(r=sr+sw);
		}
		circle(r=br);
		translate([br+sr+sw+bw,0,0]) circle(r=sr);
	}
I’ve learned that it’s much faster to make a cylinder by using linear_extrude() circle() than by using cylinder() — and it’s very very much faster to make a hollow cylinder by using linear_extrude() difference() { circle(); circle();} than by using difference() { cylinder(); cylinder();}. I’ve also discovered that hull() and offset() are much faster than minkowski(). So try this (which, on my machine, renders in less than one second): ``` $fn=150; br=32; sr=12.3; bw=5; sw=4; height=12; linear_extrude(height=height) difference() { hull() { circle(r=br+bw); translate([br+sr+sw+bw,0,0]) circle(r=sr+sw); } circle(r=br); translate([br+sr+sw+bw,0,0]) circle(r=sr); } ```