visual indicator of trace editing. make multiple trace ops friendly with each other
This commit is contained in:
parent
debcf048fd
commit
ea21aa34ee
2 changed files with 34 additions and 13 deletions
|
|
@ -17,6 +17,7 @@
|
||||||
camStock,
|
camStock,
|
||||||
current,
|
current,
|
||||||
poppedRec,
|
poppedRec,
|
||||||
|
hoveredOp,
|
||||||
API, FDM, SPACE, STACKS, MODES, VIEWS, UI, UC, LANG;
|
API, FDM, SPACE, STACKS, MODES, VIEWS, UI, UC, LANG;
|
||||||
|
|
||||||
let zaxis = { x: 0, y: 0, z: 1 },
|
let zaxis = { x: 0, y: 0, z: 1 },
|
||||||
|
|
@ -278,6 +279,7 @@
|
||||||
poprec.use(rec);
|
poprec.use(rec);
|
||||||
// pointer to current rec for trace editing
|
// pointer to current rec for trace editing
|
||||||
poppedRec = rec;
|
poppedRec = rec;
|
||||||
|
hoveredOp = el;
|
||||||
el.appendChild(poprec.div);
|
el.appendChild(poprec.div);
|
||||||
// option click event appears latent
|
// option click event appears latent
|
||||||
// and overides the sticky settings
|
// and overides the sticky settings
|
||||||
|
|
@ -296,6 +298,7 @@
|
||||||
};
|
};
|
||||||
el.rec = rec;
|
el.rec = rec;
|
||||||
el.onmousedown = (ev) => {
|
el.onmousedown = (ev) => {
|
||||||
|
func.traceDone();
|
||||||
let target = ev.target, clist = target.classList;
|
let target = ev.target, clist = target.classList;
|
||||||
if (!clist.contains("draggable")) {
|
if (!clist.contains("draggable")) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -430,20 +433,19 @@
|
||||||
|
|
||||||
// TRACE FUNCS
|
// TRACE FUNCS
|
||||||
let traceOn = false, lastTrace;
|
let traceOn = false, lastTrace;
|
||||||
func.traceAdd = () => {
|
func.traceAdd = (ev) => {
|
||||||
if (traceOn) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
func.tabDone();
|
func.tabDone();
|
||||||
|
func.traceDone();
|
||||||
alert = api.show.alert("analyzing parts...", 1000);
|
alert = api.show.alert("analyzing parts...", 1000);
|
||||||
traceOn = true;
|
traceOn = hoveredOp;
|
||||||
|
traceOn.classList.add("editing");
|
||||||
CAM.traces((ids) => {
|
CAM.traces((ids) => {
|
||||||
api.hide.alert(alert);
|
api.hide.alert(alert);
|
||||||
alert = api.show.alert("[esc] key cancels trace editing");
|
alert = api.show.alert("[esc] key cancels trace editing");
|
||||||
KIRI.api.widgets.opacity(0.5);
|
KIRI.api.widgets.opacity(0.5);
|
||||||
KIRI.api.widgets.for(widget => {
|
KIRI.api.widgets.for(widget => {
|
||||||
if (ids.indexOf(widget.id) >= 0) {
|
if (ids.indexOf(widget.id) >= 0) {
|
||||||
clearTraces(widget);
|
unselectTraces(widget);
|
||||||
widget.trace_stack = null;
|
widget.trace_stack = null;
|
||||||
}
|
}
|
||||||
if (widget.trace_stack) {
|
if (widget.trace_stack) {
|
||||||
|
|
@ -461,9 +463,9 @@
|
||||||
stack.addLayers(layers);
|
stack.addLayers(layers);
|
||||||
stack.new_meshes.forEach(mesh => {
|
stack.new_meshes.forEach(mesh => {
|
||||||
mesh.trace = {widget, poly};
|
mesh.trace = {widget, poly};
|
||||||
|
// ensure trace poly singleton from matches
|
||||||
if (match.length > 0) {
|
if (match.length > 0) {
|
||||||
poly._trace = match[0];
|
poly._trace = match[0];
|
||||||
func.traceToggle(mesh, true);
|
|
||||||
} else {
|
} else {
|
||||||
poly._trace = poly.toArray();
|
poly._trace = poly.toArray();
|
||||||
}
|
}
|
||||||
|
|
@ -471,6 +473,22 @@
|
||||||
widget.adds.appendAll(stack.new_meshes);
|
widget.adds.appendAll(stack.new_meshes);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
// ensure appropriate traces are toggled matching current record
|
||||||
|
KIRI.api.widgets.for(widget => {
|
||||||
|
let areas = (poppedRec.areas[widget.id] || []);
|
||||||
|
let stack = widget.trace_stack;
|
||||||
|
stack.meshes.forEach(mesh => {
|
||||||
|
let { poly } = mesh.trace;
|
||||||
|
let match = areas.filter(arr => poly.matches(arr));
|
||||||
|
if (match.length > 0) {
|
||||||
|
if (!mesh.selected) {
|
||||||
|
func.traceToggle(mesh, true);
|
||||||
|
}
|
||||||
|
} else if (mesh.selected) {
|
||||||
|
func.traceToggle(mesh, true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
api.feature.hover = true;
|
api.feature.hover = true;
|
||||||
api.feature.hoverAdds = true;
|
api.feature.hoverAdds = true;
|
||||||
|
|
@ -481,6 +499,7 @@
|
||||||
if (!traceOn) {
|
if (!traceOn) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
traceOn.classList.remove("editing");
|
||||||
traceOn = false;
|
traceOn = false;
|
||||||
KIRI.api.widgets.opacity(1);
|
KIRI.api.widgets.opacity(1);
|
||||||
api.hide.alert(alert);
|
api.hide.alert(alert);
|
||||||
|
|
@ -496,7 +515,7 @@
|
||||||
api.event.on("cam.trace.clear", func.traceClear = () => {
|
api.event.on("cam.trace.clear", func.traceClear = () => {
|
||||||
func.traceDone();
|
func.traceDone();
|
||||||
API.widgets.all().forEach(widget => {
|
API.widgets.all().forEach(widget => {
|
||||||
clearTraces(widget);
|
unselectTraces(widget);
|
||||||
});
|
});
|
||||||
API.conf.save();
|
API.conf.save();
|
||||||
});
|
});
|
||||||
|
|
@ -589,7 +608,7 @@
|
||||||
if (traceOn) {
|
if (traceOn) {
|
||||||
func.traceDone();
|
func.traceDone();
|
||||||
}
|
}
|
||||||
clearTraces(widget);
|
unselectTraces(widget);
|
||||||
if (x || y) {
|
if (x || y) {
|
||||||
clearTabs(widget);
|
clearTabs(widget);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -876,10 +895,9 @@
|
||||||
delete API.widgets.annotate(widget.id).tab;
|
delete API.widgets.annotate(widget.id).tab;
|
||||||
}
|
}
|
||||||
|
|
||||||
function clearTraces(widget) {
|
function unselectTraces(widget) {
|
||||||
let stack = widget.trace_stack;
|
if (widget.trace_stack) {
|
||||||
if (stack) {
|
widget.trace_stack.meshes.forEach(mesh => {
|
||||||
stack.meshes.forEach(mesh => {
|
|
||||||
if (mesh.selected) {
|
if (mesh.selected) {
|
||||||
func.traceToggle(mesh);
|
func.traceToggle(mesh);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -585,6 +585,9 @@ th, tr, td, label {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: rgba(0,0,0,0);
|
color: rgba(0,0,0,0);
|
||||||
}
|
}
|
||||||
|
#oplist > div.editing {
|
||||||
|
background-color: rgba(220,230,220,0.8);
|
||||||
|
}
|
||||||
#oplist div:hover .del {
|
#oplist div:hover .del {
|
||||||
color: #aaa;
|
color: #aaa;
|
||||||
z-index: 10000;
|
z-index: 10000;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue