更新时间:2026-08-12 GMT+08:00
分享

异形件-服装切割

创建任务

创建二维切割-异形件-服装切割任务, 该接口为异步操作,返回任务ID,任务的状态及结果请通过查询任务详情接口获取。

URI

POST /v2/{project_id}/optverse/irregular-textile/tasks

表1 路径参数

参数

是否必选

参数类型

描述

project_id

是

String

用户项目ID,获取方法请参见获取项目ID。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

是

String

该字段填为“application/json”。

表3 请求Body参数

参数

是否必选

参数类型

描述

input_json

是

object

任务输入信息,json格式,具体数据结构参见表4 IrregularTextileInputJson。

表4 IrregularTextileInputJson

参数

是否必选

参数类型

描述

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

其他约束定义。

表5 fabric

参数

是否必选

参数类型

描述

width

是

Double

面料宽度。保留1位小数,若超过将直接进行截断。(0, 100000]

grid_x

否

Double

面料x轴防线格子宽度,若无设置为0;保留1位小数,若超过将直接进行截断。备用,当前不支持。[0, 100000]

grid_y

否

Double

面料y轴方向格子宽度,若无设置为0;保留1位小数,若超过将直接进行截断。备用,当前不支持。[0, 100000]

表6 Polygon

参数

是否必选

参数类型

描述

index

是

Integer

多边形id,从0开始,依次递增。

profile

是

Array of double

简单多边形轮廓点,逆时针排序,x、y轴坐标依次排序展开,元素取值范围[-100000, 100000],保留1位小数,超过将直接进行截断;要求元素个数至少为6,且为偶数。[-100000, 100000]

表7 Piece

参数

是否必选

参数类型

描述

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;

表8 y

参数

是否必选

参数类型

描述

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]

表9 Hole

参数

是否必选

参数类型

描述

polygon_index

是

Integer

实体多边形(裁片轮廓)在”polygon”向量中的index。(>=0)

gap_index

否

Integer

间隔多边形(加上最小间隔的裁片轮廓)在”polygon”向量中的index,-1表示没有间隔。备用,当前不支持。(>=-1)

id

是

Integer

-1表示真的瑕疵,>=0表示实际上被锁定的裁片;对于锁定裁片,id从0开始,注意,此时piece->id值需要顺延Hole->id值。(>=-1)

表10 Constraints

参数

是否必选

参数类型

描述

grid

否

Object

定义单一裁片自身的对格约束。备用,当前不支持。

grid2

否

Object

定义两个裁片之间的对格约束。备用,当前不支持。

position

否

表3-6 object

相邻约束,表征多个裁片的相对位置关系近似不变,使得多个裁片的参考点在指定的矩形区域内。

表11 Position

参数

是否必选

参数类型

描述

x

是

Double

相邻约束中矩形区域的x轴长度;保留1位小数,若超过将直接进行截断。

y

是

Double

定义两个裁片之间的对格约束。备用,当前不支持。

piece

否

Array of 表7 objects

相邻约束,表征多个裁片的相对位置关系近似不变,使得多个裁片的参考点在指定的矩形区域内。

表12 Piece

参数

是否必选

参数类型

描述

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

任务创建时间

表15 IrregularTextileResultDetail

参数

参数类型

描述

id

String

任务编号。

time_limit

Double

任务运行时长,单位秒。

ratio

Double

排版利用率

order

String

订单名。

length

Double

使用面料长度。

pieces

Array of 表5 objects

裁片排版位置定义。

表16 Piece

参数

参数类型

描述

id

String

裁片id。

angle

Double

裁片旋转角度。

flip_x

Integer

裁片是否沿x轴翻转。

flip_y

Integer

裁片是否沿y轴翻转。

box

Array of 表6 objects

裁片先旋转再翻转后放入指定位置形成的包络矩形,由矩形左底点和右上点表示。

表17 box

参数

参数类型

描述

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"
}

相关文档