def get_inner_volume(wp): return\ wp\ .rect(50,50)\ .extrude(50)\ .edges()\ .fillet(10) def split_bottom( wp, cut_zoffset): return\ wp\ .workplane(cut_zoffset)\ .split(keepBottom=True) def get_case_bottom(wp): return\ split_bottom( get_inner_volume(wp) .union(get_inner_volume(wp.move(25,25)))\ .shell(2), 0) def add_inner_lip(wp, width): return\ wp\ .faces(">Z")\ .wires()\ .item(0)\ .toPending()\ .workplane()\ .offset2D(-width)\ .extrude(1)\ .faces(">Z[-2]")\ .wires()\ .item(2)\ .toPending()\ .workplane()\ .cutBlind(1) result = \ add_inner_lip( get_case_bottom( cq.Workplane("XY")), 0.9)