fix 0 segment length error in lathe slicing and threaded angle orders
This commit is contained in:
parent
592fd98085
commit
bfec51b544
3 changed files with 6 additions and 4 deletions
|
|
@ -17,6 +17,7 @@ Full docs @ https://docs.grid.space/projects/kiri-moto
|
||||||
* CAM stock is now always on, whether offset or absolute
|
* CAM stock is now always on, whether offset or absolute
|
||||||
* CAM add lathe worker parallelization (2x - 6x speedup)
|
* CAM add lathe worker parallelization (2x - 6x speedup)
|
||||||
- add "common" overrides in ops (z top/bottom/thru, direction)
|
- add "common" overrides in ops (z top/bottom/thru, direction)
|
||||||
|
- fix lathe yellow path in normal (not dark) mode
|
||||||
|
|
||||||
|
|
||||||
# Release 3.8 (2023-01-21)
|
# Release 3.8 (2023-01-21)
|
||||||
|
|
|
||||||
|
|
@ -1359,8 +1359,8 @@ CAM.init = function(kiri, api) {
|
||||||
spindle: UC.newInput(LANG.cc_spnd_s, {title:LANG.cc_spnd_l, convert:UC.toInt, show:hasSpindle}),
|
spindle: UC.newInput(LANG.cc_spnd_s, {title:LANG.cc_spnd_l, convert:UC.toInt, show:hasSpindle}),
|
||||||
rate: UC.newInput(LANG.cc_feed_s, {title:LANG.cc_feed_l, convert:UC.toInt, units:true}),
|
rate: UC.newInput(LANG.cc_feed_s, {title:LANG.cc_feed_l, convert:UC.toInt, units:true}),
|
||||||
sep: UC.newBlank({class:"pop-sep"}),
|
sep: UC.newBlank({class:"pop-sep"}),
|
||||||
step: UC.newInput(LANG.cc_sovr_s, {title:LANG.cc_sovr_l, convert:UC.toFloat, bound:UC.bound(0.01,10.0)}),
|
step: UC.newInput(LANG.cc_sovr_s, {title:LANG.cc_sovr_l, convert:UC.toFloat, bound:UC.bound(0.01,100.0)}),
|
||||||
angle: UC.newInput(LANG.cc_sang_s, {title:LANG.cc_sang_l, convert:UC.toFloat, bound:UC.bound(0.01,90.0)}),
|
angle: UC.newInput(LANG.cc_sang_s, {title:LANG.cc_sang_l, convert:UC.toFloat, bound:UC.bound(0.01,180.0)}),
|
||||||
sep: UC.newBlank({class:"pop-sep"}),
|
sep: UC.newBlank({class:"pop-sep"}),
|
||||||
tolerance: UC.newInput(LANG.ou_toll_s, {title:LANG.ou_toll_l, convert:UC.toFloat, bound:UC.bound(0,10.0), units:true, round:4}),
|
tolerance: UC.newInput(LANG.ou_toll_s, {title:LANG.ou_toll_l, convert:UC.toFloat, bound:UC.bound(0,10.0), units:true, round:4}),
|
||||||
leave: UC.newInput(LANG.cf_leav_s, {title:LANG.cf_leav_l, convert:UC.toFloat, bound:UC.bound(0,100)}),
|
leave: UC.newInput(LANG.cf_leav_s, {title:LANG.cf_leav_l, convert:UC.toFloat, bound:UC.bound(0,100)}),
|
||||||
|
|
|
||||||
|
|
@ -266,7 +266,7 @@ class Topo4 {
|
||||||
// get slice index corresponding with offset
|
// get slice index corresponding with offset
|
||||||
const ts = si + xo;
|
const ts = si + xo;
|
||||||
// outside of slice array, skip
|
// outside of slice array, skip
|
||||||
if (ts < 0 || ts >= slen) continue;
|
if (ts < 0 || ts >= slen - 1) continue;
|
||||||
const slice = oslices[ts];
|
const slice = oslices[ts];
|
||||||
const lines = slice.lines;
|
const lines = slice.lines;
|
||||||
const plen = lines.length;
|
const plen = lines.length;
|
||||||
|
|
@ -280,6 +280,7 @@ class Topo4 {
|
||||||
if ((py0 <= yo && py1 >= yo) || (py1 <= yo && py0 >= yo)) {
|
if ((py0 <= yo && py1 >= yo) || (py1 <= yo && py0 >= yo)) {
|
||||||
const dz = pz1 - pz0;
|
const dz = pz1 - pz0;
|
||||||
const dy = Math.abs(py1 - py0);
|
const dy = Math.abs(py1 - py0);
|
||||||
|
if (dy === 0) continue;
|
||||||
const fr = Math.abs(yo - py0) / dy;
|
const fr = Math.abs(yo - py0) / dy;
|
||||||
const lz = pz0 + dz * fr + zo;
|
const lz = pz0 + dz * fr + zo;
|
||||||
// check z height
|
// check z height
|
||||||
|
|
@ -400,7 +401,7 @@ class Topo4 {
|
||||||
}
|
}
|
||||||
|
|
||||||
await Promise.all(promises);
|
await Promise.all(promises);
|
||||||
recs.sort((a, b) => { return a.angle - b.angle });
|
recs.sort((a, b) => { return b.angle - a.angle });
|
||||||
|
|
||||||
count = recs[0].heights.length / 3;
|
count = recs[0].heights.length / 3;
|
||||||
while (count-- > 0) {
|
while (count-- > 0) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue