极限切割 SDK 技术手册

本文详细介绍了一款名为《极限切割》的软件系统及其SDK的使用方法。该系统采用开放式架构,通过主程序集成多个独立功能组件,确保系统稳定。文章还介绍了如何通过任务文件交换数据,以及如何定制数据结构等内容。

《极限切割》于2004年完成了《极限切割》的第一个商品化版本并实现销售。经过几年的技术积累,2008年完成最终版本的架构设计、底层数据结构设计和一个高性能算法设计,尽管期间面向的市场领域不断拓展,这套体系一直保持至今未发生任何改变,足以见证系统架构体系设计的通用性和前瞻性。当然,在这个过程中一直得到广大热心客户们提供的各种有建设性的建议和意见,《极限切割》所支持的功能也不断拓展,历经十几年风风雨雨,一直保持健壮的生命力。

极限切割专业排料软件
  
  近年来越来越多的第三方开发团队使用《极限切割》SDK开发应用项目,并向我们咨询一些技术问题。这里我们做一个系统介绍,以帮助大家顺利使用这套SDK。

《极限切割》的开放式系统架构

《极限切割》软件系统采用开放式系统架构,通过主程序 xcut.exe 把一系列功能组件集成在一起,通过主程序菜单、工具条等统一调用。功能组件全部都是独立的 *.exe 程序,完全按照《极限切割》系统的相关规定设计,可以按照统一的标准与主程序 xcut.exe 集成。换句话讲,《极限切割》系统自身就是用 SDK 组合起来的,可作为使用 SDK 的过程中的一个非常好的参考范例。
  
  为什么功能组件没有选择DLL、OCX等方式,而是选用了 *.exe 的形式?原因是,这种形式的功能组件和xcut.exe运行在不同的进程中,功能组件的运行错误不会扩散至xcut.exe,不会导致《极限切割》主系统崩溃。
  
可定制化的操作界面

如果第三方开发者了解《极限切割》主系统与功能组件之间的调用方式和数据交换方式,那么原则上可以在自己的系统中使用《极限切割》的功能组件。同样,第三方开发者也可以采用《极限切割》的功能组件设计标准,为《极限切割》系统设计新的功能组件。
  
  我们进入《极限切割》安装文件夹,一般默认位置在 “C:\Program Files (x86)\Queek\极限切割10.0”,可以看到 xcut.exe 和 xcut.ini 这两个文件。 运行 xcut.exe 后,能看到《极限切割》主窗口,如上图的样子。主窗口所展现的菜单和工具条以及图标等,全部通过 xcut.ini 配置。下面我们列举 xcut.ini 的开头若干行内容,看看庐山真面目。您可以尝试修改相关内容,并重启《极限切割》,看看主窗口会不会和您预期的一样发生变化。曾经见过有人把这个界面修改的我自己都不认识了。

[Root]
SoftwareName=极限切割10
Company=济南黑格软件有限公司
MainMenuName=主菜单
MenuItemCount=6
MenuFullSize=1
SeparatorHeight = 68
Logo=Logo.exe
OpenFileFilters=极限切割任务文件(*.xcut)|*.xcut|极限切割2006任务文件(*.xct)|*.xct|极限切割2005及更早版本任务文件(*.cut)|*.cut|所有文件(*.*)|*.*
SaveFileFilters=极限切割文档(*.xcut)|*.xcut|Access文档(*.mdb)|*.mdb|极限切割2006文档(*.xct)|*.xct|极限切割2005及更早版本文档(*.cut)|*.cut|所有文件(*.*)|*.*
OEM=0
Debug=0

ToolBarCount=1

[Menu(0)]
Name=文件(&F)
SubCount=9

[Menu(0,0)]
Action=<FileNew>

[Menu(0,1)]
Action=<FileOpen>

[Menu(0,2)]
Action=<FileSave>

[Menu(0,3)]
Action=<FileSaveAs>

[Menu(0,4)]
Action=QUEEKPROJECTSUMMARY.EXE
Name=汇总
Hint=显示开料任务汇总
Image=Summary.png
DisabledImage=Summary_.png
SaveTmpFile=1
LoadTmpFile=0

