in packages/playground/src/playground.ts [719:808]
export function setProcessedModel(model: MakerJs.IModel, error?: string) {
clearTimeout(setProcessedModelTimer);
var oldUnits = getUnits();
var oldMeasurement = processed.measurement;
processed.model = model;
processed.measurement = null;
processed.error = error;
var newUnits = getUnits();
if (!error) {
if (errorMarker) {
errorMarker.clear();
errorMarker = null;
}
}
if (!processed.model) return;
//now safe to render, so register a resize listener
if (init && model) {
init = false;
initialize();
}
//todo: find minimum viewScale
if (!makerjs.isPoint(processed.model.origin)) processed.model.origin = [0, 0];
var newMeasurement = makerjs.measure.modelExtents(processed.model);
makerjs.model.getAllCaptionsOffset(processed.model).forEach(caption => {
makerjs.measure.increase(newMeasurement, makerjs.measure.pathExtents(caption.anchor), true);
});
processed.measurement = newMeasurement;
if (!processed.measurement) {
setProcessedModelTimer = setTimeout(function () {
setProcessedModel(
new StraightFace(),
'Your model code was processed, but it resulted in a model with no measurement. It probably does not have any paths. Here is the JSON representation: \n\n' + mdCode(processed.model));
}, 2500);
return;
}
if ((!viewScale || oldUnits != newUnits) || (!isMeasurementEqual(oldMeasurement, newMeasurement) && checkFitToScreen.checked)) {
fitOnScreen();
}
document.body.classList.remove('wait');
if (newUnits)
document.body.classList.add('has-units');
else {
document.body.classList.remove('has-units');
}
render();
var measureText: string;
if (processed.error) {
setNotes(processed.error);
//sync notes and checkbox
if (checkNotes) checkNotes.checked = true;
document.body.classList.remove('collapse-notes');
measureText = '';
} else {
var size = getModelNaturalSize();
measureText = size[0].toFixed(2) + ' x ' + size[1].toFixed(2) + ' ' + (newUnits || 'units');
if (!updateLockedPathNotes()) {
setNotesFromModelOrKit();
}
}
if (measurementDiv) {
measurementDiv.innerText = measureText;
}
if (onViewportChange) {
onViewportChange();
}
}