add linear infill
This commit is contained in:
parent
72a670c0ae
commit
453348af4b
3 changed files with 32 additions and 3 deletions
|
|
@ -18,7 +18,8 @@ var gs_kiri_fill = exports;
|
||||||
hex: fillHexFull,
|
hex: fillHexFull,
|
||||||
grid: fillGrid,
|
grid: fillGrid,
|
||||||
gyroid: fillGyroid,
|
gyroid: fillGyroid,
|
||||||
triangle: fillTriangle
|
triangle: fillTriangle,
|
||||||
|
linear: fillLinear
|
||||||
};
|
};
|
||||||
|
|
||||||
function fillHexFull(target) {
|
function fillHexFull(target) {
|
||||||
|
|
@ -148,6 +149,32 @@ var gs_kiri_fill = exports;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function fillLinear(target) {
|
||||||
|
let bounds = target.bounds();
|
||||||
|
let height = target.zHeight();
|
||||||
|
let span_x = bounds.max.x - bounds.min.x;
|
||||||
|
let span_y = bounds.max.y - bounds.min.y;
|
||||||
|
let density = target.density();
|
||||||
|
let offset = target.offset() / 2;
|
||||||
|
let tile = 1 + (1 - density);
|
||||||
|
let tile_xc = span_x / tile;
|
||||||
|
let tile_yc = span_y / tile;
|
||||||
|
|
||||||
|
if (target.zIndex() % 2 === 1) {
|
||||||
|
for (let tx=0; tx<=tile_xc; tx++) {
|
||||||
|
target.newline();
|
||||||
|
target.emit(bounds.min.y, tx * tile + bounds.min.x);
|
||||||
|
target.emit(bounds.max.y, tx * tile + bounds.min.x);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (let ty=0; ty<=tile_yc; ty++) {
|
||||||
|
target.newline();
|
||||||
|
target.emit(ty * tile + bounds.min.y, bounds.min.x);
|
||||||
|
target.emit(ty * tile + bounds.min.y, bounds.max.x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function fillTriangle(target) {
|
function fillTriangle(target) {
|
||||||
let bounds = target.bounds();
|
let bounds = target.bounds();
|
||||||
let height = target.zHeight();
|
let height = target.zHeight();
|
||||||
|
|
|
||||||
|
|
@ -709,9 +709,10 @@ let gs_kiri_slice = exports;
|
||||||
|
|
||||||
scope._fill_finger = POLY.fingerprint(polys);
|
scope._fill_finger = POLY.fingerprint(polys);
|
||||||
|
|
||||||
|
let skippable = type !== 'gyroid' && type !== 'linear';
|
||||||
let miss = false;
|
let miss = false;
|
||||||
// if the layer below has the same fingerprint, we may be able to clone its infill
|
// if the layer below has the same fingerprint, we may be able to clone its infill
|
||||||
if (scope.fingerprintSame(down)) {
|
if (skippable && scope.fingerprintSame(down)) {
|
||||||
// the fill fingerprint can slightly different because of solid projections
|
// the fill fingerprint can slightly different because of solid projections
|
||||||
if (down._fill_finger && POLY.fingerprintCompare(scope._fill_finger, down._fill_finger)) {
|
if (down._fill_finger && POLY.fingerprintCompare(scope._fill_finger, down._fill_finger)) {
|
||||||
for (let i=0; i<tops.length; i++) {
|
for (let i=0; i<tops.length; i++) {
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,8 @@ self.kiri.copyright = exports.COPYRIGHT;
|
||||||
{ name: "hex" },
|
{ name: "hex" },
|
||||||
{ name: "grid" },
|
{ name: "grid" },
|
||||||
{ name: "gyroid" },
|
{ name: "gyroid" },
|
||||||
{ name: "triangle" }
|
{ name: "triangle" },
|
||||||
|
{ name: "linear" }
|
||||||
],
|
],
|
||||||
units:[
|
units:[
|
||||||
{ name: "mm" },
|
{ name: "mm" },
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue