use of com.willwinder.ugs.nbp.designer.model.Size in project Universal-G-Code-Sender by winder.
the class RectangleTest method setSizeWithAnotherWidthShouldOnlyScaleWidth.
@Test
public void setSizeWithAnotherWidthShouldOnlyScaleWidth() {
Rectangle rectangle = new Rectangle();
rectangle.setPosition(new Point2D.Double(1, 1));
rectangle.setWidth(100);
rectangle.setHeight(100);
rectangle.setRotation(90);
assertEquals(100, rectangle.getSize().getWidth(), 0.1);
assertEquals(100, rectangle.getSize().getHeight(), 0.1);
assertEquals(1, rectangle.getPosition().getX(), 0.1);
assertEquals(1, rectangle.getPosition().getY(), 0.1);
assertEquals(90, rectangle.getRotation(), 0.1);
rectangle.setSize(new Size(200, 150));
assertEquals(200, rectangle.getSize().getWidth(), 0.1);
assertEquals(150, rectangle.getSize().getHeight(), 0.1);
}
use of com.willwinder.ugs.nbp.designer.model.Size in project Universal-G-Code-Sender by winder.
the class UgsDesignReaderTest method readDesignWithRectangle.
@Test
public void readDesignWithRectangle() {
Rectangle entity = new Rectangle();
entity.setSize(new Size(10, 10));
entity.setCenter(new Point2D.Double(10, 10));
entity.setName("rectangle");
entity.setRotation(90);
entity.setStartDepth(1);
entity.setTargetDepth(12);
entity.setCutType(CutType.POCKET);
String data = convertEntityToString(entity);
UgsDesignReader reader = new UgsDesignReader();
Design design = reader.read(IOUtils.toInputStream(data)).get();
assertEquals(1, design.getEntities().size());
Cuttable readEntity = (Cuttable) design.getEntities().get(0);
assertTrue(readEntity instanceof Rectangle);
assertEquals(entity.getPosition(), readEntity.getPosition());
assertEquals(entity.getName(), readEntity.getName());
assertEquals(entity.getCutType(), readEntity.getCutType());
assertEquals(entity.getStartDepth(), readEntity.getStartDepth(), 0.1);
assertEquals(entity.getTargetDepth(), readEntity.getTargetDepth(), 0.1);
assertEquals(entity.getRotation(), readEntity.getRotation(), 0.1);
}
use of com.willwinder.ugs.nbp.designer.model.Size in project Universal-G-Code-Sender by winder.
the class SelectionSettingsPanel method changedUpdate.
@Override
public void changedUpdate(DocumentEvent e) {
controller.getSelectionManager().removeListener(this);
if (StringUtils.isNotEmpty(rotation.getText()) && e.getDocument() == rotation.getDocument()) {
try {
double angle = Utils.parseDouble(rotation.getText());
controller.getSelectionManager().setRotation(angle);
controller.getDrawing().repaint();
} catch (NumberFormatException ex) {
// never mind
}
}
if (StringUtils.isNotEmpty(posXTextField.getText()) && StringUtils.isNotEmpty(posYTextField.getText()) && (e.getDocument() == posXTextField.getDocument() || e.getDocument() == posYTextField.getDocument())) {
double x = Utils.parseDouble(posXTextField.getText());
double y = Utils.parseDouble(posYTextField.getText());
Point2D position = controller.getSelectionManager().getPosition(anchor);
position.setLocation(x - position.getX(), y - position.getY());
controller.getSelectionManager().move(position);
controller.getDrawing().repaint();
}
if (StringUtils.isNotEmpty(widthTextField.getText()) && StringUtils.isNotEmpty(heightTextField.getText()) && (e.getDocument() == widthTextField.getDocument() || e.getDocument() == heightTextField.getDocument())) {
try {
double width = Utils.parseDouble(widthTextField.getText());
double height = Utils.parseDouble(heightTextField.getText());
if (width <= 0 || height <= 0) {
return;
}
if (!lockRatioButton.isSelected()) {
double ratio = controller.getSelectionManager().getSize().getRatio();
if (e.getDocument() == widthTextField.getDocument()) {
height = width / ratio;
setFieldValue(heightTextField, Utils.toString(height));
} else {
width = height * ratio;
setFieldValue(widthTextField, Utils.toString(width));
}
}
controller.getSelectionManager().setSize(new Size(width, height));
controller.getDrawing().repaint();
} catch (NumberFormatException ex) {
// never mind
}
}
if (!controller.getSelectionManager().isEmpty()) {
Entity entity = controller.getSelectionManager().getSelection().get(0);
if (entity instanceof Text) {
((Text) entity).setText(textTextField.getText());
((Text) entity).setFontFamily((String) fontDropDown.getSelectedItem());
}
controller.getDrawing().repaint();
}
controller.getSelectionManager().addListener(this);
}
use of com.willwinder.ugs.nbp.designer.model.Size in project Universal-G-Code-Sender by winder.
the class SimplePocketTest method pocketShouldNotExceedTheGeometry.
@Test
public void pocketShouldNotExceedTheGeometry() {
double toolRadius = 2.5;
double geometrySize = 10d;
double safeHeight = 1;
double targetDepth = -10;
int depthPerPass = 1;
Rectangle rectangle = new Rectangle();
rectangle.setSize(new Size(geometrySize, geometrySize));
SimplePocket simplePocket = new SimplePocket(rectangle);
simplePocket.setTargetDepth(targetDepth);
simplePocket.setDepthPerPass(depthPerPass);
simplePocket.setToolDiameter(toolRadius * 2);
simplePocket.setStepOver(1);
simplePocket.setSafeHeight(safeHeight);
List<Segment> segmentList = simplePocket.toGcodePath().getSegments();
Segment firstSegment = segmentList.get(0);
assertEquals("The first segment should move to safe height", safeHeight, firstSegment.point.getAxis(Axis.Z), 0.1);
assertFalse("The first segment should not move X", firstSegment.point.hasAxis(Axis.X));
assertFalse("The first segment should not move Y", firstSegment.point.hasAxis(Axis.Y));
Segment secondSegment = segmentList.get(1);
assertEquals("The second segment should move to safe height", safeHeight, firstSegment.point.getAxis(Axis.Z), 0.1);
assertEquals("The second segment should move to first X position", safeHeight, secondSegment.point.getAxis(Axis.X), toolRadius);
assertEquals("The second segment should move to first Y position", safeHeight, secondSegment.point.getAxis(Axis.Y), toolRadius);
// Make sure that we don't move outside the boundary of the geometry
segmentList.stream().filter(segment -> segment.type == SegmentType.LINE || segment.type == SegmentType.POINT).forEach(segment -> {
assertTrue("Point was outside boundary of 10x10 shape: X=" + segment.getPoint().getAxis(Axis.X), segment.getPoint().getAxis(Axis.X) >= toolRadius);
assertTrue("Point was outside boundary of 10x10 shape: Y=" + segment.getPoint().getAxis(Axis.Y), segment.getPoint().getAxis(Axis.Y) >= toolRadius);
assertTrue("Point was outside boundary of 10x10 shape: X=" + segment.getPoint().getAxis(Axis.X), segment.getPoint().getAxis(Axis.X) <= geometrySize - toolRadius);
assertTrue("Point was outside boundary of 10x10 shape: Y=" + segment.getPoint().getAxis(Axis.Y), segment.getPoint().getAxis(Axis.Y) <= geometrySize - toolRadius);
assertTrue("Point was outside boundary of 10x10 shape: Z=" + segment.getPoint().getAxis(Axis.Z), segment.getPoint().getAxis(Axis.Z) < 0);
assertTrue("Point was outside boundary of 10x10 shape: Z=" + segment.getPoint().getAxis(Axis.Z), segment.getPoint().getAxis(Axis.Z) >= targetDepth);
});
List<Segment> drillOperations = segmentList.stream().filter(segment -> segment.type == SegmentType.POINT).collect(Collectors.toList());
assertEquals("There should be a number of drill operations when making a pocket", Math.abs(targetDepth / depthPerPass), drillOperations.size(), 0.1);
PartialPosition point = drillOperations.get(drillOperations.size() - 1).getPoint();
assertEquals("Last operation should reach the target depth", targetDepth, point.getAxis(Axis.Z), 0.1);
}
use of com.willwinder.ugs.nbp.designer.model.Size in project Universal-G-Code-Sender by winder.
the class EntityGroup method setSize.
@Override
public void setSize(Size size) {
Size originalSize = getSize();
scale(size.getWidth() / originalSize.getWidth(), size.getHeight() / originalSize.getHeight());
}
Aggregations