Modifiers
The reason we're using rotate
here is because we want to re-orientate our pin2
to be inside to form a hole, tricky part is that it can be hard to visualise parts that are going to be subtracted from another shape so we're going to use a modifying character %
for our hingeBodyHalf
module pin2() { translate([0,pivotRadius,hingeHalfExtrudeLength]){ rotate([0,175,0]){ cylinder(h=hingeLength/2+clearance/2, r1=pinRadius, r2=pinRadius+pinTaper); } }}%hingeBodyHalf();pin2();
The %
character before hingeBodyHalf()
makes it transparent so that we can see pin2
within it, and one thing that becomes obvious with this view is that a rotate
of 175
is no right, it needs to be 180
! The %
character is a "debugging" step, which means it's not going to end up in our final code, it's just helpful in the mean time. There are other characters that can be useful, the full list is
* disable! show only# highlight / debug% transparent / background
To actually make the hole we'll use a difference
operation like so:
module pin2() { translate([0,pivotRadius,hingeHalfExtrudeLength]){ rotate([0,180,0]){ cylinder(h=hingeLength/2+clearance/2, r1=pinRadius, r2=pinRadius+pinTaper); } }}
difference() { hingeBodyHalf(); pin2();}
There we, go a hole! The way to conceptualise how difference
works is to think of it as subtracting the second child from the first. "child" simply means nested within difference
so in the above example pin2
is the second child that we are subtracting from hingeBodyHalf
.
There is one minor annoyance is that the end of the hole looks like it's glitching a little, this can happen in openscad when two surfaces line up.
In this case the end of the hingeBodyHalf
and the start of pin2
, it only effects the preview and not the 3d STL export, but to make the preview a little nicer in this situations I'll define a variable with a very small value tiny=0.005;
and add it strategically to resolve this issue, this part is optional but here's where I added it for pin2:
module pin2() { translate([0,pivotRadius,hingeHalfExtrudeLength+tiny]){//
Fixed!