|
@@ -68,14 +68,46 @@ function errorHandler(error) { |
|
|
// Slicer
|
|
|
// -----------------------------------------------------------------------------
|
|
|
var slicer = new SLAcer.Slicer();
|
|
|
+var shapes;
|
|
|
+
|
|
|
+function removeShapes() {
|
|
|
+ if (shapes && shapes.length) {
|
|
|
+ for (var i = 0, il = shapes.length; i < il; i++) {
|
|
|
+ viewer3d.removeObject(shapes[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
function slice(layerNumber) {
|
|
|
+ // remove old shapes
|
|
|
+ removeShapes();
|
|
|
+
|
|
|
+ if (layerNumber < 1) {
|
|
|
+ viewer3d.render();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
// get slice
|
|
|
var layerHeight = settings.get('slicer.layers.height') / 1000;
|
|
|
var zPosition = layerNumber * layerHeight;
|
|
|
var slice = slicer.getFaces(zPosition);
|
|
|
- console.log('layer number:', layerNumber);
|
|
|
- console.log('z position :', zPosition);
|
|
|
+
|
|
|
+ //console.log('layer number:', layerNumber);
|
|
|
+ //console.log('z position :', zPosition);
|
|
|
+
|
|
|
+ // get new shapes list
|
|
|
+ shapes = slice.shapes;
|
|
|
+ zPosition -= settings.get('buildVolume.size.z') / 2;
|
|
|
+
|
|
|
+ // add new shapes
|
|
|
+ for (var i = 0, il = shapes.length; i < il; i++) {
|
|
|
+ shapes[i].position.z = zPosition;
|
|
|
+ shapes[i].material.depthTest = false;
|
|
|
+ viewer3d.scene.add(shapes[i]);
|
|
|
+ }
|
|
|
+
|
|
|
+ // render
|
|
|
+ viewer3d.render();
|
|
|
}
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
@@ -92,6 +124,10 @@ var viewer3d = new SLAcer.Viewer3D({ |
|
|
target : $viewer3d[0]
|
|
|
});
|
|
|
|
|
|
+// Triangulation algorithm
|
|
|
+//THREE.Triangulation.setTimer(true);
|
|
|
+THREE.Triangulation.setLibrary('earcut');
|
|
|
+
|
|
|
// Slider
|
|
|
var $sliderInput = $('#slider input');
|
|
|
|
|
@@ -100,6 +136,8 @@ $sliderInput.slider({ reversed : true }).on('change', function(e) { |
|
|
});
|
|
|
|
|
|
var $sliderElement = $('#slider .slider');
|
|
|
+var $sliderMinValue = $('#slider .min');
|
|
|
+var $sliderMaxValue = $('#slider .max');
|
|
|
|
|
|
|
|
|
// Sidebar
|
|
@@ -173,8 +211,13 @@ var $meshSizeZ = $meshBody.find('#mesh-size-z'); |
|
|
var $meshSizeUnit = $meshBody.find('.mesh-size-unit');
|
|
|
|
|
|
function updateMeshInfoUI(mesh) {
|
|
|
- var size = mesh.getSize();
|
|
|
- var unit = settings.get('buildVolume.unit');
|
|
|
+ var size = mesh.getSize();
|
|
|
+ var unit = settings.get('buildVolume.unit');
|
|
|
+ var layersHeight = settings.get('slicer.layers.height') / 1000;
|
|
|
+ var layersNumber = Math.ceil(size.z / layersHeight);
|
|
|
+
|
|
|
+ $sliderInput.slider('setAttribute', 'max', layersNumber);
|
|
|
+ $sliderMaxValue.html(layersNumber);
|
|
|
|
|
|
$meshSizeUnit.html(unit);
|
|
|
|
|
@@ -321,6 +364,9 @@ loader.onGeometry = function(geometry) { |
|
|
// remove old mesh and plane
|
|
|
slicer.mesh && viewer3d.removeObject(slicer.mesh);
|
|
|
|
|
|
+ // remove old shapes
|
|
|
+ removeShapes();
|
|
|
+
|
|
|
// load new mesh in slicer
|
|
|
slicer.loadMesh(new SLAcer.Mesh(geometry, new THREE.MeshPhongMaterial({
|
|
|
color: settings.get('mesh.color')
|
|
|
0 comments on commit
8424d63