自动化TonCut用于1D和2D材料的切割优化。 该程序还允许高级真实形状嵌套。 但是,它没有用户界面。用于优化的数据以JSON格式传送给Toncut。生成的结果也是这种格式。
该程序可以在批处理模式下使用,也可作为Websocket服务器。 由于数据格式简单清晰,易于与其他系统集成。 在服务器模式下,一个非常简单的API扩展了集成的可能性。
自动化TonCut可作为Windows服务运行。在这种情况下,可以通过Websocket (ws)或Websocket Secure (wss)协议进行连接。
该程序也可以作为批处理工具从命令行启动。在这种情况下,通过文件或标准输入将输入数据提供给程序。 结果可以写成标准输出或文件。
{ "version": 3, "defaultUnits": { "time": "s", "percent": "%", "length": "mm", "field": "sqmm", "angle": "deg" }, "devices": [ { "id": 1, "title": "2D设备", "materialKind": "2d", "canCutAnyShapes": true, "minCutWidth": 30, "edgingCuts": "optimal", "originEdgingCuts": "default" } ], "materials": [ { "id": 1, "deviceId": 1, "title": "2D 材料", "kind": "2d", "thickness": 18, "surplus": 0, "margin": 0, "defaultEdging": 0, "cuttingDimensions": "net", "canHaveStructure": true, "canBeVeneered": true, "canRotate": true, "canMirror": true, "kerf": 3, "allowEdgeCuts": true, "reuseWaste": { "enabled": true, "minLongerLength": 200, "minShorterLength": 200, "prefLongerLength": 600, "prefShorterLength": 600 } } ], "pieces": [ { "id": 1, "materialId": 1, "length": 300, "width": 500, "quantity": 5, "structure": ["byLength", "byWidth", "none"], "priority": "critical", "rotationStep": "30deg", "description": "", "surplus": 0, "margin": 0 }, { "id": 2, "materialId": 1, "length": 1220, "width": 740, "quantity": 1, "structure": ["byLength", "byWidth", "none"], "priority": "normal", "rotationStep": "30deg", "description": "", "surplus": 0, "margin": 0 }, { "id": 3, "materialId": 1, "quantity": 2, "structure": ["byLength", "byWidth", "none"], "priority": "critical", "rotationStep": "30deg", "surplus": 0, "shapeType": "any", "shape": { "format": "svg-path", "scale": 10, "path": "M 6593.5735,15977.848 4686.6782,9466.5001 17754.607,11543.287 Z" } }, { "id": 4, "materialId": 1, "length": 900, "width": 700, "quantity": 1, "structure": ["byLength", "byWidth", "none"], "surplus": 0, "rotationStep": "30deg", "shapeType": "L", "shape": { "vertLength": 500, "horzLength": 300, "recessedCorner": "topLeft" } }, { "id": 5, "materialId": 1, "length": 500, "width": 300, "quantity": 8, "structure": ["byLength", "byWidth", "none"], "surplus": 0, "rotationStep": "30deg", "shapeType": "trapezoid", "shape": { "leftSlopeLength": 200, "rightSlopeLength": 100 } }, { "id": 6, "materialId": 1, "length": 180, "width": 180, "quantity": 8, "structure": ["byLength", "byWidth", "none"], "surplus": 20, "rotationStep": "30deg", "shapeType": "circle", "shape": { "variant": "3/4" } }, { "id": 7, "length": 900, "width": 900, "quantity": 2, "materialId": 1, "rotationStep": "0deg", "shapeType": "ring", "shape": { "innerRadius": 410 } }, { "id": 8, "materialId": 1, "length": 180, "width": 140, "quantity": 16, "structure": ["byLength", "byWidth", "none"], "rotationStep": "30deg" } ], "stock": [ { "id": 1, "materialId": 1, "length": 2245, "width": 3210, "quantity": 1, "structure": "none", "priority": "normal", "description": "", "edging": { "left": 20, "right": 20, "top": 20, "bottom": 20 }, "defects": [ { "x": 300, "y": 600, "length": 200, "width": 100 } ] }, { "id": 2, "materialId": 1, "length": 2245, "width": 3210, "quantity": 1, "structure": "none", "priority": "low", "description": "", "edging": { "left": 20, "right": 20, "top": 20, "bottom": 20 } } ] }
{ "version": 3, "defaultUnits": { "length": "mm", "field": "sqmm", "angle": "rad" }, "statistics": { "2d": { "field": 7206450, "usedField": 4693641.6838, "wasteField": 2512808.3162, "unusedField": 0, "cutCount": 208, "cutsLength": 58002.780250133845 }, "1d": { "length": 0, "usedLength": 0, "wasteLength": 0, "unusedLength": 0, "cutCount": 0, "cutsLength": 0 } }, "cuttings": [ { "stockItemId": 1, "quantity": 1, "cost": 0, "gain": 0, "statistics": { "2d": { "field": 7206450, "usedField": 4693641.6838, "wasteField": 2512808.3162, "unusedField": 0, "cutCount": 208, "cutsLength": 58002.780250133845 } }, "pieces": [ { "pieceId": 2, "x": 500, "y": 20, "rotation": "0.000000rad", "shape": "M0,0 L122000,0 L122000,74000 L0,74000 Z ", "bbox": { "length": 1220, "width": 740 } }, { "pieceId": 5, "x": 164, "y": 526.97, "rotation": "4.712389rad", "shape": "M0.000238497610553168,-20000 L0.000476995221106336,-40000 L30000,-50000 L30000,0.000357746408553794 Z ", "bbox": { "length": 500, "width": 300 } }, { "pieceId": 5, "x": 2056, "y": 526.97, "rotation": "1.570796rad", "shape": "M-0.000874227785971016,-20000 L-0.00174845557194203,-40000 L-30000.001953125,-50000 L-30000,0.00131134164985269 Z ", "bbox": { "length": 500, "width": 300 } }, { "pieceId": 5, "x": 2372.87, "y": 559.36, "rotation": "2.617994rad", "shape": "M-17320.5078125,10000.0009765625 L-34641.015625,20000.001953125 L-58301.26953125,-980.758666992188 L-15000.001953125,-25980.76171875 Z ", "bbox": { "length": 500, "width": 300 } } ], "rest": [], "cuts": [ { "type": "line", "startX": 500, "startY": 20, "endX": 1720, "endY": 20, "needShift": false }, { "type": "line", "startX": 1720, "startY": 20, "endX": 1720, "endY": 760, "needShift": false }, { "type": "curve", "startX": 1462.42, "startY": 1656, "startXp": 1235.98, "startYp": 1656, "endXp": 1052.42, "endYp": 1472.44, "endX": 1052.42, "endY": 1246, "needShift": false }, { "type": "curve", "startX": 1052.42, "startY": 1246, "startXp": 1052.42, "startYp": 1019.56, "endXp": 1235.98, "endYp": 836, "endX": 1462.42, "endY": 836, "needShift": false } ] } ] }
服务器版本允许使用基于Websocket协议的简易便捷的API进行通信。
服务器和客户端之间交换的所有消息均以JSON格式保存。
示例命令:{ "cmd":"cmdListJobs","id":9222}示例响应:
{ "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}示例事件:
{ "event":"JobProgress","jobId":1,"progress":74,"combinationCount":668878}
命令发送给服务器。示例命令包括"add job"、"get list of jobs"、"get status"、"get job data"等。
服务器发送响应给客户端。 根据命令的类型,响应可能具有不同的格式。
服务器还自行发送各种事件,如"job added"、"optimization progress"、"optimization completed"等。
该程序一次只能执行一次优化。 在此期间,可以接受新的作业优化,但将按照添加的顺序排队并依次执行。
每个作业任务都是一个单独的优化订单。 作业任务是相互独立的,包含一整套输入数据,即工件、库存、材料组、饰面和切割设备。
结果包括所有切割。每次切割包括工件和废料的处理,以及切割列表。
要更新程序,只需安装新版本即可。切勿在升级前卸载旧程序版本!