add 3 point registration holes. fix animation + dwell

This commit is contained in:
Stewart Allen 2020-12-15 12:27:48 -05:00
commit 345ad8f27d
4 changed files with 25 additions and 7 deletions

View file

@ -1,8 +1,7 @@
# Kiri:Moto todo and notes
## 2.5 roadmap
## 2.5 plan
# `cnc`
# - lathe, A-axis
# - complex process order
# - split gcode output
# - double-sided assistance
@ -10,9 +9,10 @@
# - more tracing types (in, out, clear, pocket)
# - trace re-ordering
# `fdm`
# - redo automatic supports using faces instead of deltas
# - bind process to z ranges or boxed regions
# - non-planar actual
# `sla`
# - common support area detection from new fdm code
## `C` cosmetic, `F` functional, `P` performance, `B` bug fix
@ -65,7 +65,6 @@
* `F` validate muti-part layout and spacing exceeds largest outside tool diameter
* `F` skip "thru" holes checkbox for roughing and outlining
* `F` polygon simplification option in tracing (for image derived maps)
* `F` use 3 registration holes to prevent rotation accidents (midline offset one axis)
* `F` exports separate files for each operation
* `F` switch z top offset to a z anchor (top/bottom) + offset
* `F` A-B linked cutting profiles for double-sided milling / part flips
@ -84,6 +83,7 @@
* `F` add support for tapered ball mills
* `F` warn when part > stock or cuts go outside bed
* `F` animation should clear the mesh in areas where the cuts go through the stock?
* `F` support lathe mode / A-axis / rotary
* `P` detect render message backlog and pause or warn
* `P` redo all path route / planning in prepare to account for terrain before camOut
* `P` allow faster z movements when contouring (not plunging)

View file

@ -160,7 +160,9 @@
drillreg: [
{ name: "none" },
{ name: "x axis" },
{ name: "y axis" }
{ name: "y axis" },
{ name: "x axis 3" },
{ name: "y axis 3" }
],
detail: [
{ name: "best" },

View file

@ -372,6 +372,11 @@ self.kiri.loader.push(function() {
const id = toolID;
if (last) {
const lp = last.point, np = next.point;
// dwell ops have no point
if (!np) {
setTimeout(() => { renderPath(send) }, 0);
return;
}
const dx = np.x - lp.x, dy = np.y - lp.y, dz = np.z - lp.z;
// skip moves that are closer than resolution
if (Math.sqrt(dx*dx +dy*dy + dz*dz) < rez) {

View file

@ -193,7 +193,7 @@
if (procDrillReg) {
updateToolDiams(drillToolDiam);
sliceDrillReg(settings, sliceAll, zThru);
sliceDrillReg(settings, drillTool, sliceAll, zThru);
}
// identify through holes
@ -765,10 +765,11 @@
}
// drill registration holes
function sliceDrillReg(settings, output, zThru) {
function sliceDrillReg(settings, tool, output, zThru) {
let proc = settings.process,
stock = settings.stock,
bounds = settings.bounds,
r3 = tool.fluteDiameter() * 2,
mx = (bounds.max.x + bounds.min.x) / 2,
my = (bounds.max.y + bounds.min.y) / 2,
mz = zThru || 0,
@ -782,10 +783,20 @@
points.push(newPoint(bounds.min.x - dx, my, 0));
points.push(newPoint(bounds.max.x + dx, my, 0));
break;
case "x axis 3":
points.push(newPoint(bounds.min.x - dx, my, 0));
points.push(newPoint(bounds.max.x + dx, my - r3, 0));
points.push(newPoint(bounds.max.x + dx, my + r3, 0));
break;
case "y axis":
points.push(newPoint(mx, bounds.min.y - dy, 0));
points.push(newPoint(mx, bounds.max.y + dy, 0));
break;
case "y axis 3":
points.push(newPoint(mx, bounds.min.y - dy, 0));
points.push(newPoint(mx - r3, bounds.max.y + dy, 0));
points.push(newPoint(mx + r3, bounds.max.y + dy, 0));
break;
}
if (points.length) {