diff --git a/src/mesh/api.js b/src/mesh/api.js index 3cfb134a..a3d87fa5 100644 --- a/src/mesh/api.js +++ b/src/mesh/api.js @@ -80,6 +80,7 @@ const selection = { selected = objects.map(o => o.models ? o.models : o).flat(); tools = toolist || []; meshUtil.defer(selection.update); + return api.selection; }, // @param group {MeshObject} @@ -1028,7 +1029,7 @@ const tool = { return log('nothing to merge'); } log(`merging ${models.length} models`).pin(); - worker.model_merge(models.map(m => { + return worker.model_merge(models.map(m => { return { id: m.id, matrix: m.matrix } })) .then(data => { @@ -1039,6 +1040,7 @@ const tool = { api.selection.visible(false); api.selection.set([group]); log('merge complete').unpin(); + return group; }); }, @@ -1118,7 +1120,7 @@ const tool = { return log('nothing to subtract'); } log(`subtract ${models.length} models`).pin(); - worker.model_subtract(models.map(m => { + return worker.model_subtract(models.map(m => { return { id: m.id, tool: m.tool() } })) .then(data => { @@ -1128,6 +1130,7 @@ const tool = { })]).promote(); api.selection.delete(); api.selection.set([group]); + return group; }) .catch(error => { log(`subtract error: ${error}`); @@ -1150,7 +1153,7 @@ const tool = { for (let m of models) { nm.push(m.duplicate({ select: dup_sel, shift: dup_shift })); } - tool.regroup(nm); + return tool.regroup(nm); }, mirror() { diff --git a/src/mesh/group.js b/src/mesh/group.js index 37ec9077..e8d5035d 100644 --- a/src/mesh/group.js +++ b/src/mesh/group.js @@ -41,6 +41,11 @@ class MeshGroup extends meshObject { return box3; } + rename(name) { + this.name = name; + return this; + } + // @param model {MeshModel} add(model) { model.group = this; diff --git a/src/mesh/model.js b/src/mesh/model.js index 70a5a92d..fd0655b5 100644 --- a/src/mesh/model.js +++ b/src/mesh/model.js @@ -334,6 +334,7 @@ class MeshModel extends meshObject { rename(file) { this.file = file; this.sync(); + return this; } // sync to worker and indexeddb for page restoration or worker ops diff --git a/src/mesh/script.js b/src/mesh/script.js index 61e6ba46..31e19498 100644 --- a/src/mesh/script.js +++ b/src/mesh/script.js @@ -26,6 +26,13 @@ export const script = { }, execute() { let cmd = localStorage.script || `console.log('no script')`; - if (cmd) eval(`{ \n ${cmd} \n }`); + if (cmd) { + cmd = [ + '(async () => {', + cmd, + '})();' + ].join('\n'); + eval(`{ \n ${cmd} \n }`); + } } };