add sketch item intersection and difference
This commit is contained in:
parent
5f001f3050
commit
d86d71fef8
2 changed files with 31 additions and 2 deletions
|
|
@ -274,8 +274,10 @@ function space_init(data) {
|
||||||
switch (code) {
|
switch (code) {
|
||||||
case 'KeyA':
|
case 'KeyA':
|
||||||
if (metaKey || ctrlKey) {
|
if (metaKey || ctrlKey) {
|
||||||
api.mode.object();
|
if (!selection.sketch()?.selection.all()) {
|
||||||
selection.set(api.group.list());
|
api.mode.object();
|
||||||
|
selection.set(api.group.list());
|
||||||
|
}
|
||||||
estop(evt);
|
estop(evt);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -141,6 +141,12 @@ mesh.sketch = class MeshSketch extends mesh.object {
|
||||||
return sketch.group.children.filter(c => c.sketch_item && c.sketch_item.selected);
|
return sketch.group.children.filter(c => c.sketch_item && c.sketch_item.selected);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
all() {
|
||||||
|
sketch.items.forEach(i => i.selected = true);
|
||||||
|
sketch.render();
|
||||||
|
return sketch.items.length;
|
||||||
|
},
|
||||||
|
|
||||||
// return true if any selections were cleared
|
// return true if any selections were cleared
|
||||||
clear() {
|
clear() {
|
||||||
let sel = sketch.items.filter(i => i.selected);
|
let sel = sketch.items.filter(i => i.selected);
|
||||||
|
|
@ -176,6 +182,27 @@ mesh.sketch = class MeshSketch extends mesh.object {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
intersect() {
|
||||||
|
let items = sketch.selection.mesh_items();
|
||||||
|
let polys = items.map(i => i.sketch_item.poly);
|
||||||
|
let trim = POLYS.trimTo([polys[0]], [polys[1]]);
|
||||||
|
sketch.selection.delete();
|
||||||
|
for (let poly of trim) {
|
||||||
|
sketch.add_polygon({ poly });
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
difference() {
|
||||||
|
let items = sketch.selection.mesh_items();
|
||||||
|
let polys = items.map(i => i.sketch_item.poly);
|
||||||
|
let diff1 = POLYS.diff([polys[0]], [polys[1]]);
|
||||||
|
let diff2 = POLYS.diff([polys[1]], [polys[0]]);
|
||||||
|
sketch.selection.delete();
|
||||||
|
for (let poly of [...diff1, ...diff2]) {
|
||||||
|
sketch.add_polygon({ poly });
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
group() {
|
group() {
|
||||||
let items = sketch.selection.mesh_items();
|
let items = sketch.selection.mesh_items();
|
||||||
let polys = items.map(i => i.sketch_item.poly).clone(true);
|
let polys = items.map(i => i.sketch_item.poly).clone(true);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue