现有情况
开发环境
autocad 2015+.net framework 4.5+nestprofessor(第三方sdk http://nestprofessor.com)
基本流程:
1. 导入工件数据
- 工件数据按照边界的形状分为两大类,一类为矩形,一类为异形(不规则的边界)
- 边界的组成为多段线(polyline),由直线和圆弧线组成,用XY坐标表示
- 所有工件都要求为闭合边界
- 工件属性:
- 原材料:指定了所属的材料
- 数量:多少件
- 名称:方便查找
- 纹理:只有沿着X/Y方向/没有纹理三种
2. 导入原材料数据
- 原材料按照边界形状同样分为矩形与异形两类,边界表示方法同工件
- 属性:
- 数量:当前库存的材料数量
- 修边:为了避免材料边缘的磕碰,影响工件的质量,会距离边缘一定距离才开始排布工件,如果是矩形板件,则这个距离是上下左右四个方向的值各不相同,异形则为一致
- 名称:材料名称,与工件的材料对应
- 纹理:只有沿着X/Y方向/没有纹理三种
- 当材料有纹理(X/Y),如果工件无纹理,则优化时,工件按照材料纹理进行优化,如果工件有纹理,按照工件纹理优化
- 当材料无纹理,如果工件有纹理(X/Y),则优化时,有纹理的工件按照纹理方向优化
3. 配置优化参数
- 工件间距:排布时工件与工件之间的距离
- 优化起点:排布时从原材料的哪个角点开始排布,以矩形材料为例,分为左上,左下,右上,右下四种,如果是异形,则是xy坐标的四个方向的极值组合
- 优化方向:排布时优先X方向排布或优先Y方向排布
4. 优化
优化开始后,算法开始穷举所有可能。
优化的特性详见NestProfessor的说明,例如真实形状、工件间隔等
程序运算至所有可能后停止,并给出其认为的最好结果。因为很多时候运算时间过长,或者仅存在理论上穷举所有结果的可能性,程序会在得到一个可接受的结果后停止。如时间超过了一定限制,或者当前的某一个优化结果的材料使用率经过人工判断可以接受。
5. 生成机器加工代码
将优化结果转化为CNC运行的G代码,因为和优化本身并无关系,不再赘述。
需要改进的方向
仅简单叙述使用过程中发现的问题,详细的需求另外准备文档,仅供参考。
问题:
1. 较小面积的板件排布在材料的边缘:木工CNC使用真空泵吸附固定原材料,在材料边缘的吸力较低,实际使用过程中经常出现工件加工过程中移动的情况
2. 大批量优化时间长,当一个工件的数量成百上千时,优化时间很长,而优化的结果并不好
3. 余料不规则:有时原材料很大,而要加工的工件很少,余下的材料为了二次利用,希望加工材料尽可能规整(尽可能为矩形,或接近)
NestProfessor参考资料
资料下载 http://www.nestprofessor.com/download/
当前正在使用的SDK(VisualStudio2015编译,需要安装C++的支持)
http://www.nestprofessor.com/download/NP5.3.2/NestProfessorV5-x86-vs2015-net.zip
http://www.nestprofessor.com/download/NP5.3.2/NestProfessorV5-x64-vs2015-net.zip
DEMO程序(没有加密狗情况下可试用)
http://www.nestprofessor.com/download/NP5.3.2/NestProfessor-Client.zip