// add full fill and subtract them from normal fill polys void Layer::addFullPolygons(const vector<Poly> &newpolys, bool decor) { if (newpolys.size()==0) return; Clipping clipp; clipp.clear(); // full fill only where already normal fill clipp.addPolys(fillPolygons,subject); if (decor) clipp.addPolys(fullFillPolygons,subject); clipp.addPolys(newpolys,clip); clipp.setZ(Z); vector<Poly> inter = clipp.intersect(); vector<Poly> normals = clipp.subtractMerged(thickness/2.); if (decor) {// && LayerNo != 0) // no decor on base layers decorPolygons.insert(decorPolygons.end(), inter.begin(), inter.end()); Clipping clipp; clipp.addPolys(fullFillPolygons,subject); clipp.addPolys(inter,clip); clipp.setZ(Z); setFullFillPolygons(clipp.subtract()); } else { fullFillPolygons.insert(fullFillPolygons.end(),inter.begin(),inter.end()); } setNormalFillPolygons(normals); // mergeFullPolygons(false); // done separately }
void Layer::mergeFullPolygons(bool bridge) { if (bridge) { //cerr << bridgePolygons.size() ; setBridgePolygons(Clipping::getMerged(bridgePolygons)); //cerr << " --> " << bridgePolygons.size() << endl; } else setFullFillPolygons(Clipping::getMerged(fullFillPolygons)); }
void Layer::mergeFullPolygons(bool bridge) { // if (bridge) { // // setBridgePolygons(Clipping::getMerged(bridgePolygons, thickness)); // // clipp.addPolys(bridgePolygons,clip); // } else { //subtract decor from full Clipping clipp; // clipp.addPolys(fullFillPolygons,subject); // clipp.addPolys(decorPolygons,clip); // setFullFillPolygons(clipp.subtract()); setFullFillPolygons(Clipping::getMerged(fullFillPolygons, thickness)); cleanup(fullFillPolygons, thickness/CLEANFACTOR); //subtract from normal fills clipp.clear(); cleanup(fillPolygons, thickness/CLEANFACTOR); clipp.addPolys(fillPolygons,subject); clipp.addPolys(fullFillPolygons,clip); clipp.addPolys(decorPolygons,clip); vector<Poly> normals = clipp.subtractMerged(); setNormalFillPolygons(normals); // } }