
# 异形件-服装切割
#### 创建任务
创建二维切割-异形件-服装切割任务， 该接口为异步操作，返回任务ID，任务的状态及结果请通过查询任务详情接口获取。
#### URI
POST /v2/{project_id}/optverse/irregular-textile/tasks
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                          |
|:---|:---|:---|:---|
| project_id | 是    | String | 用户项目ID，获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-optverse/optverse_04_0026.html)。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                       |
|:---|:---|:---|:---|
| Content-Type | 是    | String | 该字段填为"application/json"。 |
   
 表3请求Body参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                           |
|:---|:---|:---|:---|
| input_json | 是    | object | 任务输入信息，json格式，具体数据结构参见[表4 IrregularTextileInputJson]。 |
   
 表4IrregularTextileInputJson 
| 参数          | 是否必选 | 参数类型                                                          | 描述                               |
|:---|:---|:---|:---|
| id          | 是    | String                                                        | 任务id，用于取回排料结果时使用。                |
| order       | 是    | String                                                        | 订单名。                             |
| name        | 是    | String                                                        | 此床的名字。                           |
| time_limit  | 是    | Double                                                        | 运行时间，单位：秒，取值范围（0, 1800\]         |
| gap_mode    | 否    | Integer，枚举                                                    | 间隙处理模式。备用，当前不支持。\[0,1\]          |
| overlap     | 否    | Double                                                        | 两列之间交错的程度，0表示整齐的边界；\[0, 100000\] |
| fabric      | 是    | [Array of 表5 objects]    | 面料属性。                            |
| polygon     | 是    | [Array of 表6 objects] | 简单多边形定义。                         |
| piece       | 是    | [Array of 表7 objects]   | 裁片定义。                            |
| hole        | 否    | [Array of 表9 objects]  | 面料瑕疵定义，详细定义见下文。                  |
| constraints | 否    | [Array of 表10 objects]   | 其他约束定义。                          |
   
 表5fabric 
| 参数     | 是否必选 | 参数类型   | 描述                                                         |
|:---|:---|:---|:---|
| width  | 是    | Double | 面料宽度。保留1位小数，若超过将直接进行截断。(0, 100000\]                        |
| grid_x | 否    | Double | 面料x轴防线格子宽度，若无设置为0；保留1位小数，若超过将直接进行截断。备用，当前不支持。\[0, 100000\] |
| grid_y | 否    | Double | 面料y轴方向格子宽度，若无设置为0；保留1位小数，若超过将直接进行截断。备用，当前不支持。\[0, 100000\] |
   
 表6Polygon 
| 参数      | 是否必选 | 参数类型            | 描述                                                                                                         |
|:---|:---|:---|:---|
| index   | 是    | Integer         | 多边形id，从0开始，依次递增。                                                                                           |
| profile | 是    | Array of double | 简单多边形轮廓点，逆时针排序，x、y轴坐标依次排序展开，元素取值范围\[-100000, 100000\]，保留1位小数，超过将直接进行截断；要求元素个数至少为6，且为偶数。\[-100000, 100000\] |
   
 表7Piece 
