天筹求解器服务 OPTVERSE-二维异形件服装切割

时间:2024-06-29 14:59:24

二维异形件服装切割

场景描述

服装切割是指将服装裁片放置在布料上,使得使用的布料最少,以最大化布料利用率。通常情况下,布料的宽度是固定的,优化的目标是最小化使用长度。

准备工作

  • 已注册华为云账号,且账号不能处于欠费或者冻结状态,获取项目ID
  • 获取Token
  • 获取EndPoint

步骤一:导入服装切割数据

使用第三方软件集成服务商(比如ET、BOKE)客户端软件生成服装切割数据文件,上传到华为云服装切割服务。需要至少包含以下字段:排版时间、布料宽度、裁片形状、裁片可旋转角度以及其他排版约束等。

{
    "input_json": {
        "id": "fu",
        "order": "fu",
        "name": "fu",
        "time": 1,
        "gap_mode": 0,
        "overlap": 0,
        "fabric": {
            "width": 38,
            "grid_x": 0,
            "grid_y": 0
        },
        "polygon": [
            {
                "index": 0,
                "profile": [
                    0.0,
                    0.0,
                    10.0,
                    0.0,
                    10.0,
                    10.0,
                    0.0,
                    10.0
                ]
            },
            {
                "index": 1,
                "profile": [
                    0.0,
                    0.0,
                    10.0,
                    0.0,
                    10.0,
                    10.0,
                    0.0,
                    10.0
                ]
            },
            {
                "index": 2,
                "profile": [
                    0.0,
                    0.0,
                    14.0,
                    0.0,
                    14.0,
                    9.0,
                    0.0,
                    9.0
                ]
            },
            {
                "index": 3,
                "profile": [
                    0.0,
                    0.0,
                    14.0,
                    0.0,
                    7.0,
                    7.0
                ]
            },
            {
                "index": 4,
                "profile": [
                    0.0,
                    9.0,
                    0.0,
                    0.0,
                    14.0,
                    9.0
                ]
            },
            {
                "index": 5,
                "profile": [
                    0.0,
                    0.0,
                    14.0,
                    0.0,
                    14.0,
                    14.0,
                    0.0,
                    14.0
                ]
            },
            {
                "index": 6,
                "profile": [
                    0.0,
                    0.0,
                    10.0,
                    4.0,
                    10.0,
                    9.0,
                    0.0,
                    9.0
                ]
            },
            {
                "index": 7,
                "profile": [
                    0.0,
                    0.0,
                    5.0,
                    0.0,
                    5.0,
                    9.0,
                    0.0,
                    9.0
                ]
            },
            {
                "index": 8,
                "profile": [
                    0.0,
                    0.0,
                    14.0,
                    0.0,
                    14.0,
                    14.0
                ]
            },
            {
                "index": 9,
                "profile": [
                    0.0,
                    0.0,
                    10.0,
                    0.0,
                    10.0,
                    10.0,
                    0.0,
                    14.0
                ]
            },
            {
                "index": 10,
                "profile": [
                    0.0,
                    8.0,
                    4.0,
                    0.0,
                    8.0,
                    8.0
                ]
            },
            {
                "index": 11,
                "profile": [
                    0.0,
                    0.0,
                    14.0,
                    0.0,
                    7.0,
                    12.0
                ]
            }
        ],
        "piece": [
            {
                "id": 0,
                "polygon_index": 0,
                "gap_index": -1,
                "hole_index": -1,
                "tilted": 0,
                "gap": 0,
                "pose_group": -1,
                "column_group": -1,
                "rot": 90,
                "flip_x": 0,
                "flip_y": 0,
                "remark": "no Y constraints",
                "y": []
            },
            {
                "id": 1,
                "polygon_index": 1,
                "gap_index": -1,
                "hole_index": -1,
                "tilted": 0,
                "gap": 0,
                "pose_group": -1,
                "column_group": -1,
                "rot": 90,
                "flip_x": 0,
                "flip_y": 0,
                "remark": "no Y constraints",
                "y": []
            },
            {
                "id": 2,
                "polygon_index": 2,
                "gap_index": -1,
                "hole_index": -1,
                "tilted": 0,
                "gap": 0,
                "pose_group": -1,
                "column_group": -1,
                "rot": 90,
                "flip_x": 0,
                "flip_y": 0,
                "remark": "no Y constraints",
                "y": []
            },
            {
                "id": 3,
                "polygon_index": 3,
                "gap_index": -1,
                "hole_index": -1,
                "tilted": 0,
                "gap": 0,
                "pose_group": -1,
                "column_group": -1,
                "rot": 90,
                "flip_x": 0,
                "flip_y": 0,
                "remark": "no Y constraints",
                "y": []
            },
            {
                "id": 4,
                "polygon_index": 4,
                "gap_index": -1,
                "hole_index": -1,
                "tilted": 0,
                "gap": 0,
                "pose_group": -1,
                "column_group": -1,
                "rot": 90,
                "flip_x": 0,
                "flip_y": 0,
                "remark": "no Y constraints",
                "y": []
            },
            {
                "id": 5,
                "polygon_index": 5,
                "gap_index": -1,
                "hole_index": -1,
                "tilted": 0,
                "gap": 0,
                "pose_group": -1,
                "column_group": -1,
                "rot": 90,
                "flip_x": 0,
                "flip_y": 0,
                "remark": "no Y constraints",
                "y": []
            },
            {
                "id": 6,
                "polygon_index": 6,
                "gap_index": -1,
                "hole_index": -1,
                "tilted": 0,
                "gap": 0,
                "pose_group": -1,
                "column_group": -1,
                "rot": 90,
                "flip_x": 0,
                "flip_y": 0,
                "remark": "no Y constraints",
                "y": []
            },
            {
                "id": 7,
                "polygon_index": 7,
                "gap_index": -1,
                "hole_index": -1,
                "tilted": 0,
                "gap": 0,
                "pose_group": -1,
                "column_group": -1,
                "rot": 90,
                "flip_x": 0,
                "flip_y": 0,
                "remark": "no Y constraints",
                "y": []
            },
            {
                "id": 8,
                "polygon_index": 8,
                "gap_index": -1,
                "hole_index": -1,
                "tilted": 0,
                "gap": 0,
                "pose_group": -1,
                "column_group": -1,
                "rot": 90,
                "flip_x": 0,
                "flip_y": 0,
                "remark": "no Y constraints",
                "y": []
            },
            {
                "id": 9,
                "polygon_index": 9,
                "gap_index": -1,
                "hole_index": -1,
                "tilted": 0,
                "gap": 0,
                "pose_group": -1,
                "column_group": -1,
                "rot": 90,
                "flip_x": 0,
                "flip_y": 0,
                "remark": "no Y constraints",
                "y": []
            },
            {
                "id": 10,
                "polygon_index": 10,
                "gap_index": -1,
                "hole_index": -1,
                "tilted": 0,
                "gap": 0,
                "pose_group": -1,
                "column_group": -1,
                "rot": 90,
                "flip_x": 0,
                "flip_y": 0,
                "remark": "no Y constraints",
                "y": []
            },
            {
                "id": 11,
                "polygon_index": 11,
                "gap_index": -1,
                "hole_index": -1,
                "tilted": 0,
                "gap": 0,
                "pose_group": -1,
                "column_group": -1,
                "rot": 90,
                "flip_x": 0,
                "flip_y": 0,
                "remark": "no Y constraints",
                "y": []
            }
        ],
        "hole": [],
        "constraints": {}
    }
}

