# Creality Print

El laminador: perfiles, presets y las trampas que cuestan una impresion.

# Los perfiles de usuario no se aplican solos

Tengo perfiles personalizados en Creality Print desde hace semanas. El 30 de agosto de 2026 perdí dos impresiones seguidas y, al investigarlo, descubrí que **esos perfiles existían pero no se estaban usando**: el laminador trabajaba con los de fábrica sin decir nada.

Esta página explica cómo detectarlo y cómo evitarlo.

## El síntoma

Dos impresiones canceladas con hilos volando, con el ventilador de pieza a tope y la cama notablemente fría al tacto. Mi primera sospecha fue que la aplicación me había «pisado» o corrompido los perfiles.

No era eso. Los perfiles estaban intactos en disco. Simplemente **no eran los seleccionados**.

## La comprobación que decide: el gcode, no la interfaz

La interfaz muestra el nombre del preset en un desplegable, pero ese desplegable puede no reflejar lo que acabó dentro del fichero. La única prueba concluyente está en la cabecera del gcode que la máquina ejecuta:

```
; print_settings_id    = 0.20mm Standard @Creality K2 Pro 0.4 nozzle - ABK
; filament_settings_id = "Hyper PLA @Creality K2 Pro 0.4 nozzle - ABK"
```

Si esas dos líneas **no terminan con el sufijo de tu preset**, estás imprimiendo con los ajustes de fábrica.

El gcode se puede descargar de la propia impresora sin tocar nada, porque la K2 Pro expone Moonraker:

```bash
curl -s "http://<IP-de-tu-impresora>:7125/server/files/list?root=gcodes"
curl -s "http://<IP-de-tu-impresora>:7125/server/files/gcodes/<fichero>.gcode" \
  | grep -aE "^; (print|filament)_settings_id"
```

## Qué te llevas si caes a fábrica

Estos son los valores del perfil de fábrica de la K2 Pro que más daño hacen en piezas pequeñas:

- **Cama a 50 °C** — es el **mínimo** del rango del filamento, no un valor neutro.
- **`close_fan_the_first_x_layers` = 1** — el ventilador de pieza arranca al 100 % en la capa 2, antes de que la primera capa haya agarrado.
- **`fan_min_speed` y `fan_max_speed` = 100** — el ventilador va a tope siempre. No es una avería: es el perfil.
- **`outer_wall_speed` = 200 mm/s** — la velocidad del perímetro exterior, que es el que define la cota de encaje de la pieza.

## Por qué pasa: cada material necesita SU preset

El agujero que me tumbó las impresiones era este: yo tenía un preset de filamento personalizado, pero de **`Hyper PLA-CF`** (fibra de carbono), un material que no uso. El día que cambié de bobina a Hyper PLA normal, **no había ningún preset propio al que caer**, y el laminador tomó el de sistema.

La regla que saco de ahí:

- **Un preset de un material que no imprimes no protege nada.** Cada material que uses de verdad necesita su propio preset personalizado.
- Y ojo con los nombres: la lista de perfiles trunca el texto **por el medio**, así que `Hyper PLA @Cr...4 nozzle - ABK` y `Hyper PLA-CF @... nozzle - ABK` se leen casi igual en pantalla. La elipsis se come justo el `-CF`, que es lo único que los distingue.

## Los ficheros `.info`: tus presets viajan a la nube

Cada preset creado desde la interfaz genera un fichero hermano `.info` junto al `.json`:

```
setting_id = 6a7c3ed7675aeed975583544
user_id = <tu id de Creality Cloud>
base_id = GP004
updated_time = 1786527762
```

Ese `setting_id` es el vínculo con tu cuenta de Creality Cloud. En el log de la aplicación se ve la sincronización explícitamente:

```
SyncUserPresets downloadUserPreset start...
ProfileList [https://api.crealitycloud.com/api/cxy/v2/slice/profile/user/list]
```

Consecuencia práctica: **tus presets de usuario pueden sobrescribirse desde la nube**. En mi caso no ocurrió, pero el mecanismo existe y conviene saberlo.

Corolario: si borras un preset solo del disco, puede reaparecer en la siguiente sincronización. Para eliminarlo de verdad, bórralo **desde la aplicación**.

## Escribir presets a mano

Se puede, y a veces es lo más rápido. Los ficheros viven en:

```
~/Library/Application Support/Creality/Creality Print/<version>/user/<tu-id>/
├── filament/
└── process/
```

Precauciones que no son opcionales:

- **Cierra Creality Print antes de escribir.** La aplicación reescribe los ficheros al salir y machacará tus cambios.
- **Haz copia de seguridad** de la carpeta antes de tocar nada.
- **Los valores van como listas de cadenas** (`["60"]`), nunca como números. Un valor numérico rompe el parser, que hace operaciones de texto sobre él.
- Un preset escrito a mano **nace sin `.info`**, es decir, sin registrar en la nube. En mi caso sobrevivió y la aplicación lo cargó sin problema, pero la vía segura para que persista es crearlo desde la interfaz.

