void build() { filename = "my_tile2.svg"; shp = RG.loadShape(path + filename); shp = RG.centerIn(shp, g, 100); UVertexList vl, vl2; vl = new UVertexList(); for (int i = 0; i < 5; i++) vl.add(i, 0); vl.close(); vl.insert(2, vl.get(1)); println(UMB.str(vl.removeDuplID())); println(vl.str()); // We decided the separation between the polygon points dependent of the mouseX float pointSeparation = map(constrain(mouseX, 100, width - 100), 100, width - 100, 4, 20); // We create the polygonized version RG.setPolygonizer(RG.UNIFORMLENGTH); RG.setPolygonizerLength(pointSeparation); polyshp = RG.polygonize(shp); poly = polyshp.toPolygon(); ArrayList<UVertexList> cont = UGeomerative.fromRContour(poly.contours); println("contours " + cont.size()); // for(UVertexList tmp:cont) { // tmp.removeDupl(true); //// println("isClockwise "+tmp.isClockwise()); // } // PGraphicsPDF pdf=(PGraphicsPDF)createGraphics(1000,1000,PDF,path+"test1.pdf"); // UMB.setGraphics(pdf); // pdf.beginDraw(); // pdf.translate(500,500); // pdf.stroke(0); // geo.draw(); // pdf.endDraw(); // pdf.flush(); // pdf.dispose(); geo2 = UPoly2Tri.triangulate(cont); geo = geo2.copy(); geo.extrudeSelf(50, true); // geo.removeDuplV().regenerateFaceData(); geo.writeSTL(path + "test1.stl"); }