|
@@ -20,6 +20,10 @@ var settings = new SLAcer.Settings({ |
|
|
layers: {
|
|
|
height: 100 // μm
|
|
|
},
|
|
|
+ light: {
|
|
|
+ on : 1000,
|
|
|
+ off: 500
|
|
|
+ },
|
|
|
panel: {
|
|
|
collapsed: false,
|
|
|
position : 2
|
|
@@ -89,11 +93,14 @@ function removeSlices() { |
|
|
}
|
|
|
|
|
|
|
|
|
-function slice(layerNumber) {
|
|
|
+function getSlice(layerNumber) {
|
|
|
// remove old shapes
|
|
|
removeSlices();
|
|
|
removeShapes();
|
|
|
|
|
|
+ // ...
|
|
|
+ $slicerLayerValue.html(layerNumber);
|
|
|
+
|
|
|
if (layerNumber < 1) {
|
|
|
viewer2d.render();
|
|
|
viewer3d.render();
|
|
@@ -190,7 +197,7 @@ $openViewer2D.click(function(e) { |
|
|
viewer2dWin = null;
|
|
|
})
|
|
|
.load(function(e) {
|
|
|
- slice($sliderInput.slider('getValue'));
|
|
|
+ getSlice($sliderInput.slider('getValue'));
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -202,7 +209,7 @@ $openViewer2D.click(function(e) { |
|
|
var $sliderInput = $('#slider input');
|
|
|
|
|
|
$sliderInput.slider({ reversed : true }).on('change', function(e) {
|
|
|
- slice(e.value.newValue);
|
|
|
+ getSlice(e.value.newValue);
|
|
|
});
|
|
|
|
|
|
var $sliderElement = $('#slider .slider');
|
|
@@ -214,6 +221,7 @@ function updateSliderUI() { |
|
|
|
|
|
$sliderInput.slider('setAttribute', 'max', layersNumber);
|
|
|
$sliderMaxValue.html(layersNumber);
|
|
|
+ $slicerLayersValue.html(layersNumber);
|
|
|
}
|
|
|
|
|
|
// Sidebar
|
|
@@ -319,17 +327,76 @@ function updateMeshInfoUI() { |
|
|
// Slicer panel
|
|
|
var $slicerBody = initPanel('slicer');
|
|
|
var $slicerLayerHeight = $slicerBody.find('#slicer-layers-height');
|
|
|
+var $slicerLayersValue = $slicerBody.find('#slicer-layers-value');
|
|
|
+var $slicerLayerValue = $slicerBody.find('#slicer-layer-value');
|
|
|
+var $slicerLightOff = $slicerBody.find('#slicer-light-off');
|
|
|
+var $slicerLightOn = $slicerBody.find('#slicer-light-on');
|
|
|
+var $sliceButton = $sidebar.find('#slice-button');
|
|
|
|
|
|
function updateSlicerUI() {
|
|
|
- var layers = settings.get('slicer.layers');
|
|
|
- $slicerLayerHeight.val(layers.height);
|
|
|
+ var slicer = settings.get('slicer');
|
|
|
+ $slicerLayerHeight.val(slicer.layers.height);
|
|
|
+ $slicerLightOff.val(slicer.light.off);
|
|
|
+ $slicerLightOn.val(slicer.light.on);
|
|
|
}
|
|
|
|
|
|
function updateSlicerSettings() {
|
|
|
settings.set('slicer.layers.height', $slicerLayerHeight.val());
|
|
|
+ settings.set('slicer.light.off', $slicerLightOff.val());
|
|
|
+ settings.set('slicer.light.on', $slicerLightOn.val());
|
|
|
updateSliderUI();
|
|
|
}
|
|
|
|
|
|
+var sliceInterval;
|
|
|
+var expectedSliceInterval;
|
|
|
+var currentSliceNumber;
|
|
|
+var slicesNumber;
|
|
|
+
|
|
|
+function slice() {
|
|
|
+ currentSliceNumber++;
|
|
|
+
|
|
|
+ if (currentSliceNumber > slicesNumber) {
|
|
|
+ return endSlicing();
|
|
|
+ }
|
|
|
+
|
|
|
+ getSlice(currentSliceNumber);
|
|
|
+ $sliderInput.slider('setValue', currentSliceNumber);
|
|
|
+
|
|
|
+ var time = Date.now();
|
|
|
+ var diff = time - expectedSliceInterval;
|
|
|
+
|
|
|
+ viewer2dWin && setTimeout(function() {
|
|
|
+ viewer2dWin.document.body.style.backgroundImage = 'none';
|
|
|
+ }, settings.get('slicer.light.on'));
|
|
|
+
|
|
|
+ expectedSliceInterval += sliceInterval;
|
|
|
+ setTimeout(slice, Math.max(0, sliceInterval - diff));
|
|
|
+}
|
|
|
+
|
|
|
+function endSlicing() {
|
|
|
+ viewer2dWin && (viewer2dWin.document.body.style.backgroundImage = 'none');
|
|
|
+ $sidebar.find('input, button').prop('disabled', false);
|
|
|
+ $sliderInput.slider('enable');
|
|
|
+}
|
|
|
+
|
|
|
+function startSlicing() {
|
|
|
+ var times = settings.get('slicer.light');
|
|
|
+ sliceInterval = parseInt(times.on) + parseInt(times.off);
|
|
|
+ expectedSliceInterval = Date.now() + sliceInterval;
|
|
|
+ slicesNumber = parseInt($slicerLayersValue.html());
|
|
|
+ currentSliceNumber = 0;
|
|
|
+
|
|
|
+ slicesNumber && slice();
|
|
|
+}
|
|
|
+
|
|
|
+$sliceButton.on('click', function(e) {
|
|
|
+ $sidebar.find('input, button').prop('disabled', true);
|
|
|
+ $('.panel-heading button').prop('disabled', false);
|
|
|
+ $openViewer2D.prop('disabled', false);
|
|
|
+ $sliderInput.slider('disable');
|
|
|
+ startSlicing();
|
|
|
+});
|
|
|
+
|
|
|
$('#slicer input').on('input', updateSlicerSettings);
|
|
|
updateSlicerUI();
|
|
|
|
|
@@ -384,7 +451,7 @@ function updateBuildVolumeSettings() { |
|
|
size && updateMeshInfoUI();
|
|
|
|
|
|
updateBuildVolumeSizeStep();
|
|
|
- slice($sliderInput.slider('getValue'));
|
|
|
+ getSlice($sliderInput.slider('getValue'));
|
|
|
}
|
|
|
|
|
|
$('#build-volume-unit-' + settings.get('buildVolume.unit')).prop('checked', true);
|
|
@@ -498,7 +565,7 @@ loader.onGeometry = function(geometry) { |
|
|
updateMeshInfoUI();
|
|
|
|
|
|
// get first slice
|
|
|
- //slice(1);
|
|
|
+ //getSlice(1);
|
|
|
}
|
|
|
catch(e) {
|
|
|
errorHandler(e);
|
|
|
0 comments on commit
28b432b