--- name: maludraw description: Lenguaje de diagramas técnicos de Maluplast — isométrico plano con trazo grueso negro, color semántico y globos de llamada, generados por código Python que escribe SVG. Úsalo SIEMPRE que haya que explicar un proceso, una máquina, un mecanismo físico, una medición o un concepto técnico con dibujos: documentos de sustento, capacitaciones internas, fichas de proceso, esquemas de planta, explicaciones de ensayo. También al agregar o rehacer diagramas en piezas que ya usan este lenguaje. --- # Maludraw — los diagramas técnicos de Maluplast Isométrico plano con trazo grueso. El dibujo carga el peso de la explicación; el texto solo dice lo que el dibujo no puede. **Regla de uso:** ningún dato o afirmación importante va sin su esquema. Si algo no se puede dibujar, probablemente todavía no se entendió lo suficiente. --- ## El ADN en una línea > Volumen plano con contorno negro grueso · una idea por lámina · color que significa, no que decora · globos que señalan la parte exacta. --- ## Por qué isométrico y no plano Un esquema plano se lee como abstracción; un objeto con volumen se lee como algo que existe en la planta. Cuando el tema es "controlamos el proceso", el dibujo tiene que parecerse a lo que se controla. El trazo grueso hace que el diagrama sobreviva al proyector, a la impresión y al WhatsApp. --- ## Geometría La isometría es fija. Nunca se improvisa un ángulo. | Pieza | Profundidad | Uso | |---|---|---| | `slab` — lonja de película | dx 58, dy 42 | película, láminas, superficies | | `prism` — barra vertical | d1 12, d2 10 | barras de magnitud, hilos, columnas | | `card` — tarjeta con volumen | d1 26, d2 20 | conceptos, etapas, factores | Cada cuerpo se dibuja con **tres caras**: superior clara, frontal media, lateral oscura. Nunca dos tonos, nunca degradado. Contorno: `#141414`, ancho 3 a 5 px según el tamaño de la pieza. Uniones `stroke-linejoin="round"`. --- ## Color · significa, no decora ```python C={"y":("#ffe680","#ffd84d","#e8b81f"), # amarillo · el material, el protagonista "g":("#a8e3c1","#7fd4a3","#3da96f"), # verde · lo correcto, lo que controlamos "r":("#fbbfae","#f79b83","#e0563a"), # rojo · el problema, lo que falla "n":("#f2f0ea","#e8e6df","#b3b0a6"), # gris · lo neutro, lo ajeno, la máquina "b":("#bcd9ef","#8fc4e6","#4a90c2")} # azul · aire, medición, cotas ``` Colores de línea y texto: ``` #141414 contorno y texto principal #1d6b3e verde oscuro para texto y flechas correctas #0f4a2c verde más oscuro para títulos sobre verde #e0563a rojo para el problema #8f2b1a rojo oscuro para títulos #4a90c2 azul de cotas y aire #7a7a75 gris de texto secundario #a8a8a8 gris de nota ``` **Reglas:** - Máximo tres colores por diagrama. - El gris nunca compite: es el fondo del argumento. - Si un elemento no significa nada en particular, va gris. - El azul se reserva para cotas, aire y medición. Nunca para un objeto. --- ## Tipografía Avenir Next. En los SVG: `font-family="Avenir Next, Avenir, Helvetica Neue, Helvetica"`. | Rol | Tamaño | Peso | |---|---|---| | Rótulo principal de un elemento | 20–21 | 600 | | Rótulo secundario | 16–18 | 500 | | Texto de globo | 17 | 600 primera línea, 500 el resto | | Cota | 16 | 600 | | Dato hero dentro del diagrama | 28–70 | 600 | Nada por debajo de 16 px dentro de un diagrama. Si no entra, el diagrama tiene demasiado. --- ## Globos y llamadas ```python callout(x, y, ["Primera línea", "Segunda línea"], ancla_x, ancla_y, side="bottom", c="#0f4a2c") ``` Caja blanca con borde de 3.5 px del color del mensaje, línea de llamada del mismo color y **punto de ancla relleno** en el punto exacto que se señala. - `side` indica de qué lado de la caja sale la línea: `bottom`, `top`, `left`, `right`. - El color del globo dice de qué habla: negro explica, verde señala lo que controlamos, rojo señala la falla. - Máximo tres globos por lámina. - El ancla va **sobre el objeto**, nunca sobre un texto. Antes de dar por buena una lámina: verificar que ninguna caja de globo tape un rótulo y que ninguna línea de llamada cruce otro elemento. --- ## La lámina A4 apaisado, y siempre la misma estructura: ``` eyebrow (sección · número) título 27pt entrada de una frase, 15pt ← el diagrama, ocupando todo el alto disponible nota al pie 12pt — lo que el dibujo no puede decir ``` El SVG se escala al alto disponible con `.fig > svg { width:auto; height:100%; max-width:100% }`. Los viewBox son de 940 de ancho y entre 240 y 420 de alto según el contenido. --- ## Reglas duras - **Una idea por lámina.** Si hacen falta dos diagramas, son dos láminas. - **Un número grande por lámina.** Dos se anulan. - Nada de sombras, degradados, transparencias ni texturas. - Las magnitudes son proporcionales al dato real: si dos barras representan la misma fuerza total, sus áreas tienen que ser iguales de verdad. - Los ejemplos ilustrativos se marcan como tales en la nota al pie. - Nunca rotar texto. - El texto explicativo va en la lámina, no dentro del SVG. Dentro del dibujo solo van rótulos. --- ## Cómo se produce 1. Importar la librería: `from iso import *` (está en `assets/iso.py`). 2. Componer cada diagrama como string SVG. 3. Volcar las láminas a un HTML con el CSS de `assets/plantilla.py`. 4. Imprimir con Chrome headless: ```bash "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --headless --disable-gpu \ --no-pdf-header-footer --print-to-pdf="/Users/rolo/Downloads/PIEZA.pdf" "file:///ruta/doc.html" ``` 5. **Rasterizar y revisar cada lámina** con PyMuPDF a 52–56 dpi buscando solapes, textos cortados y elementos fuera del viewBox. Este paso no se salta: los solapes no se ven en el código. 6. Abrir en Acrobat y entregar el link markdown local. Generar por código y no a mano tiene una razón práctica: cambiar la paleta, la geometría o la tipografía de todo el documento es editar un diccionario. --- ## Catálogo de piezas El detalle de cada función, con su firma y ejemplos, está en `references/catalogo.md`. Resumen: `slab` lonja · `prism` barra · `card` tarjeta · `bubble` burbuja de soplado · `bagfig` bolsa · `step` etapa numerada · `arrow` flecha · `callout` globo · `cota` línea de cota · `chains` cadenas sobre una lonja · `molec` cadena molecular ramificada · `stackchains` cadenas apiladas · `tablefig` tabla dibujada · `scalebar` barra de escala con marcadores · `upicon` / `downicon` flechas de gana/pierde · `txt` texto. --- ## Cuándo NO usar este skill - Catálogos, fichas comerciales y propuestas de precio: ahí manda `maludocs`. - Gráficos de datos puros con muchas series: un diagrama isométrico no reemplaza un gráfico. - Interfaces y producto digital: `maluway`. Un documento puede llevar los dos lenguajes si están separados por secciones, nunca mezclados en la misma lámina.