浏览代码

Editor: Added STLExporter.

Mr.doob 11 年之前
父节点
当前提交
5b730691a4
共有 3 个文件被更改,包括 25 次插入9 次删除
  1. 1 0
      editor/index.html
  2. 18 9
      editor/js/Menubar.File.js
  3. 6 0
      examples/js/exporters/STLExporter.js

+ 1 - 0
editor/index.html

@@ -27,6 +27,7 @@
 		<script src="../examples/js/loaders/ctm/CTMLoader.js"></script>
 		<script src="../examples/js/loaders/ctm/CTMLoader.js"></script>
 		<script src="../examples/js/exporters/SceneExporter.js"></script>
 		<script src="../examples/js/exporters/SceneExporter.js"></script>
 		<script src="../examples/js/exporters/OBJExporter.js"></script>
 		<script src="../examples/js/exporters/OBJExporter.js"></script>
+		<script src="../examples/js/exporters/STLExporter.js"></script>
 		<script src="../examples/js/renderers/RaytracingRenderer.js"></script>
 		<script src="../examples/js/renderers/RaytracingRenderer.js"></script>
 		<script src="../examples/js/renderers/SoftwareRenderer.js"></script>
 		<script src="../examples/js/renderers/SoftwareRenderer.js"></script>
 		<script src="../examples/js/renderers/SVGRenderer.js"></script>
 		<script src="../examples/js/renderers/SVGRenderer.js"></script>

+ 18 - 9
editor/js/Menubar.File.js

@@ -7,19 +7,15 @@ Menubar.File = function ( editor ) {
 		var object = editor.selected;
 		var object = editor.selected;
 		var exporter = new exporterClass();
 		var exporter = new exporterClass();
 
 
-		var output;
+		var output = exporter.parse( object.geometry );
 
 
 		if ( exporter instanceof THREE.BufferGeometryExporter ||
 		if ( exporter instanceof THREE.BufferGeometryExporter ||
 			 exporter instanceof THREE.Geometry2Exporter ||
 			 exporter instanceof THREE.Geometry2Exporter ||
 		     exporter instanceof THREE.GeometryExporter ) {
 		     exporter instanceof THREE.GeometryExporter ) {
 
 
-			output = JSON.stringify( exporter.parse( object.geometry ), null, '\t' );
+			output = JSON.stringify( output, null, '\t' );
 			output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
 			output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
 
 
-		} else {
-
-			output = exporter.parse( object.geometry );
-
 		}
 		}
 
 
 		var blob = new Blob( [ output ], { type: 'text/plain' } );
 		var blob = new Blob( [ output ], { type: 'text/plain' } );
@@ -50,8 +46,14 @@ Menubar.File = function ( editor ) {
 
 
 		var exporter = new exporterClass();
 		var exporter = new exporterClass();
 
 
-		var output = JSON.stringify( exporter.parse( editor.scene ), null, '\t' );
-		output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
+		var output = exporter.parse( editor.scene );
+
+		if ( exporterClass instanceof THREE.ObjectExporter ) {
+
+			output = JSON.stringify( output, null, '\t' );
+			output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
+
+		}
 
 
 		var blob = new Blob( [ output ], { type: 'text/plain' } );
 		var blob = new Blob( [ output ], { type: 'text/plain' } );
 		var objectURL = URL.createObjectURL( blob );
 		var objectURL = URL.createObjectURL( blob );
@@ -151,6 +153,12 @@ Menubar.File = function ( editor ) {
 
 
 	}
 	}
 
 
+	function onExportSTLOptionClick () {
+
+		exportScene( THREE.STLExporter );
+
+	}
+
 	// create file input element for scene import
 	// create file input element for scene import
 
 
 	var fileInput = document.createElement( 'input' );
 	var fileInput = document.createElement( 'input' );
@@ -172,7 +180,8 @@ Menubar.File = function ( editor ) {
 		createOption( 'Export Geometry', onExportGeometryOptionClick ),
 		createOption( 'Export Geometry', onExportGeometryOptionClick ),
 		createOption( 'Export Object', onExportObjectOptionClick ),
 		createOption( 'Export Object', onExportObjectOptionClick ),
 		createOption( 'Export Scene', onExportSceneOptionClick ),
 		createOption( 'Export Scene', onExportSceneOptionClick ),
-		createOption( 'Export OBJ', onExportOBJOptionClick )
+		createOption( 'Export OBJ', onExportOBJOptionClick ),
+		createOption( 'Export STL', onExportSTLOptionClick )
 	];
 	];
 
 
 	var optionsPanel = UI.MenubarHelper.createOptionsPanel( menuConfig );
 	var optionsPanel = UI.MenubarHelper.createOptionsPanel( menuConfig );

+ 6 - 0
examples/js/exporters/STLExporter.js

@@ -8,6 +8,12 @@ THREE.STLExporter = function () {
 
 
 THREE.STLExporter.prototype = {
 THREE.STLExporter.prototype = {
 	constructor: THREE.STLExporter,
 	constructor: THREE.STLExporter,
+
+	parse : function (scene) {
+
+		return this.exportScene (scene);
+
+	},
 	
 	
 	exportScene : function (scene) {
 	exportScene : function (scene) {
 		var meshes = [];
 		var meshes = [];