meerk40t 0.9.2000__py2.py3-none-any.whl → 0.9.3001__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- meerk40t/balormk/balor_params.py +1 -43
- meerk40t/balormk/controller.py +1 -41
- meerk40t/balormk/device.py +16 -22
- meerk40t/balormk/driver.py +4 -4
- meerk40t/balormk/gui/balorconfig.py +2 -2
- meerk40t/balormk/gui/balorcontroller.py +13 -5
- meerk40t/balormk/gui/baloroperationproperties.py +0 -46
- meerk40t/balormk/gui/gui.py +17 -17
- meerk40t/camera/gui/camerapanel.py +18 -11
- meerk40t/core/cutcode/rastercut.py +3 -1
- meerk40t/core/cutplan.py +145 -14
- meerk40t/core/elements/clipboard.py +18 -9
- meerk40t/core/elements/element_treeops.py +320 -180
- meerk40t/core/elements/element_types.py +7 -2
- meerk40t/core/elements/elements.py +53 -27
- meerk40t/core/elements/geometry.py +8 -0
- meerk40t/core/elements/offset_clpr.py +129 -4
- meerk40t/core/elements/offset_mk.py +3 -1
- meerk40t/core/elements/shapes.py +28 -25
- meerk40t/core/laserjob.py +7 -0
- meerk40t/core/node/bootstrap.py +4 -0
- meerk40t/core/node/effect_hatch.py +85 -96
- meerk40t/core/node/effect_wobble.py +309 -0
- meerk40t/core/node/elem_image.py +49 -19
- meerk40t/core/node/elem_line.py +60 -0
- meerk40t/core/node/elem_rect.py +5 -3
- meerk40t/core/node/image_processed.py +766 -0
- meerk40t/core/node/image_raster.py +113 -0
- meerk40t/core/node/node.py +120 -1
- meerk40t/core/node/op_cut.py +2 -8
- meerk40t/core/node/op_dots.py +0 -8
- meerk40t/core/node/op_engrave.py +2 -18
- meerk40t/core/node/op_image.py +22 -35
- meerk40t/core/node/op_raster.py +0 -9
- meerk40t/core/planner.py +32 -2
- meerk40t/core/svg_io.py +699 -461
- meerk40t/core/treeop.py +191 -0
- meerk40t/core/undos.py +15 -1
- meerk40t/core/units.py +14 -4
- meerk40t/device/dummydevice.py +3 -2
- meerk40t/device/gui/defaultactions.py +43 -55
- meerk40t/device/gui/formatterpanel.py +58 -49
- meerk40t/device/gui/warningpanel.py +12 -12
- meerk40t/device/mixins.py +13 -0
- meerk40t/dxf/dxf_io.py +9 -5
- meerk40t/extra/ezd.py +28 -26
- meerk40t/extra/imageactions.py +300 -308
- meerk40t/extra/lbrn.py +19 -2
- meerk40t/fill/fills.py +6 -6
- meerk40t/fill/patternfill.py +1061 -1061
- meerk40t/fill/patterns.py +2 -6
- meerk40t/grbl/controller.py +168 -52
- meerk40t/grbl/device.py +23 -18
- meerk40t/grbl/driver.py +39 -0
- meerk40t/grbl/emulator.py +79 -19
- meerk40t/grbl/gcodejob.py +10 -0
- meerk40t/grbl/gui/grblconfiguration.py +2 -2
- meerk40t/grbl/gui/grblcontroller.py +24 -8
- meerk40t/grbl/gui/grblhardwareconfig.py +153 -0
- meerk40t/grbl/gui/gui.py +17 -14
- meerk40t/grbl/mock_connection.py +15 -34
- meerk40t/grbl/plugin.py +0 -4
- meerk40t/grbl/serial_connection.py +2 -1
- meerk40t/gui/about.py +8 -5
- meerk40t/gui/alignment.py +10 -6
- meerk40t/gui/basicops.py +27 -17
- meerk40t/gui/bufferview.py +2 -2
- meerk40t/gui/choicepropertypanel.py +101 -13
- meerk40t/gui/consolepanel.py +12 -9
- meerk40t/gui/devicepanel.py +38 -25
- meerk40t/gui/executejob.py +6 -4
- meerk40t/gui/help_assets/help_assets.py +13 -10
- meerk40t/gui/hersheymanager.py +8 -6
- meerk40t/gui/icons.py +1951 -3065
- meerk40t/gui/imagesplitter.py +14 -7
- meerk40t/gui/keymap.py +3 -3
- meerk40t/gui/laserpanel.py +151 -84
- meerk40t/gui/laserrender.py +61 -70
- meerk40t/gui/lasertoolpanel.py +8 -7
- meerk40t/gui/materialtest.py +3 -3
- meerk40t/gui/mkdebug.py +254 -1
- meerk40t/gui/navigationpanels.py +321 -180
- meerk40t/gui/notes.py +3 -3
- meerk40t/gui/opassignment.py +12 -12
- meerk40t/gui/operation_info.py +13 -13
- meerk40t/gui/plugin.py +5 -0
- meerk40t/gui/position.py +20 -18
- meerk40t/gui/preferences.py +21 -6
- meerk40t/gui/propertypanels/attributes.py +70 -22
- meerk40t/gui/propertypanels/blobproperty.py +2 -2
- meerk40t/gui/propertypanels/consoleproperty.py +2 -2
- meerk40t/gui/propertypanels/groupproperties.py +3 -3
- meerk40t/gui/propertypanels/hatchproperty.py +11 -18
- meerk40t/gui/propertypanels/imageproperty.py +4 -3
- meerk40t/gui/propertypanels/opbranchproperties.py +1 -1
- meerk40t/gui/propertypanels/pathproperty.py +2 -2
- meerk40t/gui/propertypanels/pointproperty.py +2 -2
- meerk40t/gui/propertypanels/propertywindow.py +4 -4
- meerk40t/gui/propertypanels/textproperty.py +3 -3
- meerk40t/gui/propertypanels/wobbleproperty.py +204 -0
- meerk40t/gui/ribbon.py +367 -259
- meerk40t/gui/scene/scene.py +31 -5
- meerk40t/gui/scenewidgets/elementswidget.py +12 -4
- meerk40t/gui/scenewidgets/gridwidget.py +2 -2
- meerk40t/gui/scenewidgets/laserpathwidget.py +7 -2
- meerk40t/gui/scenewidgets/machineoriginwidget.py +6 -2
- meerk40t/gui/scenewidgets/relocatewidget.py +1 -1
- meerk40t/gui/scenewidgets/reticlewidget.py +9 -0
- meerk40t/gui/scenewidgets/selectionwidget.py +12 -7
- meerk40t/gui/simpleui.py +95 -8
- meerk40t/gui/simulation.py +44 -36
- meerk40t/gui/spoolerpanel.py +124 -26
- meerk40t/gui/statusbarwidgets/defaultoperations.py +18 -6
- meerk40t/gui/statusbarwidgets/infowidget.py +2 -2
- meerk40t/gui/statusbarwidgets/opassignwidget.py +12 -12
- meerk40t/gui/statusbarwidgets/shapepropwidget.py +45 -18
- meerk40t/gui/statusbarwidgets/statusbar.py +11 -4
- meerk40t/gui/themes.py +78 -0
- meerk40t/gui/toolwidgets/toolcircle.py +2 -1
- meerk40t/gui/toolwidgets/toolellipse.py +2 -1
- meerk40t/gui/toolwidgets/toolimagecut.py +132 -0
- meerk40t/gui/toolwidgets/toolline.py +144 -0
- meerk40t/gui/toolwidgets/toolnodeedit.py +72 -145
- meerk40t/gui/toolwidgets/toolpoint.py +1 -1
- meerk40t/gui/toolwidgets/toolpolygon.py +8 -55
- meerk40t/gui/toolwidgets/toolrect.py +2 -1
- meerk40t/gui/usbconnect.py +2 -2
- meerk40t/gui/utilitywidgets/cyclocycloidwidget.py +2 -2
- meerk40t/gui/utilitywidgets/harmonograph.py +7 -7
- meerk40t/gui/utilitywidgets/scalewidget.py +1 -1
- meerk40t/gui/wordlisteditor.py +33 -18
- meerk40t/gui/wxmeerk40t.py +166 -66
- meerk40t/gui/wxmmain.py +236 -157
- meerk40t/gui/wxmribbon.py +49 -25
- meerk40t/gui/wxmscene.py +49 -38
- meerk40t/gui/wxmtree.py +216 -85
- meerk40t/gui/wxutils.py +62 -4
- meerk40t/image/imagetools.py +443 -15
- meerk40t/internal_plugins.py +2 -10
- meerk40t/kernel/kernel.py +12 -4
- meerk40t/lihuiyu/controller.py +7 -7
- meerk40t/lihuiyu/device.py +3 -1
- meerk40t/lihuiyu/driver.py +3 -0
- meerk40t/lihuiyu/gui/gui.py +8 -8
- meerk40t/lihuiyu/gui/lhyaccelgui.py +2 -2
- meerk40t/lihuiyu/gui/lhycontrollergui.py +73 -27
- meerk40t/lihuiyu/gui/lhydrivergui.py +2 -2
- meerk40t/lihuiyu/gui/tcpcontroller.py +22 -9
- meerk40t/main.py +6 -1
- meerk40t/moshi/controller.py +5 -5
- meerk40t/moshi/device.py +5 -2
- meerk40t/moshi/driver.py +4 -0
- meerk40t/moshi/gui/gui.py +8 -8
- meerk40t/moshi/gui/moshicontrollergui.py +24 -8
- meerk40t/moshi/gui/moshidrivergui.py +2 -2
- meerk40t/newly/controller.py +2 -0
- meerk40t/newly/device.py +9 -2
- meerk40t/newly/driver.py +4 -0
- meerk40t/newly/gui/gui.py +16 -17
- meerk40t/newly/gui/newlyconfig.py +2 -2
- meerk40t/newly/gui/newlycontroller.py +13 -5
- meerk40t/rotary/gui/gui.py +2 -2
- meerk40t/rotary/gui/rotarysettings.py +2 -2
- meerk40t/ruida/device.py +3 -0
- meerk40t/ruida/driver.py +4 -0
- meerk40t/ruida/gui/gui.py +6 -6
- meerk40t/ruida/gui/ruidaconfig.py +2 -2
- meerk40t/ruida/gui/ruidacontroller.py +13 -5
- meerk40t/svgelements.py +9 -9
- meerk40t/tools/geomstr.py +849 -153
- meerk40t/tools/kerftest.py +8 -4
- meerk40t/tools/livinghinges.py +15 -8
- {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/METADATA +21 -16
- {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/RECORD +185 -177
- {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/entry_points.txt +0 -1
- test/test_core_elements.py +8 -24
- test/test_file_svg.py +88 -0
- test/test_fill.py +9 -9
- test/test_geomstr.py +258 -8
- test/test_kernel.py +4 -0
- test/test_tools_rasterplotter.py +29 -0
- meerk40t/extra/embroider.py +0 -56
- meerk40t/extra/pathoptimize.py +0 -249
- {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/LICENSE +0 -0
- {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/WHEEL +0 -0
- {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/top_level.txt +0 -0
- {meerk40t-0.9.2000.dist-info → meerk40t-0.9.3001.dist-info}/zip-safe +0 -0
meerk40t/tools/kerftest.py
CHANGED
@@ -9,7 +9,7 @@ from meerk40t.core.node.op_cut import CutOpNode
|
|
9
9
|
from meerk40t.core.node.op_engrave import EngraveOpNode
|
10
10
|
from meerk40t.core.node.op_raster import RasterOpNode
|
11
11
|
from meerk40t.core.units import UNITS_PER_PIXEL, Length
|
12
|
-
from meerk40t.gui.icons import STD_ICON_SIZE,
|
12
|
+
from meerk40t.gui.icons import STD_ICON_SIZE, icon_kerf, icons8_detective
|
13
13
|
from meerk40t.gui.mwindow import MWindow
|
14
14
|
from meerk40t.gui.wxutils import StaticBoxSizer, TextCtrl, dip_size
|
15
15
|
from meerk40t.kernel import lookup_listener, signal_listener
|
@@ -58,7 +58,7 @@ class KerfPanel(wx.Panel):
|
|
58
58
|
|
59
59
|
self.button_create = wx.Button(self, wx.ID_ANY, _("Create Pattern"))
|
60
60
|
self.button_create.SetBitmap(
|
61
|
-
|
61
|
+
icons8_detective.GetBitmap(resize=STD_ICON_SIZE / 2)
|
62
62
|
)
|
63
63
|
|
64
64
|
self._set_layout()
|
@@ -156,7 +156,7 @@ class KerfPanel(wx.Panel):
|
|
156
156
|
sizer_param.Add(hline_dim, 0, wx.EXPAND, 0)
|
157
157
|
sizer_param.Add(hline_delta, 0, wx.EXPAND, 0)
|
158
158
|
|
159
|
-
sizer_info = StaticBoxSizer(self, wx.ID_ANY, _("How to use it"), wx.
|
159
|
+
sizer_info = StaticBoxSizer(self, wx.ID_ANY, _("How to use it"), wx.HORIZONTAL)
|
160
160
|
infomsg = _(
|
161
161
|
"If you want to produce cut out shapes with *exact* dimensions"
|
162
162
|
+ " after the burn, then you need to take half the width of the"
|
@@ -166,10 +166,14 @@ class KerfPanel(wx.Panel):
|
|
166
166
|
+ " label together. Choose the pair that has a perfect fit and use the"
|
167
167
|
+ " label as your kerf-compensation value."
|
168
168
|
)
|
169
|
+
info_pic = wx.StaticBitmap(
|
170
|
+
self, wx.ID_ANY, bitmap=icon_kerf.GetBitmap(resize=STD_ICON_SIZE)
|
171
|
+
)
|
169
172
|
info_label = wx.TextCtrl(
|
170
173
|
self, wx.ID_ANY, value=infomsg, style=wx.TE_READONLY | wx.TE_MULTILINE
|
171
174
|
)
|
172
175
|
info_label.SetBackgroundColour(self.GetBackgroundColour())
|
176
|
+
sizer_info.Add(info_pic, 0, 0, 0)
|
173
177
|
sizer_info.Add(info_label, 1, wx.EXPAND, 0)
|
174
178
|
|
175
179
|
main_sizer.Add(sizer_cutop, 0, wx.EXPAND, 1)
|
@@ -863,7 +867,7 @@ class KerfTool(MWindow):
|
|
863
867
|
)
|
864
868
|
self.add_module_delegate(self.panel_template)
|
865
869
|
_icon = wx.NullIcon
|
866
|
-
_icon.CopyFromBitmap(
|
870
|
+
_icon.CopyFromBitmap(icon_kerf.GetBitmap())
|
867
871
|
self.SetIcon(_icon)
|
868
872
|
self.SetTitle(_("Kerf-Test"))
|
869
873
|
self.Layout()
|
meerk40t/tools/livinghinges.py
CHANGED
@@ -4,13 +4,16 @@ import wx
|
|
4
4
|
|
5
5
|
from meerk40t.core.units import ACCEPTED_UNITS, Length
|
6
6
|
from meerk40t.fill.patterns import LivingHinges
|
7
|
-
from meerk40t.gui.icons import STD_ICON_SIZE,
|
7
|
+
from meerk40t.gui.icons import STD_ICON_SIZE, icon_hinges
|
8
8
|
from meerk40t.gui.laserrender import LaserRender
|
9
9
|
from meerk40t.gui.mwindow import MWindow
|
10
10
|
from meerk40t.gui.wxutils import StaticBoxSizer, dip_size
|
11
11
|
from meerk40t.kernel import signal_listener
|
12
12
|
from meerk40t.svgelements import Color, Matrix, Path
|
13
13
|
|
14
|
+
# from meerk40t.fill.patternfill import LivingHinges
|
15
|
+
|
16
|
+
|
14
17
|
_ = wx.GetTranslation
|
15
18
|
|
16
19
|
"""
|
@@ -99,7 +102,7 @@ class HingePanel(wx.Panel):
|
|
99
102
|
self,
|
100
103
|
wx.ID_ANY,
|
101
104
|
0,
|
102
|
-
int(1 - _FACTOR / 2),
|
105
|
+
int(1 - _FACTOR / 2) + 1,
|
103
106
|
int(_FACTOR / 2),
|
104
107
|
style=wx.SL_HORIZONTAL,
|
105
108
|
)
|
@@ -114,7 +117,7 @@ class HingePanel(wx.Panel):
|
|
114
117
|
self,
|
115
118
|
wx.ID_ANY,
|
116
119
|
0,
|
117
|
-
int(1 - _FACTOR / 2),
|
120
|
+
int(1 - _FACTOR / 2) + 1,
|
118
121
|
int(_FACTOR / 2),
|
119
122
|
style=wx.SL_HORIZONTAL,
|
120
123
|
)
|
@@ -489,7 +492,7 @@ class HingePanel(wx.Panel):
|
|
489
492
|
)
|
490
493
|
gc.SetPen(mypen_path)
|
491
494
|
gspath = self.hinge_generator.preview_path
|
492
|
-
if gspath is not None:
|
495
|
+
if gspath is not None and self.hinge_generator.outershape is not None:
|
493
496
|
if isinstance(gspath, Path):
|
494
497
|
bb = self.hinge_generator.outershape.bbox()
|
495
498
|
gspath.transform *= Matrix.translate(-bb[0], -bb[1])
|
@@ -533,7 +536,9 @@ class HingePanel(wx.Panel):
|
|
533
536
|
self.button_generate.Enable(False)
|
534
537
|
self.button_generate.SetLabel(_("Processing..."))
|
535
538
|
start_time = time()
|
536
|
-
if self.hinge_generator.outershape is not None
|
539
|
+
if self.hinge_generator.outershape is not None and hasattr(
|
540
|
+
self.hinge_generator.outershape, "as_geometry"
|
541
|
+
):
|
537
542
|
# As we have a reference shape, we make sure
|
538
543
|
# we update the information...
|
539
544
|
units = self.context.units_name
|
@@ -917,7 +922,7 @@ class HingePanel(wx.Panel):
|
|
917
922
|
self.slider_param_b.SetValue(int(10 * self.hinge_param_b))
|
918
923
|
if require_sync:
|
919
924
|
self.sync_controls(True)
|
920
|
-
flag = wd > 0 and ht > 0
|
925
|
+
flag = wd > 0 and ht > 0 and self.hinge_generator.outershape is not None
|
921
926
|
self.button_generate.Enable(flag)
|
922
927
|
self.Layout()
|
923
928
|
|
@@ -931,9 +936,11 @@ class HingePanel(wx.Panel):
|
|
931
936
|
bounds = node.bbox()
|
932
937
|
self.hinge_generator.set_hinge_shape(first_selected)
|
933
938
|
flag = False
|
939
|
+
self.button_generate.Enable(True)
|
934
940
|
break
|
935
941
|
if flag:
|
936
942
|
self.hinge_generator.set_hinge_shape(None)
|
943
|
+
self.button_generate.Enable(False)
|
937
944
|
if units in ("in", "inch"):
|
938
945
|
s = "2in"
|
939
946
|
else:
|
@@ -985,7 +992,7 @@ class LivingHingeTool(MWindow):
|
|
985
992
|
)
|
986
993
|
self.add_module_delegate(self.panel_template)
|
987
994
|
_icon = wx.NullIcon
|
988
|
-
_icon.CopyFromBitmap(
|
995
|
+
_icon.CopyFromBitmap(icon_hinges.GetBitmap())
|
989
996
|
self.SetIcon(_icon)
|
990
997
|
self.SetTitle(_("Living-Hinges"))
|
991
998
|
self.Layout()
|
@@ -1014,7 +1021,7 @@ class LivingHingeTool(MWindow):
|
|
1014
1021
|
"button/extended_tools/LivingHinge",
|
1015
1022
|
{
|
1016
1023
|
"label": _("Hinge"),
|
1017
|
-
"icon":
|
1024
|
+
"icon": icon_hinges,
|
1018
1025
|
"tip": _("Fill area with a living hinge pattern"),
|
1019
1026
|
"action": lambda v: kernel.console("window open Hingetool\n"),
|
1020
1027
|
"size": STD_ICON_SIZE,
|
@@ -1,13 +1,12 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: meerk40t
|
3
|
-
Version: 0.9.
|
3
|
+
Version: 0.9.3001
|
4
4
|
Summary: MeerK40t LaserCutter Software
|
5
5
|
Home-page: https://github.com/meerk40t/meerk40t
|
6
6
|
Author: Tatarize
|
7
7
|
Author-email: tatarize@gmail.com
|
8
8
|
License: MIT
|
9
9
|
Keywords: lasercutter,laser,vector,parser
|
10
|
-
Platform: UNKNOWN
|
11
10
|
Classifier: Development Status :: 5 - Production/Stable
|
12
11
|
Classifier: License :: OSI Approved :: MIT License
|
13
12
|
Classifier: Operating System :: OS Independent
|
@@ -21,6 +20,7 @@ Classifier: Topic :: Multimedia :: Graphics
|
|
21
20
|
Classifier: Topic :: Multimedia :: Graphics :: Editors :: Vector-Based
|
22
21
|
Classifier: Topic :: Utilities
|
23
22
|
Description-Content-Type: text/markdown
|
23
|
+
License-File: LICENSE
|
24
24
|
Requires-Dist: pyusb >=1.0.0
|
25
25
|
Requires-Dist: pyserial
|
26
26
|
Requires-Dist: numpy
|
@@ -70,16 +70,21 @@ Meerk40t provides a variety of drivers with an extensible framework to provide s
|
|
70
70
|
|
71
71
|
|
72
72
|
### Supported devices
|
73
|
-
* M2-Nano
|
74
|
-
* Moshiboard
|
73
|
+
* Lihuiyu M2/M3-Nano
|
75
74
|
* GRBL
|
76
|
-
*
|
75
|
+
* Ezcad2-compatible JCZ controllers galvo lasers
|
76
|
+
* Moshiboard
|
77
|
+
* NewlyDraw System 8.1 Lasers
|
77
78
|
* Ruida-Emulation (Middleman between Lightburn and K40)
|
78
79
|
|
79
80
|
### Lihuiyu M2-Nano
|
80
81
|
For the Lihuiyu (stock driver), Meerk40t supports both the windows and libusb connection methods, making it compatible with Whisperer and with the original Chinese software. So MeerK40t can usually run alongside these other pieces of software interchangeably.
|
81
82
|
|
82
|
-
###
|
83
|
+
### GRBL
|
84
|
+
|
85
|
+
GRBL is itself open source and the various interfaces with the board should be quite well understood.
|
86
|
+
|
87
|
+
### EZCAD2-Compatible Galvo LMC
|
83
88
|
|
84
89
|
Meerk40t supports controlling galvo as well as gantry lasers with open source support.
|
85
90
|
|
@@ -87,9 +92,9 @@ Meerk40t supports controlling galvo as well as gantry lasers with open source su
|
|
87
92
|
|
88
93
|
The support for old moshiboards makes meerk40t the only known opensource software that controls moshiboards.
|
89
94
|
|
90
|
-
###
|
95
|
+
### System 8.1 Lasers (NewlyDraw)
|
91
96
|
|
92
|
-
|
97
|
+
HPGL-modified laser systems produced under many different company names
|
93
98
|
|
94
99
|
## Support
|
95
100
|
The primary source for help and documentation is the [MeerK40t Wiki - please click here](https://github.com/meerk40t/meerk40t/wiki).
|
@@ -119,16 +124,16 @@ Open source projects live and die with their support. There are a lots of ways t
|
|
119
124
|
|
120
125
|
## Download
|
121
126
|
You can find and download all current and historical versions in the [Releases](https://github.com/meerk40t/meerk40t/releases) section.
|
122
|
-
|
123
|
-
|
124
|
-
* 0.
|
125
|
-
* 0.
|
127
|
+
|
128
|
+
Currently, primary branches:
|
129
|
+
* 0.9 - Active - New features and some underlying architectural changes. Try the latest released version: [0.9.2](https://github.com/meerk40t/meerk40t/releases#latest)
|
130
|
+
* 0.8 - Maintenance - may receive critical bugfixes but no more new features, latest version: [0.8.12](https://github.com/meerk40t/meerk40t/releases/tag/0.8.12000) (Oct 17, 2023)
|
131
|
+
* 0.7 - Discontinued - K40 support only (including ruidacontrol emulator for 3rd party lasersoftware integration), latest version [0.7.10](https://github.com/meerk40t/meerk40t/releases/tag/0.7.10000) (June 13, 2023)
|
132
|
+
* 0.6 - Discontinued - K40 support only, latest version: [0.6.24](https://github.com/meerk40t/meerk40t/releases/tag/0.6.24) (Oct 11, 2021)
|
126
133
|
|
127
134
|
Just download one of the files for Windows, Mac OSX, Linux and Raspberry Pi.
|
128
135
|
|
129
136
|
## Lightburn integration
|
130
|
-
Meerk40t allows to act as an
|
131
|
-
|
132
|
-
With 0.9 another way of interacting with Lightburn was introduced, which will work as well with the standard version of LB: You just need to issue the command ``grblcontrol`` in MeerK40ts console window and you will then be able to add an emulated remote GBRL-LPC laser inside Lightburn.
|
133
|
-
|
137
|
+
Meerk40t allows to act as an intermediary between your K40 laser and software that supports Ruida-controlled laser equipment - [Lightburn](https://lightburnsoftware.com/) is a relevant example of such a software product. You just need to issue the command ``ruidacontrol`` in MeerK40ts console window and you will then be able to add an emulated Ruida Laser inside Lightburn™. Laser jobs that are created inside Lightburn™ and sent to this laser will be picked up by MeerK40t and sent to your K40. See some more detailed instructions in this [video](https://www.youtube.com/watch?v=LUUfLf5Agu0). Please note `ruidacontrol` will require the DSP version of Lightburn™. (Present in all versions since 0.7)
|
134
138
|
|
139
|
+
With 0.9 another way of interacting with Lightburn was introduced, which will work as well with the standard version of LB: You just need to issue the command ``grblcontrol`` in MeerK40ts console window, and you will then be able to add an emulated remote GBRL-LPC laser inside Lightburn or any TCP GRBL control software.
|