目录
int get_raw(...)
unsigned int get_cuts_count(...)
unsigned int get_spaces_count(...)
set_task_full(...)
get_task_full(...)
add_raw_full(...)
get_raw_full(...)
add_part_full(...)
get_part_full(...)
概述
《极限切割10》提供了一个 xcut_sdk.dll 动态库文件。该文件通过一组函数完成任务数据的创建、排料计算、任务数据的存盘、读盘等操作。动态库采用 C 语言标准,可用于 WIndows 操作系统下各类主流的开发工具。
下图是《极限切割10》的主界面。在使用 SDK 的过程中,可以借助《极限切割10》应用程序,验证所开发代码的正确性。
基本概念
原材料
原材料指用于切割加工的毛坯材料。例如玻璃原片、木材原板等。
在 SDK 代码中,用英文 raw 表示原材料。SDK 会把原材料数据保存在一张表中。
下图是《极限切割10》应用程序主界面中展现的原材料数据表:
零件
零件指需要从原材料上切割加工产出的成品或半成品材料。
在 SDK 代码中,用英文 part 表示零件。
下图是《极限切割10》展现的零件数据表:
作业、加工件、余料
作业是指一张具体的排料图。要完成切割任务,一般需要多张排料图,每一张排料图根据需要,有可能加工一次或者多次。
一个作业或排料图包括加工件和余料等两类材料组成。加工件对应零件清单中的零件,余料则根据其尺寸可确定是否在以后的加工中重复利用。
在 SDK 代码中,用英文 job 表示作业,用 cut 表示加工件,用 space 表示余料。
下图是《极限切割10》展示的作业图样,一共 3 个作业图,窗口展示了第一个作业。从中可以看出,该作业用的原材料顺序号为1、尺寸为 1000x800,该作业图要重复加工 10 次。
排料任务
参与一次切割任务的全部数据,包括原材料数据表、零件数据表、作业清单等全部数据的集合,称为排料任务。切割任务可以作为一个整体保存在磁盘文件中,以便以后读取使用。
在 SDK 中,用英文 task 表示排料任务。
基本函数
动态库输出函数清单如下:
void clear()
用途:清空任务数据。
参数:无。
输数:无。
int set_task(double cut_width, double cut_length, double min_cut_size)
用途:设置排料任务的主要参数。
输入:
- cut_width:切割宽度。表示切割过程中锯缝宽度、刀具直径、切割刀损等。
- cut_length:切割长度。表示切割设备的最大切割刀路长度。例如剪板机的最大剪板宽度、雕刻机切割设备的最长切割距离等。
- min_cut_size:最小切割尺寸。表示切割设备允许的产出零件的最小尺寸,小于此尺寸设备无法切割。例如该参数可以表示玻璃的掰边距,切割尺寸小于掰边距,则无法顺利完成后续的分片操作。
返回:错误代码。
int get_task(double* cut_width, double* cut_length, double* min_cut_size)
用途:获取排料任务的主要参数。
参数:
- cut_width:切割宽度。表示切割过程中锯缝宽度、刀具直径、切割刀损等。
- cut_length:切割长度。表示切割设备的最大切割刀路长度。例如剪板机的最大剪板宽度、雕刻机切割设备的最长切割距离等。-1 表示切割长度无限制。
- min_cut_size:最小切割尺寸。表示切割设备允许的产出零件的最小尺寸,小于此尺寸设备无法切割。例如该参数可以表示玻璃的掰边距,切割尺寸小于掰边距,则无法顺利完成后续的分片操作。0 表示无最小切割尺寸的限制。
返回:错误代码。
int add_raw(double xsize, double ysize, double zsize, int num)
用途:向原材料表添加新的原材料记录。
参数:
- xsize:原材料宽度(水平方向)。
- ysize:原材料长度(竖直方向)。
- zsize:原材料厚度。
- num:原材料数量。-1 表示原材料数量无限制。
返回:错误代码。
int get_raws_count()
用途:获取已添加的原材料表的行数。
参数:无。
返回:当前原材料表行数。
int get_raw(unsigned int raw_index, double* xsize, double* ysize, double* zsize, int* num)
用途:读取原材料数据。
参数:
- raw_index:原材料记录在表中的顺序号,从 0 开始。
- xsize:原材料宽度(水平方向)。
- ysize:原材料长度(竖直方向)。
- zsize:原材料厚度。
- num:原材料数量。-1 表示原材料数量无限制。
返回:错误代码。
int add_part(double xsize, double ysize, double, double zsize,int rotated,int num)
用途:向零件表添加零件记录。
参数:
- xsize:零件宽度(水平方向)。
- ysize:零件长度(竖直方向)。
- zsize:零件厚度。
- rotated:允许旋转标志,表示在排料方案中,零件派力奥方向是否允许旋转 90 度,以便提高出材率。0 表示不允许旋转,1 表示允许旋转。
- num:零件数量。-1 表示原材料数量无限制。
返回:错误代码。
int get_parts_count()
用途:获取零件表行数。
参数:无。
返回:当前零件表行数。
int get_part(unsigned part_index, double* xsize, double* ysize, double* zsize, int* rotated, int* num)
用途:读取零件表记录。
参数:
- part_index:零件记录在表中的顺序号,从 0 开始。
- xsize:零件宽度(水平方向)。
- ysize:零件长度(竖直方向)。
- zsize:零件厚度。
- rotated:允许旋转标志,表示在排料方案中,零件派力奥方向是否允许旋转 90 度,以便提高出材率。0 表示不允许旋转,1 表示允许旋转。
- num:零件数量。-1 表示原材料数量无限制。
返回:错误代码。
unsigned int get_jobs_count()
用途:获取排料方案中排料图数量。
参数:无。
返回:当前排料方案中排料图的数量。
int get_job(unsigned int job_index, unsigned int raw_index, double* raw_xsize, double* raw_ysize, int* num, double* use_ratio)
用途:获取排料方案中作业信息。
参数:
- job_index:作业顺序号,从 0 开始。
- raw_index:当前作业所选用的原材料顺序号。
- raw_xsize:原材料宽度。类似卷板之类的排料方案,作业中的原材料尺寸与原材料原始尺寸可能不一致。
- raw_ysize:原材料长度。类似卷板之类的排料方案,作业中的原材料尺寸与原材料原始尺寸可能不一致。
- num:当前作业需要重复加工的次数。
- use_ratio:当前作业的材料利用率。
返回:错误代码。
unsigned int get_cuts_count(unsigned int job_index)
用途:获取排料方案中加工件的数量。
参数:
- job_index:当前作业顺序号,从 0 开始。
返回:当前作业中加工件数量。
int get_cut(unsigned int job_index, unsigned int cut_index, unsigned int* part_index, double* xpos, double* ypos, double* xsize, double* ysize)
用途:获取排料方案中加工件信息。
参数:
- job_index:当前作业顺序号,从 0 开始。
- cut_index:加工件顺序号,从 0 开始。
- part_index:加工件对应的零件顺序号。
- xpos:加工件左下角 x 坐标。
- ypos:加工件左下角 y 坐标。
- xsize:加工件宽度(水平方向尺寸)。由于磨边、封边、公差等原因,加工件尺寸与零件尺寸可能不一致。
- ysize:加工件长度(竖直方向尺寸)。由于磨边、封边、公差等原因,加工件尺寸与零件尺寸可能不一致。
返回:错误代码。
unsigned int get_spaces_count(unsigned int job_index)
用途:获取排料方案中余料的数量。
参数:
- job_index:当前作业顺序号,从 0 开始。
返回:当前作业中余料数量。
int get_space(unsigned int job_index, unsigned int space_index, double* xpos, double* ypos, double* xsize, double* ysize)
用途:获取排料方案中余料信息。
参数:
- job_index:当前作业顺序号,从 0 开始。
- space_index:余料顺序号,从 0 开始。
- xpos:余料左下角 x 坐标。
- ypos:余料左下角 y 坐标。
- xsize:余料宽度(水平方向尺寸)。
- ysize:余料长度(竖直方向尺寸)。
返回:错误代码。
保存和读取任务文件
int save_project(char* filename)
用途:保存任务文件。
参数:
- filename:文件名。
返回:错误代码。
int load_project(char* filename)
用途:读取任务文件。
参数:
- filename:文件名。
返回:错误代码。
调用排料算法以及其他相关模块
int show_modal_process(char* command, char* params)
用途:读取任务文件。
参数:
- command:DOS 命令或者可执行文件名。
- params:命令行参数。
返回:错误代码。
排料计算模块的的程序名是 xcutcalc.exe,调用之前把任务数据保存至文件,然后用此文件名作为命令行参数传递给 xcutcalc 即可。计算完成后,作业数据会自动填写到同一个任务文件。参见下面的例子:
...
save_project("c:/temp.xcut");
shouw_model_process("c:/xcut10/xcutcalc.exe", "c:/temp.xcut");
load_project("c:/temp.xcut");
...
《极限切割10》的所有功能模块都是 exe 文件,调用方法都与上面一样。具体功能描述可以参见 xcut.ini 配置文件。
高级接口函数
《极限切割10》提供了大量的参数,以适应各种不同类型的排料需求。下面介绍相关函数。
set_task_full
设置全部任务参数。
int set_task_full(
char* title, //任务名称。
char* created_dep, //文件创建部门
char* created_by, //创建人
char* created_date, //创建日期
char* customer, //客户名称
char* note, //备注
char* ship_date, //发货日期
char* cut_text_define, //暂时不用
double use_ratio, //出材率
double cut_width //切割宽度
double cut_length, //切割长度
double min_cut_size, //最小切割尺寸
double cut_header, //清边头部距离,推台锯参数,其他设备设为 0。
double cut_tail, /清边尾部距离,推台锯参数,其他设备设为 0。
double modify_x0, //零件磨边修边量
double modify_x1,
double modify_y0,
double modify_y1,
double x_tolerance_u, //零件加工允许公差
double x_tolerance_l,
double y_tolerance_u,
double y_tolerance_l,
char* length_unit, //长度单位名称
char* area_unit, //面积单位名称
double unit_ratio, //长度单位与面积单位换算比例
int dec, //尺寸的小数点位数
double margin_x0, //原材料修边量
double margin_x1,
double margin_y0,
double margin_y1,
int easy_cut, //是否选择易于切割的方案:
// 0 = 出材率优先;1 = 尽量易于切割。
int first_cut_direction, // 首刀方向:0 = 无约束;1 = 水平; 2 = 竖直。
int max_layers, //最大切割层数
int cut_by_raw, //按照原材料顺序,从后向前使用原材料。
//主要是优先把剩余的余料用完。
double min_space_size, //最小余料尺寸。排料算法尽量避免余料小于该尺寸。
//一般设为 0。
char* volumn_unit, //体积单位名称
double volumn_unit_ratio, //长度单位与体积单位换算比例。
char* weight_unit, // 重量单位
double min_space_xsize1, //最小余料尺寸。
//排料算法尽量避免余料小于该尺寸。一般设为 0。
double min_space_ysize1,
double min_space_xsize2,
double min_space_ysize2,
int version //版本号
)
get_task_full
读取全部任务参数。
int get_task_full(
char** title, //任务名称。
char** created_dep, //文件创建部门
char** created_by, //创建人
char** created_date, //创建日期
char** customer, //客户名称
char** note, //备注
char** ship_date, //发货日期
char** cut_text_define, //暂时不用
double* use_ratio, //出材率
double* cut_width //切割宽度
double* cut_length, //切割长度
double* min_cut_size, //最小切割尺寸
double* cut_header, //清边头部距离,推台锯参数,其他设备设为 0。
double* cut_tail, /清边尾部距离,推台锯参数,其他设备设为 0。
double* modify_x0, //零件磨边修边量
double* modify_x1,
double* modify_y0,
double* modify_y1,
double* x_tolerance_u, //零件加工允许公差
double* x_tolerance_l,
double* y_tolerance_u,
double* y_tolerance_l,
char** length_unit, //长度单位名称
char** area_unit, //面积单位名称
double* unit_ratio, //长度单位与面积单位换算比例
int* dec, //尺寸的小数点位数
double* margin_x0, //原材料修边量
double* margin_x1,
double* margin_y0,
double* margin_y1,
int* easy_cut, //是否选择易于切割的方案:
// 0 = 出材率优先;1 = 尽量易于切割。
int* first_cut_direction, // 首刀方向:0 = 无约束;1 = 水平; 2 = 竖直。
int* max_layers, //最大切割层数
int* cut_by_raw, //按照原材料顺序,从后向前使用原材料。
//主要是优先把剩余的余料用完。
double* min_space_size, //最小余料尺寸。排料算法尽量避免余料小于该尺寸。
//一般设为 0。
char** volumn_unit, //体积单位名称
double* volumn_unit_ratio, //长度单位与体积单位换算比例。
char** weight_unit, // 重量单位
double* min_space_xsize1, //最小余料尺寸。
//排料算法尽量避免余料小于该尺寸。一般设为 0。
double* min_space_ysize1,
double* min_space_xsize2,
double* min_space_ysize2,
int* version //版本号
)
add_raw_full
添加带全部参数的原材料。
int add_raw_full(
char* mater_type, //物料类型:线材、板材、坯材。
char* material, //材质
char* mater_code, //物料编码
char* mater_name, //物料名称
double xsize,
double ysize,
double zsize,
double density, //密度
double weight, //重量
double price, //价格
double area_price, //面积价格
double weight_price, //重量价格
int num,
int used, //已用数量
int unused, //剩余数量
double max_xsize, //最大 X 尺寸。用于卷材和自由板材。
double max_ysize,
double min_space_xsize1, //最小余料尺寸
double min_space_ysize1,
double min_space_xsize2,
double min_space_ysize2,
char* note, //注释
int used_first //优先使用
)
get_raw_full
获取原材料的全部信息。
int get_raw_full(
int raw_index,
char** mater_type, //物料类型:线材、板材、坯材。
char** material, //材质
char** mater_code, //物料编码
char** mater_name, //物料名称
double* xsize,
double* ysize,
double* zsize,
double* density, //密度
double* weight, //重量
double* price, //价格
double* area_price, //面积价格
double* weight_price, //重量价格
int* num,
int* used, //已用数量
int* unused, //剩余数量
double* max_xsize, //最大 X 尺寸。用于卷材和自由板材。
double* max_ysize,
double* min_space_xsize1, //最小余料尺寸
double* min_space_ysize1,
double* min_space_xsize2,
double* min_space_ysize2,
char** note, //注释
int* used_first //优先使用
)
add_part_full
添加具有全部信息的零件。
int add_part_full(
char* task, //所属任务名称。
char* work, //所述工单名称。
char* mater_type, //材料类型:线材、板材、坯材。
char* barcode, //条形码。
char* dmcode, //二维码。
char* material, //材质
char* mater_code, //物料编码。
char* mater_name, //物料名称。
double xsize,
double ysize,
double zsize,
double modify_x0,
double modify_y0,
double modify_x1,
double modify_y1,
double x_tolerance_u,
double x_tolerance_l,
double y_tolerance_u,
double y_tolerance_l,
int rotated,
int not_rotated,
int texture, //是否有纹理:已废弃。
int filled_part,
double price,
double area_price,
double weight_price,
int num,
int finished,
int unfinished,
char* note,
char* top_line, //封边材料名称
char* bottom_line,
char* left_line,
char* right_line,
char* shape, //异形形状定义Q代码。
char* shape_code,
char* shape_params,
char* a,
char* b,
char* c,
char* d,
char* e
)
get_part_full
读取零件的全部信息。
int get_part_full(
int part_index,
char** task, //所属任务名称。
char** work, //所述工单名称。
char** mater_type, //材料类型:线材、板材、坯材。
char** barcode, //条形码。
char** dmcode, //二维码。
char** material, //材质
char** mater_code, //物料编码。
char** mater_name, //物料名称。
double* xsize,
double* ysize,
double* zsize,
double* modify_x0,
double* modify_y0,
double* modify_x1,
double* modify_y1,
double* x_tolerance_u,
double* x_tolerance_l,
double* y_tolerance_u,
double* y_tolerance_l,
int* rotated,
int* not_rotated,
int* texture, //是否有纹理:已废弃。
int* filled_part,
double* price,
double* area_price,
double* weight_price,
int* num,
int* finished,
int* unfinished,
char** note,
char** top_line, //封边材料名称
char** bottom_line,
char** left_line,
char** right_line,
char** shape, //异形形状定义Q代码。
char** shape_code,
char** shape_params,
char** a,
char** b,
char** c,
char** d,
char** e
)
错误编码
错误编码 | 错误信息 |
0 | OK |
1 | 任务数据为空 |
2 | 原材料不存在 |
3 | 零件不存在 |
4 | 作业不存在 |
5 | 加工件不存在 |
6 | 余料不存在 |
资料下载
链接:https://pan.baidu.com/s/1NVCFQ55KuTzWNkkE76cQgg
提取码:two2