从上述配置文件可以看出,《极限切割》的软件名称(SoftwareName=极限切割10)、经销商名称(Company=济南黑格软件有限公司)等等,都是可以随意修改的。这可以给代理商带来很多方便。

主程序xcut.exe如何调用功能组件?

拿排料计算组件为例,该组件在 xcut.ini 中是这样定义的:

...
[Menu(3,10)] //第3个主菜单的第10个子菜单项,注意编号从0开始
Name=计算  //菜单项名称是“计算”。这个可以查看一下极限切割的菜单即可找到这一项。
Action=XcutCalc.exe	//注释:功能组件名称是 XcutCalc.exe,这个是排料计算的组件。
SaveTmpFile=1 //xcut.exe在调用该组件之前需要把原材料、零件清单写入临时文件。
LoadTmpFile=1 //xcut.exe在调用该组件之后需要把计算结果读入内存,以便显示计算结果。
DirtyFile=1 //xcut.exe在调用该组件之后需要标记数据为“脏”的,以便关闭文件时提醒保存。
...

可以看出,在《极限切割》主程序 xcut.exe 调用 xcutcalc.exe 组件之前,首先把计算条件,包括原材料清单、零件清单、计算参数等等写入一个任务文件,比如任务文件的名称可能是 temp.mdb。然后执行一个命令行程序调用,调用格式大致如下,

xcutcalc.exe "c:\temp.mdb"

当然,中间文件 “c:\temp.mdb” 的位置可以根据应用要求放置在其他文件夹也行。
  
  xcutcalc.exe 完成计算后,把计算结果也保存在同一个任务文件内。在 xcutcalc.exe 结束后,xcut.exe 从任务文件读出计算结果,并在作业显示片板中展示计算结果。
  
  这里有两个问题要解决,第一个问题是,xcut.exe 如何通过命令行参数调用 xcutcalc.exe 的?答案是,调用 Windows API 函数 CreateProcess;第二个问题是, xcut.exe 如何等待 xcutcalc.exe计算结束?答案是调用 WindowsAPI 函数 WaitForSingleObject。我们用 Delphi 编写了一个函数 ShowModalProcess 可以实现这两个功能,代码如下,大家可以参考。

unit Process;

interface
uses Windows, Forms;

function ShowModalProcess(const CmdLine : string): DWORD;

implementation

function ShowModalProcess;
var
  SI : TStartupInfo;
  PI : TProcessInformation;
  R : LongBool;
begin
  FillChar(SI, Sizeof(SI), 0);
  SI.cb := sizeof(SI);
  SI.wShowWindow := SW_SHOW;
  R := CreateProcess(
    nil,
    PChar(CmdLine),
    nil,
    nil,
    False,
    0,
    nil,
    nil,
    SI,
    PI
  );
  if R then
  begin
    Result := WaitForSingleObject(PI.hProcess, INFINITE);
  end
  else
  begin
    Application.MessageBox('System Error !' , 'Warning');
    Result := WAIT_FAILED;
  end;
end;

end.

任务文件结构

《极限切割》主程序和功能组件之间通过任务文件交换数据,任务文件默认是 xcut 格式,本质上是 XML文件。另外一种格式是 mdb 格式,即 Access 数据库文件格式。两种文件结构逻辑上是等价的,建议大家采用 mdb 格式,借助 SQL 命令,可以很容易读写这个文件。下面我们介绍一下 mdb 文件格式。

mdb文件中的数据表

利用《极限切割》创建一份新文件,另存为 mdb 格式。用微软的 Access 打开这份文件,即可查看其中的内容。这里面和应用开发直接相关的表如下:

表名用途
_Root_任务信息,提供计算用的基本参数设置,对应极限切割的“任务信息”窗口。
Raws原材料清单,提供原材料材质、规格、尺寸、数量等信息。
Parts零件清单,提供零件材质、规格、尺寸、数量等信息。
Jobs作业清单,排料结果中每一种排料图对应一个作业。
Cuts作业清单中的零件,提供零件编号、位置等信息。
Spaces作业清单中的余料,提供余料位置和尺寸信息。

数据表结构以及数据表结构的自行定制

