// SISTEMAS / luthier ← volver a sistemas
Luthier

Luthier

calculadora de trastes · plano 1:1 para imprimir
CÁLCULO EXACTO
INSTRUMENTO
PARÁMETROS
TIRO
TRASTES
UNIDAD
TRASTE 12 · OCTAVA
mm
= tiro / 2 · punto de octava exacto
TIRO TOTAL
TRASTES
Instrumento
Constante ¹²√2 17,817
Unidad Milímetros
PLANO DEL DIAPASÓN
Posición de trastes
escala 1:1
Traste Marcador Octava · 12
Ingresá tiro y trastes para calcular
Ver detalle técnico →
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