stl-exporter
Version:
Convert face-vertex, or polygon meshes to ascii and binary STLs
52 lines (43 loc) • 1.45 kB
JavaScript
// Generated by CoffeeScript 1.12.7
(function() {
var bufferConverter, fs, mode, path, stlExporter, yaml;
fs = require('fs');
path = require('path');
yaml = require('js-yaml');
bufferConverter = require('buffer-converter');
stlExporter = require('./index');
mode = 'toAsciiStl';
module.exports = function() {
var args, filePath, flags, jsonStl, output;
args = process.argv.slice(2);
output = '';
flags = {};
args.forEach(function(cliArgument) {
if (/^\-\-/i.test(cliArgument)) {
return flags[cliArgument.slice(2)] = true;
}
});
if (process.stdin.isTTY) {
if (!args.length) {
console.log("Usage: " + (path.basename(process.argv[1])) + " [--ascii (default)| --binary] <json mesh-file>");
return process.exit(1);
}
filePath = args.pop();
if (!path.isAbsolute(filePath)) {
filePath = path.join(process.cwd(), filePath);
}
jsonStl = yaml.safeLoad(fs.readFileSync(filePath));
if (flags.binary) {
output = bufferConverter.toBuffer(stlExporter.toBinaryStl(jsonStl));
} else {
output = stlExporter.toAsciiStl(jsonStl);
}
return process.stdout.write(output);
} else {
process.stdin.setEncoding('utf-8');
return process.stdin.pipe(stlExporter.getTransformStream({
type: flags.binary ? 'binary' : 'ascii'
})).pipe(process.stdout);
}
};
}).call(this);