Ejemplo de preset de filamento válido, que hereda del de sistema y solo cambia lo necesario:

```json
{
    "base_id": "GFSA04",
    "close_fan_the_first_x_layers": ["3"],
    "during_print_exhaust_fan_speed": ["60"],
    "filament_settings_id": ["Hyper PLA @Creality K2 Pro 0.4 nozzle - ABK"],
    "from": "User",
    "hot_plate_temp": ["60"],
    "hot_plate_temp_initial_layer": ["60"],
    "inherits": "Hyper PLA @Creality K2 Pro 0.4 nozzle",
    "name": "Hyper PLA @Creality K2 Pro 0.4 nozzle - ABK",
    "slow_down_layer_time": ["14"],
    "textured_plate_temp": ["60"],
    "textured_plate_temp_initial_layer": ["60"],
    "version": "26.8.4.20"
}
```

## Higiene: los presets duplicados son una trampa

Al duplicar un perfil sin renombrarlo quedan nombres como `- Copiar(1)` y `- Copiar(2)`. Yo tenía dos, y uno de ellos traía `enable_support = 1` con umbral de voladizo a **5°** — seleccionarlo por error llena la pieza de soportes.

Con el truncado de nombres de la lista, ese duplicado se lee casi igual que el bueno. Bórralos en cuanto los detectes.

## Y sobre las actualizaciones de la aplicación

El mismo día, la aplicación se actualizó sola de la versión 7.2.1 a la 7.2.2 y **reescribió 1.896 de 1.957 ficheros de perfil de sistema**, añadiendo seis perfiles nuevos.

Lo comprobé contra una copia de Time Machine anterior: de los 56 perfiles de mi impresora, **53 eran idénticos en valores** y solo cambió el formato del fichero. Los tres que cambiaron de verdad no afectaban a mi material.

Dos cosas que aprendí de esa comprobación:

- **La aplicación sí reescribe los perfiles de sistema** al actualizarse. Que cambie la fecha de todos los ficheros no significa que hayan cambiado los valores.
- **El diff útil es semántico sobre el JSON, no byte a byte.** Un `cmp` marcaba los 56 como distintos solo por el reformateo, lo que habría llevado a una conclusión falsa.

## Resumen operativo

1. Crea un preset personalizado **para cada material que uses de verdad**.
2. Antes de lanzar una impresión larga, verifica en el gcode que los dos `settings_id` son los tuyos.
3. Borra los duplicados `Copiar(n)` en cuanto aparezcan.
4. Si escribes presets a mano: aplicación cerrada, copia de seguridad, y valores como cadenas.

# Cambiar de filamento: lo que cambia sin avisar

Cuando se acaba una bobina y pones otra, el laminador cambia de perfil de filamento. Eso no solo cambia la temperatura: **cambia parámetros de comportamiento que no aparecen en ninguna ficha comercial** y que pueden tumbar una impresión que llevaba semanas saliendo bien.

Esta página documenta el caso concreto que me pasó y, sobre todo, el método para no volver a comerlo.

## El caso: Soleyin Ultra PLA → Hyper PLA

Las dos bobinas son PLA. Misma boquilla, misma máquina, misma pieza. Estos son los perfiles de fábrica de la K2 Pro, resueltos y puestos uno al lado del otro:

| parámetro | Soleyin Ultra PLA | Hyper PLA | efecto |
|---|---|---|---|
| `slow_down_layer_time` | 14 s | **8 s** | las capas cortas dejan de frenarse |
| `filament_max_volumetric_speed` | 16 | **23** | el perímetro deja de recortarse por caudal |
| `during_print_exhaust_fan_speed` | 60 | **0** | extracción apagada |
| `filament_flow_ratio` | 0,97 | 0,95 | — |
| `chamber_temperature` | 35 | 30 | — |
| `additional_cooling_fan_speed` | 95 | 80 | — |

Y estos son **idénticos** en los dos, lo cual también es información: temperatura de boquilla (220), cama (50), ventilador de pieza (100/100) y `close_fan_the_first_x_layers` (1).

## El parámetro que más pesa: `slow_down_layer_time`

Es un mínimo de tiempo por capa. Si una capa se va a imprimir en menos tiempo que ese valor, el laminador la **ralentiza** para dar margen a que el material solidifique antes de que la boquilla vuelva a pasar por encima.

En mi pieza medí capas de **6, 9 y 12 segundos** en la zona alta, donde la sección se reduce a un poste fino. Con el Soleyin esas capas se estiraban a 14 s. Con Hyper PLA pasaban tal cual: sin tiempo de enfriar, sobre una pieza pequeña y con el ventilador a tope.

