2020-06-26 21:00:10 +02:00
|
|
|
#!/usr/bin/env node
|
|
|
|
|
|
|
|
|
|
const m = require('makerjs')
|
2020-06-07 13:40:26 +02:00
|
|
|
const fs = require('fs-extra')
|
|
|
|
|
const path = require('path')
|
|
|
|
|
const yaml = require('js-yaml')
|
2020-05-28 22:18:41 +02:00
|
|
|
const yargs = require('yargs')
|
2020-06-07 13:40:26 +02:00
|
|
|
|
2020-06-26 21:00:10 +02:00
|
|
|
const u = require('./utils')
|
|
|
|
|
const points_lib = require('./points')
|
2020-06-27 20:13:06 +02:00
|
|
|
// const outline_lib = require('./outline')
|
2020-05-30 15:17:53 +02:00
|
|
|
|
2020-06-26 21:00:10 +02:00
|
|
|
const dump_model = (model, file='model') => {
|
|
|
|
|
const assembly = m.model.originate({
|
|
|
|
|
models: u.deepcopy(model),
|
|
|
|
|
units: 'mm'
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
fs.mkdirpSync(path.dirname(`${file}.dxf`))
|
|
|
|
|
fs.writeFileSync(`${file}.dxf`, m.exporter.toDXF(assembly))
|
|
|
|
|
if (args.debug) {
|
|
|
|
|
fs.writeJSONSync(`${file}.json`, assembly, {spaces: 4})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-05-28 22:18:41 +02:00
|
|
|
const args = yargs
|
2020-06-07 13:40:26 +02:00
|
|
|
.option('config', {
|
|
|
|
|
alias: 'c',
|
|
|
|
|
demandOption: true,
|
|
|
|
|
describe: 'Config yaml file',
|
|
|
|
|
type: 'string'
|
|
|
|
|
})
|
|
|
|
|
.option('output', {
|
|
|
|
|
alias: 'o',
|
|
|
|
|
default: path.resolve('output'),
|
|
|
|
|
describe: 'Output folder',
|
|
|
|
|
type: 'string'
|
|
|
|
|
})
|
2020-05-30 15:17:53 +02:00
|
|
|
.option('debug', {
|
2020-05-28 22:18:41 +02:00
|
|
|
default: false,
|
2020-05-30 15:17:53 +02:00
|
|
|
hidden: true,
|
|
|
|
|
type: 'boolean'
|
|
|
|
|
})
|
2020-06-07 13:40:26 +02:00
|
|
|
.argv
|
|
|
|
|
|
2020-06-26 21:00:10 +02:00
|
|
|
fs.mkdirpSync(args.o)
|
2020-05-28 22:18:41 +02:00
|
|
|
|
2020-06-26 21:00:10 +02:00
|
|
|
const config_parser = args.c.endsWith('.yaml') ? yaml.load : JSON.parse
|
|
|
|
|
const config = config_parser(fs.readFileSync(args.c).toString())
|
2020-05-30 15:17:53 +02:00
|
|
|
|
2020-06-26 21:00:10 +02:00
|
|
|
const points = points_lib.parse(config.points)
|
2020-05-30 15:17:53 +02:00
|
|
|
if (args.debug) {
|
2020-06-26 21:00:10 +02:00
|
|
|
fs.writeJSONSync(path.join(args.o, 'points.json'), points, {spaces: 4})
|
|
|
|
|
const size = 14
|
|
|
|
|
const rect = u.rect(size, size, [-size/2, -size/2])
|
|
|
|
|
const points_demo = outline_lib.layout(points, rect)
|
|
|
|
|
dump_model(points_demo, path.join(args.o, 'points_demo'))
|
2020-05-31 22:59:51 +02:00
|
|
|
}
|
2020-06-07 13:40:26 +02:00
|
|
|
|
2020-06-16 22:24:46 +02:00
|
|
|
console.log('Done.')
|