diff --git a/src/kiri-mode/cam/client.js b/src/kiri-mode/cam/client.js index 770e480a..d4e9c033 100644 --- a/src/kiri-mode/cam/client.js +++ b/src/kiri-mode/cam/client.js @@ -1047,7 +1047,7 @@ CAM.init = function(kiri, api) { let { selected } = object; let { widget, poly } = object.trace; for (let add of widget.adds) { - if (add.selected !== selected && add.trace.poly.getZ() === poly.getZ()) { + if (add.trace && add.selected !== selected && add.trace.poly.getZ() === poly.getZ()) { func.traceToggle(add); } } @@ -1055,6 +1055,7 @@ CAM.init = function(kiri, api) { }; func.traceToggle = function(obj, skip) { let material = obj.material[0]; + if (!material) return; let { color, colorSave } = material; let { widget, poly } = obj.trace; let areas = poppedRec.areas; diff --git a/src/kiri-mode/cam/slice.js b/src/kiri-mode/cam/slice.js index c86b77da..457d43ac 100644 --- a/src/kiri-mode/cam/slice.js +++ b/src/kiri-mode/cam/slice.js @@ -334,7 +334,8 @@ CAM.traces = async function(settings, widget, single) { return false; } let slicer = new kiri.cam_slicer(widget); - let indices = [...new Set(Object.keys(slicer.zFlat) + let zees = Object.assign({}, slicer.zFlat, slicer.zLine); + let indices = [...new Set(Object.keys(zees) .map(kv => parseFloat(kv).round(5)) .appendAll(Object.entries(single ? slicer.zLine : {}).map(ze => { let [ zk, zv ] = ze;