Bajar de 14 a 8 parece un detalle. En piezas grandes lo es, porque ninguna capa baja de ese umbral. En piezas pequeñas es la diferencia entre imprimir y no imprimir.

### Cómo se ve el efecto

Tras subir `slow_down_layer_time` a 14 en mi preset, comparé dos laminados de la misma pieza:

| | antes | después |
|---|---|---|
| piezas en la placa | 4 | **2** |
| material | 4,95 g | **3,84 g** (−22 %) |
| tiempo estimado | 17m 2s | **17m 3s** |

Mitad de piezas y un 22 % menos de material, **exactamente el mismo tiempo**. Ese es el parámetro trabajando: paga tiempo a cambio de que cada capa solidifique.

## El caudal cambia la velocidad real, no solo el máximo

El tope de caudal (`filament_max_volumetric_speed`) recorta automáticamente cualquier velocidad que lo supere. Con capa de 0,2 mm y perímetro exterior de 0,42 mm de ancho:

- Con **16 mm³/s** (Soleyin), un perímetro a 200 mm/s pide 16,8 mm³/s → **se recorta**.
- Con **23 mm³/s** (Hyper PLA), ese mismo perímetro **pasa entero** y va a 200 mm/s reales.

Es decir: el mismo número en la casilla de velocidad produce velocidades distintas según el filamento. Al cambiar de bobina, una pieza pequeña empieza a recibir más fuerza lateral del cabezal sin que hayas tocado nada.

## El método: leer los JSON, no las fichas comerciales

Las fichas de fabricante dicen genéricos («optimizado para alta velocidad», «resistente a impactos») y no permiten decidir nada. Los perfiles reales están en disco:

```
~/Library/Application Support/Creality/Creality Print/<version>/system/Creality/filament/*.json
```

**Ojo: heredan.** Cada fichero tiene una clave `inherits` que apunta a su padre, y los valores efectivos son la cadena resuelta. Comparar los ficheros en bruto no sirve: hay que resolver la herencia primero.

```python
import json, os

def resuelve(nombre, base, prof=0):
    ruta = os.path.join(base, nombre + '.json')
    if not os.path.exists(ruta):
        return {}
    d = json.load(open(ruta))
    padre = {}
    if 'inherits' in d and prof < 8:
        padre = resuelve(d['inherits'], base, prof + 1)
    padre.update(d)
    return padre
```

Con eso, comparar dos materiales es poner las claves que importan en una tabla. Las que miro siempre:

- `slow_down_layer_time`
- `filament_max_volumetric_speed`
- `fan_min_speed`, `fan_max_speed`, `close_fan_the_first_x_layers`
- `during_print_exhaust_fan_speed`
- `activate_chamber_temp_control`, `chamber_temperature`
- las temperaturas de cama según el tipo de placa

## Otros hallazgos del mismo método

Comparando perfiles de PETG con esta técnica salieron cosas que ninguna ficha decía:

| | CR-PETG | Hyper PETG | Hyper PETG-CF |
|---|---|---|---|
| ventilador de extracción | **0 %** | 60 | 60 |
| caudal máximo | 18 | **23** | 12 |
| temperatura de transición | **60 °C** | 75 | 80 |

Que CR-PETG sea el único que apaga la extracción explicó, con dato en vez de sospecha, un atasco por acumulación de calor en una impresión larga.

Y en PLA: **CR-Silk admite 10 mm³/s frente a los 23 de Hyper PLA**. El silk imprime a menos de la mitad de velocidad, cosa que conviene saber antes de planificar una serie.

## Dos avisos sobre lo que NO te dice el perfil

- **`required_nozzle_HRC` no sirve para detectar abrasivos.** En toda la biblioteca solo 28 perfiles de 1.379 lo rellenan. Que ponga 0 no significa que el material no desgaste: el PLA marble lleva ~30 % de carbonato cálcico y pide boquilla endurecida para producción, con un 0 en esa casilla.
- **El tipo de placa puede ser decorativo.** En el perfil de fábrica de mi máquina, «High Temp Plate» y «Textured PEI Plate» declaran **la misma temperatura** de cama. Elegir bien el tipo de placa no sube la cama; hay que subirla a mano.

## Resumen operativo

Cuando cambies de bobina a un material distinto, aunque sea el mismo tipo de plástico:

1. Resuelve y compara los dos perfiles con la tabla de claves de arriba.
2. Mira especialmente `slow_down_layer_time` si vas a imprimir piezas pequeñas.
3. Crea tu preset personalizado para el material nuevo antes de lanzar nada largo.
4. Verifica en el gcode que se aplicó.