|
@@ -68,7 +68,7 @@ function errorHandler(error) { |
|
|
// Slicer
|
|
|
// -----------------------------------------------------------------------------
|
|
|
var slicer = new SLAcer.Slicer();
|
|
|
-var shapes;
|
|
|
+var shapes, slices;
|
|
|
|
|
|
function removeShapes() {
|
|
|
if (shapes && shapes.length) {
|
|
@@ -78,11 +78,24 @@ function removeShapes() { |
|
|
}
|
|
|
}
|
|
|
|
|
|
+function removeSlices() {
|
|
|
+ if (slices && slices.length) {
|
|
|
+ for (var i = 0, il = slices.length; i < il; i++) {
|
|
|
+ viewer2d.removeObject(slices[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ viewer2dWin && (viewer2dWin.document.body.style.backgroundImage = 'none');
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
function slice(layerNumber) {
|
|
|
// remove old shapes
|
|
|
+ removeSlices();
|
|
|
removeShapes();
|
|
|
|
|
|
if (layerNumber < 1) {
|
|
|
+ viewer2d.render();
|
|
|
viewer3d.render();
|
|
|
return;
|
|
|
}
|
|
@@ -99,15 +112,31 @@ function slice(layerNumber) { |
|
|
shapes = slice.shapes;
|
|
|
zPosition -= viewer3d.buildVolume.size.z / 2;
|
|
|
|
|
|
+ // slices
|
|
|
+ slices = [];
|
|
|
+
|
|
|
// add new shapes
|
|
|
for (var i = 0, il = shapes.length; i < il; i++) {
|
|
|
+ slices[i] = shapes[i].clone();
|
|
|
+ slices[i].material = slices[i].material.clone();
|
|
|
+ slices[i].material.color.setHex(0xffffff);
|
|
|
+ viewer2d.addObject(slices[i]);
|
|
|
+
|
|
|
shapes[i].position.z = zPosition;
|
|
|
shapes[i].material.depthTest = false;
|
|
|
viewer3d.scene.add(shapes[i]);
|
|
|
}
|
|
|
|
|
|
- // render
|
|
|
+ // render 3D view
|
|
|
viewer3d.render();
|
|
|
+
|
|
|
+ // render 2D view
|
|
|
+ if (viewer2dWin) {
|
|
|
+ var body = viewer2dWin.document.body;
|
|
|
+ viewer2d.screenshot(function(dataURL) {
|
|
|
+ body.style.backgroundImage = 'url(' + dataURL + ')';
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
@@ -131,22 +160,37 @@ THREE.Triangulation.setLibrary('earcut'); |
|
|
//THREE.Triangulation.setLibrary('poly2tri');
|
|
|
|
|
|
// Viewer 2D
|
|
|
-var viewer2d = null;
|
|
|
-$openViewer2D = $('#open-viewer-2d');
|
|
|
+var viewer2dWin = null;
|
|
|
+var $openViewer2D = $('#open-viewer-2d');
|
|
|
+
|
|
|
+var viewer2d = new SLAcer.Viewer2D({
|
|
|
+ target : null, // off-screen
|
|
|
+ color : 0x000000,
|
|
|
+ buildPlate : {
|
|
|
+ size : settings.get('buildVolume.size'),
|
|
|
+ unit : settings.get('buildVolume.unit'),
|
|
|
+ color : 0x000000,
|
|
|
+ opacity: 0 // hide build plate
|
|
|
+ },
|
|
|
+ size: settings.get('screen')
|
|
|
+});
|
|
|
|
|
|
$openViewer2D.click(function(e) {
|
|
|
- if (! viewer2d) {
|
|
|
- var screen = settings.get('screen');
|
|
|
- var size = 'width=' + screen.width + ', height=' + screen.height;
|
|
|
- var opts = 'menubar=0, toolbar=0, location=0, directories=0, personalbar=0, status=0, resizable=1, dependent=0'
|
|
|
- viewer2d = window.open('viewer2d.html', 'SLAcer.viewer2d', size + ', ' + opts);
|
|
|
-
|
|
|
- $(viewer2d).on('beforeunload', function(e) {
|
|
|
- viewer2d = null;
|
|
|
+ if (! viewer2dWin) {
|
|
|
+ var screen = settings.get('screen');
|
|
|
+ var size = 'width=' + screen.width + ', height=' + screen.height;
|
|
|
+ var opts = 'menubar=0, toolbar=0, location=0, directories=0, personalbar=0, status=0, resizable=1, dependent=0'
|
|
|
+ viewer2dWin = window.open('viewer2d.html', 'SLAcer.viewer2d', size + ', ' + opts);
|
|
|
+
|
|
|
+ $(viewer2dWin).on('beforeunload', function(e) {
|
|
|
+ viewer2dWin = null;
|
|
|
+ })
|
|
|
+ .load(function(e) {
|
|
|
+ slice($sliderInput.slider('getValue'));
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- viewer2d.focus();
|
|
|
+ viewer2dWin.focus();
|
|
|
return false;
|
|
|
});
|
|
|
|
|
@@ -370,13 +414,17 @@ var $screenBody = initPanel('screen'); |
|
|
var $screenWidth = $screenBody.find('#screen-width');
|
|
|
var $screenHeight = $screenBody.find('#screen-height');
|
|
|
var $screenDiagonalSize = $screenBody.find('#screen-diagonal-size');
|
|
|
+var $screenDotPitch = $screenBody.find('#screen-dot-pitch');
|
|
|
|
|
|
function updateScreenUI() {
|
|
|
var screen = settings.get('screen');
|
|
|
|
|
|
$screenWidth.val(screen.width);
|
|
|
$screenHeight.val(screen.height);
|
|
|
$screenDiagonalSize.val(screen.diagonal.size);
|
|
|
+ $screenDotPitch.html(viewer2d.dotPitch.toFixed(2));
|
|
|
+
|
|
|
+ viewer2d.setScreenResolution(screen);
|
|
|
}
|
|
|
|
|
|
function updateScreenSettings() {
|
|
@@ -396,6 +444,9 @@ function updateScreenSettings() { |
|
|
unit: unit
|
|
|
}
|
|
|
});
|
|
|
+
|
|
|
+ viewer2d.setScreenResolution(settings.get('screen'));
|
|
|
+ $screenDotPitch.html(viewer2d.dotPitch.toFixed(2));
|
|
|
}
|
|
|
|
|
|
$('#screen-diagonal-unit-' + settings.get('screen.diagonal.unit')).prop('checked', true);
|
|
|
0 comments on commit
f342d01