From a72cf3ddce20ba77c5c7bd3104dc7ab215b30b82 Mon Sep 17 00:00:00 2001 From: Adrian Date: Fri, 30 Dec 2022 12:58:37 +0100 Subject: [PATCH 01/15] Add g-code conversion using Generator for Composition/ShapeCountour/Segment --- orx-g-code/src/commonMain/kotlin/Generator.kt | 119 ++++++++++++++++++ .../src/commonMain/kotlin/extensions/shape.kt | 71 +++++++++++ .../src/jvmTest/kotlin/TestGenerator.kt | 65 ++++++++++ 3 files changed, 255 insertions(+) create mode 100644 orx-g-code/src/commonMain/kotlin/Generator.kt create mode 100644 orx-g-code/src/commonMain/kotlin/extensions/shape.kt create mode 100644 orx-g-code/src/jvmTest/kotlin/TestGenerator.kt diff --git a/orx-g-code/src/commonMain/kotlin/Generator.kt b/orx-g-code/src/commonMain/kotlin/Generator.kt new file mode 100644 index 000000000..ebba0c5dc --- /dev/null +++ b/orx-g-code/src/commonMain/kotlin/Generator.kt @@ -0,0 +1,119 @@ +package org.openrndr.extra.gcode + +import org.openrndr.math.Vector2 +import kotlin.math.absoluteValue +import kotlin.math.pow +import kotlin.math.roundToInt + +typealias Command = String +typealias Commands = List + +fun Command.asCommands(): Commands = listOf(this) + +fun Commands.toGcode(): String = StringBuilder() + .also { sb -> this.forEach { sb.appendLine(it) } } + .toString() + +/** + * Consecutive identical commands are removed, ignoring comments. + * Comments are lines starting with ";" or "(". + */ +fun Commands.withoutDuplicates(): Commands { + var lastCommand = 0 + return this.filterIndexed { i, c -> + when (i) { + 0 -> true + else -> { + if (c.startsWith(';') || c.startsWith('(')) { + true + } else { + !c.contentEquals(this[lastCommand]).also { lastCommand = i } + } + } + } + } +} + +/** + * Double to String rounded to absolute value of [decimals]. + * Helper to be used in generator functions. + */ +fun Double.roundedTo(decimals: Int = 3): String { + val f = 10.0.pow(decimals.absoluteValue) + return when { + decimals != 0 -> "${this.times(f).roundToInt().div(f)}" + else -> "${this.roundToInt()}" + } +} + +/** + * Generates g-code for defined operations. + * All operations are empty command lists on default and have to be defined explicitly. + */ +data class Generator( + + /** + * Setup code at the beginning of a file. + */ + val setup: Commands = emptyList(), + + /** + * A move operation to the given location. + */ + val moveTo: (Vector2) -> Commands = { emptyList() }, + + /** + * Start drawing sequence. Pen down, laser on etc. + */ + val preDraw: Commands = emptyList(), + + /** + * A draw operation to the given location. + */ + val drawTo: (Vector2) -> Commands = { emptyList() }, + + /** + * End draw sequence. Lift pen, turn laser off. + * Called after a draw action before a move is performed. + */ + val postDraw: Commands = emptyList(), + + /** + * End of file sequence. + */ + val end: Commands = emptyList(), + + /** + * Insert a comment. + */ + val comment: (String) -> Commands = { _ -> emptyList() } +) + +/** + * Creates a [Generator] to be used by grbl controlled pen plotters. + * [drawRate] sets the feed rate used for drawing operations. + * Moves are performed with G0. When [moveRate] is set, moves are instead + * done with G1 and the given rate as feedRate. + * Can be customized by overwriting individual fields with *.copy*. + */ +fun basicGrblSetup( + drawRate: Double = 500.0, + moveRate: Double? = null, +) = Generator( + setup = listOf( + "G21", // mm + "G90", // Absolute positioning + ), + moveTo = when (moveRate) { + null -> { p -> "G0 X${p.x.roundedTo()} Y${p.y.roundedTo()}".asCommands() } + else -> { p -> "G1 X${p.x.roundedTo()} Y${p.y.roundedTo()} F$drawRate".asCommands() } + }, + preDraw = listOf("M3 S255"), + drawTo = { p -> "G1 X${p.x.roundedTo()} Y${p.y.roundedTo()} F$drawRate".asCommands() }, + postDraw = listOf("M3 S0"), + end = listOf( + "G0 X0 Y0", + "G90", + ), + comment = { c -> listOf(";$c") } +) \ No newline at end of file diff --git a/orx-g-code/src/commonMain/kotlin/extensions/shape.kt b/orx-g-code/src/commonMain/kotlin/extensions/shape.kt new file mode 100644 index 000000000..7114bc805 --- /dev/null +++ b/orx-g-code/src/commonMain/kotlin/extensions/shape.kt @@ -0,0 +1,71 @@ +package org.openrndr.extra.gcode.extensions + +import org.openrndr.extra.gcode.Command +import org.openrndr.extra.gcode.Commands +import org.openrndr.extra.gcode.Generator +import org.openrndr.shape.Composition +import org.openrndr.shape.Segment +import org.openrndr.shape.ShapeContour + +fun Composition.toCommands(generator: Generator, distanceTolerance: Double): Commands { + + val sequence = generator.comment("begin composition").toMutableList() + + this.findShapes().forEachIndexed { index, shapeNode -> + sequence += generator.comment("begin shape: $index") + shapeNode.shape.contours.forEach { + sequence += it.toCommands(generator, distanceTolerance) + } + sequence += generator.comment("end shape: $index") + } + + sequence += generator.comment("end composition") + + return sequence +} + +fun ShapeContour.toCommands(generator: Generator, distanceTolerance: Double): Commands { + + val sequence = mutableListOf() + + val isDot = + this.segments.size == 1 && this.segments.first().start.squaredDistanceTo(this.segments.first().end) < distanceTolerance + if (isDot) { + sequence += generator.moveTo(this.segments.first().start) + sequence += generator.preDraw + sequence += generator.comment("dot") + sequence += generator.postDraw + return sequence + } + + this.segments.forEachIndexed { i, segment -> + + // On first segment, move to beginning of segment and tool down + if (i == 0) { + sequence += generator.moveTo(segment.start) + sequence += generator.preDraw + } + + // Draw segment + sequence += segment.toCommands(generator, distanceTolerance) + } + + // Close after last segment + if (this.closed) { + generator.drawTo(this.segments.first().start) + } + + sequence += generator.postDraw + + return sequence.toList() +} + +fun Segment.toCommands(generator: Generator, distanceTolerance: Double): Commands { + return if (this.control.isEmpty()) { + generator.drawTo(this.end) + } else { + this.adaptivePositions(distanceTolerance).flatMap { + generator.drawTo(it) + } + } +} \ No newline at end of file diff --git a/orx-g-code/src/jvmTest/kotlin/TestGenerator.kt b/orx-g-code/src/jvmTest/kotlin/TestGenerator.kt new file mode 100644 index 000000000..cd1ddab32 --- /dev/null +++ b/orx-g-code/src/jvmTest/kotlin/TestGenerator.kt @@ -0,0 +1,65 @@ +package test + +import org.amshove.kluent.`should be equal to` +import org.openrndr.extra.gcode.Command +import org.openrndr.extra.gcode.roundedTo +import org.openrndr.extra.gcode.withoutDuplicates +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe +import kotlin.test.assertContentEquals + +object TestGenerator : Spek({ + + describe("Double.roundedTo") { + + data class Test(val decimals: Int, val value: Double, val want: String) + + listOf( + Test(3, 0.0, "0.0"), + Test(0, 0.0, "0"), + Test(3, 123.0, "123.0"), + Test(0, 123.0, "123"), + Test(3, 123.1234567890, "123.123"), + Test(0, 123.1234567890, "123"), + Test(3, 123.1239, "123.124"), + Test(3, -123.1239, "-123.124"), + Test(0, -123.1239, "-123"), + Test(-2, -123.1239, "-123.12"), + ).forEach { + it("${it.value} with ${it.decimals} decimals -> ${it.want}") { + it.value.roundedTo(it.decimals) `should be equal to` it.want + } + } + } + + + describe("Commands.withoutDuplicates") { + + it("empty commands") { + assertContentEquals(emptyList(), emptyList().withoutDuplicates()) + } + + it("should remove duplicate commands, keeping comments") { + + val commands = listOf( + "G0 X1 Y2 F3", + "G0 X2 Y2 F3", + "G0 X2 Y2 F3", + ";G0 X2 Y2 F3", + "(G0 X2 Y2 F3)", + "G0 X2 Y2 F3", + "G0 X3 Y2 F3", + ) + + val expected = listOf( + "G0 X1 Y2 F3", + "G0 X2 Y2 F3", + ";G0 X2 Y2 F3", + "(G0 X2 Y2 F3)", + "G0 X3 Y2 F3", + ) + + assertContentEquals(expected, commands.withoutDuplicates()) + } + } +}) \ No newline at end of file From ad9a738584fd3ecb7b1b3d5df229d640dd40dd8b Mon Sep 17 00:00:00 2001 From: Adrian Date: Fri, 30 Dec 2022 13:02:22 +0100 Subject: [PATCH 02/15] Add plot extension --- orx-g-code/src/jvmMain/kotlin/Plot.kt | 239 ++++++++++++++++++ .../src/jvmTest/kotlin/TestPlotRegression.kt | 200 +++++++++++++++ 2 files changed, 439 insertions(+) create mode 100644 orx-g-code/src/jvmMain/kotlin/Plot.kt create mode 100644 orx-g-code/src/jvmTest/kotlin/TestPlotRegression.kt diff --git a/orx-g-code/src/jvmMain/kotlin/Plot.kt b/orx-g-code/src/jvmMain/kotlin/Plot.kt new file mode 100644 index 000000000..f2419e919 --- /dev/null +++ b/orx-g-code/src/jvmMain/kotlin/Plot.kt @@ -0,0 +1,239 @@ +package org.openrndr.extra.gcode + +import mu.KotlinLogging +import org.openrndr.Extension +import org.openrndr.PresentationMode +import org.openrndr.Program +import org.openrndr.color.ColorRGBa +import org.openrndr.draw.Drawer +import org.openrndr.draw.isolated +import org.openrndr.extra.gcode.extensions.toCommands +import org.openrndr.math.Vector2 +import org.openrndr.shape.Composition +import org.openrndr.shape.CompositionDrawer +import org.openrndr.shape.Rectangle +import org.openrndr.shape.drawComposition +import java.io.File +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter +import kotlin.math.min + + +enum class RenderMode { + BEFORE, + AFTER, + MANUAL, +} + +enum class LayerMode { + SINGLE_FILE, MULTI_FILE, +} + +enum class Origin { + BOTTOM_LEFT, TOP_LEFT, CENTER +} + +typealias DrawFunction = CompositionDrawer.() -> Unit + +/** + * Configuration: + * When [manualRedraw] is true, the programs presentation mode is set to Manual on startup. + * "r" to trigger redraw. + */ +class Plot( + // Document + dimensions: Vector2, // Document size in mm + var origin: Origin = Origin.BOTTOM_LEFT, + + // G-code + var generator: Generator = Generator(), + var distanceTolerance: Double = 0.5, + var layerMode: LayerMode = LayerMode.SINGLE_FILE, + + // Rendering Properties + var defaultDrawColor: ColorRGBa = ColorRGBa.BLACK, + var defaultPenWeight: Double = 1.0, // In mm + var backgroundColor: ColorRGBa = ColorRGBa.WHITE, + val manualRedraw: Boolean = true, + var renderMode: RenderMode = RenderMode.AFTER, + + // Key Binds. Set null to disable + val gCodeBind: String? = "g", + val redrawBind: String? = "r", + + /** + * The folder where the g-code will be saved to. Default value is "gcode", saves in current working + * directory when set to null. + */ + var folder: String? = "gcode" + +) : Extension { + companion object { + val logger = KotlinLogging.logger {} + } + + override var enabled: Boolean = true + + val docBounds = Rectangle(0.0, 0.0, dimensions.x, dimensions.y) + + val layers: MutableMap = mutableMapOf() + private var order: List = listOf() + + private var scale = 1.0 + + private var program: Program? = null + + override fun setup(program: Program) { + this.program = program + + // Scale to fit in viewport + scale = min(program.width / docBounds.width, program.height / docBounds.height) + + if (!enabled) { + return + } + + if (manualRedraw) { + program.window.presentationMode = PresentationMode.MANUAL + program.window.requestDraw() + } + + program.keyboard.keyUp.listen { event -> + + if (redrawBind != null && event.name == redrawBind) { + program.window.requestDraw() + } + + if (gCodeBind != null && event.name == gCodeBind) { + when (layerMode) { + LayerMode.SINGLE_FILE -> { + writeFile("plot", toCombinedGcode()) + } + + LayerMode.MULTI_FILE -> { + toSplitGcode().forEach { + writeFile(it.key, it.value) + } + } + } + } + } + } + + override fun beforeDraw(drawer: Drawer, program: Program) { + if (enabled && renderMode == RenderMode.BEFORE) { + render(drawer) + } + } + + override fun afterDraw(drawer: Drawer, program: Program) { + if (enabled && renderMode == RenderMode.AFTER) { + render(drawer) + } + } + + /** + * Draws to the "default" layer. See [layer]. + */ + fun draw(drawFunction: DrawFunction) = layer("default", drawFunction) + + /** + * Draws to the given layer. + * If the layer with given name already exists, it is replaced. + */ + fun layer(name: String, drawFunction: DrawFunction) { + + val composition = layers[name] + + composition?.clear() + + // Append new layers to order + order = order.filter { it != name } + name + + layers[name] = drawComposition(composition = composition) { + this.composition.clear() + // Set default + fill = ColorRGBa.TRANSPARENT + strokeWeight = scaled(defaultPenWeight) + stroke = defaultDrawColor + drawFunction(this) + } + } + + /** + * Renders this plot to the given drawer. + */ + fun render(drawer: Drawer) = scaled(drawer) { scaled -> + + // Draw background surface + drawer.isolated { + strokeWeight = 0.0 + fill = backgroundColor + when (origin) { + Origin.CENTER -> rectangle(docBounds.dimensions * -.5, docBounds.width, docBounds.height) + else -> rectangle(0.0, 0.0, docBounds.width, docBounds.height) + } + } + + // Layers + order.mapNotNull { layers[it] } + .forEach { scaled.composition(it) } + } + + /** + * Drawer scaled to document space. + */ + fun scaled(drawer: Drawer, drawFunction: (Drawer) -> Unit) = drawer.isolated { + when (origin) { + Origin.BOTTOM_LEFT -> { + // Scale to fit screen and flip y-axis + translate(0.0, scaled(docBounds.height)) + scale(scale, -scale) + } + Origin.TOP_LEFT -> { + // Scale to fit screen + scale(scale, scale) + } + Origin.CENTER -> { + translate(.5 * scaled(docBounds.width), .5 * scaled(docBounds.height)) + scale(scale, -scale) + } + } + drawFunction(this) + } + + /** + * Double [v] scaled from screen space to document space. + */ + fun scaled(v: Double) = v.times(scale) + + /** + * Converts all layers to a single g-code string in the order they were added. + */ + fun toCombinedGcode(): String = + order.flatMap { l -> layers[l]?.toCommands(generator, distanceTolerance) ?: emptyList() } + .let { commands -> (generator.setup + commands + generator.end) } + .withoutDuplicates() + .toGcode() + + /** + * Converts each layer to a g-code string. + */ + fun toSplitGcode(): Map = layers.mapValues { e -> + val commands = e.value.toCommands(generator, distanceTolerance).withoutDuplicates() + (generator.setup + commands + generator.end).toGcode() + } + + /** + * Writes [content] to file "[folder]/timestamp-[name].[extension]" + */ + fun writeFile(name: String, content: String, extension: String = "gcode") { + val formatter = DateTimeFormatter.ofPattern("yyyyMMdd-HH-mm-SS") + val timestamp = formatter.format(LocalDateTime.now()) + val fileName = "$timestamp-$name.$extension" + + File(File(folder ?: "."), fileName) + .also { logger.info { "šŸ’¾Writing g-code $name to ${it.path}" } } + .writeText(content) + } +} \ No newline at end of file diff --git a/orx-g-code/src/jvmTest/kotlin/TestPlotRegression.kt b/orx-g-code/src/jvmTest/kotlin/TestPlotRegression.kt new file mode 100644 index 000000000..f2ad4dd6e --- /dev/null +++ b/orx-g-code/src/jvmTest/kotlin/TestPlotRegression.kt @@ -0,0 +1,200 @@ +package test + +import org.openrndr.extra.gcode.Plot +import org.openrndr.extra.gcode.basicGrblSetup +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe +import org.openrndr.math.Vector2 +import kotlin.test.assertEquals + + +object TestPlotRegression : Spek({ + + describe("plot with grbl generator") { + + + it("single file with circle") { + val plot = Plot(dimensions = Vector2(210.0, 297.0),generator = basicGrblSetup()) + plot.draw { + circle(100.0, 100.0, 30.0) + } + + val expected = """ + G21 + G90 + ;begin composition + ;begin shape: 0 + G0 X70.0 Y100.0 + M3 S255 + G1 X70.0 Y100.0 F500.0 + G1 X70.105 Y96.918 F500.0 + G1 X71.304 Y91.059 F500.0 + G1 X73.581 Y85.675 F500.0 + G1 X76.816 Y80.887 F500.0 + G1 X80.887 Y76.816 F500.0 + G1 X85.675 Y73.581 F500.0 + G1 X91.059 Y71.304 F500.0 + G1 X96.918 Y70.105 F500.0 + G1 X100.0 Y70.0 F500.0 + G1 X103.082 Y70.105 F500.0 + G1 X108.941 Y71.304 F500.0 + G1 X114.325 Y73.581 F500.0 + G1 X119.113 Y76.816 F500.0 + G1 X123.184 Y80.887 F500.0 + G1 X126.419 Y85.675 F500.0 + G1 X128.696 Y91.059 F500.0 + G1 X129.895 Y96.918 F500.0 + G1 X130.0 Y100.0 F500.0 + G1 X129.895 Y103.082 F500.0 + G1 X128.696 Y108.941 F500.0 + G1 X126.419 Y114.325 F500.0 + G1 X123.184 Y119.113 F500.0 + G1 X119.113 Y123.184 F500.0 + G1 X114.325 Y126.419 F500.0 + G1 X108.941 Y128.696 F500.0 + G1 X103.082 Y129.895 F500.0 + G1 X100.0 Y130.0 F500.0 + G1 X96.918 Y129.895 F500.0 + G1 X91.059 Y128.696 F500.0 + G1 X85.675 Y126.419 F500.0 + G1 X80.887 Y123.184 F500.0 + G1 X76.816 Y119.113 F500.0 + G1 X73.581 Y114.325 F500.0 + G1 X71.304 Y108.941 F500.0 + G1 X70.105 Y103.082 F500.0 + G1 X70.0 Y100.0 F500.0 + M3 S0 + ;end shape: 0 + ;end composition + G0 X0 Y0 + G90 + + """.trimIndent() + + assertEquals(expected, plot.toCombinedGcode()) + } + + describe("multiple layers") { + val plot = Plot(dimensions = Vector2(210.0, 297.0),generator = basicGrblSetup()) + plot.draw { + lineSegment(0.0, 20.0, 100.0, 200.0) + lineSegment(0.5, 20.5, 100.5, 200.5) + } + plot.layer("rect") { + rectangle(10.1234, 30.1234, 50.1234, 70.1234) + } + plot.layer("dot") { + lineSegment(25.55555, 35.55555,25.55555, 35.55555 ) + } + + it("multi file") { + + val default = """ + G21 + G90 + ;begin composition + ;begin shape: 0 + G0 X0.0 Y20.0 + M3 S255 + G1 X100.0 Y200.0 F500.0 + M3 S0 + ;end shape: 0 + ;begin shape: 1 + G0 X0.5 Y20.5 + M3 S255 + G1 X100.5 Y200.5 F500.0 + M3 S0 + ;end shape: 1 + ;end composition + G0 X0 Y0 + G90 + + """.trimIndent() + val rect = """ + G21 + G90 + ;begin composition + ;begin shape: 0 + G0 X10.123 Y30.123 + M3 S255 + G1 X60.247 Y30.123 F500.0 + G1 X60.247 Y100.247 F500.0 + G1 X10.123 Y100.247 F500.0 + G1 X10.123 Y30.123 F500.0 + M3 S0 + ;end shape: 0 + ;end composition + G0 X0 Y0 + G90 + + """.trimIndent() + + val dot = """ + G21 + G90 + ;begin composition + ;begin shape: 0 + G0 X25.556 Y35.556 + M3 S255 + ;dot + M3 S0 + ;end shape: 0 + ;end composition + G0 X0 Y0 + G90 + + """.trimIndent() + + val got = plot.toSplitGcode() + assertEquals(default, got["default"]) + assertEquals(rect, got["rect"]) + assertEquals(dot, got["dot"]) + } + + it("single file") { + val expected = """ + G21 + G90 + ;begin composition + ;begin shape: 0 + G0 X0.0 Y20.0 + M3 S255 + G1 X100.0 Y200.0 F500.0 + M3 S0 + ;end shape: 0 + ;begin shape: 1 + G0 X0.5 Y20.5 + M3 S255 + G1 X100.5 Y200.5 F500.0 + M3 S0 + ;end shape: 1 + ;end composition + ;begin composition + ;begin shape: 0 + G0 X10.123 Y30.123 + M3 S255 + G1 X60.247 Y30.123 F500.0 + G1 X60.247 Y100.247 F500.0 + G1 X10.123 Y100.247 F500.0 + G1 X10.123 Y30.123 F500.0 + M3 S0 + ;end shape: 0 + ;end composition + ;begin composition + ;begin shape: 0 + G0 X25.556 Y35.556 + M3 S255 + ;dot + M3 S0 + ;end shape: 0 + ;end composition + G0 X0 Y0 + G90 + + """.trimIndent() + assertEquals(expected, plot.toCombinedGcode()) + } + + } + } +}) \ No newline at end of file From dc1d70d94a6538a299cc3f99685afd80221a51f2 Mon Sep 17 00:00:00 2001 From: Adrian Date: Fri, 30 Dec 2022 13:37:10 +0100 Subject: [PATCH 03/15] Add toCommands extension for list of compositions --- orx-g-code/src/commonMain/kotlin/extensions/shape.kt | 4 ++++ orx-g-code/src/jvmMain/kotlin/Plot.kt | 11 ++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/orx-g-code/src/commonMain/kotlin/extensions/shape.kt b/orx-g-code/src/commonMain/kotlin/extensions/shape.kt index 7114bc805..8eb496579 100644 --- a/orx-g-code/src/commonMain/kotlin/extensions/shape.kt +++ b/orx-g-code/src/commonMain/kotlin/extensions/shape.kt @@ -7,6 +7,10 @@ import org.openrndr.shape.Composition import org.openrndr.shape.Segment import org.openrndr.shape.ShapeContour +fun List.toCommands(generator: Generator, distanceTolerance: Double): Commands = this + .flatMap {it.toCommands(generator, distanceTolerance) } + .let { commands -> (generator.setup + commands + generator.end) } + fun Composition.toCommands(generator: Generator, distanceTolerance: Double): Commands { val sequence = generator.comment("begin composition").toMutableList() diff --git a/orx-g-code/src/jvmMain/kotlin/Plot.kt b/orx-g-code/src/jvmMain/kotlin/Plot.kt index f2419e919..a8f6e7fee 100644 --- a/orx-g-code/src/jvmMain/kotlin/Plot.kt +++ b/orx-g-code/src/jvmMain/kotlin/Plot.kt @@ -190,10 +190,12 @@ class Plot( translate(0.0, scaled(docBounds.height)) scale(scale, -scale) } + Origin.TOP_LEFT -> { // Scale to fit screen scale(scale, scale) } + Origin.CENTER -> { translate(.5 * scaled(docBounds.width), .5 * scaled(docBounds.height)) scale(scale, -scale) @@ -210,11 +212,10 @@ class Plot( /** * Converts all layers to a single g-code string in the order they were added. */ - fun toCombinedGcode(): String = - order.flatMap { l -> layers[l]?.toCommands(generator, distanceTolerance) ?: emptyList() } - .let { commands -> (generator.setup + commands + generator.end) } - .withoutDuplicates() - .toGcode() + fun toCombinedGcode(): String = order + .mapNotNull { l -> layers[l] } + .toCommands(generator, distanceTolerance).withoutDuplicates() + .toGcode() /** * Converts each layer to a g-code string. From 3d2b55ad9627681d94a28ba1efe8d643436bc2cc Mon Sep 17 00:00:00 2001 From: Adrian Date: Fri, 30 Dec 2022 14:17:15 +0100 Subject: [PATCH 04/15] Include program name in file name --- orx-g-code/src/jvmMain/kotlin/Plot.kt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/orx-g-code/src/jvmMain/kotlin/Plot.kt b/orx-g-code/src/jvmMain/kotlin/Plot.kt index a8f6e7fee..ed61baa55 100644 --- a/orx-g-code/src/jvmMain/kotlin/Plot.kt +++ b/orx-g-code/src/jvmMain/kotlin/Plot.kt @@ -43,6 +43,7 @@ typealias DrawFunction = CompositionDrawer.() -> Unit class Plot( // Document dimensions: Vector2, // Document size in mm + var name: String? = null, var origin: Origin = Origin.BOTTOM_LEFT, // G-code @@ -83,12 +84,16 @@ class Plot( private var program: Program? = null + override fun setup(program: Program) { this.program = program - // Scale to fit in viewport scale = min(program.width / docBounds.width, program.height / docBounds.height) + if (name == null ) { + name = program.name + } + if (!enabled) { return } @@ -107,12 +112,12 @@ class Plot( if (gCodeBind != null && event.name == gCodeBind) { when (layerMode) { LayerMode.SINGLE_FILE -> { - writeFile("plot", toCombinedGcode()) + writeFile(name ?: "plot", toCombinedGcode()) } LayerMode.MULTI_FILE -> { toSplitGcode().forEach { - writeFile(it.key, it.value) + writeFile("${name?:""}-${it.key}", it.value) } } } @@ -229,7 +234,7 @@ class Plot( * Writes [content] to file "[folder]/timestamp-[name].[extension]" */ fun writeFile(name: String, content: String, extension: String = "gcode") { - val formatter = DateTimeFormatter.ofPattern("yyyyMMdd-HH-mm-SS") + val formatter = DateTimeFormatter.ofPattern("yyyyMMdd-HHmmSS") val timestamp = formatter.format(LocalDateTime.now()) val fileName = "$timestamp-$name.$extension" From 19bb92e29cdb285fff143f38926f374cbce92bd1 Mon Sep 17 00:00:00 2001 From: Adrian Date: Fri, 30 Dec 2022 14:17:50 +0100 Subject: [PATCH 05/15] Add build file --- orx-g-code/build.gradle.kts | 60 +++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 orx-g-code/build.gradle.kts diff --git a/orx-g-code/build.gradle.kts b/orx-g-code/build.gradle.kts new file mode 100644 index 000000000..c64a7b4b8 --- /dev/null +++ b/orx-g-code/build.gradle.kts @@ -0,0 +1,60 @@ +import ScreenshotsHelper.collectScreenshots + +@Suppress("DSL_SCOPE_VIOLATION") +plugins { + org.openrndr.extra.convention.`kotlin-multiplatform` +} + +kotlin { + jvm { + @Suppress("UNUSED_VARIABLE") + val demo by compilations.getting { + // TODO: Move demos to /jvmDemo + defaultSourceSet { + kotlin.srcDir("src/demo/kotlin") + } + collectScreenshots { } + } + testRuns["test"].executionTask { + useJUnitPlatform { + includeEngines("spek2") + } + } + } + + sourceSets { + @Suppress("UNUSED_VARIABLE") + val commonMain by getting { + dependencies { + implementation(libs.openrndr.application) + implementation(libs.openrndr.draw) + implementation(libs.openrndr.shape) + implementation(libs.openrndr.extensions) + } + } + + @Suppress("UNUSED_VARIABLE") + val commonTest by getting { + dependencies { + } + } + + @Suppress("UNUSED_VARIABLE") + val jvmTest by getting { + dependencies { + implementation(libs.kluent) + implementation(libs.spek.dsl) + runtimeOnly(libs.spek.junit5) + runtimeOnly(libs.kotlin.reflect) + } + } + + @Suppress("UNUSED_VARIABLE") + val jvmDemo by getting { + dependencies { + implementation(project(":orx-g-code")) + runtimeOnly(libs.slf4j.simple) + } + } + } +} From 7d83707861b4239f3c101297d63314aa38e561d0 Mon Sep 17 00:00:00 2001 From: Adrian Date: Fri, 30 Dec 2022 14:19:38 +0100 Subject: [PATCH 06/15] Add orx-g-code to gradle files --- settings.gradle.kts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index c387c17d8..3e47910cd 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -88,6 +88,7 @@ include( "orx-depth-camera", "orx-jvm:orx-depth-camera-calibrator", "orx-view-box", - "orx-turtle" + "orx-turtle", + "orx-g-code", ) ) \ No newline at end of file From e437a6b520d6de61410f4acc8bd5a106e06c3f7a Mon Sep 17 00:00:00 2001 From: Adrian Date: Fri, 30 Dec 2022 17:17:18 +0100 Subject: [PATCH 07/15] Remove default values from Generator --- orx-g-code/src/commonMain/kotlin/Generator.kt | 28 +++++++++++++------ orx-g-code/src/jvmMain/kotlin/Plot.kt | 11 ++++++-- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/orx-g-code/src/commonMain/kotlin/Generator.kt b/orx-g-code/src/commonMain/kotlin/Generator.kt index ebba0c5dc..4e282e7a5 100644 --- a/orx-g-code/src/commonMain/kotlin/Generator.kt +++ b/orx-g-code/src/commonMain/kotlin/Generator.kt @@ -48,35 +48,34 @@ fun Double.roundedTo(decimals: Int = 3): String { /** * Generates g-code for defined operations. - * All operations are empty command lists on default and have to be defined explicitly. */ data class Generator( /** * Setup code at the beginning of a file. */ - val setup: Commands = emptyList(), + val setup: Commands, /** * A move operation to the given location. */ - val moveTo: (Vector2) -> Commands = { emptyList() }, + val moveTo: (Vector2) -> Commands, /** - * Start drawing sequence. Pen down, laser on etc. + * Start drawing sequence. Pen down, laser on, etc. */ - val preDraw: Commands = emptyList(), + val preDraw: Commands, /** * A draw operation to the given location. */ - val drawTo: (Vector2) -> Commands = { emptyList() }, + val drawTo: (Vector2) -> Commands, /** - * End draw sequence. Lift pen, turn laser off. + * End draw sequence. Lift pen, turn laser off, etc. * Called after a draw action before a move is performed. */ - val postDraw: Commands = emptyList(), + val postDraw: Commands, /** * End of file sequence. @@ -86,9 +85,20 @@ data class Generator( /** * Insert a comment. */ - val comment: (String) -> Commands = { _ -> emptyList() } + val comment: (String) -> Commands ) +/** + * All operations are empty command lists on default and have to be defined explicitly. + */ +fun noopGenerator() = Generator( + setup = emptyList(), + moveTo = { _ -> emptyList() }, + preDraw = emptyList(), + drawTo = { _ -> emptyList() }, + postDraw = emptyList(), +) { _ -> emptyList() } + /** * Creates a [Generator] to be used by grbl controlled pen plotters. * [drawRate] sets the feed rate used for drawing operations. diff --git a/orx-g-code/src/jvmMain/kotlin/Plot.kt b/orx-g-code/src/jvmMain/kotlin/Plot.kt index ed61baa55..e38e13b27 100644 --- a/orx-g-code/src/jvmMain/kotlin/Plot.kt +++ b/orx-g-code/src/jvmMain/kotlin/Plot.kt @@ -47,7 +47,7 @@ class Plot( var origin: Origin = Origin.BOTTOM_LEFT, // G-code - var generator: Generator = Generator(), + var generator: Generator = noopGenerator(), var distanceTolerance: Double = 0.5, var layerMode: LayerMode = LayerMode.SINGLE_FILE, @@ -159,7 +159,7 @@ class Plot( this.composition.clear() // Set default fill = ColorRGBa.TRANSPARENT - strokeWeight = scaled(defaultPenWeight) + strokeWeight = defaultPenWeight stroke = defaultDrawColor drawFunction(this) } @@ -210,10 +210,15 @@ class Plot( } /** - * Double [v] scaled from screen space to document space. + * Double [v] scaled from document space to screen space. */ fun scaled(v: Double) = v.times(scale) + /** + * Scale from document space to screen space. + */ + fun scale() = scale + /** * Converts all layers to a single g-code string in the order they were added. */ From 2bb395cee3c62e69a9cea4b5eb95d137622a3b54 Mon Sep 17 00:00:00 2001 From: Adrian Date: Fri, 30 Dec 2022 17:25:32 +0100 Subject: [PATCH 08/15] Add readme and demos --- orx-g-code/README.md | 46 +++++++++++++ orx-g-code/images/DemoInteractivePlotKt.png | Bin 0 -> 131232 bytes orx-g-code/images/DemoSimplePlotKt.png | Bin 0 -> 255191 bytes .../src/demo/kotlin/DemoGcodeGenerator.kt | 64 ++++++++++++++++++ .../src/demo/kotlin/DemoInteractivePlot.kt | 64 ++++++++++++++++++ orx-g-code/src/demo/kotlin/DemoSimplePlot.kt | 46 +++++++++++++ 6 files changed, 220 insertions(+) create mode 100644 orx-g-code/README.md create mode 100644 orx-g-code/images/DemoInteractivePlotKt.png create mode 100644 orx-g-code/images/DemoSimplePlotKt.png create mode 100644 orx-g-code/src/demo/kotlin/DemoGcodeGenerator.kt create mode 100644 orx-g-code/src/demo/kotlin/DemoInteractivePlot.kt create mode 100644 orx-g-code/src/demo/kotlin/DemoSimplePlot.kt diff --git a/orx-g-code/README.md b/orx-g-code/README.md new file mode 100644 index 000000000..d6296b078 --- /dev/null +++ b/orx-g-code/README.md @@ -0,0 +1,46 @@ +# orx-g-code + +Utilities for generating *g-code* from compositions. + +>*Make sure to verify compatibility to your hardware and that the +commands do not exceed the machines limits before running any output of this.* + +## Generator + +A [Generator](src/commonMain/kotlin/Generator.kt) generates g-code for the following operations: +- `setup`: Setup code at the beginning of a file. +- `moveTo`: A move operation to the given location. +- `preDraw`: Start drawing sequence. Pen down, laser on, etc. +- `drawTo`: A draw operation to the given location. +- `postDraw`: End draw sequence. Lift pen, turn laser off, etc. +- `end`: End of file sequence. +- `comment`: Insert a comment. + +These are used by the `toCommands()` extensions in [shape.kt](src/commonMain/kotlin/shape.kt) to convert a composition +to a set of Commands. + +It only supports absolute moves, so `G90 absolute positioning` should be included in the setup. + +`basicGrblSetup` defines an example that outputs g-code, which *should be* +compatible with [grbl v1.1](https://github.com/grbl/grbl). + +See [DemoGcodeGenerator.kt](src/demo/kotlin/DemoGcodeGenerator.kt) for an example of how to use. + +## Plot (jvm only) + +The [Plot Extension](src/jvmMain/kotlin/Plot.kt) provides a quick setup for drawing, rendering and exporting files for +a pen plotter. +See [DemoSimplePlot.kt](src/demo/kotlin/DemoSimplePlot.kt) for an example of how to use. + + + +## Demos +### DemoInteractivePlot +[source code](src/demo/kotlin/DemoInteractivePlot.kt) + +![DemoInteractivePlotKt](https://raw.githubusercontent.com/openrndr/orx/media/orx-g-code/images/DemoInteractivePlotKt.png) + +### DemoSimplePlot +[source code](src/demo/kotlin/DemoSimplePlot.kt) + +![DemoSimplePlotKt](https://raw.githubusercontent.com/openrndr/orx/media/orx-g-code/images/DemoSimplePlotKt.png) diff --git a/orx-g-code/images/DemoInteractivePlotKt.png b/orx-g-code/images/DemoInteractivePlotKt.png new file mode 100644 index 0000000000000000000000000000000000000000..4753da32f224502f49a9c73f4c15327300674075 GIT binary patch literal 131232 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 literal 0 HcmV?d00001 diff --git a/orx-g-code/images/DemoSimplePlotKt.png b/orx-g-code/images/DemoSimplePlotKt.png new file mode 100644 index 0000000000000000000000000000000000000000..edaf2c41efe9e334038bb02933de86f93e638271 GIT binary patch literal 255191 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�Wg}m5_jVUhc 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

~}L-<96 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 SXh}lB-?AnCi;H}M6aNQo0mf7S literal 0 HcmV?d00001 diff --git a/orx-g-code/src/demo/kotlin/DemoGcodeGenerator.kt b/orx-g-code/src/demo/kotlin/DemoGcodeGenerator.kt new file mode 100644 index 000000000..bbf1b34c7 --- /dev/null +++ b/orx-g-code/src/demo/kotlin/DemoGcodeGenerator.kt @@ -0,0 +1,64 @@ +import org.openrndr.application +import org.openrndr.drawComposition +import org.openrndr.extra.gcode.asCommands +import org.openrndr.extra.gcode.basicGrblSetup +import org.openrndr.extra.gcode.extensions.toCommands +import org.openrndr.extra.gcode.toGcode +import org.openrndr.extra.gcode.withoutDuplicates + +fun main() = application { + configure { + width = 800 + height = 800 + } + + program { + + val generator = basicGrblSetup(drawRate = 500.0).copy( + preDraw = (40..80 step 5).flatMap { listOf("M3 S$it", "G4 P0.08") }, + postDraw = "M3 S40".asCommands(), + ) + + val comp = drawComposition { + lineSegment(10.0, 10.0, 20.0, 20.0) + } + + // Convert composition to g-code, print to console and exit + val commands = generator.setup + comp.toCommands(generator, 0.05) + generator.end + val gCode = commands.withoutDuplicates().toGcode() + println(gCode) + application.exit() + + /* Output: + G21 + G90 + ;begin composition + ;begin shape: 0 + G0 X10.0 Y10.0 + M3 S40 + G4 P0.08 + M3 S45 + G4 P0.08 + M3 S50 + G4 P0.08 + M3 S55 + G4 P0.08 + M3 S60 + G4 P0.08 + M3 S65 + G4 P0.08 + M3 S70 + G4 P0.08 + M3 S75 + G4 P0.08 + M3 S80 + G4 P0.08 + G1 X20.0 Y20.0 F500.0 + M3 S40 + ;end shape: 0 + ;end composition + G0 X0 Y0 + G90 + */ + } +} \ No newline at end of file diff --git a/orx-g-code/src/demo/kotlin/DemoInteractivePlot.kt b/orx-g-code/src/demo/kotlin/DemoInteractivePlot.kt new file mode 100644 index 000000000..00d6647c2 --- /dev/null +++ b/orx-g-code/src/demo/kotlin/DemoInteractivePlot.kt @@ -0,0 +1,64 @@ +import org.openrndr.MouseEvent +import org.openrndr.application +import org.openrndr.extensions.Screenshots +import org.openrndr.extra.gcode.Plot +import org.openrndr.extra.gcode.basicGrblSetup +import org.openrndr.math.Vector2 +import org.openrndr.shape.ContourBuilder + +fun main() = application { + configure { + width = 600 + height = 800 + } + + program { + extend(Screenshots()) + + val plot = Plot(dimensions = Vector2(210.0, 297.0), manualRedraw = false) + extend(plot) { + generator = basicGrblSetup() + + // Set output files to be exported to tmp + // "g" to export g-code. + folder = "/tmp" + } + + val drawingArea = plot.docBounds.offsetEdges(-10.0) + + // Converts mouse events position to document space + fun MouseEvent.documentPosition(): Vector2 { + val s = 1 / plot.scale() + return Vector2(position.x * s, plot.docBounds.height - position.y * s) + } + + + val cb = ContourBuilder(true) + + // Handle mouse events and restrict drawing to drawing area + mouse.buttonDown.listen { + val p = it.documentPosition() + if (drawingArea.contains(p)) { + cb.moveTo(p) + } else { + cb.moveTo(drawingArea.contour.nearest(p).position) + } + } + mouse.dragged.listen { + val p = it.documentPosition() + if (drawingArea.contains(p)) { + cb.moveOrLineTo(p) + } else { + cb.moveOrLineTo(drawingArea.contour.nearest(p).position) + } + } + + // Draw contours of contour builder on every frame + extend { + plot.layer("drawing") { + strokeWeight = .5 + contours(cb.result) + } + } + } +} \ No newline at end of file diff --git a/orx-g-code/src/demo/kotlin/DemoSimplePlot.kt b/orx-g-code/src/demo/kotlin/DemoSimplePlot.kt new file mode 100644 index 000000000..b43a614e8 --- /dev/null +++ b/orx-g-code/src/demo/kotlin/DemoSimplePlot.kt @@ -0,0 +1,46 @@ +import org.openrndr.application +import org.openrndr.color.ColorRGBa + +import org.openrndr.extra.gcode.LayerMode +import org.openrndr.extra.gcode.Plot + +import org.openrndr.extra.gcode.basicGrblSetup + +import org.openrndr.math.Vector2 + +fun main() = application { + configure { + width = 800 + height = 800 + } + + program { + + + // A4 Portrait + extend(Plot(dimensions = Vector2(210.0, 297.0))) { + generator = basicGrblSetup() + + // Export each layer to separate file + layerMode = LayerMode.MULTI_FILE + + // Set output files to be exported to tmp + // "g" to export g-code. + folder = "/tmp" + + draw { + // Rectangle in default layer + rectangle(docBounds.offsetEdges(-10.0)) + } + + layer("circles") { + // Stroke changes do not affect g-code + stroke = ColorRGBa.PINK + strokeWeight = .5 + (10..90 step 10).forEach { r -> + circle(docBounds.center, r.toDouble()) + } + } + } + } +} \ No newline at end of file From 48b60176bc2e8e0e786157d3014996a1d10f10c3 Mon Sep 17 00:00:00 2001 From: Adrian Date: Sat, 7 Jan 2023 00:12:33 +0100 Subject: [PATCH 09/15] add method to translate mouse position to document position --- .../src/demo/kotlin/DemoInteractivePlot.kt | 24 +++++++------- orx-g-code/src/jvmMain/kotlin/Plot.kt | 32 ++++++++++++++----- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/orx-g-code/src/demo/kotlin/DemoInteractivePlot.kt b/orx-g-code/src/demo/kotlin/DemoInteractivePlot.kt index 00d6647c2..33a4e791a 100644 --- a/orx-g-code/src/demo/kotlin/DemoInteractivePlot.kt +++ b/orx-g-code/src/demo/kotlin/DemoInteractivePlot.kt @@ -1,6 +1,6 @@ -import org.openrndr.MouseEvent import org.openrndr.application import org.openrndr.extensions.Screenshots +import org.openrndr.extra.gcode.Origin import org.openrndr.extra.gcode.Plot import org.openrndr.extra.gcode.basicGrblSetup import org.openrndr.math.Vector2 @@ -15,29 +15,31 @@ fun main() = application { program { extend(Screenshots()) - val plot = Plot(dimensions = Vector2(210.0, 297.0), manualRedraw = false) + val plot = Plot( + dimensions = Vector2(210.0, 297.0), + manualRedraw = false, + origin = Origin.CENTER + ) extend(plot) { generator = basicGrblSetup() // Set output files to be exported to tmp // "g" to export g-code. folder = "/tmp" - } - - val drawingArea = plot.docBounds.offsetEdges(-10.0) - // Converts mouse events position to document space - fun MouseEvent.documentPosition(): Vector2 { - val s = 1 / plot.scale() - return Vector2(position.x * s, plot.docBounds.height - position.y * s) + draw { + rectangle(docBounds.offsetEdges(-9.0)) + println(docBounds) + } } + val drawingArea = plot.docBounds.offsetEdges(-10.0) val cb = ContourBuilder(true) // Handle mouse events and restrict drawing to drawing area mouse.buttonDown.listen { - val p = it.documentPosition() + val p = plot.toDocumentSpace(it.position) if (drawingArea.contains(p)) { cb.moveTo(p) } else { @@ -45,7 +47,7 @@ fun main() = application { } } mouse.dragged.listen { - val p = it.documentPosition() + val p = plot.toDocumentSpace(it.position) if (drawingArea.contains(p)) { cb.moveOrLineTo(p) } else { diff --git a/orx-g-code/src/jvmMain/kotlin/Plot.kt b/orx-g-code/src/jvmMain/kotlin/Plot.kt index e38e13b27..cf998a8e1 100644 --- a/orx-g-code/src/jvmMain/kotlin/Plot.kt +++ b/orx-g-code/src/jvmMain/kotlin/Plot.kt @@ -39,12 +39,14 @@ typealias DrawFunction = CompositionDrawer.() -> Unit * Configuration: * When [manualRedraw] is true, the programs presentation mode is set to Manual on startup. * "r" to trigger redraw. + * When [renderMode] is set to manual, the plot will not be rendered to the programms drawer. + * Then [render] has to be called to draw the plot. [origin] */ class Plot( // Document dimensions: Vector2, // Document size in mm var name: String? = null, - var origin: Origin = Origin.BOTTOM_LEFT, + val origin: Origin = Origin.BOTTOM_LEFT, // G-code var generator: Generator = noopGenerator(), @@ -75,7 +77,11 @@ class Plot( override var enabled: Boolean = true - val docBounds = Rectangle(0.0, 0.0, dimensions.x, dimensions.y) + val docBounds = when (origin) { + Origin.CENTER -> Rectangle(-dimensions.times(.5), dimensions.x, dimensions.y) + Origin.BOTTOM_LEFT, + Origin.TOP_LEFT -> Rectangle(0.0, 0.0, dimensions.x, dimensions.y) + } val layers: MutableMap = mutableMapOf() private var order: List = listOf() @@ -174,10 +180,7 @@ class Plot( drawer.isolated { strokeWeight = 0.0 fill = backgroundColor - when (origin) { - Origin.CENTER -> rectangle(docBounds.dimensions * -.5, docBounds.width, docBounds.height) - else -> rectangle(0.0, 0.0, docBounds.width, docBounds.height) - } + rectangle(docBounds) } // Layers @@ -186,7 +189,7 @@ class Plot( } /** - * Drawer scaled to document space. + * Drawer scaled to document space, to fit to the window. */ fun scaled(drawer: Drawer, drawFunction: (Drawer) -> Unit) = drawer.isolated { when (origin) { @@ -209,10 +212,23 @@ class Plot( drawFunction(this) } + /** + * Scales and translates the given position from screen space to document space. + * Can be used to translate mouse events to draw to the plot. + */ + fun toDocumentSpace(p: Vector2): Vector2 { + val s = 1.0 / scale + return when (origin) { + Origin.BOTTOM_LEFT -> Vector2(p.x * s, docBounds.height - p.y * s) + Origin.TOP_LEFT -> p.times(s) + Origin.CENTER -> p.times(Vector2(s,-s)).plus(Vector2(-docBounds.width, docBounds.height) *.5) + } + } + /** * Double [v] scaled from document space to screen space. */ - fun scaled(v: Double) = v.times(scale) + fun scaled(v: Double) = v * scale /** * Scale from document space to screen space. From 138db268b70610e59a8a653289eae61371cdc866 Mon Sep 17 00:00:00 2001 From: Adrian Date: Wed, 25 Jan 2023 20:22:15 +0100 Subject: [PATCH 10/15] Move demos to /jvmDemo --- orx-g-code/src/{demo => jvmDemo}/kotlin/DemoGcodeGenerator.kt | 0 orx-g-code/src/{demo => jvmDemo}/kotlin/DemoInteractivePlot.kt | 0 orx-g-code/src/{demo => jvmDemo}/kotlin/DemoSimplePlot.kt | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename orx-g-code/src/{demo => jvmDemo}/kotlin/DemoGcodeGenerator.kt (100%) rename orx-g-code/src/{demo => jvmDemo}/kotlin/DemoInteractivePlot.kt (100%) rename orx-g-code/src/{demo => jvmDemo}/kotlin/DemoSimplePlot.kt (100%) diff --git a/orx-g-code/src/demo/kotlin/DemoGcodeGenerator.kt b/orx-g-code/src/jvmDemo/kotlin/DemoGcodeGenerator.kt similarity index 100% rename from orx-g-code/src/demo/kotlin/DemoGcodeGenerator.kt rename to orx-g-code/src/jvmDemo/kotlin/DemoGcodeGenerator.kt diff --git a/orx-g-code/src/demo/kotlin/DemoInteractivePlot.kt b/orx-g-code/src/jvmDemo/kotlin/DemoInteractivePlot.kt similarity index 100% rename from orx-g-code/src/demo/kotlin/DemoInteractivePlot.kt rename to orx-g-code/src/jvmDemo/kotlin/DemoInteractivePlot.kt diff --git a/orx-g-code/src/demo/kotlin/DemoSimplePlot.kt b/orx-g-code/src/jvmDemo/kotlin/DemoSimplePlot.kt similarity index 100% rename from orx-g-code/src/demo/kotlin/DemoSimplePlot.kt rename to orx-g-code/src/jvmDemo/kotlin/DemoSimplePlot.kt From 712d1398ac8d878c14d69f4787a62822a8fadae0 Mon Sep 17 00:00:00 2001 From: Adrian Date: Wed, 25 Jan 2023 21:10:20 +0100 Subject: [PATCH 11/15] Move demos to /jvmDemo --- orx-g-code/build.gradle.kts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/orx-g-code/build.gradle.kts b/orx-g-code/build.gradle.kts index c64a7b4b8..83b233667 100644 --- a/orx-g-code/build.gradle.kts +++ b/orx-g-code/build.gradle.kts @@ -9,10 +9,6 @@ kotlin { jvm { @Suppress("UNUSED_VARIABLE") val demo by compilations.getting { - // TODO: Move demos to /jvmDemo - defaultSourceSet { - kotlin.srcDir("src/demo/kotlin") - } collectScreenshots { } } testRuns["test"].executionTask { From b9f9acce3559b0cb7fe1aea607bb6bd60c223d5c Mon Sep 17 00:00:00 2001 From: Adrian Date: Fri, 27 Jan 2023 11:36:13 +0100 Subject: [PATCH 12/15] Refactor tests to use kotlin.test --- orx-g-code/build.gradle.kts | 6 +- orx-g-code/src/jvmTest/kotlin/TestCommands.kt | 36 +++ orx-g-code/src/jvmTest/kotlin/TestDouble.kt | 27 ++ .../src/jvmTest/kotlin/TestGenerator.kt | 65 ---- .../src/jvmTest/kotlin/TestPlotRegression.kt | 278 +++++++++--------- 5 files changed, 207 insertions(+), 205 deletions(-) create mode 100644 orx-g-code/src/jvmTest/kotlin/TestCommands.kt create mode 100644 orx-g-code/src/jvmTest/kotlin/TestDouble.kt delete mode 100644 orx-g-code/src/jvmTest/kotlin/TestGenerator.kt diff --git a/orx-g-code/build.gradle.kts b/orx-g-code/build.gradle.kts index 83b233667..551ed821d 100644 --- a/orx-g-code/build.gradle.kts +++ b/orx-g-code/build.gradle.kts @@ -38,17 +38,13 @@ kotlin { @Suppress("UNUSED_VARIABLE") val jvmTest by getting { dependencies { - implementation(libs.kluent) - implementation(libs.spek.dsl) - runtimeOnly(libs.spek.junit5) - runtimeOnly(libs.kotlin.reflect) + runtimeOnly(libs.slf4j.simple) } } @Suppress("UNUSED_VARIABLE") val jvmDemo by getting { dependencies { - implementation(project(":orx-g-code")) runtimeOnly(libs.slf4j.simple) } } diff --git a/orx-g-code/src/jvmTest/kotlin/TestCommands.kt b/orx-g-code/src/jvmTest/kotlin/TestCommands.kt new file mode 100644 index 000000000..2c2a537f4 --- /dev/null +++ b/orx-g-code/src/jvmTest/kotlin/TestCommands.kt @@ -0,0 +1,36 @@ +package test + +import kotlin.test.* +import org.openrndr.extra.gcode.Command +import org.openrndr.extra.gcode.withoutDuplicates + +class TestCommands { + + @Test + fun `empty commands`() { + assertContentEquals(emptyList(), emptyList().withoutDuplicates()) + } + + @Test + fun `should remove duplicate commands, keeping comments`() { + val commands = listOf( + "G0 X1 Y2 F3", + "G0 X2 Y2 F3", + "G0 X2 Y2 F3", + ";G0 X2 Y2 F3", + "(G0 X2 Y2 F3)", + "G0 X2 Y2 F3", + "G0 X3 Y2 F3", + ) + + val expected = listOf( + "G0 X1 Y2 F3", + "G0 X2 Y2 F3", + ";G0 X2 Y2 F3", + "(G0 X2 Y2 F3)", + "G0 X3 Y2 F3", + ) + + assertContentEquals(expected, commands.withoutDuplicates()) + } +} \ No newline at end of file diff --git a/orx-g-code/src/jvmTest/kotlin/TestDouble.kt b/orx-g-code/src/jvmTest/kotlin/TestDouble.kt new file mode 100644 index 000000000..e574f0152 --- /dev/null +++ b/orx-g-code/src/jvmTest/kotlin/TestDouble.kt @@ -0,0 +1,27 @@ +package test + +import org.openrndr.extra.gcode.roundedTo +import kotlin.test.Test +import kotlin.test.assertEquals + +class TestDouble { + @Test + fun roundedTo() { + data class Test(val decimals: Int, val value: Double, val want: String) + + listOf( + Test(3, 0.0, "0.0"), + Test(0, 0.0, "0"), + Test(3, 123.0, "123.0"), + Test(0, 123.0, "123"), + Test(3, 123.1234567890, "123.123"), + Test(0, 123.1234567890, "123"), + Test(3, 123.1239, "123.124"), + Test(3, -123.1239, "-123.124"), + Test(0, -123.1239, "-123"), + Test(-2, -123.1239, "-123.12"), + ).forEach { + assertEquals(it.want, it.value.roundedTo(it.decimals)) + } + } +} \ No newline at end of file diff --git a/orx-g-code/src/jvmTest/kotlin/TestGenerator.kt b/orx-g-code/src/jvmTest/kotlin/TestGenerator.kt deleted file mode 100644 index cd1ddab32..000000000 --- a/orx-g-code/src/jvmTest/kotlin/TestGenerator.kt +++ /dev/null @@ -1,65 +0,0 @@ -package test - -import org.amshove.kluent.`should be equal to` -import org.openrndr.extra.gcode.Command -import org.openrndr.extra.gcode.roundedTo -import org.openrndr.extra.gcode.withoutDuplicates -import org.spekframework.spek2.Spek -import org.spekframework.spek2.style.specification.describe -import kotlin.test.assertContentEquals - -object TestGenerator : Spek({ - - describe("Double.roundedTo") { - - data class Test(val decimals: Int, val value: Double, val want: String) - - listOf( - Test(3, 0.0, "0.0"), - Test(0, 0.0, "0"), - Test(3, 123.0, "123.0"), - Test(0, 123.0, "123"), - Test(3, 123.1234567890, "123.123"), - Test(0, 123.1234567890, "123"), - Test(3, 123.1239, "123.124"), - Test(3, -123.1239, "-123.124"), - Test(0, -123.1239, "-123"), - Test(-2, -123.1239, "-123.12"), - ).forEach { - it("${it.value} with ${it.decimals} decimals -> ${it.want}") { - it.value.roundedTo(it.decimals) `should be equal to` it.want - } - } - } - - - describe("Commands.withoutDuplicates") { - - it("empty commands") { - assertContentEquals(emptyList(), emptyList().withoutDuplicates()) - } - - it("should remove duplicate commands, keeping comments") { - - val commands = listOf( - "G0 X1 Y2 F3", - "G0 X2 Y2 F3", - "G0 X2 Y2 F3", - ";G0 X2 Y2 F3", - "(G0 X2 Y2 F3)", - "G0 X2 Y2 F3", - "G0 X3 Y2 F3", - ) - - val expected = listOf( - "G0 X1 Y2 F3", - "G0 X2 Y2 F3", - ";G0 X2 Y2 F3", - "(G0 X2 Y2 F3)", - "G0 X3 Y2 F3", - ) - - assertContentEquals(expected, commands.withoutDuplicates()) - } - } -}) \ No newline at end of file diff --git a/orx-g-code/src/jvmTest/kotlin/TestPlotRegression.kt b/orx-g-code/src/jvmTest/kotlin/TestPlotRegression.kt index f2ad4dd6e..7b633cdcf 100644 --- a/orx-g-code/src/jvmTest/kotlin/TestPlotRegression.kt +++ b/orx-g-code/src/jvmTest/kotlin/TestPlotRegression.kt @@ -1,25 +1,46 @@ package test + import org.openrndr.extra.gcode.Plot import org.openrndr.extra.gcode.basicGrblSetup -import org.spekframework.spek2.Spek -import org.spekframework.spek2.style.specification.describe import org.openrndr.math.Vector2 -import kotlin.test.assertEquals +import kotlin.test.* + + +class TestPlotRegression { + lateinit var simplePlot: Plot -object TestPlotRegression : Spek({ + lateinit var multilayerPlot: Plot - describe("plot with grbl generator") { + + @BeforeTest + fun setup() { + + simplePlot = Plot(dimensions = Vector2(210.0, 297.0),generator = basicGrblSetup()) + simplePlot.draw { + circle(100.0, 100.0, 30.0) + } + + multilayerPlot = Plot(dimensions = Vector2(210.0, 297.0),generator = basicGrblSetup()) + multilayerPlot.draw { + lineSegment(0.0, 20.0, 100.0, 200.0) + lineSegment(0.5, 20.5, 100.5, 200.5) + } + multilayerPlot.layer("rect") { + rectangle(10.1234, 30.1234, 50.1234, 70.1234) + } + multilayerPlot.layer("dot") { + lineSegment(25.55555, 35.55555,25.55555, 35.55555 ) + } + } - it("single file with circle") { - val plot = Plot(dimensions = Vector2(210.0, 297.0),generator = basicGrblSetup()) - plot.draw { - circle(100.0, 100.0, 30.0) - } + @Test + fun `single file with circle`() { - val expected = """ + + val expected = """ G21 G90 ;begin composition @@ -71,130 +92,117 @@ object TestPlotRegression : Spek({ """.trimIndent() - assertEquals(expected, plot.toCombinedGcode()) - } + assertEquals(expected, simplePlot.toCombinedGcode()) + } - describe("multiple layers") { - val plot = Plot(dimensions = Vector2(210.0, 297.0),generator = basicGrblSetup()) - plot.draw { - lineSegment(0.0, 20.0, 100.0, 200.0) - lineSegment(0.5, 20.5, 100.5, 200.5) - } - plot.layer("rect") { - rectangle(10.1234, 30.1234, 50.1234, 70.1234) - } - plot.layer("dot") { - lineSegment(25.55555, 35.55555,25.55555, 35.55555 ) - } - - it("multi file") { - - val default = """ - G21 - G90 - ;begin composition - ;begin shape: 0 - G0 X0.0 Y20.0 - M3 S255 - G1 X100.0 Y200.0 F500.0 - M3 S0 - ;end shape: 0 - ;begin shape: 1 - G0 X0.5 Y20.5 - M3 S255 - G1 X100.5 Y200.5 F500.0 - M3 S0 - ;end shape: 1 - ;end composition - G0 X0 Y0 - G90 - - """.trimIndent() - val rect = """ - G21 - G90 - ;begin composition - ;begin shape: 0 - G0 X10.123 Y30.123 - M3 S255 - G1 X60.247 Y30.123 F500.0 - G1 X60.247 Y100.247 F500.0 - G1 X10.123 Y100.247 F500.0 - G1 X10.123 Y30.123 F500.0 - M3 S0 - ;end shape: 0 - ;end composition - G0 X0 Y0 - G90 - - """.trimIndent() - - val dot = """ - G21 - G90 - ;begin composition - ;begin shape: 0 - G0 X25.556 Y35.556 - M3 S255 - ;dot - M3 S0 - ;end shape: 0 - ;end composition - G0 X0 Y0 - G90 - - """.trimIndent() - - val got = plot.toSplitGcode() - assertEquals(default, got["default"]) - assertEquals(rect, got["rect"]) - assertEquals(dot, got["dot"]) - } - - it("single file") { - val expected = """ - G21 - G90 - ;begin composition - ;begin shape: 0 - G0 X0.0 Y20.0 - M3 S255 - G1 X100.0 Y200.0 F500.0 - M3 S0 - ;end shape: 0 - ;begin shape: 1 - G0 X0.5 Y20.5 - M3 S255 - G1 X100.5 Y200.5 F500.0 - M3 S0 - ;end shape: 1 - ;end composition - ;begin composition - ;begin shape: 0 - G0 X10.123 Y30.123 - M3 S255 - G1 X60.247 Y30.123 F500.0 - G1 X60.247 Y100.247 F500.0 - G1 X10.123 Y100.247 F500.0 - G1 X10.123 Y30.123 F500.0 - M3 S0 - ;end shape: 0 - ;end composition - ;begin composition - ;begin shape: 0 - G0 X25.556 Y35.556 - M3 S255 - ;dot - M3 S0 - ;end shape: 0 - ;end composition - G0 X0 Y0 - G90 - - """.trimIndent() - assertEquals(expected, plot.toCombinedGcode()) - } - } + @Test + fun `multiple files from layers`() { + val default = """ + G21 + G90 + ;begin composition + ;begin shape: 0 + G0 X0.0 Y20.0 + M3 S255 + G1 X100.0 Y200.0 F500.0 + M3 S0 + ;end shape: 0 + ;begin shape: 1 + G0 X0.5 Y20.5 + M3 S255 + G1 X100.5 Y200.5 F500.0 + M3 S0 + ;end shape: 1 + ;end composition + G0 X0 Y0 + G90 + + """.trimIndent() + val rect = """ + G21 + G90 + ;begin composition + ;begin shape: 0 + G0 X10.123 Y30.123 + M3 S255 + G1 X60.247 Y30.123 F500.0 + G1 X60.247 Y100.247 F500.0 + G1 X10.123 Y100.247 F500.0 + G1 X10.123 Y30.123 F500.0 + M3 S0 + ;end shape: 0 + ;end composition + G0 X0 Y0 + G90 + + """.trimIndent() + + val dot = """ + G21 + G90 + ;begin composition + ;begin shape: 0 + G0 X25.556 Y35.556 + M3 S255 + ;dot + M3 S0 + ;end shape: 0 + ;end composition + G0 X0 Y0 + G90 + + """.trimIndent() + + val got = multilayerPlot.toSplitGcode() + assertEquals(default, got["default"]) + assertEquals(rect, got["rect"]) + assertEquals(dot, got["dot"]) } -}) \ No newline at end of file + + @Test + fun `single file from layers`() { + val expected = """ + G21 + G90 + ;begin composition + ;begin shape: 0 + G0 X0.0 Y20.0 + M3 S255 + G1 X100.0 Y200.0 F500.0 + M3 S0 + ;end shape: 0 + ;begin shape: 1 + G0 X0.5 Y20.5 + M3 S255 + G1 X100.5 Y200.5 F500.0 + M3 S0 + ;end shape: 1 + ;end composition + ;begin composition + ;begin shape: 0 + G0 X10.123 Y30.123 + M3 S255 + G1 X60.247 Y30.123 F500.0 + G1 X60.247 Y100.247 F500.0 + G1 X10.123 Y100.247 F500.0 + G1 X10.123 Y30.123 F500.0 + M3 S0 + ;end shape: 0 + ;end composition + ;begin composition + ;begin shape: 0 + G0 X25.556 Y35.556 + M3 S255 + ;dot + M3 S0 + ;end shape: 0 + ;end composition + G0 X0 Y0 + G90 + + """.trimIndent() + assertEquals(expected, multilayerPlot.toCombinedGcode()) + } + +} \ No newline at end of file From 1d553aeb56dc640c3936edf42168d75b537a10b6 Mon Sep 17 00:00:00 2001 From: Adrian Date: Fri, 27 Jan 2023 12:24:46 +0100 Subject: [PATCH 13/15] Fix build script --- orx-g-code/build.gradle.kts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/orx-g-code/build.gradle.kts b/orx-g-code/build.gradle.kts index 551ed821d..1a3fe72c9 100644 --- a/orx-g-code/build.gradle.kts +++ b/orx-g-code/build.gradle.kts @@ -8,13 +8,8 @@ plugins { kotlin { jvm { @Suppress("UNUSED_VARIABLE") - val demo by compilations.getting { - collectScreenshots { } - } - testRuns["test"].executionTask { - useJUnitPlatform { - includeEngines("spek2") - } + testRuns["test"].executionTask.configure { + useJUnitPlatform() } } From faff2530960f586e77f55464cacb884864dfa3e8 Mon Sep 17 00:00:00 2001 From: Adrian Date: Fri, 27 Jan 2023 12:25:47 +0100 Subject: [PATCH 14/15] update readme demo paths --- orx-g-code/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/orx-g-code/README.md b/orx-g-code/README.md index d6296b078..f4a7a863b 100644 --- a/orx-g-code/README.md +++ b/orx-g-code/README.md @@ -16,7 +16,7 @@ A [Generator](src/commonMain/kotlin/Generator.kt) generates g-code for the follo - `end`: End of file sequence. - `comment`: Insert a comment. -These are used by the `toCommands()` extensions in [shape.kt](src/commonMain/kotlin/shape.kt) to convert a composition +These are used by the `toCommands()` extensions in [shape.kt](src/commonMain/kotlin/extensions/shape.kt) to convert a composition to a set of Commands. It only supports absolute moves, so `G90 absolute positioning` should be included in the setup. @@ -24,23 +24,23 @@ It only supports absolute moves, so `G90 absolute positioning` should be include `basicGrblSetup` defines an example that outputs g-code, which *should be* compatible with [grbl v1.1](https://github.com/grbl/grbl). -See [DemoGcodeGenerator.kt](src/demo/kotlin/DemoGcodeGenerator.kt) for an example of how to use. +See [DemoGcodeGenerator.kt](src/jvmDemo/kotlin/DemoGcodeGenerator.kt) for an example of how to use. ## Plot (jvm only) The [Plot Extension](src/jvmMain/kotlin/Plot.kt) provides a quick setup for drawing, rendering and exporting files for a pen plotter. -See [DemoSimplePlot.kt](src/demo/kotlin/DemoSimplePlot.kt) for an example of how to use. +See [DemoSimplePlot.kt](src/jvmDemo/kotlin/DemoSimplePlot.kt) for an example of how to use. ## Demos ### DemoInteractivePlot -[source code](src/demo/kotlin/DemoInteractivePlot.kt) +[source code](src/jvmDemo/kotlin/DemoInteractivePlot.kt) ![DemoInteractivePlotKt](https://raw.githubusercontent.com/openrndr/orx/media/orx-g-code/images/DemoInteractivePlotKt.png) ### DemoSimplePlot -[source code](src/demo/kotlin/DemoSimplePlot.kt) +[source code](src/jvmDemo/kotlin/DemoSimplePlot.kt) ![DemoSimplePlotKt](https://raw.githubusercontent.com/openrndr/orx/media/orx-g-code/images/DemoSimplePlotKt.png) From 0dce0107cc0c1255a37022ece163effdb79933c1 Mon Sep 17 00:00:00 2001 From: Adrian Date: Fri, 27 Jan 2023 12:29:06 +0100 Subject: [PATCH 15/15] remove commonTest from build.gradle.kts --- orx-g-code/build.gradle.kts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/orx-g-code/build.gradle.kts b/orx-g-code/build.gradle.kts index 1a3fe72c9..28dc3e617 100644 --- a/orx-g-code/build.gradle.kts +++ b/orx-g-code/build.gradle.kts @@ -24,12 +24,6 @@ kotlin { } } - @Suppress("UNUSED_VARIABLE") - val commonTest by getting { - dependencies { - } - } - @Suppress("UNUSED_VARIABLE") val jvmTest by getting { dependencies {

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