mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-07 20:34:55 +10:00
Compare commits
3 Commits
ics
...
cnc-output
| Author | SHA1 | Date | |
|---|---|---|---|
| 662502da0b | |||
| 5ba5eef678 | |||
| af696fe38c |
@@ -141,6 +141,13 @@
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/../lib/gerber-writer-api-1.0.0.jar</systemPath>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.diylc.local</groupId>
|
||||
<artifactId>jdxf</artifactId>
|
||||
<version>2.1.1</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${project.basedir}/../lib/jdxf.jar</systemPath>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.diylc.local</groupId>
|
||||
<artifactId>java-http-proxy</artifactId>
|
||||
|
||||
@@ -22,6 +22,7 @@ import java.awt.datatransfer.ClipboardOwner;
|
||||
import javax.swing.Icon;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.diylc.swing.actions.analyze.*;
|
||||
import org.diylc.swing.actions.file.*;
|
||||
import org.diylc.swingframework.IDrawingProvider;
|
||||
|
||||
import org.diylc.common.INetlistAnalyzer;
|
||||
@@ -56,20 +57,6 @@ import org.diylc.swing.actions.edit.SaveAsTemplateAction;
|
||||
import org.diylc.swing.actions.edit.SelectAllAction;
|
||||
import org.diylc.swing.actions.edit.SendToBackAction;
|
||||
import org.diylc.swing.actions.edit.UngroupAction;
|
||||
import org.diylc.swing.actions.file.CreateBomAction;
|
||||
import org.diylc.swing.actions.file.ExitAction;
|
||||
import org.diylc.swing.actions.file.ExportBlocksAction;
|
||||
import org.diylc.swing.actions.file.ExportPDFAction;
|
||||
import org.diylc.swing.actions.file.ExportVariantsAction;
|
||||
import org.diylc.swing.actions.file.ImportAction;
|
||||
import org.diylc.swing.actions.file.ImportBlocksAction;
|
||||
import org.diylc.swing.actions.file.ImportNetlistAction;
|
||||
import org.diylc.swing.actions.file.ImportVariantsAction;
|
||||
import org.diylc.swing.actions.file.NewAction;
|
||||
import org.diylc.swing.actions.file.OpenAction;
|
||||
import org.diylc.swing.actions.file.PrintAction;
|
||||
import org.diylc.swing.actions.file.SaveAction;
|
||||
import org.diylc.swing.actions.file.SaveAsAction;
|
||||
|
||||
public class ActionFactory {
|
||||
|
||||
@@ -120,6 +107,11 @@ public class ActionFactory {
|
||||
IDrawingProvider drawingProvider, ISwingUI swingUI, String defaultSuffix) {
|
||||
return new ExportPDFAction(plugInPort, drawingProvider, swingUI, defaultSuffix);
|
||||
}
|
||||
|
||||
public ExportDXFAction createExportXDFAction(IPlugInPort plugInPort,
|
||||
IDrawingProvider drawingProvider, ISwingUI swingUI, String defaultSuffix) {
|
||||
return new ExportDXFAction(plugInPort, drawingProvider, swingUI, defaultSuffix);
|
||||
}
|
||||
|
||||
public ExportGerberAction createExportGerberAction(IPlugInPort plugInPort, ISwingUI swingUI) {
|
||||
return new ExportGerberAction(plugInPort, swingUI);
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
package org.diylc.swing.actions.file;
|
||||
|
||||
import com.jsevy.jdxf.DXFDocument;
|
||||
import com.jsevy.jdxf.DXFGraphics;
|
||||
import com.orsonpdf.PDFDocument;
|
||||
import com.orsonpdf.PDFGraphics2D;
|
||||
import com.orsonpdf.PDFHints;
|
||||
import com.orsonpdf.Page;
|
||||
import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.common.ITask;
|
||||
import org.diylc.swing.ActionFactory;
|
||||
import org.diylc.swing.ISwingUI;
|
||||
import org.diylc.swing.gui.DialogFactory;
|
||||
import org.diylc.swing.plugins.file.FileFilterEnum;
|
||||
import org.diylc.swingframework.IDrawingProvider;
|
||||
import org.diylc.swingframework.export.DrawingExporter;
|
||||
import org.diylc.utils.IconLoader;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
|
||||
public class ExportDXFAction extends AbstractAction {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private static final int SCREEN_RESOLUTION = Toolkit.getDefaultToolkit().getScreenResolution();
|
||||
|
||||
private IDrawingProvider drawingProvider;
|
||||
private ISwingUI swingUI;
|
||||
private IPlugInPort plugInPort;
|
||||
private String defaultSuffix;
|
||||
|
||||
public ExportDXFAction(IPlugInPort plugInPort, IDrawingProvider drawingProvider,
|
||||
ISwingUI swingUI, String defaultSuffix) {
|
||||
super();
|
||||
this.plugInPort = plugInPort;
|
||||
this.drawingProvider = drawingProvider;
|
||||
this.swingUI = swingUI;
|
||||
this.defaultSuffix = defaultSuffix;
|
||||
putValue(AbstractAction.NAME, "Export to DXF");
|
||||
putValue(AbstractAction.SMALL_ICON, IconLoader.PDF.getIcon());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
ActionFactory.LOG.info("ExportDXFAction triggered");
|
||||
|
||||
File initialFile = null;
|
||||
String currentFile = plugInPort.getCurrentFileName();
|
||||
if (currentFile != null) {
|
||||
File cFile = new File(currentFile);
|
||||
initialFile =
|
||||
new File(cFile.getName().replaceAll("(?i)\\.diy", "") + defaultSuffix + ".dxf");
|
||||
}
|
||||
|
||||
final File file = DialogFactory.getInstance().showSaveDialog(swingUI.getOwnerFrame(),
|
||||
FileFilterEnum.PDF.getFilter(), initialFile, FileFilterEnum.DXF.getExtensions()[0], null);
|
||||
if (file != null) {
|
||||
swingUI.executeBackgroundTask(new ITask<Void>() {
|
||||
|
||||
@Override
|
||||
public Void doInBackground() throws Exception {
|
||||
ActionFactory.LOG.debug("Exporting to " + file.getAbsolutePath());
|
||||
|
||||
DXFDocument dxfDocument = new
|
||||
DXFDocument(file.getName());
|
||||
DXFGraphics dxfGraphics =
|
||||
dxfDocument.getGraphics();
|
||||
|
||||
Dimension d = drawingProvider.getSize();
|
||||
double factor = 1;//(double)(72.0F / (float)SCREEN_RESOLUTION);
|
||||
|
||||
for(int i = 0; i < drawingProvider.getPageCount(); ++i) {
|
||||
dxfGraphics.setRenderingHint(PDFHints.KEY_DRAW_STRING_TYPE, PDFHints.VALUE_DRAW_STRING_TYPE_VECTOR);
|
||||
drawingProvider.draw(i, dxfGraphics, factor);
|
||||
}
|
||||
|
||||
String dxfText = dxfDocument.toDXFString();
|
||||
FileWriter fileWriter = new FileWriter(file.getAbsolutePath());
|
||||
fileWriter.write(dxfText);
|
||||
fileWriter.flush();
|
||||
fileWriter.close();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete(Void result) {}
|
||||
|
||||
@Override
|
||||
public void failed(Exception e) {
|
||||
swingUI.showMessage("Could not export to DXF. " + e.getMessage(), "Error",
|
||||
ISwingUI.ERROR_MESSAGE);
|
||||
}
|
||||
}, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@ public enum FileFilterEnum {
|
||||
"Excel Workbooks (*.xls)", "xls"), CSV("Comma Separated Files (*.csv)", "csv"), HTML("HTML Files (*.html)",
|
||||
"html"), IMAGES("Image Files (*.png, *.jpg, *.gif)", "png", "jpg", "gif"), XML("XML Files (*.xml)", "xml"),
|
||||
TEST("Test Files (*.tst)", "tst"), CRV("Curve Files (*.crv)", "crv"), SVG("SVG Files (*.svg)", "svg"),
|
||||
GBR("Gerber Files (*.gbr)", "gbr"), ALL_FILES("All Files (*.*)", "*");
|
||||
GBR("Gerber Files (*.gbr)", "gbr"), DXF("CAD Files (*.dxf)", "gbr"), ALL_FILES("All Files (*.*)", "*");
|
||||
|
||||
FileFilter filter;
|
||||
String[] extensions;
|
||||
|
||||
@@ -84,6 +84,8 @@ public class FileMenuPlugin implements IPlugIn, IDynamicSubmenuHandler {
|
||||
actionFactory.createExportPNGAction(plugInPort, drawingProvider, swingUI, ""), PROJECT_TITLE);
|
||||
swingUI.injectMenuAction(
|
||||
actionFactory.createExportGerberAction(plugInPort, swingUI), PROJECT_TITLE);
|
||||
swingUI.injectMenuAction(
|
||||
actionFactory.createExportXDFAction(plugInPort, drawingProvider, swingUI, ""), PROJECT_TITLE);
|
||||
swingUI.injectMenuAction(actionFactory.createPrintAction(drawingProvider, swingUI,
|
||||
Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()), PROJECT_TITLE);
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user