步骤二:查询服装切割结果

待切割排版任务完成后,查询排版结果。华为云服装排版服务将返回json格式排版结果文件,可以通过第三方软件服务商展示排版结果,生成适配切割机的切割文件。

{
    "task_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "status": "finished",
    "start_time": "",
    "end_time": "",
    "output_json": {
        "gap_mode": 0,
        "id": "fu",
        "length": 14.0,
        "name": "fu",
        "order": "fu",
        "pieces": [
            {
                "angle": 180.0,
                "box": [
                    {
                        "x": 1.110223024560533e-16,
                        "y": 188.54000844217342
                    },
                    {
                        "x": 10.0,
                        "y": 202.54000844217342
                    }
                ],
                "flip_x": 0,
                "flip_y": 0,
                "id": 9
            },
            {
                "angle": 90.0,
                "box": [
                    {
                        "x": 1.110223024560533e-16,
                        "y": 180.54018862422214
                    },
                    {
                        "x": 9.0,
                        "y": 190.54018862422214
                    }
                ],
                "flip_x": 0,
                "flip_y": 0,
                "id": 6
            },
            {
                "angle": 90.0,
                "box": [
                    {
                        "x": 1.1102230246251565e-16,
                        "y": 251.65141900241923
                    },
                    {
                        "x": 9.0,
                        "y": 265.65141900241923
                    }
                ],
                "flip_x": 0,
                "flip_y": 0,
                "id": 2
            },
            {
                "angle": 0.0,
                "box": [
                    {
                        "x": 1.110223024560533e-16,
                        "y": 216.54000844217342
                    },
                    {
                        "x": 5.0,
                        "y": 225.54000844217342
                    }
                ],
                "flip_x": 0,
                "flip_y": 0,
                "id": 7
            },
            {
                "angle": 180.0,
                "box": [
                    {
                        "x": 1.1101552619893762e-16,
                        "y": 24.0
                    },
                    {
                        "x": 8.0,
                        "y": 32.0
                    }
                ],
                "flip_x": 0,
                "flip_y": 0,
                "id": 10
            },
            {
                "angle": 270.0,
                "box": [
                    {
                        "x": 5.551115123125783e-17,
                        "y": 0.0
                    },
                    {
                        "x": 10.0,
                        "y": 10.0
                    }
                ],
                "flip_x": 0,
                "flip_y": 0,
                "id": 1
            },
            {
                "angle": 90.0,
                "box": [
                    {
                        "x": 0.0,
                        "y": 10.0
                    },
                    {
                        "x": 12.0,
                        "y": 24.0
                    }
                ],
                "flip_x": 0,
                "flip_y": 0,
                "id": 11
            },
            {
                "angle": 90.0,
                "box": [
                    {
                        "x": 1.1102230246251565e-16,
                        "y": 237.65161696798242
                    },
                    {
                        "x": 14.0,
                        "y": 251.65161696798242
                    }
                ],
                "flip_x": 0,
                "flip_y": 0,
                "id": 5
            },
            {
                "angle": 180.0,
                "box": [
                    {
                        "x": 1.1102230246251565e-16,
                        "y": 49.51013170928303
                    },
                    {
                        "x": 10.0,
                        "y": 59.51013170928303
                    }
                ],
                "flip_x": 0,
                "flip_y": 0,
                "id": 0
            },
            {
                "angle": 270.0,
                "box": [
                    {
                        "x": 1.110223024560533e-16,
                        "y": 202.54000844217342
                    },
                    {
                        "x": 7.0,
                        "y": 216.54000844217342
                    }
                ],
                "flip_x": 0,
                "flip_y": 0,
                "id": 3
            },
            {
                "angle": 270.0,
                "box": [
                    {
                        "x": 1.1102230163533504e-16,
                        "y": 25.020263418566074
                    },
                    {
                        "x": 9.0,
                        "y": 39.020263418566074
                    }
                ],
                "flip_x": 0,
                "flip_y": 0,
                "id": 4
            },
            {
                "angle": 0.0,
                "box": [
                    {
                        "x": 1.110214554295684e-16,
                        "y": 166.54018862422214
                    },
                    {
                        "x": 14.0,
                        "y": 180.54018862422214
                    }
                ],
                "flip_x": 0,
                "flip_y": 0,
                "id": 8
            }
        ],
        "ratio": 1.265e-321,
        "time": 1
    }
}
support.huaweicloud.com/usermanual-optverse/optverse_03_0302.html