allow proper scaling from a selected model, not group

This commit is contained in:
Stewart Allen 2022-01-20 18:30:15 -05:00
commit e8c7e2b014

View file

@ -353,6 +353,7 @@ function ui_build() {
// builds a modal dialog that updates the object and field // builds a modal dialog that updates the object and field
function field_edit(title, set) { function field_edit(title, set) {
return function(ev) { return function(ev) {
let value = ev.target.innerText;
let onclick = (ev) => { let onclick = (ev) => {
let tempval = parseFloat($('tempval').value); let tempval = parseFloat($('tempval').value);
api.modal.hide(modal.info.cancelled); api.modal.hide(modal.info.cancelled);
@ -360,7 +361,7 @@ function ui_build() {
return; return;
} }
for (let g of api.selection.groups()) { for (let g of api.selection.groups()) {
set(g, tempval); set(g, tempval, value);
g.floor(mesh.group); g.floor(mesh.group);
defer_selection(); // update ui defer_selection(); // update ui
} }
@ -372,7 +373,7 @@ function ui_build() {
} }
}; };
let { tempval } = api.modal.show(title, h.div({ class: "tempedit" }, [ 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 }) h.button({ _: 'set', onclick })
])); ]));
tempval.setSelectionRange(0, tempval.value.length); tempval.setSelectionRange(0, tempval.value.length);
@ -497,27 +498,27 @@ function ui_build() {
defer_selection(); // update ui 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 dim = group.bounds.dim;
let rel = val / dim.x; let rel = val / parseFloat(oval);
if (axgrp.X) { if (axgrp.X) {
group.scale(rel, axgrp.Y ? rel : 1, axgrp.Z ? rel : 1); group.scale(rel, axgrp.Y ? rel : 1, axgrp.Z ? rel : 1);
} else { } else {
group.scale(rel, 1, 1); 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 dim = group.bounds.dim;
let rel = val / dim.y; let rel = val / parseFloat(oval);
if (axgrp.Y) { if (axgrp.Y) {
group.scale(axgrp.X ? rel : 1, rel, axgrp.Z ? rel : 1); group.scale(axgrp.X ? rel : 1, rel, axgrp.Z ? rel : 1);
} else { } else {
group.scale(1, rel, 1); 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 dim = group.bounds.dim;
let rel = val / dim.z; let rel = val / parseFloat(oval);
if (axgrp.Z) { if (axgrp.Z) {
group.scale(axgrp.X ? rel : 1, axgrp.Y ? rel : 1, rel); group.scale(axgrp.X ? rel : 1, axgrp.Y ? rel : 1, rel);
} else { } else {