Problem (three smaller gaps, one issue)
1. Involute gear primitive. All rana gears are box-approximated teeth (tangential cubes on the root circle) transcribed from a recipe that happens to print and mesh. It works at m0.5 but is a transcription hazard: one variant shipped with blank gears (pitch cylinders, no teeth) and another brief specified ring teeth tangent to the planet root circle (0.0 clearance). gear(module, teeth, face, backlash, internal=bool) with correct involute (or documented box-approx) geometry, usable in subtraction for internal rings, would end the recipe-copying.
2. 3MF plate/kit export. The rana kits (rana-60c-kit-v6.3mf etc.) are hand-written zip archives — object XML, per-plate model_settings.config, collision-checked layout done by a project script. A vcad kit exporter: parts + plate assignments + XY placements → Bambu/Prusa-compatible 3MF, with radius-based collision/bed-bounds checking. (Field note: Bambu resaves restructure the file, so deterministic output + a "this is ours" marker helps debugging; versioned filenames saved this project twice.)
3. Section & exploded renders in vcad-render. vcad-render does isometric/orthographic line art but no cross-sections and no assemblies, so the project built a python STL rasterizer for cutaways and packs WebGL viewers by hand for exploded views. Asks: --section z=<mm>|plane=... with hatching, --assembly file.loon --explode 0.6 consuming the assembly model (see #844), and a paper/dark palette toggle. The rana build sheets and workshop site all render from shipped STLs — the renderer should be able to do this natively.
Receipts: rana 60c findings row 2 (blank gears shipped), tools/make-kit-60c.py (hand-rolled 3MF), scratch rasterizer + tools/make-buildsheet-60c.py (hand-packed WebGL), docs/rana-100c-section.svg (sections wanted badly enough to build a generator for one file).
Problem (three smaller gaps, one issue)
1. Involute gear primitive. All rana gears are box-approximated teeth (tangential cubes on the root circle) transcribed from a recipe that happens to print and mesh. It works at m0.5 but is a transcription hazard: one variant shipped with blank gears (pitch cylinders, no teeth) and another brief specified ring teeth tangent to the planet root circle (0.0 clearance).
gear(module, teeth, face, backlash, internal=bool)with correct involute (or documented box-approx) geometry, usable in subtraction for internal rings, would end the recipe-copying.2. 3MF plate/kit export. The rana kits (
rana-60c-kit-v6.3mfetc.) are hand-written zip archives — object XML, per-platemodel_settings.config, collision-checked layout done by a project script. Avcad kitexporter: parts + plate assignments + XY placements → Bambu/Prusa-compatible 3MF, with radius-based collision/bed-bounds checking. (Field note: Bambu resaves restructure the file, so deterministic output + a "this is ours" marker helps debugging; versioned filenames saved this project twice.)3. Section & exploded renders in vcad-render. vcad-render does isometric/orthographic line art but no cross-sections and no assemblies, so the project built a python STL rasterizer for cutaways and packs WebGL viewers by hand for exploded views. Asks:
--section z=<mm>|plane=...with hatching,--assembly file.loon --explode 0.6consuming the assembly model (see #844), and a paper/dark palette toggle. The rana build sheets and workshop site all render from shipped STLs — the renderer should be able to do this natively.Receipts: rana
60cfindings row 2 (blank gears shipped),tools/make-kit-60c.py(hand-rolled 3MF), scratch rasterizer +tools/make-buildsheet-60c.py(hand-packed WebGL),docs/rana-100c-section.svg(sections wanted badly enough to build a generator for one file).