Search in sources :

Example 1 with Cuttable

use of com.willwinder.ugs.nbp.designer.entities.cuttable.Cuttable in project Universal-G-Code-Sender by winder.

the class EntityCellRenderer method getTreeCellRendererComponent.

@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
    super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
    BackendAPI backendAPI = CentralLookup.getDefault().lookup(BackendAPI.class);
    UnitUtils.Units preferredUnits = backendAPI.getSettings().getPreferredUnits();
    Object treeObject = getUserObject(value);
    if (leaf && treeObject instanceof Cuttable) {
        Cuttable cuttable = (Cuttable) treeObject;
        CutType cutType = cuttable.getCutType();
        double cutDepth = UnitUtils.scaleUnits(UnitUtils.Units.MM, preferredUnits) * cuttable.getTargetDepth();
        setIcon(new CutTypeIcon(cutType, CutTypeIcon.Size.SMALL));
        if (cutType == CutType.NONE) {
            setText(cuttable.getName());
        } else {
            setText((Utils.toString(cutDepth)) + " " + preferredUnits.abbreviation + " - " + cuttable.getName());
        }
    } else {
        // no tool tip
        setToolTipText(null);
    }
    return this;
}
Also used : UnitUtils(com.willwinder.universalgcodesender.model.UnitUtils) BackendAPI(com.willwinder.universalgcodesender.model.BackendAPI) Cuttable(com.willwinder.ugs.nbp.designer.entities.cuttable.Cuttable) CutTypeIcon(com.willwinder.ugs.nbp.designer.gui.CutTypeIcon) CutType(com.willwinder.ugs.nbp.designer.entities.cuttable.CutType)

Example 2 with Cuttable

use of com.willwinder.ugs.nbp.designer.entities.cuttable.Cuttable in project Universal-G-Code-Sender by winder.

the class CuttableEntityV1 method applyCommonAttributes.

@Override
protected void applyCommonAttributes(Entity entity) {
    super.applyCommonAttributes(entity);
    // We need to make a copy of the transformation to set the affine transformation state and type which is not serialized
    entity.setTransform(new AffineTransform(transform.getScaleX(), transform.getShearY(), transform.getShearX(), transform.getScaleY(), transform.getTranslateX(), transform.getTranslateY()));
    if (entity instanceof Cuttable) {
        ((Cuttable) entity).setStartDepth(startDepth);
        ((Cuttable) entity).setTargetDepth(cutDepth);
        ((Cuttable) entity).setCutType(CutTypeV1.toCutType(cutType));
    }
}
Also used : Cuttable(com.willwinder.ugs.nbp.designer.entities.cuttable.Cuttable) AffineTransform(java.awt.geom.AffineTransform)

Example 3 with Cuttable

use of com.willwinder.ugs.nbp.designer.entities.cuttable.Cuttable in project Universal-G-Code-Sender by winder.

the class EntityComparatorTest method shouldSortEntitiesForOptimizedDistanceToLargeModels.

@Test
public void shouldSortEntitiesForOptimizedDistanceToLargeModels() {
    List<Cuttable> entities = generateEntities(100);
    double totalDistance = 0;
    for (int i = 1; i < entities.size(); i++) {
        totalDistance += entities.get(i - 1).getCenter().distance(entities.get(i).getCenter());
    }
    double totalDistanceSorted = 0;
    entities.sort(new EntityComparator(100, 100));
    for (int i = 1; i < entities.size(); i++) {
        totalDistanceSorted += entities.get(i - 1).getCenter().distance(entities.get(i).getCenter());
    }
    assertTrue("Expected optimization of the total distance " + totalDistance + " to be optimized 5 times shorter but was " + totalDistanceSorted, totalDistance / 5 > totalDistanceSorted);
}
Also used : Cuttable(com.willwinder.ugs.nbp.designer.entities.cuttable.Cuttable) EntityComparator(com.willwinder.ugs.nbp.designer.io.gcode.EntityComparator) Test(org.junit.Test)

Example 4 with Cuttable

use of com.willwinder.ugs.nbp.designer.entities.cuttable.Cuttable in project Universal-G-Code-Sender by winder.

the class SelectionSettingsPanel method stateChanged.

