Search in sources :

Example 1 with ArcExpander

use of com.willwinder.universalgcodesender.gcode.processors.ArcExpander in project Universal-G-Code-Sender by winder.

the class CommandProcessorLoader method getHelpForConfig.

/**
 * Helper to instantiate a processor by name and call the getHelp method.
 * @param pc
 * @return
 */
public static String getHelpForConfig(ProcessorConfig pc) {
    CommandProcessor p;
    try {
        switch(pc.name) {
            case "ArcExpander":
                double length = pc.args.get("segmentLengthMM").getAsDouble();
                p = new ArcExpander(true, length);
                break;
            case "CommandLengthProcessor":
                int commandLength = pc.args.get("commandLength").getAsInt();
                p = new CommandLengthProcessor(commandLength);
                break;
            case "CommentProcessor":
                p = new CommentProcessor();
                break;
            case "DecimalProcessor":
                int decimals = pc.args.get("decimals").getAsInt();
                p = new DecimalProcessor(decimals);
                break;
            case "FeedOverrideProcessor":
                double override = pc.args.get("speedOverridePercent").getAsDouble();
                p = new FeedOverrideProcessor(override);
                break;
            case "M30Processor":
                p = new M30Processor();
                break;
            case "PatternRemover":
                String pattern = pc.args.get("pattern").getAsString();
                p = new PatternRemover(pattern);
                break;
            case "WhitespaceProcessor":
                p = new WhitespaceProcessor();
                break;
            case "M3Dweller":
                int duration = pc.args.get("duration").getAsInt();
                p = new M3Dweller(duration);
                break;
            default:
                throw new IllegalArgumentException("Unknown processor: " + pc.name);
        }
        return p.getHelp();
    } catch (Exception e) {
        return Localization.getString("settings.processors.loadError") + ": " + Localization.getString(pc.name);
    }
}
Also used : DecimalProcessor(com.willwinder.universalgcodesender.gcode.processors.DecimalProcessor) PatternRemover(com.willwinder.universalgcodesender.gcode.processors.PatternRemover) CommentProcessor(com.willwinder.universalgcodesender.gcode.processors.CommentProcessor) M3Dweller(com.willwinder.universalgcodesender.gcode.processors.M3Dweller) WhitespaceProcessor(com.willwinder.universalgcodesender.gcode.processors.WhitespaceProcessor) CommandLengthProcessor(com.willwinder.universalgcodesender.gcode.processors.CommandLengthProcessor) CommandProcessor(com.willwinder.universalgcodesender.gcode.processors.CommandProcessor) ArcExpander(com.willwinder.universalgcodesender.gcode.processors.ArcExpander) FeedOverrideProcessor(com.willwinder.universalgcodesender.gcode.processors.FeedOverrideProcessor) M30Processor(com.willwinder.universalgcodesender.gcode.processors.M30Processor)

Example 2 with ArcExpander

use of com.willwinder.universalgcodesender.gcode.processors.ArcExpander in project Universal-G-Code-Sender by winder.

the class GcodeParserTest method autoLevelerProcessorSet.

