API do nestingu dla cięcia laserem
Tak — istnieje API do nestingu dla cięcia laserem. Cięcie nieregularnych elementów na laserze to problem nestingu kształtów rzeczywistych: element jest dowolnym wielokątem, a nie prostokątem, i elementy wsuwają się we wzajemne wklęsłe kieszenie. CutOptim Engine API rozwiązuje to przez HTTP pod adresem POST /v1/optimize/nest — Twoje oprogramowanie CAD/CAM, ERP lub do wycen wysyła obrysy elementów i arkusze jako JSON, a w odpowiedzi dostaje ułożony nesting, rozmieszczenie każdego elementu i liczbę arkuszy.
To działa już dziś. Nesting to inna klasa algorytmów niż prostokątny pakownik gilotynowy — geometryczny silnik kolizji (jagua-rs), który działa w produkcji pod POST /v1/optimize/nest — więc zwraca nesting kształtów rzeczywistych, a nie prostokątny plan cięcia.
Wszystkie formaty, silniki, limity i przykłady kodu dla programistów: API do nestingu CutOptim
{
"parts": [
{ "name": "bracket",
"polygon": [[0,0],[300,0],[300,100],[100,100],[100,300],[0,300]],
"qty": 12, "allowedRotations": "continuous" },
{ "name": "gusset",
"polygon": [[0,0],[280,0],[140,240]],
"qty": 8, "allowedRotations": [0,90,180,270] }
],
"stock": [{ "w": 3000, "h": 1500, "qty": 20 }],
"options": { "minSeparation": 0.3, "edgeClearance": 5 }
}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 trzymają elementy z dala od wady, miejsca docisku lub zadrukowanego obszaru (
stock[].exclusions). - Obrót ciągły lub dyskretny,
minSeparationdla odstępu między elementami iedgeClearancedla krawędzi arkusza. - Długość cięcia i liczba przebić dla każdego arkusza, plus arkusze i cena dla każdego rozmiaru arkusza (
stockUsage) — kilka rozmiarów arkuszy można mieszać tam, gdzie to tańsze. - 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 arkuszy, a nie procent gęstości.
- Deterministyczny: przypięty seed sprawia, że to samo zapytanie zwraca ten sam nesting — dla ofert i audytów.
- Bezpłatna walidacja:
POST /v1/validate/nestsprawdza zlecenie bez klucza i bez limitu.
Dlaczego zakłady laserowe potrzebują nestingu kształtów rzeczywistych
Prostokątny pakownik traktuje prostokąt otaczający każdego elementu jak pełny, więc powietrze we wcięciu kątownika albo w trójkątnej węzłówce jest marnowane. 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 ułożone według prostokąta otaczającego potrzebują 9 — uczciwą miarą jest liczba arkuszy dla tych samych elementów, a nie procent gęstości (prostokąt otaczający pokazuje wyższą gęstość dla gorszego wyniku).
Co wysyłasz i co wraca
Wysyłasz każdy element jako obrys wielokąta (z opcjonalnymi otworami wewnętrznymi) i ilość, plus arkusze materiału. Odpowiedź podaje rozmieszczenie każdej sztuki jako transformację sztywną — obrót w stopniach, potem przesunięcie x/y — a nie ponownie wyemitowany wielokąt: obróć swój obrys wejściowy i dodaj przesunięcie, by dokładnie odtworzyć rozmieszczenie. Zwraca też liczbę arkuszy, gęstość dla arkusza i łączną oraz elementy, które się nie zmieściły — a dla każdego arkusza pozycję materiału, z której został wycięty, długość cięcia (kontur, który pokonuje wiązka, obrysy i otwory) i liczbę przebić, a stockUsage sumuje arkusze i cenę dla każdego rozmiaru arkusza. Podaj kilka rozmiarów arkuszy, a nesting porówna je — według powierzchni arkusza albo według ceny z minimizeCost — i może je mieszać tam, gdzie to tańsze, na przykład przenosząc w połowie pusty ostatni arkusz na mniejszy rozmiar. Poproś o include:["svg","dxf"], a osiągnięty układ wróci jako plik w treści odpowiedzi.
Strefy wykluczeń i obrót ciągły
Dwie rzeczy, których prostokątne API nie wyrazi, przychodzą z silnikiem nestingu. Strefy wykluczeń dla każdego arkusza (stock[].exclusions) trzymają wszystkie elementy z dala od wady, miejsca docisku albo zadrukowanego obszaru — strefa quality 0 to twardy obszar zakazu. Obrót może być ciągły (dowolny kąt) albo z listy dyskretnych; options.minSeparation ustawia odstęp między elementami (szerokość wiązki), a options.edgeClearance odległość od krawędzi arkusza, więc te dwie wartości mogą się różnić. Układ jest deterministyczny: ustaw options.seed, a to samo zapytanie zwróci ten sam nesting.
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ą arkuszy 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 dla cięcia laserem?
POST /v1/optimize/nest. Wysyłasz każdy element jako obrys wielokąta (z opcjonalnymi otworami) oraz arkusze, a w odpowiedzi dostajesz ułożony nesting, rozmieszczenie każdej sztuki i liczbę arkuszy. To geometryczny silnik kolizji, inna klasa algorytmów niż prostokątny pakownik gilotynowy, i działa w produkcji już dziś.Czym nesting kształtów rzeczywistych różni się od pakowania prostokątów?
Czy może ominąć uszkodzony obszar lub miejsce docisku na arkuszu?
stock[].exclusions) — wielokąty, od których silnik trzyma elementy z daleka. Strefa quality 0 to twardy obszar zakazu dla każdego elementu, więc możesz ułożyć nesting wokół wady, miejsca docisku albo zadrukowanego obszaru. Tego prostokątne API nie potrafi wyrazić.Czy mogę bezpłatnie walidować zapytania w trakcie integracji?
POST /v1/validate/nest sprawdza schemat tego samego ciała, które przyjmuje endpoint nestingu, bez rozwiązywania — za darmo, bez klucza API i bez limitu — więc zespół może potwierdzić poprawność danych w trakcie budowy integracji. Samo Engine API ma 14-dniowy okres próbny.Czy zwraca długość cięcia i liczbę przebić?
cutLength — sumę obwodów obrysów i otworów rozmieszczonych elementów, w Twojej jednostce — oraz pierces, po jednym na zamknięty kontur; metrics sumuje oba. To geometryczna długość konturu: cięcie wspólną linią, wejścia i mikrołączniki nie są wliczone, bo dokłada je CAM Twojej maszyny, więc to solidna podstawa do czasu maszynowego i gazu, a nie ostateczna ścieżka narzędzia.Czy mój system wycen może naliczać tylko zużytą część arkusza?
usedWidth i usedHeight — najdalszy punkt, do którego sięgają jego rozmieszczone elementy od początku arkusza, w Twojej jednostce — oraz usedArea, czyli ich iloczyn (stockUsage sumuje to dla każdego rozmiaru arkusza). Cięcie poziome to usedHeight × szerokość arkusza, cięcie pionowe usedWidth × wysokość arkusza, a prostokąt otaczający to usedArea. Oba silniki domyślnie zagęszczają też najmniej zapełniony arkusz w stronę tego narożnika, próbując podzbiorów obrotów dozwolonych dla każdego elementu i nigdy nowego kąta, bez zmiany liczby arkuszy, ceny ani rozmieszczonych elementów; options.compact: false to wyłącza. Jeśli naliczasz pas zamiast prostokąta, options.compactFor: "horizontal" zachowuje najmniejszą użytą wysokość, a "vertical" najmniejszą użytą szerokość. Jak mała będzie użyta powierzchnia, zależy od elementów.