Bläddra i källkod

STLLoader: Add group names (#26538)

Angela Busato 2 år sedan
förälder
incheckning
ded763c40d
1 ändrade filer med 7 tillägg och 0 borttagningar
  1. 7 0
      examples/jsm/loaders/STLLoader.js

+ 7 - 0
examples/jsm/loaders/STLLoader.js

@@ -274,6 +274,7 @@ class STLLoader extends Loader {
 			const geometry = new BufferGeometry();
 			const geometry = new BufferGeometry();
 			const patternSolid = /solid([\s\S]*?)endsolid/g;
 			const patternSolid = /solid([\s\S]*?)endsolid/g;
 			const patternFace = /facet([\s\S]*?)endfacet/g;
 			const patternFace = /facet([\s\S]*?)endfacet/g;
+			const patternName = /solid\s(.+)/;
 			let faceCounter = 0;
 			let faceCounter = 0;
 
 
 			const patternFloat = /[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source;
 			const patternFloat = /[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source;
@@ -282,6 +283,7 @@ class STLLoader extends Loader {
 
 
 			const vertices = [];
 			const vertices = [];
 			const normals = [];
 			const normals = [];
+			const groupNames = [];
 
 
 			const normal = new Vector3();
 			const normal = new Vector3();
 
 
@@ -297,6 +299,9 @@ class STLLoader extends Loader {
 
 
 				const solid = result[ 0 ];
 				const solid = result[ 0 ];
 
 
+				const name = ( result = patternName.exec( solid ) ) !== null ? result[ 1 ] : '';
+				groupNames.push( name );
+
 				while ( ( result = patternFace.exec( solid ) ) !== null ) {
 				while ( ( result = patternFace.exec( solid ) ) !== null ) {
 
 
 					let vertexCountPerFace = 0;
 					let vertexCountPerFace = 0;
@@ -345,6 +350,8 @@ class STLLoader extends Loader {
 				const start = startVertex;
 				const start = startVertex;
 				const count = endVertex - startVertex;
 				const count = endVertex - startVertex;
 
 
+				geometry.userData.groupNames = groupNames;
+
 				geometry.addGroup( start, count, groupCount );
 				geometry.addGroup( start, count, groupCount );
 				groupCount ++;
 				groupCount ++;