API do cięcia tarcicy i drewna konstrukcyjnego
Tak — istnieje API do cięcia drewna konstrukcyjnego na długość. Docinanie belek, krokwi, słupków, łat i desek na długość to problem optymalnego rozkroju 1D z dodatkową regułą, którą zwykłe cięcie liniowe pomija: przekrój musi się zgadzać. Element 50×150 nie powstanie z pręta 50×100. CutOptim Engine API rozwiązuje to przez HTTP pod adresem POST /v1/optimize/wood — Twój system ERP, oprogramowanie do wycen albo skład drewna wysyła listę cięć i dostępny materiał jako JSON, a w odpowiedzi dostaje zoptymalizowany plan cięcia, dopasowany i rozwiązany osobno dla każdego przekroju, z liczbą prętów i wykorzystaniem.
To osobny tryb, a nie nakładka na /v1/optimize/1d: liniowe 1D traktuje każdy pręt jako zamienny, a drewno ma tożsamość — przekrój musi się zgadzać. Wysyłanie N pogrupowanych zapytań 1D kosztuje N wywołań za jedno zlecenie, przerzuca dopasowanie materiału na Ciebie i daje sumę, która nie zgadza się z tym, co pokazuje aplikacja. Ten endpoint sam dopasowuje i zwraca całe zlecenie jednym wywołaniem, osobno dla każdego przekroju i łącznie.
{
"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 }
}- Działa już dziś na
POST /v1/optimize/wood— ten sam silnik co w aplikacji, świadomy przekroju. - Przekroje są dopasowywane i rozwiązywane niezależnie: element 50×150 jest cięty tylko z materiału 50×150.
- sections[] niesie pręty, sumy i plan cięcia dla każdego przekroju; unmatched zgłasza zapotrzebowanie bez żadnego materiału.
- Deterministyczny i z przypiętą wersją — odtworzysz ofertę na cięcie do audytu lub powtórnego zamówienia.
- Zgłaszana resztka to użyteczny odcinek — szerokość rzazu jest już odjęta (dla każdego pręta).
- Bezpłatna walidacja:
POST /v1/validate/woodsprawdza zlecenie bez klucza i bez limitu.
Dlaczego potrzebują tego stolarze i składy drewna
Drewno konstrukcyjne kupuje się w długich odcinkach i tnie na wiele elementów, a cięcie w kolejności z listy zostawia krótką resztkę na prawie każdym odcinku. Optymalizator świadomy przekroju rozkłada cięcia w obrębie każdego przekroju tak, by każdy wymagał jak najmniej odcinków. W procesie wyceny, w ERP albo w punkcie sprzedaży API robi to automatycznie przy każdym zleceniu — skład budowlany może wycenić i zaplanować usługę cięcia wprost z zamówienia, a plan zgadza się z tym, co skład faktycznie tnie.
Dopasowanie przekroju — ta część problemu, którą 1D pomija
Każdy element i każda pozycja magazynowa ma dwa boki przekroju, sw i sh, w dowolnej kolejności (50×150 i 150×50 to ta sama belka obrócona na drugi bok). Silnik dzieli zlecenie według przekroju, dopasowuje każdy element tylko do materiału o zgodnym przekroju i rozwiązuje każdy przekrój niezależnie. Odpowiedź wraca jako sections[], każda z własnymi prętami, własnymi sumami i własnym planem cięcia, plus metryki całego zlecenia — a zapotrzebowanie, dla którego dany przekrój w ogóle nie ma materiału, jest zgłaszane osobno w unmatched, odrębnie od elementów, które miały materiał, ale się nie zmieściły, bo naprawa jest inna.
Deterministyczny — odtwarzalny dla ofert i audytów
To samo zapytanie zawsze zwraca ten sam plan cięcia: żadnej losowości, żadnego zegara w algorytmie. Ofertę na cięcie zbudowaną na wywołaniu API można odtworzyć po miesiącach — do audytu albo powtórnego zamówienia — a wyniki da się buforować i porównywać w testach. Zgłaszana resztka każdego pręta to użyteczny odcinek — szerokość rzazu jest już odjęta — a dowolny dołączony obiekt meta (numer artykułu, pozycja zamówienia) wraca przy każdym rozmieszczonym cięciu, więc plan uzgadnia się z Twoim systemem.
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 cięcia tarcicy i drewna konstrukcyjnego?
POST /v1/optimize/wood. Wysyłasz listę cięć i materiał jako JSON, każde z dwoma bokami przekroju, a w odpowiedzi dostajesz zoptymalizowany plan cięcia dopasowany i rozwiązany osobno dla każdego przekroju, z liczbą prętów, wykorzystaniem i użytecznymi resztkami. To ten sam silnik, który napędza aplikację, przez HTTP.Dlaczego nie użyć po prostu endpointu 1D dla drewna?
Co dzieje się z elementem, którego przekroju nie ma na stanie?
POST /v1/validate/wood, bez klucza i bez limitu.Czy uwzględnia szerokość rzazu i docinanie czół?
options.kerf to szerokość tarczy piły, odejmowana przy każdym cięciu; options.trim.start i options.trim.end rezerwują docięcie czoła na każdym końcu odcinka. Zgłaszana resztka każdego pręta to użyteczny odcinek po uwzględnieniu obu, a options.minOffcut raportuje tylko resztki na tyle długie, by je zachować. Te same opcje dotyczą każdego przekroju w zleceniu.Czy może planować tylko z drewna, które mam na składzie?
options.respectStock, a ilość każdej pozycji magazynowej staje się twardym limitem, przekrój po przekroju. Elementy, które mają pasujący materiał, ale się nie mieszczą, wracają w unplaced, a elementy, których przekroju nie ma na stanie w ogóle, wracają w unmatched, więc plan mówi, czy ciąć dłuższe odcinki, czy dokupić brakujący przekrój.