@Test
public void autoLevelerProcessorSet() throws Exception {
    System.out.println("autoLevelerProcessorSet");
    GcodeParser gcp = new GcodeParser();
    gcp.addCommandProcessor(new CommentProcessor());
    gcp.addCommandProcessor(new ArcExpander(true, 0.1));
    gcp.addCommandProcessor(new LineSplitter(1));
    Position[][] grid = { { new Position(-5, -5, 0, MM), new Position(-5, 35, 0, MM) }, { new Position(35, -5, 0, MM), new Position(35, 35, 0, MM) } };
    gcp.addCommandProcessor(new MeshLeveler(0, grid, Units.MM));
    Path output = Files.createTempFile("autoleveler_processor_set_test.nc", "");
    // Copy resource to temp file since my parser methods need it that way.
    URL file = this.getClass().getClassLoader().getResource("./gcode/circle_test.nc");
    File tempFile = File.createTempFile("temp", "file");
    IOUtils.copy(file.openStream(), FileUtils.openOutputStream(tempFile));
    GcodeParserUtils.processAndExport(gcp, tempFile, output.toFile());
    GcodeStreamReader reader = new GcodeStreamReader(output.toFile());
    file = this.getClass().getClassLoader().getResource("./gcode/circle_test.nc.processed");
    Files.lines(Paths.get(file.toURI())).forEach((t) -> {
        try {
            GcodeCommand c = reader.getNextCommand();
            if (c == null) {
                Assert.fail("Reached end of gcode reader before end of expected commands.");
            }
            Assert.assertEquals(c.getCommandString(), t);
        } catch (IOException ex) {
            Assert.fail("Unexpected exception.");
        }
    });
    assertEquals(1027, reader.getNumRows());
    output.toFile().delete();
}
Also used : Path(java.nio.file.Path) Position(com.willwinder.universalgcodesender.model.Position) LineSplitter(com.willwinder.universalgcodesender.gcode.processors.LineSplitter) GcodeCommand(com.willwinder.universalgcodesender.types.GcodeCommand) IOException(java.io.IOException) URL(java.net.URL) CommentProcessor(com.willwinder.universalgcodesender.gcode.processors.CommentProcessor) MeshLeveler(com.willwinder.universalgcodesender.gcode.processors.MeshLeveler) GcodeStreamReader(com.willwinder.universalgcodesender.utils.GcodeStreamReader) ArcExpander(com.willwinder.universalgcodesender.gcode.processors.ArcExpander) File(java.io.File) Test(org.junit.Test)

Example 3 with ArcExpander

use of com.willwinder.universalgcodesender.gcode.processors.ArcExpander in project Universal-G-Code-Sender by winder.

the class AutoLevelerTopComponent method applyToGcodeActionPerformed.

// GEN-LAST:event_dataViewerActionPerformed
private void applyToGcodeActionPerformed(java.awt.event.ActionEvent evt) {
    // GEN-FIRST:event_applyToGcodeActionPerformed
    GcodeParser gcp = new GcodeParser();
    Settings.AutoLevelSettings autoLevelSettings = this.settings.getAutoLevelSettings();
    // Step 0: Get rid of comments.
    gcp.addCommandProcessor(new CommentProcessor());
    // Step 1: The arc processor and line processors NO LONGER need to be split!
    // Step 2: Must convert arcs to line segments.
    gcp.addCommandProcessor(new ArcExpander(true, autoLevelSettings.autoLevelArcSliceLength));
    // Step 3: Line splitter. No line should be longer than some fraction of "resolution"
    gcp.addCommandProcessor(new LineSplitter(getValue(stepResolution) / 10));
    // Step 4: Adjust Z heights codes based on mesh offsets.
    gcp.addCommandProcessor(new MeshLeveler(getValue(this.zSurface), scanner.getProbePositionGrid(), scanner.getUnits()));
    try {
        backend.applyGcodeParser(gcp);
    } catch (Exception ex) {
        GUIHelpers.displayErrorDialog(ex.getMessage());
        Exceptions.printStackTrace(ex);
    }
}
Also used : LineSplitter(com.willwinder.universalgcodesender.gcode.processors.LineSplitter) GcodeParser(com.willwinder.universalgcodesender.gcode.GcodeParser) MeshLeveler(com.willwinder.universalgcodesender.gcode.processors.MeshLeveler) ArcExpander(com.willwinder.universalgcodesender.gcode.processors.ArcExpander) AutoLevelSettings(com.willwinder.universalgcodesender.utils.Settings.AutoLevelSettings) AutoLevelSettings(com.willwinder.universalgcodesender.utils.Settings.AutoLevelSettings) Settings(com.willwinder.universalgcodesender.utils.Settings) CommentProcessor(com.willwinder.universalgcodesender.gcode.processors.CommentProcessor)

Example 4 with ArcExpander

use of com.willwinder.universalgcodesender.gcode.processors.ArcExpander in project Universal-G-Code-Sender by winder.

the class CommandProcessorLoader method initializeWithProcessors.

