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