2.5 KiB
2.5 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
This is a 3D nameplate generator that creates two-layer oval nameplates with engraved text using OpenSCAD. The system batch-processes names from a text file and outputs STL files ready for 3D printing.
Architecture
Pipeline:
- Python script (
generate_nameplates.py) reads names fromnames.txt - For each name, it invokes OpenSCAD CLI with the parametric template
- OpenSCAD renders the 3D model using
nameplate_template.scad - STL files are output to
output_stl/directory
Design Structure:
- Two-layer design: white base (1.5mm) + blue top layer (1mm)
- Text is engraved completely through the blue layer to expose white underneath
- Oval shape created by scaling a cylinder
- All dimensions parametric for easy customization
Key Commands
Generate nameplates:
python generate_nameplates.py
Test single nameplate (manual):
"C:\Program Files\OpenSCAD\openscad.exe" -D "name=\"TestName\"" -o output.stl nameplate_template.scad
Critical Configuration
OpenSCAD Path:
The script uses hardcoded path: C:\Program Files\OpenSCAD\openscad.exe
Update in generate_nameplates.py:36 if OpenSCAD is installed elsewhere.
Font Requirements:
- Uses Fordscript font (Fordscript.ttf in project root)
- Font MUST be installed in Windows (right-click → Install) for OpenSCAD to access it
- OpenSCAD references fonts by name, not file path
- Referenced in template as
font="Fordscript"(line 44)
Dimensions:
Default nameplate size: 3" tall × 8" wide (76mm × 200mm)
All dimensions in nameplate_template.scad:6-12
File Purposes
nameplate_template.scad- OpenSCAD parametric template defining the 3D geometrygenerate_nameplates.py- Batch processor that calls OpenSCAD for each namenames.txt- Input file with one name per lineFordscript.ttf- Custom cursive font (must be installed in Windows)output_stl/- Generated STL files (one per name)
Modifying Dimensions
Key parameters in nameplate_template.scad:
oval_height- Overall height (currently 76mm = 3 inches)oval_width- Overall width (currently 200mm ≈ 8 inches)base_thickness- White layer thickness (1.5mm)top_thickness- Blue layer thickness (1mm)text_depth- Engraving depth (1mm - cuts through entire blue layer)text_size- Font size (30mm)base_offset- How much white extends beyond blue (2mm)