add CAM Z bottom visualization, make it relative to stock instead of part
This commit is contained in:
parent
a5c53c1ac6
commit
b0c184ea85
4 changed files with 36 additions and 11 deletions
|
|
@ -17,6 +17,7 @@ Full docs @ https://docs.grid.space/projects/kiri-moto
|
||||||
* add bridging option in CAM contouring
|
* add bridging option in CAM contouring
|
||||||
* add option to force z max routing in CAM
|
* add option to force z max routing in CAM
|
||||||
* add option to ignore z bottom in CAM contouring
|
* add option to ignore z bottom in CAM contouring
|
||||||
|
* add CAM Z bottom visualization, make it relative to stock instead of part
|
||||||
* extend url loading of workspaces to all formats
|
* extend url loading of workspaces to all formats
|
||||||
* alert when healing is enabled and non-manifold geometries are detected
|
* alert when healing is enabled and non-manifold geometries are detected
|
||||||
* fix thin output start and end point tracking which broke retraction
|
* fix thin output start and end point tracking which broke retraction
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ let isAnimate,
|
||||||
isCamMode,
|
isCamMode,
|
||||||
isParsed,
|
isParsed,
|
||||||
camStock,
|
camStock,
|
||||||
|
camZBottom,
|
||||||
current,
|
current,
|
||||||
poppedRec,
|
poppedRec,
|
||||||
hoveredOp,
|
hoveredOp,
|
||||||
|
|
@ -1314,10 +1315,10 @@ function updateStock(args, event) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isCamMode) {
|
if (!isCamMode) {
|
||||||
if (camStock) {
|
SPACE.world.remove(camZBottom);
|
||||||
SPACE.world.remove(camStock);
|
SPACE.world.remove(camStock);
|
||||||
camStock = null;
|
camStock = null;
|
||||||
}
|
camZBottom = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1339,11 +1340,11 @@ function updateStock(args, event) {
|
||||||
UI.func.animate.classList.add('disabled');
|
UI.func.animate.classList.add('disabled');
|
||||||
|
|
||||||
// create/inject cam stock if stock size other than default
|
// create/inject cam stock if stock size other than default
|
||||||
|
let csx = proc.camStockX;
|
||||||
|
let csy = proc.camStockY;
|
||||||
|
let csz = proc.camStockZ;
|
||||||
if (compute) {
|
if (compute) {
|
||||||
UI.func.animate.classList.remove('disabled');
|
UI.func.animate.classList.remove('disabled');
|
||||||
let csx = proc.camStockX;
|
|
||||||
let csy = proc.camStockY;
|
|
||||||
let csz = proc.camStockZ;
|
|
||||||
if (offset) {
|
if (offset) {
|
||||||
let min = { x: Infinity, y: Infinity, z: 0 };
|
let min = { x: Infinity, y: Infinity, z: 0 };
|
||||||
let max = { x: -Infinity, y: -Infinity, z: -Infinity };
|
let max = { x: -Infinity, y: -Infinity, z: -Infinity };
|
||||||
|
|
@ -1402,6 +1403,28 @@ function updateStock(args, event) {
|
||||||
delta = 0;
|
delta = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SPACE.world.remove(camZBottom);
|
||||||
|
if (proc.camZBottom) {
|
||||||
|
let max = { x: csx, y: csy };
|
||||||
|
for (let w of widgets) {
|
||||||
|
max.x = Math.max(max.x, w.track.box.w);
|
||||||
|
max.y = Math.max(max.y, w.track.box.h);
|
||||||
|
}
|
||||||
|
let geo = new THREE.PlaneGeometry(max.x, max.y);
|
||||||
|
let mat = new THREE.MeshBasicMaterial({
|
||||||
|
color: 0x777777,
|
||||||
|
opacity: 0.55,
|
||||||
|
transparent: true,
|
||||||
|
side:THREE.DoubleSide
|
||||||
|
});
|
||||||
|
camZBottom = new THREE.Mesh(geo, mat);
|
||||||
|
camZBottom.renderOrder = 1;
|
||||||
|
camZBottom.position.z = proc.camZBottom;
|
||||||
|
SPACE.world.add(camZBottom);
|
||||||
|
} else {
|
||||||
|
camZBottom = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
const {x, y, z} = stock;
|
const {x, y, z} = stock;
|
||||||
if (x && y && z && !STACKS.getStack('bounds')) {
|
if (x && y && z && !STACKS.getStack('bounds')) {
|
||||||
const render = new kiri.Layers().setLayer('bounds', { face: 0xaaaaaa, line: 0xaaaaaa });
|
const render = new kiri.Layers().setLayer('bounds', { face: 0xaaaaaa, line: 0xaaaaaa });
|
||||||
|
|
|
||||||
|
|
@ -34,12 +34,13 @@ CAM.slice = function(settings, widget, onupdate, ondone) {
|
||||||
camOps = widget.camops = [],
|
camOps = widget.camops = [],
|
||||||
sliceAll = widget.slices = [],
|
sliceAll = widget.slices = [],
|
||||||
bounds = widget.getBoundingBox(),
|
bounds = widget.getBoundingBox(),
|
||||||
zBottom = proc.camZBottom,
|
wztop = widget.track.top,
|
||||||
|
ztOff = hasStock ? stock.z - wztop : 0,
|
||||||
|
zbOff = hasStock ? wztop - widget.track.box.d : 0,
|
||||||
|
zBottom = proc.camZBottom - zbOff,
|
||||||
zMin = Math.max(bounds.min.z, zBottom),
|
zMin = Math.max(bounds.min.z, zBottom),
|
||||||
zMax = bounds.max.z,
|
zMax = bounds.max.z,
|
||||||
zThru = zBottom === 0 ? (proc.camZThru || 0) : 0,
|
zThru = zBottom === 0 ? (proc.camZThru || 0) : 0,
|
||||||
wztop = widget.track.top,
|
|
||||||
ztOff = hasStock ? stock.z - wztop : 0,
|
|
||||||
zTop = zMax + ztOff,
|
zTop = zMax + ztOff,
|
||||||
minToolDiam = Infinity,
|
minToolDiam = Infinity,
|
||||||
maxToolDiam = -Infinity,
|
maxToolDiam = -Infinity,
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ class Topo {
|
||||||
maxX = bounds.max.x,
|
maxX = bounds.max.x,
|
||||||
minY = bounds.min.y,
|
minY = bounds.min.y,
|
||||||
maxY = bounds.max.y,
|
maxY = bounds.max.y,
|
||||||
zBottom = contour.bottom ? proc.camZBottom : 0,
|
zBottom = contour.bottom ? state.zBottom : 0,
|
||||||
zMin = Math.max(bounds.min.z, zBottom) + 0.0001,
|
zMin = Math.max(bounds.min.z, zBottom) + 0.0001,
|
||||||
boundsX = maxX - minX,
|
boundsX = maxX - minX,
|
||||||
boundsY = maxY - minY,
|
boundsY = maxY - minY,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue