第一次接触Clipper,主要是想用来处理DXF中的图形,网上也有博友翻译过,但是可惜打不开,好像那个网站https://love2.io凉凉了,但是上也有博友分享了CHM,看着只剩3个下载币的我好无奈,一怒之下花费两天的时间将英文CHM也翻译了一遍,主要还是想在翻译的同时好好的理解Clipper,为使用打下坚实的基础。当然我也会无私的奉献出来。
简单的认识一下Clipper:
Clipper Library是用来裁剪(clipping)和偏移(offsetting )多边形的类库。 Clipper的优点:
它可以处理所有类型的多边形,包括自交多边形它支持多个多边形填充规则(EvenOdd, NonZero, Positive, Negative)相对于其它类库,它非常快它的数值很稳定 鲁棒性强 它还可以处理线段和多边形偏移它可以在免费软件和商业应用程序中免费使用重点是完全免费和开源哦!
简单的使用一下Clipper:
//定义路径集合 Paths ss = new Paths(1); cc = new Paths(1); sss = new Paths(); //添加路径到路径集合中 ss.Add(path); //这里的路径我用path来代替,其实就是一系列点的xy坐标,当然也可以从DXF中获取 cc.Add(path); //这里的路径我用path来代替 //初始化Clipper Clipper cpr = new Clipper(); cpr.AddPaths(ss, PolyType.ptSubject, true);//将ss作为被裁剪主体多边形 cpr.AddPaths(cc, PolyType.ptClip, true); //将cc作为裁剪多边形 cpr.Execute(ClipType.ctXor, sss, PolyFillType.pftNonZero, PolyFillType.pftNonZero);//执行 //SSS作为接收路径集合 .... //这样就获取了一个多边形,接着就可以进行求面积等操作了,比如: double subj_area = 0; foreach (Path pg in sss) subj_area += Clipper.Area(pg); //当然Clipper还有许多参数和方法,比如判断点和面的位置,偏移路径等等,具体的请自己研究去吧!Clipper中文帮助文档下载:
链接:https://download.csdn.net/download/zefllj/11949348,使用这个主要还是想赚点下载币,如果你的币多的话不妨赞助我一下,嘿嘿
百度网盘链接: https://pan.baidu.com/s/1vieFXMat7dkRSz_EQ5TIMg 提取码: ichc ,这里面包括我用Winchm制作的源文件,当然如果你愿意的话还可以进行二次加工。
先展示一下Clipper中文文档: