fix double inset. bump rev 2.4.D7

This commit is contained in:
Stewart Allen 2020-11-28 10:52:54 -05:00
commit 44df978a67
4 changed files with 24 additions and 11 deletions

View file

@ -26,17 +26,15 @@
* `F` mesh / stl export (like w/ images, rotate, scale, future cleanup ops)
* `F` detect and report slow framerates
* `F` right click / context menu (object deletion, etc)
* `P` improve decimation speed by avoiding in/out of Point?
* `P` duplicate objects should share same slice data unless rotated or scaled
* `P` worker state cache cleanup and organization
* `P` client/worker interface normalization
* `P` optimize object import to vertices + indexes to save memory
* `P` allow selection to me decimated on demand (context menu?)
* `P` improve decimation speed by avoiding in/out of Point?
* `P` optimize object import to vertices + indexes to save memory
* `P` client/worker interface normalization
# FDM
* `B` sparse infill should follow polys between intersect points
* `B` expand > 0 producing artifacts with manual supports
* `B` fix adaptive slicing with multi-extruder
* `B` fix supports with grouped parts
* `B` multi-extruder rendering of raft fails to offset the rest of the print
@ -51,7 +49,7 @@
* `F` first layer segment large flat areas for better fill reliability
* `F` enable purge blocks when quick layers are detected
* `F` apply finish speed to exposed top and underside flat areas
* `F` expand internal supporting flats
* `F` expand internal supporting flats / solids before projection
* `F` first layer support speed should be same as shell speed
* `F` trim support offset from layer below
* `F` option to support interior bridges when 0% infill
@ -68,7 +66,6 @@
* `B` climb vs conventional not fully consistent after refactor
* `B` outside cutting direction in roughing mode inverted
* `B` clear voids has double interior pass because wrong offset shadow used
* `B` top clearing operations should use linear, not offset, passes
* `F` animation should clear the mesh in areas where the cuts go through the stock?
* `F` switch z top offset to an z anchor (top/bottom) + offset

View file

@ -1,6 +1,6 @@
{
"name": "grid-apps",
"version": "2.4.6D",
"version": "2.4.7D",
"description": "grid.space 3d slice & modeling tools",
"author": "Stewart Allen <sa@grid.space>",
"license": "MIT",

View file

@ -3,7 +3,7 @@
let terms = {
COPYRIGHT: "Copyright (C) Stewart Allen <sa@grid.space> - All Rights Reserved",
LICENSE: "See the license.md file included with the source distribution",
VERSION: "2.4.D6"
VERSION: "2.4.D7"
};
if (typeof(module) === 'object') {

View file

@ -266,7 +266,8 @@
if (proc.camRoughVoid) {
return undefined;
}
let po = POLY.offset([p], -(roughToolDiam + camRoughStock));
// let po = POLY.offset([p], -(roughToolDiam + camRoughStock));
let po = POLY.offset([p], -(roughToolDiam / 2 + camRoughStock + 0.001));
return po ? po[0] : undefined;
} else {
return p;
@ -276,7 +277,8 @@
shadow = POLY.nest(shadow);
// expand shadow by half tool diameter + stock to leave
const sadd = procRoughIn ? roughToolDiam / 4 : roughToolDiam / 2;
// const sadd = procRoughIn ? roughToolDiam / 4 : roughToolDiam / 2;
const sadd = procRoughIn ? roughToolDiam / 2 : roughToolDiam / 2;
const shell = POLY.offset(shadow, sadd + camRoughStock);
nextOp();
@ -318,6 +320,20 @@
if (!offset) return;
// elimate double inset on inners
offset.forEach(op => {
if (op.inner) {
let operim = op.perimeter();
let newinner = [];
op.inner.forEach(oi => {
if (Math.abs(oi.perimeter() - operim) > 0.01) {
newinner.push(oi);
}
});
op.inner = newinner;
}
});
slice.camLines = offset;
if (true) slice.output()
.setLayer("slice", {line: 0xaaaa00}, true)