API de corte de madera y madera estructural
Sí, existe una API para cortar madera estructural a medida. Cortar viguetas, cabios, montantes, listones y tablas a medida es un problema de corte unidimensional (1D) con una regla extra que el corte lineal simple ignora: la sección transversal tiene que coincidir. Una pieza de 50×150 no puede salir de una barra de 50×100. La CutOptim Engine API lo resuelve sobre HTTP en POST /v1/optimize/wood: tu ERP, tu software de presupuestos o de almacén de madera envía la lista de corte y el stock disponible en JSON y recibe el plan de corte optimizado, emparejado y resuelto por sección transversal, con el número de barras y el aprovechamiento.
Es un modo distinto, no un envoltorio de /v1/optimize/1d: el 1D lineal trata todas las barras como intercambiables, mientras que la madera tiene identidad: la sección tiene que coincidir. Enviar N solicitudes 1D agrupadas cuesta N llamadas para un solo trabajo, traslada a ti el emparejamiento del stock y da un total que no coincide con el que muestra la aplicación. Este endpoint hace el emparejamiento y devuelve el trabajo completo en una sola llamada, por sección y para todo el trabajo.
{
"parts": [
{ "name": "Rafter", "sw": 50, "sh": 150, "length": 3200, "qty": 8 },
{ "name": "Noggin", "sw": 50, "sh": 100, "length": 600, "qty": 24,
"meta": { "ref": "C24-50x100" } }
],
"stock": [
{ "name": "C24 50x150", "sw": 50, "sh": 150, "length": 4800, "qty": 20, "price": 18.4 },
{ "name": "C24 50x100", "sw": 50, "sh": 100, "length": 4800, "qty": 30, "price": 12.5 }
],
"options": { "kerf": 3 }
}- Disponible hoy en
POST /v1/optimize/wood: el mismo motor que la aplicación, con conocimiento de la sección transversal. - Secciones emparejadas y resueltas de forma independiente: una pieza de 50×150 solo se corta de stock de 50×150.
- sections[] lleva rods, totales y plan de corte por sección; unmatched informa de la demanda sin stock alguno.
- Determinista y con la versión fijada: reproduce un presupuesto de corte para una auditoría o un pedido repetido.
- El recorte indicado es el sobrante aprovechable — el kerf del corte que lo libera ya está descontado (por barra).
- Validación gratuita:
POST /v1/validate/woodcomprueba un trabajo sin clave y sin consumir cuota.
Por qué lo necesitan carpinteros y almacenes de madera
La madera estructural se compra en longitudes largas y se corta en muchas piezas, y cortar en el orden de la lista deja un retal corto en casi todas las longitudes. Un optimizador que conoce la sección transversal reorganiza los cortes dentro de cada sección para que cada una necesite el menor número de longitudes posible. Dentro de un flujo de presupuestos, ERP o punto de venta, la API lo hace en cada trabajo de forma automática: un almacén de materiales de construcción puede presupuestar y planificar un servicio de corte directamente desde el pedido, y el plan cuadra con lo que el almacén corta de verdad.
Emparejamiento por sección: la parte del problema que el 1D descarta
Cada pieza y cada fila de stock lleva dos lados de sección, sw y sh, en cualquier orden (50×150 y 150×50 son la misma barra girada). El motor divide el trabajo por sección transversal, empareja cada pieza solo con stock de una sección compatible y resuelve cada sección de forma independiente. La respuesta llega como sections[], cada una con sus propias rods, sus propios totales y su propio plan de corte, además de métricas de todo el trabajo; y la demanda cuya sección no tiene stock alguno se informa aparte en unmatched, distinta de las piezas que tenían stock y simplemente no cupieron, porque la solución es distinta.
Determinista: reproducible para presupuestos y auditorías
La misma solicitud devuelve siempre el mismo plan de corte: sin aleatoriedad y sin reloj en el algoritmo. Un presupuesto de corte construido a partir de una llamada a la API puede reproducirse meses después para una auditoría o un pedido repetido, y los resultados se pueden guardar en caché y comparar en las pruebas. El recorte indicado en cada barra es el sobrante aprovechable — el kerf del corte que lo libera ya está descontado — y cualquier objeto meta que adjuntes (una referencia de artículo, una línea de pedido) vuelve en cada corte colocado para que el plan cuadre con tu sistema.
Un resumen de dos páginas (PDF en inglés): el problema, qué envías y qué recibes, una solicitud y una respuesta, y cómo construir sobre el motor. Listo para imprimir, con un QR que vuelve a esta página.
Preguntas frecuentes
¿Existe una API para el corte de madera o madera estructural?
POST /v1/optimize/wood. Envías la lista de corte y el stock en JSON, cada uno con dos lados de sección, y recibes el plan de corte optimizado, emparejado y resuelto por sección, con el número de barras, el aprovechamiento y los recortes aprovechables. Es el mismo motor que ejecuta la aplicación, sobre HTTP.¿Por qué no usar simplemente el endpoint 1D para la madera?
¿Qué pasa con una pieza cuya sección no está en stock?
POST /v1/validate/wood, sin clave y sin cuota.¿Tiene en cuenta el ancho de la hoja y el escuadrado de los extremos?
options.kerf es el ancho de la hoja de sierra, que se descuenta en cada corte; options.trim.start y options.trim.end reservan el corte de escuadrado en cada extremo de una longitud. El recorte indicado en cada barra es el sobrante aprovechable después de ambos, y options.minOffcut solo informa de los sobrantes lo bastante largos como para guardarlos. Las mismas opciones se aplican a todas las secciones del trabajo.¿Puede planificar solo con la madera que tengo en el almacén?
options.respectStock y la cantidad de cada fila de stock pasa a ser un límite estricto, sección por sección. Las piezas que tienen stock compatible pero no caben vuelven en unplaced, mientras que las piezas cuya sección no está en stock vuelven en unmatched, de modo que el plan te dice si debes cortar longitudes mayores o comprar una sección que falta.