diff --git a/web/app/cad/actions/coreActions.js b/web/app/cad/actions/coreActions.js index dedfac07..30d71e41 100644 --- a/web/app/cad/actions/coreActions.js +++ b/web/app/cad/actions/coreActions.js @@ -46,6 +46,16 @@ export default [ }, invoke: (context) => context.services.export.stlAscii() }, + + { + id: 'ImagePngExport', + appearance: { + cssIcons: ['image'], + label: 'PNG Export', + info: 'export model as png image/render a snapshot', + }, + invoke: (context) => context.services.export.imagePng() + }, { diff --git a/web/app/cad/craft/datum/create/createDatumOperation.js b/web/app/cad/craft/datum/create/createDatumOperation.js index ff1e46f4..62f937ad 100644 --- a/web/app/cad/craft/datum/create/createDatumOperation.js +++ b/web/app/cad/craft/datum/create/createDatumOperation.js @@ -76,7 +76,7 @@ function previewer(ctx, initialParams, updateParams) { export default { id: 'DATUM_CREATE', label: 'Create Datum', - icon: 'img/cad/plane', + icon: 'img/cad/datum', info: 'originates a new datum from origin or off of a selected face', paramsInfoComponent: DatumParamsRenderer, paramsInfo: pointAsText, diff --git a/web/app/cad/craft/datum/rotate/rotateDatumOperation.js b/web/app/cad/craft/datum/rotate/rotateDatumOperation.js index f35bfba7..7187c0c4 100644 --- a/web/app/cad/craft/datum/rotate/rotateDatumOperation.js +++ b/web/app/cad/craft/datum/rotate/rotateDatumOperation.js @@ -66,7 +66,7 @@ function applyRotation(origCsys, csys, angle, axis) { export default { id: 'DATUM_ROTATE', label: 'Rotate Datum', - icon: 'img/cad/plane', + icon: 'img/cad/datum-rotate', info: 'rotates a datum', paramsInfo: ({axis, angle}) => `${axis} - ${angle}`, previewer, diff --git a/web/app/cad/exportPlugin.js b/web/app/cad/exportPlugin.js index 0e8e077e..e897e655 100644 --- a/web/app/cad/exportPlugin.js +++ b/web/app/cad/exportPlugin.js @@ -9,7 +9,28 @@ export function activate(ctx) { exportTextData(result, ctx.services.project.id + ".stl"); } + function imagePng() { + let auxVisible = ctx.services.cadScene.auxGroup.visible; + ctx.services.cadScene.auxGroup.visible = false; + let renderer = ctx.services.viewer.sceneSetup.renderer; + let clearAlpha = renderer.getClearAlpha(); + renderer.setClearAlpha(0); + renderer.preserveDrawingBuffer = true; + ctx.services.viewer.sceneSetup.render(); + + let link = document.getElementById("downloader"); + link.href = renderer.domElement.toDataURL('image/png'); + link.download = ctx.services.project.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(); + } + ctx.services.export = { - stlAscii + stlAscii, imagePng }; } \ No newline at end of file diff --git a/web/app/cad/keyboard/keymaps/default.js b/web/app/cad/keyboard/keymaps/default.js index 865bd692..059dfbd5 100644 --- a/web/app/cad/keyboard/keymaps/default.js +++ b/web/app/cad/keyboard/keymaps/default.js @@ -24,6 +24,7 @@ export default { 'menu.primitives': 'shift+a', 'menu.main': 'space', 'Save': 'ctrl+s', + 'ImagePngExport': 'shift+3', 'Info': 'F1', 'DebugOpenBrepDebugger': 'ctrl+b' }; diff --git a/web/app/cad/part/menuConfig.js b/web/app/cad/part/menuConfig.js index dbcfa5f7..ab420d3f 100644 --- a/web/app/cad/part/menuConfig.js +++ b/web/app/cad/part/menuConfig.js @@ -2,7 +2,7 @@ export default [ { id: 'file', cssIcons: ['file'], - actions: ['Save', 'StlExport', '-', 'IMPORT_STL', '-', 'ReassignSketch'] + actions: ['Save', 'StlExport', 'ImagePngExport', '-', 'IMPORT_STL', '-', 'ReassignSketch'] }, { id: 'craft', diff --git a/web/app/cad/part/uiConfigPlugin.js b/web/app/cad/part/uiConfigPlugin.js index 9602ea91..b04b5f23 100644 --- a/web/app/cad/part/uiConfigPlugin.js +++ b/web/app/cad/part/uiConfigPlugin.js @@ -16,7 +16,7 @@ export function activate({services, streams}) { ['ShowSketches', {label: 'sketches'}], ['DeselectAll', {label: null}], ['ToggleCameraMode', {label: null}] ]; - streams.ui.toolbars.headsUp.value = ['PLANE', 'EditFace', 'EXTRUDE', 'CUT', 'REVOLVE', '-', 'FILLET', '-', 'INTERSECTION', 'SUBTRACT', 'UNION']; + streams.ui.toolbars.headsUp.value = ['DATUM_CREATE', 'PLANE', 'EditFace', 'EXTRUDE', 'CUT', 'REVOLVE', '-', 'FILLET', '-', 'INTERSECTION', 'SUBTRACT', 'UNION']; streams.ui.toolbars.headsUpQuickActions.value = ['Save', 'StlExport']; services.action.registerActions(CoreActions); diff --git a/web/img/cad/datum-rotate32.png b/web/img/cad/datum-rotate32.png new file mode 100644 index 00000000..1b6f2302 Binary files /dev/null and b/web/img/cad/datum-rotate32.png differ diff --git a/web/img/cad/datum-rotate96.png b/web/img/cad/datum-rotate96.png new file mode 100644 index 00000000..d33b0313 Binary files /dev/null and b/web/img/cad/datum-rotate96.png differ diff --git a/web/img/cad/datum32.png b/web/img/cad/datum32.png new file mode 100644 index 00000000..89b8e55a Binary files /dev/null and b/web/img/cad/datum32.png differ diff --git a/web/img/cad/datum96.png b/web/img/cad/datum96.png new file mode 100644 index 00000000..08aa6264 Binary files /dev/null and b/web/img/cad/datum96.png differ