JAVA套料程序_Nest4J是一款基于Java作为开发语言的Nest算法包

Nest4J是一个基于Java的Nest算法包,用于解决套料问题,即如何在矩形底板上最优放置多个不重叠的形状。它基于SVGNest改造,支持后台计算服务。用户可以通过简单的步骤配置底板、形状、参数,并利用遗传算法进行计算。Nest4J还提供了SVG可视化输出和一些自定义设置选项。
摘要由CSDN通过智能技术生成

Nest4J

Nest4J是一款基于Java作为开发语言的Nest算法包。可以看做一款能在服务端进行运行计算的Nest算法库。 基于SVGNest进行了Java化的改造。

同样这也作为了我本科的毕业设计,让我领略到了计算几何和遗传算法的魅力。

什么是套料?

在给定一个矩形底板和以及一些字母材料时,如何将这些字母材料尽可能的塞进这个矩形底板并且保持字母两两之间并不会重合?通过一些特殊的摆放顺序与位置以及将每个字母旋转到合适的角度,我们可以达到这个目的。而如何去计算出材料与地板之间的位置关系以及材料的旋转角度,或者其他更高的要求,我们将这类问题称之为套料问题。

c49862011cfaf18a1895cb0632946bfd.png

更多细节请参考SVGNest

效果

我使用了SVGNest的Demo例子让Nest4J进行计算。得出了以下的效果图

c0833ad6edd86f9d5243a0c6fa0dde13.png

如何使用

本算法基于SVGNest,做了Java化的改造,使得这个算法可以运行在服务器环境中进行后台计算服务。

Nest4J的使用方法非常简单。通过以下几步,你就可以轻松掌握如何使用Nest4J

环境

Nest4J使用JDK1.8版本编写而成,使用到了Clipper-java的maven依赖。 所以你需要先将Clipper-java下载至本地后打成本地依赖才能将Nest4J打成mvn依赖包。

多边形表示方法

Nest4J的多边形表示方法就是通用的通过点集来表示一个多边形。下面这个例子向我们展示了如何构造出一个矩形的多边形。

值得注意的是,Nest4J表示多边形的方法是基于一个二维直角坐标系,即你需要保证输入的多边形两两之间并不会重合,否则就会引起报错。

NestPath bin = new NestPath();

double binWidth = 511.822;

double binHeight = 339.235;

bin.add(0, 0);

bin.add(binWidth, 0);

bin.add(binWidth, binHeight);

bin.add(0, binHeight);

构造板件素材

当我们知道如何构造多边形时,在构造板件集合时,其实就是构造一个多边形的集合。

List list = new ArrayList();

list.add(inner);

list.add(outer);

list.add(little);

板件的扩展选择

当一个板件被构造出来时,他的默认Rotation属性为0,这意味着我们在套料过程中固定住这个板件,不能使他旋转。为了让他旋转,我们可以设置他的Rotation属性为4,这意味着这个板件在套料过程中可以旋转90°,180°,270°。即当我们设置某个板件的Rotation为N时,这个板件在套料过程中就有旋转**(360/N)*k , k= 0,1,2,3,...N这些选择。同时,你也可以设置每个板件的bid**属性,这将帮助你在套料开始前与套料结束后对你的板件一一对应。

与SVGNest不同,你可以在构造板件过程中自己设置每个板件的旋转角度,使得每个板件的旋转角度选择不同,建议rotation属性设置为360的因数

polygon.bid = id;

polygon.setRotation(4);

空心板件

对于某些存在空心的板件,空心可以不止一个空心。Nest4J表示一个存在空心的多边形也非常简单,只要通过将这个空心的图形通过二维平面直角坐标系描述出来以后,在板件的内部中即可。Nest4J会自动发现板件中存在空心。

NestPath outer = new NestPath();

outer.add(600, 0);

outer.add(600, 200);

outer.add(800, 200);

outer.add(800, 0);

outer.setRotation(0);

outer.bid = 1;

NestPath inner = new NestPath();

inner.add(650, 50);

inner.add(650, 150);

inner.add(750, 150);

inner.add(750, 50);

inner.bid = 2;

属性设置

Nest4J在开始套料计算前,允许用户进行一些自定义的设置。

Config config = new Config();

config.SPACING = 0;

config.POPULATION_SIZE = 5;

