Konubinix' opinionated web of thoughts

Sleeve to Connect Mymuesly Boxes

Fleeting

After pipe sleeve to adapt a pool pump tank

I want a sleeve that connects tube of

outer diameter
92
inner diameter
90

It is a bit harder, because I want a part going inside a tub and a part going outside the other tube. Simply designing cylinders makes support difficult. I need to add a coned pipe to make the transition.

import cadquery as cq
w = cq.Workplane("XY")

def pipe(w, height, inner_diameter, outer_diameter):
    return w.cylinder(height=height, radius=outer_diameter/2, centered=(True, True, False)).cut(w.cylinder(height=height, radius=inner_diameter/2, centered=(True, True, False)))

def cone(w, height, inner_diameter, outer_diameter):
    cone = cq.Solid.makeCone(inner_diameter/2, outer_diameter/2, height)
    return w.eachpoint(lambda loc: cone.moved(loc), combine=False, clean=True)

def conepipe(w, height, inner_diameter1, outer_diameter1, inner_diameter2, outer_diameter2):
    assert(outer_diameter1 > inner_diameter1 and outer_diameter2 > inner_diameter2)
    return cone(w, height, outer_diameter1, outer_diameter2).cut(cone(w, height, inner_diameter1, inner_diameter2))

outer_diameter = 91
inner_diameter = 91
inside_shift = 0
outside_shift = 1
inside_width = 2
outside_width = 2
inside_length = 10
outside_length = 10
middle_length = 3

outside_part = pipe(w,                                       outside_length, outer_diameter + outside_shift,               outer_diameter + outside_shift + outside_width)
middle_part = conepipe(outside_part.faces('+Z').workplane(), middle_length,  outer_diameter + outside_shift,               outer_diameter + outside_shift + outside_width, inner_diameter - inside_shift - inside_width, inner_diameter - inside_shift)
inside_part = pipe(middle_part.faces('+Z').workplane(),      inside_length,  inner_diameter - inside_shift - inside_width, inner_diameter - inside_shift)

result = outside_part.union(middle_part).union(inside_part)
#result = pipe2(10, 20,40,2)

cq.exporters.export(
    result,
    out,
)
return out

()

Works pretty well in 0.8mm, vase mode.

After that, I discovered https://www.iteration3d.fr/en/ that definitely is worth trying.