Search in sources :

Example 21 with Entity

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);
}
Also used : Group(com.willwinder.ugs.nbp.designer.entities.cuttable.Group) Entity(com.willwinder.ugs.nbp.designer.entities.Entity) DXFParser(org.kabeja.parser.DXFParser) Parser(org.kabeja.parser.Parser) Design(com.willwinder.ugs.nbp.designer.model.Design) Point2D(java.awt.geom.Point2D) ParseException(org.kabeja.parser.ParseException)

Example 22 with Entity

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();
    });
}
Also used : SvgReader(com.willwinder.ugs.nbp.designer.io.svg.SvgReader) Entity(com.willwinder.ugs.nbp.designer.entities.Entity) Group(com.willwinder.ugs.nbp.designer.entities.cuttable.Group) Design(com.willwinder.ugs.nbp.designer.model.Design) ByteArrayInputStream(java.io.ByteArrayInputStream) List(java.util.List)

Aggregations

Entity (com.willwinder.ugs.nbp.designer.entities.Entity)22 Point2D (java.awt.geom.Point2D)7 SelectionManager (com.willwinder.ugs.nbp.designer.entities.selection.SelectionManager)6 EntityGroup (com.willwinder.ugs.nbp.designer.entities.EntityGroup)4 Design (com.willwinder.ugs.nbp.designer.model.Design)4 ArrayList (java.util.ArrayList)4 Text (com.willwinder.ugs.nbp.designer.entities.cuttable.Text)3 MouseEntityEvent (com.willwinder.ugs.nbp.designer.gui.MouseEntityEvent)3 UndoManager (com.willwinder.ugs.nbp.designer.actions.UndoManager)2 Group (com.willwinder.ugs.nbp.designer.entities.cuttable.Group)2 Size (com.willwinder.ugs.nbp.designer.model.Size)2 Gson (com.google.gson.Gson)1 GsonBuilder (com.google.gson.GsonBuilder)1 JsonSyntaxException (com.google.gson.JsonSyntaxException)1 MoveAction (com.willwinder.ugs.nbp.designer.actions.MoveAction)1 RotateAction (com.willwinder.ugs.nbp.designer.actions.RotateAction)1 Cuttable (com.willwinder.ugs.nbp.designer.entities.cuttable.Cuttable)1 Path (com.willwinder.ugs.nbp.designer.entities.cuttable.Path)1 ImageTracerDialog (com.willwinder.ugs.nbp.designer.gui.imagetracer.ImageTracerDialog)1 C2dFile (com.willwinder.ugs.nbp.designer.io.c2d.model.C2dFile)1