| 参数            | 是否必选 | 参数类型                                                        | 描述                                                                                                                |
|:---|:---|:---|:---|
| index         | 是    | Integer                                                     | 裁片id，从0开始，依次递增，用于在输出数据gap_index中使用。（\>=0）                                                                         |
| polygon_index | 是    | Integer                                                     | 实体多边形（裁片轮廓）在"polygon"向量中的index。（\>=0）                                                                             |
| gap_index     | 否    | Integer                                                     | 间隔多边形（加上最小间隔的裁片轮廓）在"polygon"向量中的index，-1表示没有间隔。备用，当前不支持。（\>=-1）                                                   |
| hole_index    | 否    | Integer                                                     | 裁片内部孔洞在在"polygon"向量中的index，-1表示没有孔洞。备用，当前不支持。（\>=-1）                                                              |
| tilted        | 否    | Double                                                      | 微小旋转角度，原旋转角度（由属性rot获得）+-此数值后的获得旋转角度也作为裁片可旋转角度。通过此方法获得旋转角度不考虑裁片翻转。0表示禁止旋转；保留1位小数，若超过将直接进行截断。\[0,15\]               |
| gap           | 否    | Double                                                      | 裁片之间的间隔，对于不支持间隔多边形的算法有效；保留1位小数，若超过将直接进行截断。备用，当前不支持。\[0, 100000\]                                                  |
| pose_group    | 否    | Integer                                                     | 姿态Y约束分组标记，-1表示没有姿态Y约束。若有分组，同一组的裁片要求其旋转和翻转集合相同。当前不支持部分裁片分组，部分裁片不分组（\>=-1）                                          |
| column_group  | 否    | Integer                                                     | 列分组标记，-1表示不分列排版。当前不支持部分裁片分组，部分裁片不分组。（\>=-1）                                                                       |
| rot           | 是    | Double 枚举                                                   | 裁片可旋转角度倍数。（0,90,180）                                                                                              |
| flip_x        | 是    | Integer 枚举                                                  | 1表示允许裁片沿x轴翻转，0表示禁止。（0,1）                                                                                          |
| flip_y        | 是    | Integer枚举                                                   | 1表示允许裁片沿y轴翻转，0表示禁止。（0,1）                                                                                          |
| remark        | 否    | String                                                      | 备注信息                                                                                                              |
| y             | 否    | [Array of 表8 object] | 不同翻转情形的裁片Y约束。若某翻转情形没有定义，采用不发生翻转的情况，即flip_x=0,flip_y=0。元素个数最多为4；y约束具体场景要和piece中的rot、flip_x、flip_y属性有相关约束，详细要求见备注4； |
   
 表8y 
| 参数     | 是否必选 | 参数类型       | 描述                                                                       |
|:---|:---|:---|:---|
| flip_x | 是    | Integer 枚举 | 裁片是否沿x轴翻转，0表示不翻转，1表示翻转。（0,1）                                             |
| flip_y | 是    | Integer 枚举 | 裁片是否沿y轴翻转，0表示不翻转，1表示翻转。（0,1）                                             |
| min_y  | 是    | Double     | 裁片的包络矩形下边界在布料中的最小y坐标；保留1位小数，若超过将直接进行截断；该值要小于布料宽度。\[0, 100000\]           |
| max_y  | 是    | Double     | 片的包络矩形上边界在布料中的最大y坐标；保留1位小数，若超过将直接进行截断；该值要大于min_y，并且小于等于布料宽度。（0, 100000\] |
   
 表9Hole 
| 参数            | 是否必选 | 参数类型    | 描述                                                                            |
|:---|:---|:---|:---|
| polygon_index | 是    | Integer | 实体多边形（裁片轮廓）在"polygon"向量中的index。（\>=0）                                         |
| gap_index     | 否    | Integer | 间隔多边形（加上最小间隔的裁片轮廓）在"polygon"向量中的index，-1表示没有间隔。备用，当前不支持。（\>=-1）               |
| id            | 是    | Integer | -1表示真的瑕疵，\>=0表示实际上被锁定的裁片；对于锁定裁片，id从0开始，注意，此时piece-\>id值需要顺延Hole-\>id值。（\>=-1） |
   
 表10Constraints 
| 参数       | 是否必选 | 参数类型        | 描述                                          |
|:---|:---|:---|:---|
| grid     | 否    | Object      | 定义单一裁片自身的对格约束。备用，当前不支持。                     |
| grid2    | 否    | Object      | 定义两个裁片之间的对格约束。备用，当前不支持。                     |
| position | 否    | 表3-6 object | 相邻约束，表征多个裁片的相对位置关系近似不变，使得多个裁片的参考点在指定的矩形区域内。 |
   
表11Position 
| 参数    | 是否必选 | 参数类型                                                        | 描述                                          |
|:---|:---|:---|:---|
| x     | 是    | Double                                                      | 相邻约束中矩形区域的x轴长度；保留1位小数，若超过将直接进行截断。           |
| y     | 是    | Double                                                      | 定义两个裁片之间的对格约束。备用，当前不支持。                     |
| piece | 否    | [Array of 表7 objects] | 相邻约束，表征多个裁片的相对位置关系近似不变，使得多个裁片的参考点在指定的矩形区域内。 |
   
