63 lines
1.3 KiB
JavaScript
63 lines
1.3 KiB
JavaScript
import logger from './util/logger'
|
|
import parseString from './parseString'
|
|
import denormalise from './denormalise'
|
|
import toSVG from './toSVG'
|
|
import toPolylines from './toPolylines'
|
|
import groupEntitiesByLayer from './groupEntitiesByLayer'
|
|
|
|
export default class Helper {
|
|
constructor(contents) {
|
|
if (!(typeof contents === 'string')) {
|
|
throw Error('Helper constructor expects a DXF string')
|
|
}
|
|
this._contents = contents
|
|
this._parsed = null
|
|
this._denormalised = null
|
|
}
|
|
|
|
parse() {
|
|
this._parsed = parseString(this._contents)
|
|
logger.info('parsed:', this.parsed)
|
|
return this._parsed
|
|
}
|
|
|
|
get parsed() {
|
|
if (this._parsed === null) {
|
|
this.parse()
|
|
}
|
|
return this._parsed
|
|
}
|
|
|
|
denormalise() {
|
|
this._denormalised = denormalise(this.parsed)
|
|
logger.info('denormalised:', this._denormalised)
|
|
return this._denormalised
|
|
}
|
|
|
|
get denormalised() {
|
|
if (!this._denormalised) {
|
|
this.denormalise()
|
|
}
|
|
return this._denormalised
|
|
}
|
|
|
|
group() {
|
|
this._groups = groupEntitiesByLayer(this.denormalised)
|
|
}
|
|
|
|
get groups() {
|
|
if (!this._groups) {
|
|
this.group()
|
|
}
|
|
return this._groups
|
|
}
|
|
|
|
toSVG() {
|
|
return toSVG(this.parsed)
|
|
}
|
|
|
|
toPolylines() {
|
|
return toPolylines(this.parsed)
|
|
}
|
|
}
|