feat: nix dev shell with Android SDK 34, JDK 17, gradle

This commit is contained in:
Arnie via Claude
2026-06-12 00:28:27 +02:00
parent 0e43f970a6
commit fd877411ef
17 changed files with 1651 additions and 0 deletions
@@ -0,0 +1,81 @@
# Corner Decoration — Design Spec
**Date:** 2026-06-11
## Overview
A 1-meter-tall decorative piece for a 90° wall corner. Twisted flat ribbon blade emerging from a hollow triangular spine. Split into 4 × 25cm 3D-printed pieces. Cable routing channel through the spine.
## Geometry
### Overall
- Total height: 1000mm (4 × 250mm pieces)
- Corner angle: 90°
- Ribbon protrusion: 80mm from corner to ribbon centre axis (along 45° diagonal); ribbon extends 50mm either side → near edge at 30mm, far edge at 130mm from corner
- Twist rate: 360° per 250mm piece (ribbon returns to same orientation at each joint)
### Ribbon Blade
- Width: 100mm
- Thickness: 4mm
- Cross-section: flat rectangle (blade / ribbon profile)
- Path: helical, centered on the 45° diagonal axis of the corner
- One full twist (360°) per piece — top and bottom faces of each piece are geometrically identical
### Triangular Spine
- Profile: right isosceles triangle, legs ~20mm × 20mm
- Sits flush in the 90° corner; hypotenuse face at 45° to both walls
- Two flanges (~5mm thick, 20mm wide) extend along each wall surface for gluing
- Cable channel: 12mm diameter circular hole through the centroid of the triangle, running full height
- Ribbon attaches at the midpoint of the hypotenuse face
### Piece Joinery
- Alignment peg: 4mm square peg on top face, matching socket on bottom face
- Cable hole aligns automatically via peg
- Pieces glued wall-to-wall and to each other with construction adhesive
## Print Settings
| Parameter | Value |
|-----------|-------|
| Orientation | Vertical (upright) |
| Supports | Required (ribbon overhangs during twist) |
| Layer height | 0.15mm |
| Infill | 15% gyroid |
| Material | PLA |
| Pieces | 4 identical pieces |
Fallback if supports leave bad finish: split each piece into spine + ribbon, print separately, glue.
## Generation
Python script using **cadquery**. All dimensions as named constants at top of file. Outputs one STL per piece (all 4 identical).
### Key construction steps
1. Build spine: extrude right-isosceles triangle profile × 250mm, subtract 12mm cylinder for cable hole, add flanges on two legs
2. Build ribbon: sweep a 100mm × 4mm rectangle along a 250mm helix path (pitch = 250mm for 360°/piece), centered on the 45° diagonal axis
3. Boolean union spine + ribbon
4. Add alignment peg (top face) and socket (bottom face)
5. Export STL
### Parameters (all tunable)
```python
PIECE_HEIGHT = 250 # mm
NUM_PIECES = 4
RIBBON_WIDTH = 100 # mm
RIBBON_THICKNESS = 4 # mm
PROTRUSION = 80 # mm — corner to ribbon centre axis along 45° diagonal
TWIST_DEG = 360 # degrees per piece
SPINE_LEG = 20 # mm — triangle leg length
FLANGE_WIDTH = 20 # mm
FLANGE_THICKNESS = 5 # mm
CABLE_HOLE_DIA = 12 # mm
PEG_SIZE = 4 # mm square
PEG_HEIGHT = 5 # mm
```
## Mounting
- Glue flanges to both walls with construction adhesive (e.g. Liquid Nails)
- Stack pieces bottom-up, aligning pegs
- Thread cable through spine channel before gluing upper pieces
- No visible hardware