public static List<CommandProcessor> initializeWithProcessors(List<ProcessorConfig> config) {
    List<CommandProcessor> list = new ArrayList<>();
    for (ProcessorConfig pc : config) {
        CommandProcessor p = null;
        // Check if the processor is enabled.
        if (pc.optional && !pc.enabled) {
            continue;
        }
        switch(pc.name) {
            case "ArcExpander":
                double length = pc.args.get("segmentLengthMM").getAsDouble();
                p = new ArcExpander(true, length);
                break;
            case "CommandLengthProcessor":
                int commandLength = pc.args.get("commandLength").getAsInt();
                p = new CommandLengthProcessor(commandLength);
                break;
            case "CommentProcessor":
                p = new CommentProcessor();
                break;
            case "DecimalProcessor":
                int decimals = pc.args.get("decimals").getAsInt();
                p = new DecimalProcessor(decimals);
                break;
            case "FeedOverrideProcessor":
                double override = pc.args.get("speedOverridePercent").getAsDouble();
                p = new FeedOverrideProcessor(override);
                break;
            case "M30Processor":
                p = new M30Processor();
                break;
            case "PatternRemover":
                String pattern = pc.args.get("pattern").getAsString();
                p = new PatternRemover(pattern);
                break;
            case "WhitespaceProcessor":
                p = new WhitespaceProcessor();
                break;
            case "M3Dweller":
                double duration = pc.args.get("duration").getAsDouble();
                p = new M3Dweller(duration);
                break;
            default:
                throw new IllegalArgumentException("Unknown processor: " + pc.name);
        }
        list.add(p);
    }
    return list;
}
Also used : ArrayList(java.util.ArrayList) DecimalProcessor(com.willwinder.universalgcodesender.gcode.processors.DecimalProcessor) PatternRemover(com.willwinder.universalgcodesender.gcode.processors.PatternRemover) ProcessorConfig(com.willwinder.universalgcodesender.utils.ControllerSettings.ProcessorConfig) CommentProcessor(com.willwinder.universalgcodesender.gcode.processors.CommentProcessor) M3Dweller(com.willwinder.universalgcodesender.gcode.processors.M3Dweller) WhitespaceProcessor(com.willwinder.universalgcodesender.gcode.processors.WhitespaceProcessor) CommandLengthProcessor(com.willwinder.universalgcodesender.gcode.processors.CommandLengthProcessor) CommandProcessor(com.willwinder.universalgcodesender.gcode.processors.CommandProcessor) ArcExpander(com.willwinder.universalgcodesender.gcode.processors.ArcExpander) FeedOverrideProcessor(com.willwinder.universalgcodesender.gcode.processors.FeedOverrideProcessor) M30Processor(com.willwinder.universalgcodesender.gcode.processors.M30Processor)

Aggregations

ArcExpander (com.willwinder.universalgcodesender.gcode.processors.ArcExpander)4 CommentProcessor (com.willwinder.universalgcodesender.gcode.processors.CommentProcessor)4 CommandLengthProcessor (com.willwinder.universalgcodesender.gcode.processors.CommandLengthProcessor)2 CommandProcessor (com.willwinder.universalgcodesender.gcode.processors.CommandProcessor)2 DecimalProcessor (com.willwinder.universalgcodesender.gcode.processors.DecimalProcessor)2 FeedOverrideProcessor (com.willwinder.universalgcodesender.gcode.processors.FeedOverrideProcessor)2 LineSplitter (com.willwinder.universalgcodesender.gcode.processors.LineSplitter)2 M30Processor (com.willwinder.universalgcodesender.gcode.processors.M30Processor)2 M3Dweller (com.willwinder.universalgcodesender.gcode.processors.M3Dweller)2 MeshLeveler (com.willwinder.universalgcodesender.gcode.processors.MeshLeveler)2 PatternRemover (com.willwinder.universalgcodesender.gcode.processors.PatternRemover)2 WhitespaceProcessor (com.willwinder.universalgcodesender.gcode.processors.WhitespaceProcessor)2 GcodeParser (com.willwinder.universalgcodesender.gcode.GcodeParser)1 Position (com.willwinder.universalgcodesender.model.Position)1 GcodeCommand (com.willwinder.universalgcodesender.types.GcodeCommand)1 ProcessorConfig (com.willwinder.universalgcodesender.utils.ControllerSettings.ProcessorConfig)1 GcodeStreamReader (com.willwinder.universalgcodesender.utils.GcodeStreamReader)1 Settings (com.willwinder.universalgcodesender.utils.Settings)1 AutoLevelSettings (com.willwinder.universalgcodesender.utils.Settings.AutoLevelSettings)1 File (java.io.File)1