Next step is working up a module to handle arcs.
The interface and DXF portion of this are quite simple:
module cutarcNWCCdxf(tn, ex, ey, ez, xcenter, ycenter, radius){
dxfarc(tn,xcenter,ycenter,radius,0,90);
}
but the actual cutting is a bit more involved — once again, this all raises the question of “What does an algorithm look like?”.
In BlockSCAD:
(this code will work a bit more straight-forwardly in PythonSCAD where it is possible to store the previous position)
module cutarcNWCCdxf(tn, ex, ey, ez, xcenter, ycenter, radius) {
dxfarc(tn,xcenter,ycenter,radius,0,90);
for (i = [1 : abs(1) : 90]) {
cut(xcenter + radius * cos(i),ycenter + radius * sin(i),ez);
setxpos(xcenter + radius * cos(i));
setypos(ycenter + radius * sin(i));
}
}
Unfortunately, it and a similar module when put together so as to make a semicircle:
cutarcNWCCdxf(KH_tool_no, getxpos()-25, getypos()+25, -stockthickness, getxpos()-25, getypos(), 25);
cutarcNECCdxf(KH_tool_no, getxpos()-25, getypos()-25, -stockthickness, getxpos(), getypos()-25, 25);
Result in two slightly over-size arcs which do not fit together as expected: