Rabat
Skąd wziąć kod rabatowy? Poszukaj na facebook'u
OK
Oszczędzaj materiał, czas i pieniądze
Napędzany przez Sztuczną Inteligencję

Program TonCut służy do optymalizacji rozkroju materiałów płaskich (2D) i podłużnych (1D), np.: szyb, drewna, płyt, kamienia, blachy, aluminium, plexi, kartonu, rur, belek, itp.

Do czego służy TonCut for Automation i jak można go używać?

TonCut for Automation służy do optymalizacji rozkroju materiałów 1D i 2D. Nie posiada on jednak interfejsu użytkownika. Dane do optymalizacji dostarcza się do niego w formacie JSON. Wyniki generowane są również w tym formacie.

Program może być używany wsadowo lub jako serwer Websocket. Dzięki prostemu i czytelnemu formatowi danych można go łatwo integrować z innymi systemami. W trybie serwerowym, bardzo proste API dodatkowo zwiększa możliwości integracyjne.

Dla serwerów

TonCut for Automation może być uruchomiony jako usługa Windows. Wtedy można się z nim połączyć za pomocą protokołu Websocket (ws) lub Websocket Secure (wss).

Wsadowo

Program może być również używany z linii komend jako narzędzie wsadowe. Wtedy dane wejściowe dostarcza się do programu za pomocą plików lub standardowego wejścia. Wyniki mogą być wypisane na standardowe wyjście lub do pliku.

Prosty i czytelny format danych

Dane wejściowe

{
  "version": 1,
  "defaultUnits": {
    "time": "s",
    "percent": "%",
    "length": "mm",
    "field": "sqmm",
    "angle": "deg"
  },
  "devices": [
    {
      "id": 1,
      "title": "Urządzenie 2D",
      "materialKind": "2d",
      "canCrossCuts": false,
      "fullCutsOnly": true,
      "stripCuts": true,
      "minCutWidth": 0,
      "edgingCuts": "optimal",
      "originEdgingCuts": "default",
      "firstCutDirection": "any"
    }
  ],
  "materials": [
    {
      "id": 1,
      "deviceId": 1,
      "title": "Materiał 2D",
      "kind": "2d",
      "thickness": 18,
      "canHaveStructure": true,
      "surplus": 0,
      "surplusEditable": true,
      "margin": 0,
      "marginEditable": true,
      "defaultEdging": 0,
      "cuttingDimensions": "net",
      "canBeVeneered": true,
      "kerf": 3,
      "allowEdgeCuts": true,
      "reuseWaste": {
        "minShorterLength": 200,
        "minLongerLength": 200
      }
    }
  ],
  "pieces": [
    {
      "id": 1,
      "materialId": 1,
      "length": 922,
      "width": 688,
      "quantity": 10,
      "structure": ["byLength", "byWidth", "none"],
      "priority": "normal",
      "description": "",
      "surplus": 0,
      "margin": 0
    },
    {
      "id": 2,
      "materialId": 1,
      "length": 1220,
      "width": 740,
      "quantity": 20,
      "structure": ["byLength", "byWidth", "none"],
      "priority": "normal",
      "description": "",
      "surplus": 0,
      "margin": 0
    }
  ],
  "stock": [
    {
      "id": 1,
      "materialId": 1,
      "length": 3210,
      "width": 2245,
      "quantity": 1,
      "structure": "none",
      "priority": "normal",
      "description": "",
      "edging": {
          "left": 20,
          "right": 20,
          "top": 20,
          "bottom": 20
      }
    }
  ]
}
        

Wyniki

