use of com.willwinder.ugs.nbp.designer.entities.Entity in project Universal-G-Code-Sender by winder.
the class DxfReader method read.
@Override
public Optional<Design> read(InputStream resourceAsStream) {
Parser parser = ParserBuilder.createDefaultParser();
try {
parser.parse(resourceAsStream, DXFParser.DEFAULT_ENCODING);
} catch (ParseException e) {
throw new RuntimeException("Could not parse file", e);
}
DXFDocument doc = parser.getDocument();
Group group = new Group();
Iterator layerIterator = doc.getDXFLayerIterator();
while (layerIterator.hasNext()) {
DXFLayer layer = (DXFLayer) layerIterator.next();
Group layerGroup = new Group();
layerGroup.setName(layer.getName());
Group circlesGroup = parseCircles(layer);
circlesGroup.setName("Circles");
if (!circlesGroup.getChildren().isEmpty()) {
layerGroup.addChild(circlesGroup);
}
Group linesGroup = new Group();
linesGroup.setName("Lines");
parseLines(layer, linesGroup);
if (!linesGroup.getChildren().isEmpty()) {
layerGroup.addChild(linesGroup);
}
if (!layerGroup.getChildren().isEmpty()) {
group.addChild(layerGroup);
}
}
group.setPosition(new Point2D.Double(0, 0));
Design design = new Design();
List<Entity> entities = new ArrayList<>();
if (!group.getChildren().isEmpty()) {
entities.add(group);
}
design.setEntities(entities);
return Optional.of(design);
}
use of com.willwinder.ugs.nbp.designer.entities.Entity in project Universal-G-Code-Sender by winder.
the class ImageTracerDialog method generateEntities.
private void generateEntities() {
SvgReader svgReader = new SvgReader();
Optional<Design> designOptional = svgReader.read(new ByteArrayInputStream(generatedSvgData.getBytes(Charset.defaultCharset())));
designOptional.ifPresent(design -> {
Map<String, List<Entity>> entityLayersMap = new HashMap<>();
((Group) design.getEntities().get(0)).getAllChildren().forEach(entity -> {
String layerId = StringUtils.substringBetween(entity.getDescription(), "l ", " ");
List<Entity> layerEntities = entityLayersMap.getOrDefault(layerId, new ArrayList<>());
layerEntities.add(entity);
entityLayersMap.put(layerId, layerEntities);
});
List<String> layerIds = new ArrayList<>(entityLayersMap.keySet());
Collections.reverse(layerIds);
entities = new ArrayList<>();
layerIds.forEach(layerId -> {
Group layerGroup = new Group();
layerGroup.setName(layerId);
layerGroup.addAll(entityLayersMap.get(layerId));
entities.add(layerGroup);
});
dispose();
});
}
Aggregations