This repository has been archived on 2023-03-25. You can view files and clone it, but cannot push or open issues or pull requests.
mightyscape-1.1-deprecated/extensions/fablabchemnitz/dxf_dwg_importer/node_modules/dxf/src/toPolylines.js
2021-07-23 02:36:56 +02:00

38 lines
1.1 KiB
JavaScript

import { Box2 } from 'vecks'
import colors from './util/colors'
import denormalise from './denormalise'
import entityToPolyline from './entityToPolyline'
import applyTransforms from './applyTransforms'
import logger from './util/logger'
export default (parsed) => {
const entities = denormalise(parsed)
const polylines = entities.map(entity => {
const layerTable = parsed.tables.layers[entity.layer]
let rgb
if (layerTable) {
const colorNumber = ('colorNumber' in entity) ? entity.colorNumber : layerTable.colorNumber
rgb = colors[colorNumber]
if (rgb === undefined) {
logger.warn('Color index', colorNumber, 'invalid, defaulting to black')
rgb = [0, 0, 0]
}
} else {
logger.warn('no layer table for layer:' + entity.layer)
rgb = [0, 0, 0]
}
return { rgb, vertices: applyTransforms(entityToPolyline(entity), entity.transforms) }
})
const bbox = new Box2()
polylines.forEach(polyline => {
polyline.vertices.forEach(vertex => {
bbox.expandByPoint({ x: vertex[0], y: vertex[1] })
})
})
return { bbox, polylines }
}