属性

描述

默认值

SPACING

在套料过程中,所有板件两两之间的距离

0

POPULATION_SIZE

利用遗传算法时所生成的族群个体数量

10

MUTATION_RATE

利用遗传算法时,套料顺序的变异几率

百分之10

USE_HOLE

当板件中存在空心板件时,是否允许将板件放在空心板件当中

false

开始计算

当我们配置好所需要的底板,板件集,以及相关参数后,以及我们需要的迭代次数,我们便可以开始进行套料计算。

Nest nest = new Nest(bin, polygons, config, 2);

List> appliedPlacement = nest.startNest();

Placement

Placement作为我们最后计算结果的一个单元,代表着某个Bid的板件,相对于他的底板左上角的偏移值和旋转角度。 我们最终拿到了一个List>的计算结果,其中代表着在一块底板中,某些板件的偏移值及旋转角度。

public class Placement {

public int bid;

public Segment translate;

public double rotate;

public Placement(int bid, Segment translate, double rotate) {

this.bid = bid;

this.translate = translate;

this.rotate = rotate;

}

public Placement() {

}

}

可视化

对于输出结果,我提供了一种基于SVG可视化的方法。你可以在NestTest中查看。

List strings = SvgUtil.svgGenerator(polygons, appliedPlacement, binWidth, binHeight);

saveSvgFile(strings);

参考论文

TODO

基于Java1.8进行语言层面的优化

进行多线程改造优化效率

改造NFP的缓存策略。

改造多边形的放大缩小计算效率。

SmartNest套料软件旗舰店,http://smartnest.taobao.com 热忱欢迎您的光临! 诚信经营,价格实惠,货源充足。诚信对待每一个客户,稍有疏忽或者怠慢的地方,请亲见谅! 本网店刚刚开业,只为信誉,价格实惠,欢迎购买! 旺旺:winter393629362 QQ:393629362 电话:18948723725 SmartNest是武汉智格科技有限公司历经十余年不懈努力、精心研发的一款具有自主知识产权的切割套料编程软件,该软件的核心技术指标已达到国际先进水平! (1)全自动高速优化套料——利用率提高1%~5% (2)全自动智能共边切割——切割效率提高10%~50% 专业的研发团队、持续的改进完善、长期的应用实践将SmartNest打造成中国最优秀的专业级产品,被用户誉为“中国目前最好的切割套料编程软件”! SmartNest是武汉智格科技有限公司历经十余年不懈努力、精心研发的一款具有自主知识产权的切割套料编程软件,该软件的核心技术指标已达到国际先进水平!专业的研发团队、持续的改进完善、长期的应用实践将SmartNest打造成中国最优秀的专业级产品,被用户誉为“中国目前最好的切割套料编程软件”! SmartNest是一套用于板材切割下料的计算机软件系统,具有强大的优化套料与自动编程功能,适用于火焰/等离子/激光/水射流等各类数控切割机。SmartNest软件的功能覆盖了板材下料及其生产管理的各个方面,括切割零件库管理、板材及其余料库管理、自动套料、交互套料、切割轨迹优化、数控自动编程及切割模拟、数据汇总与统计报表等,并可与企业PDM、ERP等信息系统集成,为企业板材切割下料生产提供集成解决方案。实践表明:应用SmartNest系统可明显提高下料企业的板材利用率和编程、操作自动化水平,有效降低产品成本、规范生产管理、提高经济效益。 SmartNest产品特色 1、 功能齐备 提供多种套料算法(真实形状/矩形络/通裁通剪/阵列式) 支持多种套料模式(单张/批量/复制/余料/局部填充/交互式) 集成化数据管理(零件库/钢板库/统计报表) 2、技术先进 全自动高速优化套料(材料利用率提高1%~5%) 全自动智能共边切割(提供多种共边切割方法,切割效率提高10%~50%) 3、操作简便 10分钟学会基本操作! 3分钟输出切割代码! 4、自主版权 具有完全自主知识产权,是中国自己的套料软件 以著名高校为技术依托,提供优质的本地化服务 SmartNest主要功能: 1、切割零件库管理 2、切割钢板库管理 3、自动套料 4、交互套料 5、切割路径优化 6、自动编程与切割模拟 7、数据汇总与统计报表 8、集成解决方案 www.nestcut.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值