Informujemy o nowej wersji programu TonCut Engine. Nowa wersja zawiera następujące zmiany:
Na co zwrócić uwagę przy aktualizacji
- Format JSON ma teraz wersję 4 we wszystkich plikach: wejściowych, konfiguracyjnych i wynikowych. Pliki w wersji 3 są nadal wczytywane tak jak dotąd i nie trzeba ich zmieniać. Wyniki zawierają teraz pole version o wartości 4, dlatego integracje, które sprawdzają w nim wartość 3, muszą przyjmować także 4.
- Priorytet zasobów (priority) jest teraz liczbą od 0 do 100. Im wyższy priorytet, tym wcześniej zasób trafia do rozkroju. Nadal można używać wartości tekstowych "low" (odpowiada 0) i "normal" (odpowiada 10, czyli wartości domyślnej). Wartości spoza zakresu 0–100 są odrzucane. Zmiana nie dotyczy priorytetów elementów.
- Silnik zgłasza teraz błąd i odrzuca dane, które zawierają:
- defekty profili, których algorytm rozkroju liniowego 1D nie obsługuje;
- otwory w zasobach lub odpadach użytkowych, ponieważ żaden z publicznie dostępnych algorytmów nie obsługuje jeszcze otworów;
- dodatnią wartość cutExcess, jeśli wybrano nowy algorytm cięcia gilotynowego lub algorytm cięcia pasami;
- nieprawidłowe wagi elementów.
- Zwykłe arkusze prostokątne są nadal optymalizowane dotychczasowym, sprawdzonym algorytmem. Jeśli arkusz ma defekty albo określono dla niego minimalną odległość od cięć lub krawędzi, silnik automatycznie przełącza się na nowy algorytm cięcia gilotynowego. Wymuszenie dotychczasowego algorytmu dla takiego arkusza kończy się błędem.
- Pole gain jest teraz obliczane jako income − cost.
- Usługa systemu Windows zapisuje teraz logi w profilu konta, na którym działa, w folderze AppData\Roaming\Codeton\TonCutEngine. W przypadku konta domyślnego jest to C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\Codeton\TonCutEngine.
- Komunikaty o postępie wypisywane w konsoli kończą się teraz znakiem powrotu karetki (\r), a nie zaczynają się od niego jak dotąd. Ma to znaczenie dla narzędzi, które analizują tekst wypisywany w konsoli.
Nowe algorytmy
Dodano nowy algorytm cięcia gilotynowego oraz specjalistyczny algorytm cięcia pasami. Oba uwzględniają defekty arkuszy.
Nowe parametry wejściowe
- Każdy zasób może mieć własną cenę za m², która zastępuje cenę ustaloną dla grupy materiałowej.
- W ustawieniach urządzenia tnącego pojawiły się parametry minCutDistance (wcześniej minCutWidth), minCutSize i maxStripeWidth.
- Parametr minEdgeDistance można ustawić dla urządzenia, grupy materiałowej albo pojedynczego zasobu.
- Dla grupy materiałowej można określić maksymalny rozmiar odpadu użytkowego.
- Elementy można oznaczyć jako opcjonalne.
- W ustawieniach kolejności zasobów pojawił się nowy tryb „wszystkie permutacje”.
- Parametr stripCutting przyjmuje wartości "none", "byLength" lub "byWidth".
Nowe pola w wynikach
- Na najwyższym poziomie wyników pojawiły się pola applicationVersion, optimizationDate (czas UTC) i optimizationTimeMs.
- Sekcja statistics.2d zawiera pola technologicalWasteField, edgingWasteField i kerfWasteField, zarówno w podsumowaniu całej optymalizacji, jak i w statystykach każdego rozkroju. Podają osobno powierzchnię odpadu technologicznego, odpadu z brzegowania i odpadu wynikającego z grubości cięcia.
- W cuttings[] pojawiły się pola income i score, dostępne w licencjach Enterprise i Development.
- Odpady użytkowe w cuttings[].rest[] mają pole defects oraz pole holes, które pozostanie puste, dopóki któryś z algorytmów nie zacznie obsługiwać otworów.
Serwer WebSocket
- Pole customData pozwala dołączyć do polecenia cmdAddJob dowolne dane JSON. Serwer odsyła je w każdej odpowiedzi i każdym powiadomieniu dotyczącym tego zadania, także przy każdej aktualizacji postępu, dlatego warto ograniczyć ich rozmiar.
- Klient WebSocket, który wolno odbiera dane, nie blokuje już innych klientów ani bieżącego zadania.
- Serwer rozłącza klienta, który przez 30 s nie odbiera danych (przekroczony limit czasu wysyłania).
Licencje
Licencja Enterprise nie ogranicza już liczby elementów ani liczby zasobów.
Poprawki i usprawnienia
- Algorytm rozkroju liniowego 1D daje lepsze wyniki.
- W rozkroju 1D odpad z grubości cięcia i z brzegowania jest teraz obliczany także przy skosach.
- W rozkroju 1D większe elementy są układane w pierwszej kolejności.
- Odpady nie nachodzą już na cięcia ani na elementy.
- Ograniczenia dotyczące obrotu i odbicia lustrzanego są teraz przestrzegane w każdym przypadku.
- Poprawiono efektywność rozkrojów z jednym elementem, a silnik nie zwraca już pustych rozkrojów.
- Optymalizacja kosztów uwzględnia teraz priorytet zasobów.
- Ulepszono przeszukiwanie rozwiązań: daje lepsze wyniki przy dużej liczbie elementów lub arkuszy, płynniej pokazuje postęp i działa szybciej przy długich listach zasobów oraz w rozkroju 1D wykonywanym dotychczasowym algorytmem dla arkuszy.
- Usunięto błędy, które powodowały awarię silnika przy kształtach niestandardowych w licencji Professional oraz przy grupach zleceń.
- Usunięto wyciek pamięci.