kapy academy

Expresiones

8 min readUpdated ago 2026

Todos los campos numéricos del editor son campos de expresión. Haz clic en el valor y en lugar de un cuadro de número tienes un pequeño editor de código, así que una profundidad puede ser PLATE_T * 2, un agujero puede ser SHAFT + HOLE_COMP y una cuenta puede ser round(LENGTH / PITCH).

Una cota que contiene un parámetro en vez de un número. Cualquier campo numérico admite lo mismo.
Una cota que contiene un parámetro en vez de un número. Cualquier campo numérico admite lo mismo.

El editor de campo

Haz clic en el valor para abrirlo. Escribe. Tres formas de salir:

  • Enter confirma la expresión y confirma el panel, así que el paso también se cierra.
  • Esc devuelve el campo a lo que tenía antes.
  • Irte con un clic confirma.

Mientras escribes cualquier cosa que no sea un número suelto, aparece al final de la línea un = <resultado> en gris que se actualiza en vivo, así que ves los milímetros que produce la fórmula antes de confirmar. Los errores se subrayan según escribes: una fórmula que no se puede analizar se marca como error, y una que se analiza pero no se puede evaluar, como aviso.

Los saltos de línea se eliminan de lo que pegues, así que una fórmula copiada de una hoja de cálculo queda en una sola línea.

Una vez confirmado y cerrado el panel, un campo con una fórmula dentro muestra una pequeña marca gris fx en lugar de la fórmula. Un campo cuya fórmula está rota muestra un ! rojo, con el mensaje como tooltip.

Autocompletado

Ctrl+Espacio abre la lista, y escribir las primeras letras de un nombre también. Cada sugerencia muestra el valor que da ahora mismo, = 12.5 mm, así que puedes elegir entre dos nombres parecidos sin salir del campo.

Escribe @ para listar solo parámetros. La lista general lleva además funciones y constantes, y @ es más rápido cuando ya sabes que quieres un parámetro.

Crear un parámetro sin salir del campo

Escribe un nombre que todavía no existe y acepta la sugerencia. El editor inserta NOMBRE(0) con el 0 seleccionado, así que escribes el valor por defecto justo encima. Al confirmar se crea un parámetro de verdad con ese valor, y el campo se queda solo con el nombre.

Escribir NOMBRE(12) a mano hace lo mismo. Este es el camino más corto entre «este número debería tener nombre» y un parámetro con nombre, y es la única forma de crear un parámetro cuya unidad no sean milímetros: un parámetro creado dentro de un campo hereda la unidad de ese campo, mientras que uno creado desde la ventana Parámetros siempre es mm.

Lo que puedes escribir

Sintaxis aceptada
Tipo Qué se acepta
Aritmética + - * / % ^, y los unarios + -
Comparación == != < > <= >=
Lógica and or not xor
Condicional cond ? a : b
Agrupación Paréntesis
Funciones sqrt abs min max floor ceil round sin cos tan if
Constantes pi, true, false y las constantes de calibración
Texto Solo como operando de == o != contra un parámetro Preajuste

También se aceptan los operadores lógicos al estilo de C: && por and, || por or, ! por not.

Esa lista de funciones es la lista entera. No hay log, ni atan, ni clamp. Los nombres se leen sin distinguir mayúsculas, y los identificadores se guardan en mayúsculas.

if y la forma ? : hacen el mismo trabajo, así que if(TALL, 40, 25) y TALL ? 40 : 25 son la misma expresión. Cualquiera de las dos es la forma de que un parámetro booleano llegue a un campo numérico.

Dos operadores merecen leerse dos veces. ^ eleva a una potencia: 2^10 es 1024. Y % da lo que sobra de una división, también con decimales, así que 7.5 % 2 es 1.5 y LENGTH % PITCH es el recorte que queda al final de una fila de nervios. Su signo sigue al número por el que divides, no al de delante: -7 % 3 es 2, no -1.

Constantes de calibración

Las constantes en mayúsculas HOLE_COMP, PIN_COMP y las familias FIT_ y MIN_ leen en vivo de la configuración activa. No son números fijos guardados dentro del documento.