{
  "version": 2,
  "units": {
    "length": "mm",
    "field": "sqm",
    "angle": "rad"
  },
  "statistics": {
    "2d": {
      "field": 7.20645,
      "usedField": 6.514416,
      "wasteField": 0.692034,
      "unusedField": 0,
      "cutCount": 20,
      "cutsLength": 21335
    },
    "1d": {
      "length": 0,
      "usedLength": 0,
      "wasteLength": 0,
      "unusedLength": 0,
      "cutCount": 0,
      "cutsLength": 0
    }
  },
  "cuttings": [
    {
      "stockItemId": 1,
      "quantity": 1,
      "statistics": {
        "2d": {
          "field": 7.20645,
          "usedField": 6.514416,
          "wasteField": 0.692034,
          "unusedField": 0,
          "cutCount": 20,
          "cutsLength": 21335
        }
      },
      "pieces": [
        {
          "pieceId": 1,
          "x": 23,
          "y": 23,
          "rotated": false
        },
        {
          "pieceId": 1,
          "x": 23,
          "y": 714,
          "rotated": false
        },
        {
          "pieceId": 1,
          "x": 23,
          "y": 1405,
          "rotated": false
        },
        {
          "pieceId": 2,
          "x": 948,
          "y": 23,
          "rotated": true
        },
        {
          "pieceId": 2,
          "x": 1691,
          "y": 23,
          "rotated": true
        },
        {
          "pieceId": 2,
          "x": 2434,
          "y": 23,
          "rotated": true
        },
        {
          "pieceId": 1,
          "x": 948,
          "y": 1246,
          "rotated": true
        },
        {
          "pieceId": 1,
          "x": 1639,
          "y": 1246,
          "rotated": true
        },
        {
          "pieceId": 1,
          "x": 2330,
          "y": 1246,
          "rotated": true
        }
      ],
      "rest": [
        {
          "x": 0,
          "y": 2096,
          "length": 945,
          "width": 149,
          "identifier": "",
          "usable": false
        },
        {
          "x": 3177,
          "y": 0,
          "length": 33,
          "width": 1243,
          "identifier": "",
          "usable": false
        },
        {
          "x": 948,
          "y": 2171,
          "length": 1379,
          "width": 74,
          "identifier": "",
          "usable": false
        },
        {
          "x": 2330,
          "y": 2171,
          "length": 688,
          "width": 74,
          "identifier": "",
          "usable": false
        },
        {
          "x": 3021,
          "y": 1246,
          "length": 189,
          "width": 999,
          "identifier": "",
          "usable": false
        },
        {
          "x": 0,
          "y": 0,
          "length": 945,
          "width": 20,
          "identifier": "",
          "usable": false
        },
        {
          "x": 948,
          "y": 0,
          "length": 740,
          "width": 20,
          "identifier": "",
          "usable": false
        },
        {
          "x": 1691,
          "y": 0,
          "length": 740,
          "width": 20,
          "identifier": "",
          "usable": false
        },
        {
          "x": 2434,
          "y": 0,
          "length": 740,
          "width": 20,
          "identifier": "",
          "usable": false
        },
        {
          "x": 0,
          "y": 23,
          "length": 20,
          "width": 688,
          "identifier": "",
          "usable": false
        },
        {
          "x": 0,
          "y": 714,
          "length": 20,
          "width": 688,
          "identifier": "",
          "usable": false
        },
        {
          "x": 0,
          "y": 1405,
          "length": 20,
          "width": 688,
          "identifier": "",
          "usable": false
        }
      ],
      "cuts": [
        {
          "startX": 948,
          "startY": 0,
          "endX": 948,
          "endY": 2245
        },
        {
          "startX": 0,
          "startY": 23,
          "endX": 948,
          "endY": 23
        },
        {
          "startX": 0,
          "startY": 714,
          "endX": 948,
          "endY": 714
        },
        {
          "startX": 23,
          "startY": 23,
          "endX": 23,
          "endY": 714
        },
        {
          "startX": 0,
          "startY": 1405,
          "endX": 948,
          "endY": 1405
        },
        {
          "startX": 23,
          "startY": 714,
          "endX": 23,
          "endY": 1405
        },
        {
          "startX": 0,
          "startY": 2096,
          "endX": 948,
          "endY": 2096
        },
        {
          "startX": 23,
          "startY": 1405,
          "endX": 23,
          "endY": 2096
        },
        {
          "startX": 948,
          "startY": 1246,
          "endX": 3210,
          "endY": 1246
        },
        {
          "startX": 1691,
          "startY": 0,
          "endX": 1691,
          "endY": 1246
        },
        {
          "startX": 948,
          "startY": 23,
          "endX": 1691,
          "endY": 23
        },
        {
          "startX": 2434,
          "startY": 0,
          "endX": 2434,
          "endY": 1246
        },
        {
          "startX": 1691,
          "startY": 23,
          "endX": 2434,
          "endY": 23
        },
        {
          "startX": 3177,
          "startY": 0,
          "endX": 3177,
          "endY": 1246
        },
        {
          "startX": 2434,
          "startY": 23,
          "endX": 3177,
          "endY": 23
        },
        {
          "startX": 2330,
          "startY": 1246,
          "endX": 2330,
          "endY": 2245
        },
        {
          "startX": 948,
          "startY": 2171,
          "endX": 2330,
          "endY": 2171
        },
        {
          "startX": 1639,
          "startY": 1246,
          "endX": 1639,
          "endY": 2171
        },
        {
          "startX": 3021,
          "startY": 1246,
          "endX": 3021,
          "endY": 2245
        },
        {
          "startX": 2330,
          "startY": 2171,
          "endX": 3021,
          "endY": 2171
        }
      ]
    }
  ]
}
        