@Override
public void stateChanged(ChangeEvent e) {
    if (controller == null || controller.getSelectionManager() == null) {
        return;
    }
    CutType cutType = (CutType) cutTypeComboBox.getSelectedItem();
    String fontFamily = (String) fontDropDown.getSelectedItem();
    List<Cuttable> cuttables = controller.getSelectionManager().getSelection().stream().filter(Cuttable.class::isInstance).map(Cuttable.class::cast).collect(Collectors.toList());
    if (!cuttables.isEmpty()) {
        double startDepth = (Double) startDepthSpinner.getValue();
        double targetDepth = Math.max((Double) targetDepthSpinner.getValue(), startDepth);
        ChangeCutSettingsAction changeCutSettingsAction = new ChangeCutSettingsAction(controller, cuttables, startDepth, targetDepth, cutType);
        changeCutSettingsAction.actionPerformed(null);
        controller.getUndoManager().addAction(changeCutSettingsAction);
    }
    controller.getSelectionManager().getSelection().stream().filter(Text.class::isInstance).map(Text.class::cast).forEach(text -> text.setFontFamily(fontFamily));
    onEvent(new EntityEvent(controller.getSelectionManager(), EventType.SETTINGS_CHANGED));
}
Also used : Cuttable(com.willwinder.ugs.nbp.designer.entities.cuttable.Cuttable) EntityEvent(com.willwinder.ugs.nbp.designer.entities.EntityEvent) Text(com.willwinder.ugs.nbp.designer.entities.cuttable.Text) ChangeCutSettingsAction(com.willwinder.ugs.nbp.designer.actions.ChangeCutSettingsAction) CutType(com.willwinder.ugs.nbp.designer.entities.cuttable.CutType)

Example 5 with Cuttable

use of com.willwinder.ugs.nbp.designer.entities.cuttable.Cuttable in project Universal-G-Code-Sender by winder.

the class ChangeCutSettingsAction method actionPerformed.

@Override
public void actionPerformed(ActionEvent e) {
    for (Cuttable cuttable : cuttableList) {
        cuttable.setStartDepth(newStartDepth);
        cuttable.setTargetDepth(newCutDepth);
        cuttable.setCutType(newCutType);
    }
    this.controller.getDrawing().repaint();
}
Also used : Cuttable(com.willwinder.ugs.nbp.designer.entities.cuttable.Cuttable)

Aggregations

Cuttable (com.willwinder.ugs.nbp.designer.entities.cuttable.Cuttable)9 CutType (com.willwinder.ugs.nbp.designer.entities.cuttable.CutType)2 Text (com.willwinder.ugs.nbp.designer.entities.cuttable.Text)2 EntityComparator (com.willwinder.ugs.nbp.designer.io.gcode.EntityComparator)2 Test (org.junit.Test)2 ChangeCutSettingsAction (com.willwinder.ugs.nbp.designer.actions.ChangeCutSettingsAction)1 Entity (com.willwinder.ugs.nbp.designer.entities.Entity)1 EntityEvent (com.willwinder.ugs.nbp.designer.entities.EntityEvent)1 Ellipse (com.willwinder.ugs.nbp.designer.entities.cuttable.Ellipse)1 CutTypeIcon (com.willwinder.ugs.nbp.designer.gui.CutTypeIcon)1 GcodePath (com.willwinder.ugs.nbp.designer.io.gcode.path.GcodePath)1 Segment (com.willwinder.ugs.nbp.designer.io.gcode.path.Segment)1 DrillCenterToolPath (com.willwinder.ugs.nbp.designer.io.gcode.toolpaths.DrillCenterToolPath)1 OutlineToolPath (com.willwinder.ugs.nbp.designer.io.gcode.toolpaths.OutlineToolPath)1 PocketToolPath (com.willwinder.ugs.nbp.designer.io.gcode.toolpaths.PocketToolPath)1 Size (com.willwinder.ugs.nbp.designer.model.Size)1 BackendAPI (com.willwinder.universalgcodesender.model.BackendAPI)1 UnitUtils (com.willwinder.universalgcodesender.model.UnitUtils)1 AffineTransform (java.awt.geom.AffineTransform)1 Point2D (java.awt.geom.Point2D)1