From 6c89d99bb81fc29e3ebb4326b90caacddae265d3 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Thu, 27 Nov 2025 23:28:59 -0500 Subject: [PATCH] fix tab re-create on slice after rotate --- src/kiri/mode/cam/cl-tab.js | 6 ++++++ src/kiri/mode/cam/client.js | 2 ++ src/kiri/mode/cam/slice.js | 19 ------------------- 3 files changed, 8 insertions(+), 19 deletions(-) diff --git a/src/kiri/mode/cam/cl-tab.js b/src/kiri/mode/cam/cl-tab.js index 0cda4f12..9abcd4af 100644 --- a/src/kiri/mode/cam/cl-tab.js +++ b/src/kiri/mode/cam/cl-tab.js @@ -87,6 +87,12 @@ export function addWidgetTab(widget, rec) { } } +export function recreateTabs() { + let widgets = api.widgets.all(); + for (let w of widgets) clearTabs(w, true); + restoreTabs(widgets); +} + export function restoreTabs(widgets) { widgets.forEach(widget => { const tabs = api.widgets.annotate(widget.id).tab || []; diff --git a/src/kiri/mode/cam/client.js b/src/kiri/mode/cam/client.js index 40adae9e..9ec39699 100644 --- a/src/kiri/mode/cam/client.js +++ b/src/kiri/mode/cam/client.js @@ -18,6 +18,7 @@ import { helicalOn, helicalDone } from './cl-helical.js'; import { originSelectDone } from './cl-origin.js'; import { Widget, newWidget } from '../../core/widget.js'; import { space } from '../../../moto/space.js'; +import { recreateTabs } from './cl-tab.js'; const { BufferGeometryUtils } = THREE; @@ -808,6 +809,7 @@ export function init() { return; } clearPops(); + recreateTabs(); for (let group of Widget.Groups.list()) { let root = group[0]; if (root.tabs) diff --git a/src/kiri/mode/cam/slice.js b/src/kiri/mode/cam/slice.js index 99b62cc1..28585e37 100644 --- a/src/kiri/mode/cam/slice.js +++ b/src/kiri/mode/cam/slice.js @@ -99,25 +99,6 @@ export async function cam_slice(settings, widget, onupdate, ondone) { // initial setup var_compute(); - if (tabs) { - // create tab polygons. defer offset to each op - // since it's dependent on selected tool diameter - tabs.forEach(tab => { - let zero = newPoint(0, 0, 0), - point = newPoint(tab.pos.x, tab.pos.y, tab.pos.z), - poly = newPolygon().centerRectangle(zero, tab.dim.x, tab.dim.y), - [rx, ry, rz, rw] = tab.rot, - m4 = new THREE.Matrix4().makeRotationFromQuaternion( - new THREE.Quaternion(rx, ry, rz, rw) - ); - poly.points = poly.points - .map(p => new THREE.Vector3(p.x, p.y, p.z).applyMatrix4(m4)) - .map(v => newPoint(v.x, v.y, v.z)); - poly.move(point); - tab.poly = poly; - }); - } - function error(msg) { ondone(msg); }