export function setProcessedModel()

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();
        }

    }