Fichas de muestra con NFC: un comando por carrete

Tengo más de veinte carretes y cada uno lleva su ficha de muestra impresa: un rectángulo con el nombre del material en relieve y, dentro, un tag NFC con la marca, el color y el lote. Cuando un hueco del CFS se libera, imprimo la ficha del carrete que acaba de entrar.

Hacer cada ficha a mano en el laminador tenía varios sitios donde equivocarse: el preset, el hueco, el color y la altura de la pausa. Ahora es una línea en una tabla y un comando.

Qué hay dentro de la ficha

El flujo: tres pasos

1. Una fila por carrete en el catálogo. Es un CSV con seis columnas:

id,texto,marca,color,hex,preset
petg_esun_negro,PETG,eSUN,negro,#000000,eSUN PETG @Creality K2 Pro 0.4 nozzle - ABK
pla_hyper_gris,PLA,Creality,gris,#a0a7ad,Hyper PLA @Creality K2 Pro 0.4 nozzle - ABK
Columna Qué va
id nombre corto del carrete, en minúsculas, cifras y guion bajo
texto lo que se lee en la ficha; caben unas 7 mayúsculas
marca, color para mí; no se imprimen
hex color en formato #RRGGBB, con un solo #
preset el nombre completo del preset de filamento, tal como aparece en Creality Print

2. Generar la ficha indicando el carrete y el hueco del CFS donde está cargado:

uv run --with numpy python tools/nueva_ficha.py pla_hyper_gris 1B

Sin argumentos lista el catálogo y marca qué carretes están listos y cuáles bloqueados, y por qué.

3. Abrir el .3mf resultante en Creality Print, laminar e imprimir. No hace falta configurar nada antes: el proyecto ya lleva el filamento asignado al hueco, su preset, el color y la pausa.

El hueco no está en el catálogo a propósito: cambia cada vez que recargo carretes, así que se indica en cada ejecución.

Lo que hace el comando por dentro

  1. Valida la fila antes de tocar nada: que el preset exista, que sea de la K2 Pro 0.4 y que sea uno de mis presets revisados (llevan el sufijo - ABK; un preset de sistema sin revisar se rechaza), que el color sea un hex válido y que el hueco sea del CFS (1A–1D).
  2. Prepara la base del texto si no existe ya. Para PLA, PETG, ABS, ASA y TPU parte de la ficha original, que ya trae ese texto; para cualquier otro escribe las letras sobre la ficha en blanco. Después abre el hueco cerrado del tag, rellena los agujeros de la malla y elimina los vértices en T. Cada base se genera una sola vez y se reutiliza.
  3. Comprueba que la malla queda cerrada. Si no lo está, se detiene y borra el resultado: el modo automático de Creality Print (el de la IA) se niega a laminar una malla con aristas abiertas.
  4. Escribe el .3mf con el filamento en el hueco indicado, el preset, el color y la pausa.

Las piezas pesadas de malla las hace FreeCAD sin interfaz (freecadcmd); el resto es Python con numpy.

Tres detalles que costaron una impresión

La pausa va en la capa de abajo, no en la de arriba

Creality Print pausa después de terminar la capa que le indicas. El hueco del tag acaba en Z 3,2 mm, así que la pausa se programa en 3,2. Con 3,4 la pausa llegaba una capa tarde, con la tapa ya empezada y el tag sin sitio.

Se comprueba en el gcode laminado: debe haber una sola PAUSE, entre la línea ;Z:3.2 y la ;Z:3.4.

El tag se escribe antes de encerrarlo, y nunca se bloquea

Una vez dentro no se puede sacar sin romper la ficha. Escríbelo y compruébalo con el móvil antes de meterlo. Se puede reescribir después a través de la tapa, pero el bloqueo del NTAG215 es permanente: si lo bloqueas, la ficha queda con esos datos para siempre.

Una malla con defectos pasa en modo manual y falla en automático

Las fichas originales traen 19 aristas no-manifold. El modo manual del laminador las acepta y ofrece reparar; el automático rechaza la pieza sin más. Por eso el comando no da por buena una ficha hasta que la malla queda con cero aristas abiertas.

Errores frecuentes al rellenar el catálogo

Los scripts

Por ahora viven en mi repositorio privado de proyectos 3D y no están publicados: dependen de otras utilidades mías (el verificador de presets y el diagnóstico de mallas) y de mis presets - ABK. Esta página describe el método, que es lo que se puede trasladar a cualquier otra impresora con CFS y cualquier modelo de ficha.

La ficha de partida es el modelo Filament Samples / Filament Color Swatches; el hueco cerrado del tag y la pausa son una modificación propia, el original no la trae.


Revision #1
Created 2026-10-12 15:12:25 UTC by Abkrim
Updated 2026-10-12 15:12:25 UTC by Abkrim