checkpoint trace work
This commit is contained in:
parent
94dc665231
commit
9945a08dbb
3 changed files with 24 additions and 16 deletions
|
|
@ -206,6 +206,7 @@
|
||||||
flatoff = UTIL.numOrDefault(opt.flatoff, 0.01),
|
flatoff = UTIL.numOrDefault(opt.flatoff, 0.01),
|
||||||
onflat = this.zFlat[znorm],
|
onflat = this.zFlat[znorm],
|
||||||
edges = opt.edges || false,
|
edges = opt.edges || false,
|
||||||
|
over = opt.over || false,
|
||||||
phash = {},
|
phash = {},
|
||||||
lines = [],
|
lines = [],
|
||||||
zScale = this.zScale,
|
zScale = this.zScale,
|
||||||
|
|
@ -237,7 +238,7 @@
|
||||||
// one side of triangle is on the Z plane and 3rd is below
|
// one side of triangle is on the Z plane and 3rd is below
|
||||||
// drop lines with 3rd above because that leads to ambiguities
|
// drop lines with 3rd above because that leads to ambiguities
|
||||||
// with complex nested polygons on flat surface
|
// with complex nested polygons on flat surface
|
||||||
if (edges || where.under.length === 1) {
|
if ((over && where.over.length === 1) || (!over && where.under.length === 1)) {
|
||||||
lines.push(makeZLine(phash, where.on[0], where.on[1], false, true));
|
lines.push(makeZLine(phash, where.on[0], where.on[1], false, true));
|
||||||
}
|
}
|
||||||
} else if (where.on.length === 3) {
|
} else if (where.on.length === 3) {
|
||||||
|
|
|
||||||
|
|
@ -235,8 +235,10 @@
|
||||||
KIRI.api.widgets.for(widget => {
|
KIRI.api.widgets.for(widget => {
|
||||||
let stack = new KIRI.Stack(widget.mesh);
|
let stack = new KIRI.Stack(widget.mesh);
|
||||||
widget.trace_stack = stack;
|
widget.trace_stack = stack;
|
||||||
widget.traces.forEach(slice => {
|
widget.traces.forEach(poly => {
|
||||||
stack.addLayers(slice.layers);
|
let layers = new KIRI.Layers();
|
||||||
|
layers.setLayer("trace", {line: 0x88aa55}, false).addPoly(poly);
|
||||||
|
stack.addLayers(layers);
|
||||||
});
|
});
|
||||||
widget.adds.appendAll(stack.meshes);
|
widget.adds.appendAll(stack.meshes);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -486,6 +486,10 @@
|
||||||
// generate tracing offsets from chosen features
|
// generate tracing offsets from chosen features
|
||||||
if (procTrace) {
|
if (procTrace) {
|
||||||
// todo
|
// todo
|
||||||
|
// let proc = settings.process;
|
||||||
|
// let traceTool = new CAM.Tool(settings, proc.camTraceTool);
|
||||||
|
// let traceToolDiam = traceTool.fluteDiameter();
|
||||||
|
// widget.maxToolDiam = Math.max(maxToolDiam, traceToolDiam);
|
||||||
// slice.camMode = PRO.TRACE;
|
// slice.camMode = PRO.TRACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -523,30 +527,31 @@
|
||||||
zlist: true,
|
zlist: true,
|
||||||
zline: true
|
zline: true
|
||||||
});
|
});
|
||||||
let proc = settings.process;
|
|
||||||
let traceTool = new CAM.Tool(settings, proc.camTraceTool);
|
|
||||||
let traceToolDiam = traceTool.fluteDiameter();
|
|
||||||
// widget.maxToolDiam = Math.max(maxToolDiam, traceToolDiam);
|
|
||||||
// unique merge of z flats and z line indices
|
|
||||||
let indices = [...new Set(Object.keys(slicer.zFlat)
|
let indices = [...new Set(Object.keys(slicer.zFlat)
|
||||||
.map(kv => parseFloat(kv).round(5))
|
.map(kv => parseFloat(kv).round(5))
|
||||||
.appendAll(Object.entries(slicer.zLine).map(ze => {
|
.appendAll(Object.entries(slicer.zLine).map(ze => {
|
||||||
let [ zk, zv ] = ze;
|
let [ zk, zv ] = ze;
|
||||||
return zv > 0 ? parseFloat(zk).round(5) : null;
|
return zv > 1 ? parseFloat(zk).round(5) : null;
|
||||||
})
|
})
|
||||||
.filter(v => v !== null)))]
|
.filter(v => v !== null)))]
|
||||||
.sort((a,b) => b - a);
|
.sort((a,b) => b - a);
|
||||||
let traces = [];
|
let traces = [];
|
||||||
slicer.slice(indices, { each: (data, index, total) => {
|
let oneach = (data, index, total) => {
|
||||||
// create separate slice for each poly (and inner)
|
// create separate slice for each poly (and inner)
|
||||||
BASE.polygons.flatten(data.tops,null,true).forEach(poly => {
|
BASE.polygons.flatten(data.tops,null,true).forEach(poly => {
|
||||||
let trace = KIRI.newSlice(data.z);
|
for (let i=0, il=traces.length; i<il; i++) {
|
||||||
trace.output('trace')
|
// do not add duplicates
|
||||||
.setLayer("trace", {line: 0x88aa55}, false)
|
if (traces[i].isEquivalent(poly)) {
|
||||||
.addPoly(poly);
|
return;
|
||||||
traces.push(trace);
|
}
|
||||||
|
}
|
||||||
|
traces.push(poly);
|
||||||
});
|
});
|
||||||
}, flatoff: 0, edges: true, openok: true });
|
};
|
||||||
|
let opts = { each: oneach, over: false, flatoff: 0, edges: true, openok: true };
|
||||||
|
slicer.slice(indices, opts);
|
||||||
|
opts.over = true;
|
||||||
|
slicer.slice(indices, opts);
|
||||||
widget.traces = traces;
|
widget.traces = traces;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue