From 3a4aa465da7ab2ac507e61fff227f3b66ed1430d Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Mon, 22 Sep 2025 12:09:49 -0400 Subject: [PATCH] fixup for origin point finder for high res meshes --- src/kiri/mode/cam/cl-origin.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/kiri/mode/cam/cl-origin.js b/src/kiri/mode/cam/cl-origin.js index 5b63f8ac..c694f078 100644 --- a/src/kiri/mode/cam/cl-origin.js +++ b/src/kiri/mode/cam/cl-origin.js @@ -25,6 +25,16 @@ export function originSelect() { env.hover = pointHover; env.hoverUp = pointHoverUp; + // less precise point key for hi-res meshes that leads to dups + function updateKey(pt) { + pt._key = [ + ((pt.x * 1000) | 0), + ((pt.y * 1000) | 0), + ((pt.z * 1000) | 0) + ].join(' '); + return pt; + } + CAM.traces((ids) => { api.hide.alert(alert); alert = api.show.alert("select origin
[esc] to cancel", 1000); @@ -53,14 +63,14 @@ export function originSelect() { }); for (let poly of polys) { if (poly.circularity() >= 0.99) { - let center = poly.calcCircleCenter(); + let center = updateKey(poly.calcCircleCenter()); if (points[center.key]) { continue; } addpoint(widget, center); } else if (poly.isOpen()) { - incpoint(widget, poly.first()); - incpoint(widget, poly.last()); + incpoint(widget, updateKey(poly.first())); + incpoint(widget, updateKey(poly.last())); } } });