jsketcher/web/app/cad/exportBundle.js
2022-08-15 23:47:20 -07:00

46 lines
No EOL
1.4 KiB
JavaScript

import {STLExporter} from './stl/stlExporter';
import exportTextData from 'gems/exportTextData';
export const BundleName = "@Export";
export function activate(ctx) {
function toStlAsciiString() {
const exporter = new STLExporter();
const views = ctx.services.cadRegistry.shells.map(mShell => mShell.ext.view).filter(m => !!m);
return exporter.parse( views );
}
function stlAscii() {
exportTextData(toStlAsciiString(), ctx.projectService.id + ".stl");
}
function imagePng() {
const auxVisible = ctx.services.cadScene.auxGroup.visible;
ctx.services.cadScene.auxGroup.visible = false;
const renderer = ctx.services.viewer.sceneSetup.renderer;
const clearAlpha = renderer.getClearAlpha();
renderer.setClearAlpha(0);
renderer.preserveDrawingBuffer = true;
ctx.services.viewer.sceneSetup.render();
const link = document.getElementById("downloader");
link.href = renderer.domElement.toDataURL('image/png');
link.download = ctx.projectService.id + "-snapshot.png";
link.click();
renderer.preserveDrawingBuffer = false;
ctx.services.cadScene.auxGroup.visible = auxVisible;
renderer.setClearAlpha(0);
renderer.setClearAlpha(clearAlpha);
ctx.services.viewer.sceneSetup.render();
}
function nativeFormat() {
ctx.services.projectManager.exportProject(ctx.projectService.id);
}
ctx.services.export = {
stlAscii, imagePng, toStlAsciiString, nativeFormat
};
}