WALL THICKNESS DETECTION

by spacorum

HTML

<script src="https://threejs.org/build/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script src="https://threejs.org/examples/js/loaders/STLLoader.js"></script>

CSS

body {
  overflow: hidden;
  margin: 0;
}

JavaScript

console.clear();
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.setScalar(5);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

var controls = new THREE.OrbitControls(camera, renderer.domElement);

var loader = new THREE.STLLoader();
var stlPath = 'https://threejs.org/examples/models/stl/ascii/slotted_disk.stl';
//var stlPath = 'http://localhost/MEDIAWAVE/lafactoria3d_es/webroot/3dmodels/__OTROS/_test%20slicer.js/';
loader.load(stlPath, function(geometry) {
  //
  
  var support_free = new THREE.MeshBasicMaterial({
				color : 0x00FF00, 
				side:THREE.DoubleSide, 
			  visible: true
			});
			var support_suggested = new THREE.MeshBasicMaterial({
				color : 0xf6931f, 
				side:THREE.DoubleSide, 
		    visible: true
			});
			var support_required = new THREE.MeshBasicMaterial({
				color : 0xff0000, 
				side:THREE.DoubleSide, 
		    visible: true
			});
  
  var material = [];
  material.push(support_free);
  material.push(support_suggested);
  material.push(support_required);
  
  //var material = new THREE.MeshNormalMaterial({side: THREE.DoubleSide});
  
  
  
  

var tempGeo = new THREE.Geometry().fromBufferGeometry(geometry);
tempGeo.mergeVertices();
tempGeo.computeVertexNormals();
tempGeo.computeFaceNormals();
//console.log(tempGeo.faces);
//geometry = new THREE.BufferGeometry().fromGeometry(tempGeo);
  
  
  
  
  
  var mesh = new THREE.Mesh(tempGeo, material);
  
  
  
  /*var faces = mesh.geometry.faces;
  for (var index in faces){
  	var face = faces[index];
  	face.materialIndex = 1;
  }*/
  
  
  scene.add(mesh);
  //console.log(isModelPrintable(mesh, geometry));
  console.log(isModelPrintable(mesh));
});

function isModelPrintable(mesh) {

//console.warn(geometry.faces);


  var minDist = 0.08;
  var minDistOriginal = minDist;

  var raycaster = new...