Esto es lo que hace portátil un ajuste impreso. Un agujero escrito como SHAFT_DIA + HOLE_COMP lleva dentro la intención, «holgura para un eje de este tamaño en esta impresora», en lugar de un número que mediste una vez en una máquina que quizá ya no tengas. Cambia la configuración activa y el agujero cambia con ella.

Sus nombres están reservados, así que no puedes crear un parámetro que tape uno.

Qué le hace un renombrado a una fórmula

Una fórmula guarda el nombre como texto. Renombrar un parámetro no reescribe nunca las expresiones que lo mencionan, así que todas las fórmulas que nombraban al viejo siguen diciendo la palabra vieja, y todas ellas quedan obsoletas en cuanto pulsas Enter sobre el nombre nuevo. No se ofrece nada, no se reescribe nada, y no aparece ninguna cuenta de lo que se acaba de romper.

Te enteras en dos sitios. Una fila de parámetro cuyo propio valor sea una de esas fórmulas se pone ámbar, informa de la expresión hace referencia a un parámetro desconocido y conserva el último valor que logró calcular, que es el de antes del renombrado. Un campo de operación en la misma situación muestra una marca roja ! con Unknown parameter '{NAME}' como tooltip, y el paso al que pertenece falla.

El modelo no se rompe, y ahí está la trampa: una fila en ámbar sigue devolviendo un número, así que una pieza puede seguir pareciendo correcta mientras una de sus cotas está congelada en lo que fuera antes del renombrado.

Después de un renombrado, recorre la ventana Parámetros buscando filas ámbar y abre todos los pasos que usaban el nombre viejo dentro de una fórmula. Los campos atados a través del selector, sin fórmula, no necesitan nada: esos siguen el renombrado solos. Mejor todavía, dale al parámetro un nombre lo bastante bueno la primera vez como para no renombrarlo nunca.

Rechazos

Cada uno de estos aparece junto al campo, en inglés, y el texto es el diagnóstico entero.

Sintaxis que el analizador no admite:

  • Expression is empty
  • Unsupported syntax: assignments are not allowed, que cubre además las definiciones de función, el acceso a propiedades, los arrays, los objetos, los rangos y más de una sentencia
  • Unsupported operator: {op}
  • Unknown function '{name}'

Un nombre que no se resuelve:

  • Unknown parameter '{NAME}'
  • Circular dependency detected: A → B → A, cuando dos parámetros acaban definidos uno en función del otro

Un valor de la forma equivocada:

  • Expression returned boolean, expected number, y su espejo Expression returned number, expected boolean
  • Expression did not evaluate to a finite number or boolean, que es lo que produce una división por cero
  • Text values are only allowed in == / != comparisons
  • '{NAME}' is not an enum parameter — it can't be compared to text
  • '{value}' is not an option of '{NAME}' (options: …)

Cuando falla

El campo ha vuelto atrás y no ha dicho nada. Esta es la que hay que conocer. Una expresión confirmada que no se analiza se descarta sin mensaje y el campo vuelve a su valor anterior. Si una fórmula que escribiste no está después, es que no se analizó. Vuelve a escribirla y mira el subrayado antes de confirmar.

Un campo muestra un ! rojo. La fórmula se analiza pero ya no evalúa, y la causa es que un parámetro que nombra se ha renombrado o se ha borrado. Pasa por encima de la marca para ver el mensaje, y luego abre el campo y arregla el nombre.

Un parámetro preajuste no sale en la lista de autocompletado. Los parámetros preajuste se dejan fuera de las sugerencias, aunque compararlos se admita. Escribe el nombre tú: MODE == "wide" funciona.

Un parámetro de texto no entra en un cálculo. El texto solo se puede comparar con == o != contra un parámetro Preajuste. No puede tomar parte en aritmética nunca. Si quieres que un valor de texto cambie una cota, hazlo Preajuste y compara contra él, o gobierna la cota desde las asignaciones del preajuste.

El paso se ha cerrado al pulsar Enter. Eso es Enter haciendo los dos trabajos. Vuelve a abrir el paso; el valor quedó confirmado.

Ver también

Discord