Skip to content

Commit 3a18268

Browse files
committed
Merge pull request #177 from t-oster/feature-move-head-position
Feature: Move head to mouse position.
2 parents c6f67f6 + d2841b0 commit 3a18268

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

src/com/t_oster/visicut/VisicutModel.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import com.t_oster.liblasercut.LaserJob;
2424
import com.t_oster.liblasercut.LaserProperty;
2525
import com.t_oster.liblasercut.ProgressListener;
26+
import com.t_oster.liblasercut.VectorPart;
27+
import com.t_oster.liblasercut.platform.Util;
2628
import com.t_oster.visicut.managers.LaserDeviceManager;
2729
import com.t_oster.visicut.managers.MappingManager;
2830
import com.t_oster.visicut.managers.MaterialManager;
@@ -761,6 +763,36 @@ else if (foc instanceof Double)
761763
return result;
762764
}
763765

766+
//moves the laser head to the given position (in mm)
767+
public void moveHeadTo(Point2D.Double p)
768+
{
769+
try
770+
{
771+
LaserCutter lasercutter = this.getSelectedLaserDevice().getLaserCutter();
772+
LaserJob job = new LaserJob("move", "move", "visicut");
773+
if (this.startPoint != null)
774+
{
775+
job.setStartPoint(this.startPoint.x, this.startPoint.y);
776+
}
777+
double dpi = lasercutter.getResolutions().get(lasercutter.getResolutions().size()-1);
778+
double factor = Util.dpi2dpmm(dpi);
779+
AffineTransform mm2laserpx = AffineTransform.getScaleInstance(factor, factor);
780+
VectorPart part = new VectorPart(lasercutter.getLaserPropertyForVectorPart(), dpi);
781+
mm2laserpx.transform(p, p);
782+
part.moveto((int) p.x, (int) p.y);
783+
job.addPart(part);
784+
lasercutter.sendJob(job);
785+
}
786+
catch (IllegalJobException ex)
787+
{
788+
Logger.getLogger(VisicutModel.class.getName()).log(Level.SEVERE, null, ex);
789+
}
790+
catch (Exception ex)
791+
{
792+
Logger.getLogger(VisicutModel.class.getName()).log(Level.SEVERE, null, ex);
793+
}
794+
}
795+
764796
public enum Modification
765797
{
766798
NONE,

src/com/t_oster/visicut/gui/PreviewPanelKeyboardMouseHandler.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
**/
1919
package com.t_oster.visicut.gui;
2020

21+
import com.t_oster.liblasercut.LaserJob;
22+
import com.t_oster.liblasercut.VectorPart;
2123
import com.t_oster.visicut.VisicutModel;
2224
import com.t_oster.visicut.gui.beans.EditRectangle;
2325
import com.t_oster.visicut.gui.beans.EditRectangle.Button;
@@ -82,6 +84,7 @@ public class PreviewPanelKeyboardMouseHandler extends EditRectangleController im
8284
private JMenuItem startPointSetMenuItem;
8385
private JMenuItem startPointRemoveMenuItem;
8486
private JMenuItem selectScreenshotMenuItem;
87+
private JMenuItem moveToPositionMenuItem;
8588

8689
public PreviewPanelKeyboardMouseHandler(PreviewPanel panel)
8790
{
@@ -109,6 +112,8 @@ private void buildMenu()
109112
startPointSetMenuItem = new JMenuItem(bundle.getString("ADD_STARTPOINT"));
110113
startPointRemoveMenuItem = new JMenuItem(bundle.getString("REMOVE_STARTPOINT"));
111114
selectScreenshotMenuItem = new JMenuItem(bundle.getString("SELECT_SCREENSHOT"));
115+
//TODO: i10n
116+
moveToPositionMenuItem = new JMenuItem("MOVE TO POSITION");
112117

113118
resetMenuItem.addActionListener(new ActionListener()
114119
{
@@ -274,6 +279,25 @@ public void actionPerformed(ActionEvent ae)
274279
}
275280
});
276281
backgroundMenu.add(selectScreenshotMenuItem);
282+
moveToPositionMenuItem.addActionListener(new ActionListener(){
283+
284+
public void actionPerformed(ActionEvent ae)
285+
{
286+
try
287+
{
288+
PreviewPanelKeyboardMouseHandler that = PreviewPanelKeyboardMouseHandler.this;
289+
Point2D.Double p = new Point2D.Double(that.lastMousePosition.x, that.lastMousePosition.y);
290+
that.previewPanel.getMmToPxTransform().createInverse().transform(p, p);
291+
VisicutModel.getInstance().moveHeadTo(p);
292+
}
293+
catch (NoninvertibleTransformException ex)
294+
{
295+
Logger.getLogger(PreviewPanelKeyboardMouseHandler.class.getName()).log(Level.SEVERE, null, ex);
296+
}
297+
}
298+
299+
});
300+
backgroundMenu.add(moveToPositionMenuItem);
277301
}
278302

279303
private void flip(boolean horizontal)
@@ -563,7 +587,7 @@ public void mouseClicked(MouseEvent me)
563587
}
564588
else if (me.getButton() == MouseEvent.BUTTON3)
565589
{
566-
if (getEditRect() != null)
590+
if (this.previewPanel.isHighlightSelection() && getEditRect() != null)
567591
{
568592
Rectangle2D bb = getSelectedPart().getBoundingBox();
569593
Rectangle2D e = Helper.transform(bb, this.previewPanel.getMmToPxTransform());

0 commit comments

Comments
 (0)