Proste i łatwe API

Wersja serwerowa pozwala na komunikację za pomocą prostego i łatwego API działającego w oparciu o protokół Websocket.

Wszystkie wiadomości wymieniane między serwerem a klientem są zapisane w formacie JSON.

Przykładowa komenda:
{ "cmd":"cmdListJobs","id":9222}
        
Przykładowa odpowiedź:
{ "id":9222,"jobs":[{ "id":1,"state":"sDone","progress":100,"combinationCount":1042885,"createDate":"2023-04-18T12:31:43.133+02:00","startDate":"2023-04-18T12:31:43.166+02:00","endDate":"2023-04-18T12:31:44.739+02:00"}],"success":true}
        
Przykładowe zdarzenie:
{ "event":"JobProgress","jobId":1,"progress":74,"combinationCount":668878}
        

Rodzaje wiadomości

Komendy wysyłane są do serwera. Przykładowe komendy to np. "dodaj zadanie", "pobierz listę zadań", "pobierz status", "pobierz dane zadania", itp.

Serwer przysyła odpowiedzi do klienta. W zależności od rodzaju komendy, odpowiedź może mieć różny format.

Serwer wysyła też, sam z siebie, różne zdarzenia, np. "dodanie zadania", "postęp optymalizacji", "zakończenie optymalizacji", itp.

Kolejka zadań

Program wykonuje tylko jedną optymalizację w danej chwili. W tym czasie może przyjmować nowe zadania do optymalizacji, ale będą one kolejkowane i wykonywane w kolejności, w jakiej zostały dodane.

Zadania

Zadanie, to pojedyncze zlecenie optymalizacyjne. Zadania są niezależne od siebie - zawierają pełen zestaw danych wejściowych, tj. elementy, zasoby, grupy materiałowe, okleiny i urządzenia tnące.

Wyniki

Wyniki zawierają wszystkie rozkroje. Każdy rozkrój zawiera ułożenie elementów i odpadu, oraz listę cięć.

Pobierz TonCut for Automation

TonCut for Automation

1.1.1.1409

  • Wykorzystanie sztucznej inteligencji w celu uzyskania jeszcze lepszych wyników optymalizacji.
  • Wykorzystanie pełnej mocy komputera, poprzez używanie wszystkich rdzeni procesora.
  • Możliwość pracy w trybie wsadowym.
  • Możliwość pracy jako usługa Windows (Websocket API).
  • Proste API w formacie JSON.
  • Optymalizacja rozkroju materiałów 2D i 1D.
  • Cięcie 1D ze skosami.
  • Cięcie w stosie.
  • Wsparcie dla okleinowania.
  • Obsługa wielu grup materiałowych i urządzeń tnących.

W celu aktualizacji programu wystarczy zainstalować nową wersję. Nie należy odinstalowywać starej wersji programu przed aktualizacją!

Potrzebujesz więcej informacji?

Ceny już od 34.99 zł. Wybierz odpowiednią wersję i okres licencji dla siebie. Sprawdź ceny
Już wszystko wiesz? Zapraszamy do naszego sklepu! Kup teraz Sprawdź jak kupować
Zapoznaj się z dokumentacją TonCut for Automation, aby dowiedzieć się więcej. Dowiedz się więcej
Polub nas na Facebooku
Zapisz się do newslettera