From e8c7e2b01424127e5e967c0e37dc5b45224a0035 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Thu, 20 Jan 2022 18:30:15 -0500 Subject: [PATCH] allow proper scaling from a selected model, not group --- src/mesh/build.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/mesh/build.js b/src/mesh/build.js index 4511727e..5f9ca0f2 100644 --- a/src/mesh/build.js +++ b/src/mesh/build.js @@ -353,6 +353,7 @@ function ui_build() { // builds a modal dialog that updates the object and field function field_edit(title, set) { return function(ev) { + let value = ev.target.innerText; let onclick = (ev) => { let tempval = parseFloat($('tempval').value); api.modal.hide(modal.info.cancelled); @@ -360,7 +361,7 @@ function ui_build() { return; } for (let g of api.selection.groups()) { - set(g, tempval); + set(g, tempval, value); g.floor(mesh.group); defer_selection(); // update ui } @@ -372,7 +373,7 @@ function ui_build() { } }; let { tempval } = api.modal.show(title, h.div({ class: "tempedit" }, [ - h.input({ id: 'tempval', value: ev.target.innerText, size: 10, onkeydown }), + h.input({ id: 'tempval', value, size: 10, onkeydown }), h.button({ _: 'set', onclick }) ])); tempval.setSelectionRange(0, tempval.value.length); @@ -497,27 +498,27 @@ function ui_build() { defer_selection(); // update ui }; }); - span_val_X_size.onclick = field_edit('x size', (group, val) => { + span_val_X_size.onclick = field_edit('x size', (group, val, oval) => { let dim = group.bounds.dim; - let rel = val / dim.x; + let rel = val / parseFloat(oval); if (axgrp.X) { group.scale(rel, axgrp.Y ? rel : 1, axgrp.Z ? rel : 1); } else { group.scale(rel, 1, 1); } }); - span_val_Y_size.onclick = field_edit('y size', (group, val) => { + span_val_Y_size.onclick = field_edit('y size', (group, val, oval) => { let dim = group.bounds.dim; - let rel = val / dim.y; + let rel = val / parseFloat(oval); if (axgrp.Y) { group.scale(axgrp.X ? rel : 1, rel, axgrp.Z ? rel : 1); } else { group.scale(1, rel, 1); } }); - span_val_Z_size.onclick = field_edit('z size', (group, val) => { + span_val_Z_size.onclick = field_edit('z size', (group, val, oval) => { let dim = group.bounds.dim; - let rel = val / dim.z; + let rel = val / parseFloat(oval); if (axgrp.Z) { group.scale(axgrp.X ? rel : 1, axgrp.Y ? rel : 1, rel); } else {