Przejdź do głównej treści
← CutOptim Engine APIEngine API · nesting · dostępne już dziś

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

POST /v1/optimize/nest
{
  "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, minSeparation dla odstępu między elementami i edgeClearance dla 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/nest sprawdza 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.

Materiał do pobrania
API do nestingu dla lasera — jednostronicowiec

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.

PDF2 stronyBezpłatnie
Pobierz PDF

Najczęstsze pytania

Czy istnieje API do nestingu dla cięcia laserem?
Tak. Nesting kształtów rzeczywistych nieregularnych wielokątów to czwarty tryb CutOptim Engine API, 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?
Prostokątny pakownik układa prostokąty otaczające, więc puste powietrze wewnątrz nieregularnego elementu jest marnowane; nesting kształtów rzeczywistych zazębia faktyczne obrysy we wzajemne wklęsłe kieszenie. Porównywalną miarą jest liczba arkuszy dla tych samych elementów — na reprezentatywnym zleceniu z 272 elementami nesting zużył 6 arkuszy wobec 9 według prostokąta otaczającego. Procent gęstości NIE jest porównywalny między tymi dwoma podejściami, bo pakownik prostokątów liczy powietrze we wcięciach jak materiał i pokazuje wyższą gęstość dla gorszego wyniku.
Czy może ominąć uszkodzony obszar lub miejsce docisku na arkuszu?
Tak. Każdy arkusz materiału może mieć strefy wykluczeń (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?
Tak. 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ć?
Tak. Każdy arkusz niesie 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?
API dostarcza liczby; zasada naliczania zostaje po Twojej stronie. Każdy arkusz niesie 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.

Zastosowanie w obróbce blach (aplikacja) · Benchmarki