任务文件数据表的结构定义和中文说明,保存在 _Tables_ 和 _Fields_ 两个数据表中,在 Access 系统中打开 _Tables_ 即可看到其内容。
  
  如果大家打算修改《极限切割》任务文件的结构,可以修改安装目录里面的 Default.mdb 文件里面的 _Tables_ 和 _Fields_ 两个数据表。这两个数据表定义了任务文件的数据结构。从这里可以看出,《极限切割》的底层数据结构是可以随意订制化的结构。底层采用这样一种动态的数据结构,使得《极限切割》十几年来一直能够追随应用需求的变化,而软件本身几乎不需要做任何修改。
  
  注意,修改 Default.mdb 时,请不要随意删减《极限切割》原有内容,因为可能这会影响系统的基本功能。

数据表字段详解


数据表 _Root_ : 任务信息,提供计算用的基本参数设置,对应极限切割的“任务信息”窗口。

序号字段字段标题数据类型取值范围说明
0Raws原材料清单数据表
1Parts零件清单数据表
2Jobs作业清单数据表
3Title标题字符串
4CreatedDep编制部门字符串
5CreatedBy编制人字符串
6CreatedDate编制日期字符串
7Customer客户名称字符串
8Note备注字符串
9ShipDate交货日期字符串
10CutTextDefine零件标签文字定义字符串不推荐使用
11UseRatio利用率浮点数 [ 0 , 1 ] [0,1] [0,1]
12CutWidth刀口宽度浮点数 [ 0 , ∞ ] [0, \infty] [0,]
13CutLength刀口长度浮点数 [ 0 , ∞ ] [0, \infty] [0,]-1 表示长度无限大
14MinCutSize最小切割尺寸浮点数 [ 0 , ∞ ] [0, \infty] [0,]
15CutHead刀具定位尺寸浮点数不推荐使用
16CutTail后清边尺寸浮点数不推荐使用
17ModifyX0左磨边尺寸浮点数 [ − ∞ , ∞ ] [-\infty, \infty] [,]
18ModifyX1右磨边尺寸浮点数 [ − ∞ , ∞ ] [-\infty, \infty] [,]
19ModifyY0下磨边尺寸浮点数 [ − ∞ , ∞ ] [-\infty, \infty] [,]
20ModifyY1上磨边尺寸浮点数 [ − ∞ , ∞ ] [-\infty, \infty] [,]
21XtoleranceUX尺寸正公差浮点数 [ − ∞ , ∞ ] [-\infty, \infty] [,]
22XtoleranceLX尺寸负公差浮点数 [ − ∞ , ∞ ] [-\infty, \infty] [,]
23YtoleranceUY尺寸正公差浮点数 [ − ∞ , ∞ ] [-\infty, \infty] [,]
24YtoleranceLY尺寸负公差浮点数 [ − ∞ , ∞ ] [-\infty, \infty] [,]
25LengthUnit长度单位字符串推荐“毫米”
26AreaUnit面积单位字符串推荐“平方米”
27UnitRatio单位换算字符串
28Decimal小数位数浮点数0,1,2,3,4,5,6,7,8
29MarginX0左清边浮点数 [ − ∞ , ∞ ] [-\infty, \infty] [,]
30MarginX1右清边浮点数 [ − ∞ , ∞ ] [-\infty, \infty] [,]
31MarginY0上清边浮点数 [ − ∞ , ∞ ] [-\infty, \infty] [,]
32MarginY1下清边浮点数 [ − ∞ , ∞ ] [-\infty, \infty] [,]
33EasyCut切割模式布尔0,1
34FirstCutDirection首刀方向浮点数0=无限制,1=水平,2=竖直
35MaxLayers切割层数浮点数0,1,2,…
36CutByRaw按原材料顺序切割布尔0,1
37MinSpaceSize最小余料尺寸浮点数 [ 0 , ∞ ] [0, \infty] [0,]
38VolumnUnit体积单位字符串
39VolumnUnitRatio体积单位换算浮点数 [ 0 , ∞ ] [0, \infty] [0,]
40WeightUnit重量单位字符串
41MinSpaceXSize1最小余料尺寸浮点数 [ 0 , ∞ ] [0, \infty] [0,]
42MinSpaceYSize1最小余料尺寸浮点数 [ 0 , ∞ ] [0, \infty] [0,]
43MinSpaceXSize2最小余料尺寸浮点数 [ 0 , ∞ ] [0, \infty] [0,]
44MinSpaceYSize2最小余料尺寸浮点数 [ 0 , ∞ ] [0, \infty] [0,]