表12Piece 
| 参数    | 是否必选 | 参数类型    | 描述                                             |
|:---|:---|:---|:---|
| index | 是    | Integer | 裁片id。                                          |
| x     | 是    | Double  | 裁片参考点x坐标；保留1位小数，若超过将直接进行截断。\[-100000, 100000\] |
| y     | 是    | Double  | 裁片参考点y坐标；保留1位小数，若超过将直接进行截断。\[-100000, 100000\] |
   
#### 响应参数
**状态码： 201**
表13响应Body参数 
| 参数                   | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|
| task_id              | String | 任务编号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| create_time          | String | 任务创建时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| estimated_start_time | String | 预估开始时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| status               | String | 任务状态，包括： - Pending：任务等待处理中（排队中）  - Running：任务正在运行  - Expired：任务超时  - Failed：任务失败  - Succeeded：任务成功   |
   
 #### 请求示例
```
{
    "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": {}
    }
}
```
#### 响应示例
**状态码： 201**
OK
```
{
    "task_id": "ee47xxxxxxc211edba900255acxxxxxx"
}
```
#### 查询任务
该API用于查询并显示异形件-服装切割任务详情。
#### URI
GET /v2/{project_id}/optverse/irregular-textile/tasks/{task_id}
 #### 响应参数
**状态码： 200**
表14响应Body参数 
| 参数                   | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| task_id              | String           | 任务编号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| input_json           | String           | 输入数据，当前为null                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| status               | String           | 任务状态，包括： - Pending：任务等待处理中（排队中）  - Running：任务正在运行  - Expired：任务超时  - Failed：任务失败  - Succeeded：任务成功   |
| progress             | String           | 返回任务进度，包括： - curr_ratio: 料率 - curr_length: 长度 - remain_time: 剩余时间                                                                                                                                                                                                                                                                                                                                                                          |
| output_json          | Array of objects | 任务处理结果，json格式，任务状态为finished时携带。具体数据结构参见[IrregularTextileResultDetail]                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| estimated_start_time | String           | 预估开始时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| start_time           | String           | 任务开始时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| end_time             | String           | 任务结束时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| create_time          | String           | 任务创建时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   
 表15IrregularTextileResultDetail 
| 参数         | 参数类型                                                        | 描述          |
|:---|:---|:---|
| id         | String                                                      | 任务编号。       |
| time_limit | Double                                                      | 任务运行时长，单位秒。 |
| ratio      | Double                                                      | 排版利用率       |
| order      | String                                                      | 订单名。        |
| length     | Double                                                      | 使用面料长度。     |
| pieces     | [Array of 表5 objects] | 裁片排版位置定义。   |
   
 表16Piece 
| 参数     | 参数类型                                                         | 描述                                   |
|:---|:---|:---|
| id     | String                                                       | 裁片id。                                |
| angle  | Double                                                       | 裁片旋转角度。                              |
| flip_x | Integer                                                      | 裁片是否沿x轴翻转。                           |
| flip_y | Integer                                                      | 裁片是否沿y轴翻转。                           |
| box    | [Array of 表6 objects] | 裁片先旋转再翻转后放入指定位置形成的包络矩形，由矩形左底点和右上点表示。 |
   
 表17box 
| 参数 | 参数类型   | 描述       |
|:---|:---|:---|
| x  | Double | 二维点x轴坐标。 |
| y  | Double | 二维点y轴坐标。 |
   
 #### 响应示例
**状态码： 200**
OK
```
{
  "task_id": "37210xxxxxx511edb57c0255acxxxxxx",
  "input_json": null,
  "status": "Succeeded",
  "progress": null,
  "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": 0.75,
    "time": 1
  },
  "estimated_start_time": "2025-08-08T09:48:51.984Z",
  "start_time": "2023-10-16T13:24:14Z",
  "end_time": "2023-10-16T13:25:18Z",
  "create_time": "2023-10-16T13:24:13.858Z"
}
```
