《极限切割10》 SDK 技术手册

目录

概述

基本概念

原材料

零件

作业、加工件、余料

排料任务

基本函数

int get_task(...)

int add_raw(...)

int get_raws_count()

int get_raw(...)

int add_part(...)

int get_parts_count() 

int get_part(...)

unsigned int get_jobs_count()

int get_job(...)

unsigned int get_cuts_count(...)

int get_cut(...)

 unsigned int get_spaces_count(...)

int get_space(...)

保存和读取任务文件

int save_project(...)

int load_project(...)

调用排料算法以及其他相关模块

int show_modal_process(...)

高级接口函数

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

极限切割》是当今国内市场首屈一指的套料计算软件。自2004年投放市场以来,不断改进创新,功能日趋完善,深受广大用户欢迎。这里简要介绍这款软件的主要特色,详细内容参见本网站其它相关介绍。 《极限切割》提供了许多可以选择的切割参数,涵盖了机械(金属平板、卷板、原板反算等)、家具、石材、玻璃、装修等行业常用的各类排料参数,是一款通用性非常好的排料软件。下图展示了部分切割参数,为提高操作效率,还有一部分切割参数分布在数据录入和计算环节。 《极限切割专业版》(矩形排料、型材排料) 专门针对矩形材料排料,支持一刀切,特别适合玻璃切割、门窗加工、板式家具开料、金属剪板机作业、石材切割等生产领域。 《极限切割数控版》(数控玻璃切割机专用) 针对数控玻璃切割设备,支持矩形、异型玻璃切割。目前已经在贝佳莱(奥地利)、济南德佳玻璃机器有限公司采用。 《极限切割工业版》(异型材料切割) 针对异型零件套料开发的优化计算软件,计算速度和材料利用率都达到国际先进水准。支持AutoCad,可用于各类等离子切割、激光切割、火焰切割设备。 《极限工厂》——中小企业ERP系统 针对中小企业的特点,提供包括进、销、存、生产管理、套料计算的一体化的管理系统。即可弹机运行,也可运行在网络环境。 套料,排料,裁板,型材下料,板材优化,玻璃切割,开料,算料,省料,切割。 玻璃切割排料优化,坯材开料下料优化,板材切割开料下料套料优化,板材数控切割优化,异型套料优化计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许野平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值