数据表 Raws : 原材料清单,提供原材料材质、规格、尺寸、数量等信息。

序号字段字段标题数据类型取值范围说明
0RawIndex编号整数从 0 开始的整数编号
1MaterType材料类型字符串“线材”、“板材”、“坯材”
2Material材质字符串
3MaterCode物料编码字符串
4MaterName原材料名称字符串
5XsizeX尺寸浮点数-1代表无穷大
6YsizeY尺寸浮点数-1代表无穷大
7ZsizeZ尺寸浮点数-1代表无穷大
8Density密度浮点数
9Weight单件重量浮点数
10Price数量单价浮点数
11AreaPrice面积单价浮点数
12WeightPrice重量单价浮点数
13Quantity数量浮点数只能取整数值
14Used使用数量浮点数只能取整数值
15Unused未使用数量浮点数只能取整数值
16MaxXSize最大X尺寸浮点数-1代表无穷大
17MaxYSize最大Y尺寸浮点数-1代表无穷大
18MinSpaceXSize1余料最小X尺寸1浮点数
19MinSpaceYSize1余料最小Y尺寸1浮点数
20MinSpaceXSize2余料最小X尺寸2浮点数
21MinSpaceYSize2余料最小Y尺寸2浮点数
22Note备注字符串
23UseFirst优先使用布尔0、1

数据表 Parts : 零件清单,提供零件材质、规格、尺寸、数量等信息。

序号字段字段标题数据类型取值范围说明
0PartIndex编号整数从 0 开始的整数编号
1Task合同号字符串
2Work工单号字符串
3MaterType材料类型字符串“线材”、“板材”、“坯材”
4Barcod条形码字符串与标签打印程序配合使用
5DMCode二维码字符串与标签打印程序配合使用
6Material材质字符串
7MaterCode物料编码字符串
8MaterName名称字符串
9XsizeX尺寸浮点数-1代表无穷大
10YsizeY尺寸浮点数-1代表无穷大
11ZsizeZ尺寸浮点数-1代表无穷大
12ModifyX0左磨边浮点数数字2147483647表示NULL
13ModifyX1右磨边浮点数数字2147483647表示NULL
14ModifyY0下磨边浮点数数字2147483647表示NULL
15ModifyY1上磨边浮点数数字2147483647表示NULL
16XtoleranceUX正公差浮点数数字2147483647表示NULL
17XtoleranceLX负公差浮点数数字2147483647表示NULL
18YtoleranceUY正公差浮点数数字2147483647表示NULL
19YtoleranceLY负公差浮点数数字2147483647表示NULL
20Rotate允许旋转布尔0=排料时不允许旋转,1=允许旋转
21NotRotate纹理布尔此项目废弃,禁止使用
22Texture纹理号浮点数取整数值,相同纹理号的零件排料时保持相同的方向
23FilledPart填充件布尔0,1用于填充余料位置
24Price数量单价浮点数
25AreaPrice面积单价浮点数
26WeightPrice重量单价浮点数
27Quantity数量浮点数
28Finished完成数量浮点数系统自动产生,不允许修改
29Unfinished剩余数量浮点数系统自动产生,不允许修改
30Note备注字符串
31TopLine上封边浮点数数字2147483647表示NULL
32BottomLine下封边浮点数数字2147483647表示NULL
33LeftLine左封边浮点数数字2147483647表示NULL
34RightLine右封边浮点数数字2147483647表示NULL
35Shape形状数据字符串格式参见《Q代码技术手册》
36ShapeCode形状字符串异形模版名称
37ShapeParams形状参数字符串异形模版参数
38_A参数A字符串具体参见《Q代码技术手册》
39_B参数B字符串具体参见《Q代码技术手册》
40_C参数C字符串具体参见《Q代码技术手册》
41_D参数D字符串具体参见《Q代码技术手册》
42_E参数E字符串具体参见《Q代码技术手册》

服务信息

我们为《极限切割》这套软件建立了一个专门的网站,网址是 http://www.queek.com,欢迎大家登陆了解该产品最新信息。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

许野平

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

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

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

打赏作者

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

抵扣说明:

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

余额充值