API do nestingu blach
Tak — istnieje API do nestingu blach. Układanie nieregularnych elementów z blachy — wsporników, węzłówek, kołnierzy, uszczelek — na arkuszach to problem nestingu kształtów rzeczywistych, a CutOptim Engine API rozwiązuje go przez HTTP pod adresem POST /v1/optimize/nest. Twój system ERP, MES lub do wycen wysyła obrysy elementów i rozmiary blach jako JSON, a w odpowiedzi dostaje ułożony nesting, rozmieszczenie każdego elementu i liczbę blach — dla lasera, plazmy i strumienia wody.
To działa już dziś. Silnik nestingu (jagua-rs, geometryczny silnik kolizji) działa w produkcji pod POST /v1/optimize/nest — to inna klasa algorytmów niż prostokątny pakownik gilotynowy, który zwraca nesting kształtów rzeczywistych zamiast prostokątnego planu cięcia.
Wszystkie formaty, silniki, limity i przykłady kodu dla programistów: API do nestingu CutOptim
{
"parts": [
{ "name": "gusset",
"polygon": [[0,0],[400,0],[0,400]],
"qty": 16, "allowedRotations": [0,90,180,270] },
{ "name": "bracket",
"polygon": [[0,0],[350,0],[350,120],[120,120],[120,350],[0,350]],
"qty": 10, "allowedRotations": "continuous",
"meta": { "part": "BRK-350" } }
],
"stock": [
{ "w": 3000, "h": 1500, "qty": 12,
"exclusions": [{ "polygon": [[0,0],[250,0],[0,250]], "quality": 0 }] }
],
"options": { "minSeparation": 2, "edgeClearance": 10 }
}Nesting nie jest częścią publicznego dema — uruchom ten przykład z darmowym kluczem testowym. Utwórz darmowy klucz testowy
- Działa już dziś na
POST /v1/optimize/nest— dowolne elementy wielokątne (z otworami), nie tylko prostokąty. - Strefy wykluczeń dla każdego arkusza układają nesting wokół wady blachy, miejsca docisku lub zadrukowanego obszaru (
stock[].exclusions). - Podział według materiału: oznacz elementy i blachy, a każdy element jest układany tylko na blasze własnego materiału.
- Dołącz obiekt meta (numer części, pozycja zamówienia), a wróci przy każdej rozmieszczonej sztuce, więc nesting uzgadnia się z Twoim ERP.
- Kilka rozmiarów blach: nesting porównuje je według powierzchni blachy albo według ceny z
minimizeCosti może je mieszać — w połowie pusta ostatnia blacha przechodzi na mniejszy rozmiar. - Na reprezentatywnym zleceniu z 272 elementami nesting zużył 6 arkuszy, tam gdzie te same elementy według prostokąta otaczającego potrzebują 9 — uczciwą miarą jest liczba blach, a nie procent gęstości.
- Bezpłatna walidacja:
POST /v1/validate/nestsprawdza zlecenie bez klucza i bez limitu.
Dlaczego potrzebują tego zakłady obróbki blach
Blacha jest droga, a nieregularne elementy ją marnują: prostokątny pakownik traktuje prostokąt otaczający każdego elementu jak pełny, więc powietrze wewnątrz węzłówki albo kątownika jest wyrzucane. Nesting kształtów rzeczywistych zazębia faktyczne obrysy i odzyskuje to powietrze. Na reprezentatywnym zleceniu z 272 elementami nesting zużył 6 arkuszy, tam gdzie te same elementy według prostokąta otaczającego potrzebują 9 — uczciwą miarą jest liczba blach dla tych samych elementów, a nie procent gęstości.
Co wysyłasz i co wraca
Wysyłasz każdy element jako wielokąt (z opcjonalnymi otworami) i ilość, plus rozmiary blach. Odpowiedź podaje każde rozmieszczenie jako transformację sztywną (obrót w stopniach, potem przesunięcie x/y), liczbę blach, gęstość i elementy, które się nie zmieściły. Oznacz elementy i blachy materiałem, a zlecenie zostanie podzielone według materiału — element jest układany tylko na blasze własnego materiału — a dowolny obiekt meta (numer części z Twojego ERP, pozycja zamówienia) wraca bez zmian przy każdej rozmieszczonej sztuce, więc nesting uzgadnia się z Twoim systemem. Każda blacha niesie też pozycję materiału, z której została wycięta, swoją długość cięcia i liczbę przebić, a stockUsage sumuje blachy i cenę dla każdego rozmiaru blachy.
Strefy wykluczeń — nesting wokół wady
Strefy wykluczeń dla każdego arkusza (stock[].exclusions) pozwalają silnikowi ułożyć nesting wokół wady blachy, miejsca docisku albo zadrukowanego obszaru — strefa quality 0 to twardy obszar zakazu dla każdego elementu. Obrót może być ciągły albo z listy dyskretnych; options.minSeparation ustawia odstęp między elementami dla szerokości palnika lub wiązki, a options.edgeClearance odstęp od krawędzi blachy. Układ jest deterministyczny: przypięty seed odtwarza ten sam nesting dla oferty albo audytu.
Natychmiast do wyceny, max do zamówienia
POST /v1/optimize/nest odpowiada synchronicznie silnikiem lbf — deterministycznie i w ramach zapytania, wystarczająco szybko, by wycenić zlecenie, gdy klient czeka. Gdy zlecenie jest zwalniane na maszynę, wyślij to samo ciało z engine: "max" i odpytuj GET /v1/jobs/{id}: najpierw uruchamia lbf, potem zużywa ustawiony przez Ciebie budżet czasu (options.timeBudgetMs) na szukanie układu z mniejszą liczbą blach i nigdy nie zwraca ich więcej. Odpowiedź ma w obu przypadkach ten sam kształt; arkusz ze strefami wykluczeń jest w tym zleceniu nadal obsługiwany przez lbf, z ostrzeżeniem.
Dwustronicowe streszczenie (PDF po angielsku) — problem, co wysyłasz i co dostajesz, przykładowe zapytanie i odpowiedź oraz jak budować na silniku. Gotowe do druku, z kodem QR prowadzącym do tej strony.
Najczęstsze pytania
Czy istnieje API do nestingu blach?
POST /v1/optimize/nest. Wysyłasz każdy element jako wielokąt (z opcjonalnymi otworami) oraz rozmiary blach, a w odpowiedzi dostajesz ułożony nesting, rozmieszczenie każdej sztuki i liczbę blach — dla lasera, plazmy i strumienia wody. To geometryczny silnik kolizji, który działa w produkcji już dziś.Czy radzi sobie z wadami blachy i miejscami docisku?
stock[].exclusions) — wielokąty, od których silnik trzyma każdy element z daleka. Strefa quality 0 to twardy obszar zakazu, więc możesz ułożyć nesting wokół wady, miejsca docisku albo zadrukowanego obszaru. Tego prostokątne API nie potrafi wyrazić.Czy mogę oznaczać elementy numerami części z mojego ERP?
Ile blach pozwoli zaoszczędzić?
Czy może wybierać spośród kilku rozmiarów blach?
options.minimizeCost — więc odpowiedź nie zależy od kolejności, w jakiej je wypiszesz. Może też mieszać rozmiary: każda blacha, od najmniej zapełnionej, jest ponownie układana na tańsze lub mniejsze rozmiary i zastępowana, gdy cały plan wychodzi lepiej, więc w połowie pusta ostatnia blacha często przechodzi na mniejszy rozmiar. sheets[].stock i stockUsage mówią, z jakiego rozmiaru pochodzi każda blacha.Czy podaje, ile blachy zużywa małe zlecenie?
usedWidth, usedHeight i usedArea — prostokąt otaczający jej rozmieszczonych elementów od narożnika blachy — więc wycena może naliczyć pas albo prostokąt otaczający zamiast całej blachy. Najmniej zapełniona blacha jest domyślnie zagęszczana w stronę tego narożnika, z podzbiorami obrotów dozwolonych dla każdego elementu; liczba blach i cena nigdy się nie zmieniają.