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

View file

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

View file

@ -372,6 +372,11 @@ self.kiri.loader.push(function() {
const id = toolID; const id = toolID;
if (last) { if (last) {
const lp = last.point, np = next.point; 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; const dx = np.x - lp.x, dy = np.y - lp.y, dz = np.z - lp.z;
// skip moves that are closer than resolution // skip moves that are closer than resolution
if (Math.sqrt(dx*dx +dy*dy + dz*dz) < rez) { if (Math.sqrt(dx*dx +dy*dy + dz*dz) < rez) {

View file

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