Business Card and Sticky Note Holder
A desk block with two slots leaning back 15 degrees: a wide one for a stack of business cards and a deeper one behind it for a pad of sticky notes, so both fan toward you. The whole part is one side profile extruded to the width, so every dimension lives in the sketch. The default measures 95 x 54 x 30 mm and prints flat on its base with no supports. Adjustable parameters: width, height, card slot width and depth, note slot width and depth, and the lean angle.
# Business Card and Sticky Note Holder - one sketch, one extrude, two angled slots
#
# A desk block with a wide slot leaning back 15 deg for a stack of business cards and a
# second, deeper slot for a pad of sticky notes. The whole part is one 2D side profile
# extruded to the width, so every dimension is in the sketch. The slots lean so the
# stacks fan toward you. Prints flat on its base with no supports.
@param 80..110 step:1 group:"Size" desc:"Width across the slots (mm)"
$width = 95
@param 20..40 step:1 group:"Size" desc:"Block height (mm)"
$height = 30
@param 6..14 step:0.5 group:"Cards" desc:"Card slot width, for the stack (mm)"
$card_w = 10
@param 10..24 step:1 group:"Cards" desc:"Card slot depth (mm)"
$card_d = 18
@param 10..22 step:0.5 group:"Notes" desc:"Sticky note slot width, for the pad (mm)"
$note_w = 14
@param 10..26 step:1 group:"Notes" desc:"Note slot depth (mm)"
$note_d = 22
@param 5..25 step:1 group:"Angle" desc:"Lean of both slots (deg)"
$lean = 15
$base_t = 6
$front = 8 # wall in front of the card slot
$gap = 8 # wall between the slots
$back = 8
$depth = $front + $card_w + $gap + $note_w + $back + ($height - $base_t) * tan($lean)
assert $card_d < $height - $base_t + 1
assert $note_d < $height - 3
# side profile in (y, z): block minus two parallelograms leaning by `lean`
$s = tan($lean)
$y1 = $front
$y2 = $y1 + $card_w + $gap
$block = polyline [(0, 0), ($depth, 0), ($depth, $height), (0, $height)]
$card_slot = polyline [($y1, $height - $card_d), ($y1 + $card_w, $height - $card_d), ($y1 + $card_w + $s * ($card_d + 1), $height + 1), ($y1 + $s * ($card_d + 1), $height + 1)]
$note_slot = polyline [($y2, $height - $note_d), ($y2 + $note_w, $height - $note_d), ($y2 + $note_w + $s * ($note_d + 1), $height + 1), ($y2 + $s * ($note_d + 1), $height + 1)]
$profile = ($block - $card_slot) - $note_slot
$holder = $profile | extrude $width | rotate 90 0 90 | translate (-$width / 2) 0 0 | edges =X | fillet 2
assert $holder.solids == 1
assert $holder.bbox.x ~ $width
assert $holder.bbox.y ~ $depth
assert $holder.bbox.z ~ $height
assert $holder.volume < $depth * $height * $width - ($card_w * $card_d + $note_w * $note_d) * $width * 0.95
print "holder" $holder.bbox
$holder