// SISTEMAS / luthier
← volver a sistemas
Luthier
calculadora de trastes · plano 1:1 para imprimir
CÁLCULO EXACTO
TRASTE 12 · OCTAVA
–
mm
= tiro / 2 · punto de octava exacto
TIRO TOTAL
–
TRASTES
–
PLANO DEL DIAPASÓN
Posición de trastes
Traste
Marcador
Octava · 12
DETALLE TÉCNICO
Stack y arquitectura
Lo que hay detrás: cálculo de precisión, generación de SVG, exportación PDF a escala real y un pipeline stateless que resuelve todo en un único request.
POST
Form
tiro + trastes + unidad
py
calculo.py
tabla de distancias
svg
diagrama.py
SVG vectorial
pdf
pdf.py
3 tipos de PDF
HTTP
Response
todo en un request
BACKEND
Django 4.2 — sin base de datos
Arquitectura stateless pura: cada POST recalcula todo desde cero. Tres capas de servicios desacopladas, cada una con responsabilidad única.
services/calculo.py
Algoritmo iterativo con la constante ¹²√2 (17,817). Produce la tabla de distancias traste a traste.
services/diagrama.py
Convierte la tabla en coordenadas SVG normalizadas. Maneja cuerdas, marcadores y escala proporcional.
services/pdf.py
Tres modos: tabla A4, plano 1:1 en hoja ISO automática (A4→A0) y plano 1:1 multi-hoja A4 con marcas de ensamblado.
GENERACIÓN DE PDF
ReportLab 4 — escala 1:1
Los planos se calculan en milímetros reales y se convierten a puntos tipográficos (1 mm = 72/25,4 pt). El tamaño de hoja se selecciona automáticamente (A4→A0) según el tiro.
PLANO MULTI-HOJA
- Se divide el tiro en segmentos que entran en A4
- Cada hoja incluye zona de superposición para pegar
- Marcas CORTAR y PEGAR en cada junta
- Regla de 100 mm de verificación en hoja 1
FRONTEND
SVG generado en servidor + CSS
El diapasón es SVG inline renderizado desde coordenadas calculadas en Python. Fondos en madera (8 variantes PNG), selección aleatoria por JS. Paleta definida con custom properties CSS.
Django Templates
SVG inline
CSS custom props
Vanilla JS
ReportLab 4
Bootstrap 5