meerk40t 0.9.7910__py2.py3-none-any.whl → 0.9.7930__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/grbl/gcodejob.py CHANGED
@@ -574,8 +574,10 @@ class GcodeJob:
574
574
  # Numeric value format is not valid or missing an expected value.
575
575
  return ERROR_NUMERIC_VALUE_INVALID
576
576
  if 0.0 < v <= 1.0:
577
- v *= 1000 # numbers between 0-1 are taken to be in range 0-1.
577
+ v *= 1000 # numbers between 0-1 are taken to be in range 0-1000.
578
578
  if self.power != v:
579
+ # print(f"Setting power to {v}")
580
+ self.plot_commit() # Power change means plot change
579
581
  try:
580
582
  self._driver.set("power", v)
581
583
  except AttributeError:
@@ -707,12 +709,18 @@ class GcodeJob:
707
709
  if power is None:
708
710
  power = 1000
709
711
  power = min(1000, power)
712
+ # print (f"Plotting location: ({x}, {y}) with power {power} (self.power={self.power})")
710
713
  if self.plotcut is None:
711
714
  ox, oy = matrix.transform_point([self.x, self.y])
712
- self.plotcut = PlotCut(settings={"speed": self.speed})
715
+ p = power if power else self.power
716
+ if p is None:
717
+ p = 1000
718
+ settings = {"speed": self.speed, "power": p}
719
+ self.plotcut = PlotCut(settings=settings)
713
720
  self.plotcut.plot_init(int(round(ox)), int(round(oy)))
714
721
  tx, ty = matrix.transform_point([x, y])
715
- self.plotcut.plot_append(int(round(tx)), int(round(ty)), (power / 1000.0))
722
+ on = power / self.power if self.power else 0
723
+ self.plotcut.plot_append(int(round(tx)), int(round(ty)), on)
716
724
  if not self.program_mode:
717
725
  self.plot_commit()
718
726
  self.x = x
meerk40t/grbl/plugin.py CHANGED
@@ -175,7 +175,9 @@ def plugin(kernel, lifecycle=None):
175
175
  {
176
176
  "provider": "provider/device/grbl",
177
177
  "friendly_name": _("Longer Ray5 (GRBL)"),
178
- "extended_info": _("Longer-branded 5w/10w/20w grbl diode laser.\nMake sure you verify your bed size! This machine has several upgrade kits."),
178
+ "extended_info": _(
179
+ "Longer-branded 5w/10w/20w grbl diode laser.\nMake sure you verify your bed size! This machine has several upgrade kits."
180
+ ),
179
181
  "priority": 21,
180
182
  "family": _("Longer Diode-Laser"),
181
183
  "choices": [
@@ -229,9 +231,13 @@ def plugin(kernel, lifecycle=None):
229
231
  hidden=True,
230
232
  )
231
233
  def grblserver(
234
+ command,
235
+ channel,
236
+ _,
232
237
  port=23,
233
238
  verbose=False,
234
239
  quit=False,
240
+ remainder=None,
235
241
  **kwargs,
236
242
  ):
237
243
  """
@@ -239,10 +245,13 @@ def plugin(kernel, lifecycle=None):
239
245
  this emulates a grbl devices in order to be compatible with software that
240
246
  controls that type of device.
241
247
  """
248
+ if remainder and remainder.lower() in ("stop", "quit"):
249
+ quit = True
242
250
  root = kernel.root
243
251
  grblcontrol = root.device.lookup("grblcontrol")
244
252
  if grblcontrol is None:
245
253
  if quit:
254
+ channel(_("No control instance to stop."))
246
255
  return
247
256
  grblcontrol = GRBLControl(root)
248
257
  root.device.register("grblcontrol", grblcontrol)
meerk40t/gui/wxmmain.py CHANGED
@@ -4836,6 +4836,13 @@ class MeerK40t(MWindow):
4836
4836
  return True
4837
4837
  if answer == wx.CANCEL:
4838
4838
  return True # VETO
4839
+ for job in self.context.device.spooler.queue:
4840
+ if job.is_running():
4841
+ print(f"{job.label} was still running, stopping...")
4842
+ try:
4843
+ job.stop()
4844
+ except Exception as e:
4845
+ print(f"Error stopping job {job.label}: {e}")
4839
4846
  return False
4840
4847
 
4841
4848
  def window_close(self):
@@ -1068,11 +1068,8 @@ class LihuiyuDriver(Parameters):
1068
1068
  self.state = DRIVER_STATE_MODECHANGE
1069
1069
 
1070
1070
  def _set_power(self, power=1000.0):
1071
- self.power = power
1072
- if self.power > 1000.0:
1073
- self.power = 1000.0
1074
- if self.power <= 0:
1075
- self.power = 0.0
1071
+ self.power = min(1000, max(0, power))
1072
+ self.settings["power"] = self.power
1076
1073
  if self.service.supports_pwm:
1077
1074
  self.send_at_pwm_code(self.power)
1078
1075
 
meerk40t/main.py CHANGED
@@ -11,7 +11,7 @@ import os.path
11
11
  import sys
12
12
 
13
13
  APPLICATION_NAME = "MeerK40t"
14
- APPLICATION_VERSION = "0.9.7910"
14
+ APPLICATION_VERSION = "0.9.7930"
15
15
 
16
16
  if not getattr(sys, "frozen", False):
17
17
  # If .git directory does not exist we are running from a package like pypi
@@ -161,6 +161,15 @@ class RuidaEmulator:
161
161
  if self.channel:
162
162
  self.channel(f"Process Failure: {str(bytes(array).hex())}")
163
163
 
164
+ def _home_device(self):
165
+ if hasattr(self.device.driver, "physical_home"):
166
+ # If the driver has a physical home, we can use that.
167
+ self.device.driver.physical_home()
168
+ elif hasattr(self.device.driver, "home"):
169
+ self.device.driver.home()
170
+ else:
171
+ self.device.driver.move_abs(0, 0)
172
+
164
173
  def _channel(self, text):
165
174
  if self.channel:
166
175
  self.channel(text)
@@ -357,7 +366,7 @@ class RuidaEmulator:
357
366
  self._describe(array, "Stop Process")
358
367
  try:
359
368
  self.device.driver.reset()
360
- self.device.driver.home()
369
+ self._home_device()
361
370
  except AttributeError:
362
371
  pass
363
372
  return True
@@ -383,10 +392,7 @@ class RuidaEmulator:
383
392
  return True
384
393
  elif array[1] == 0x2A:
385
394
  self._describe(array, "Home XY")
386
- try:
387
- self.device.driver.home()
388
- except AttributeError:
389
- pass
395
+ self._home_device()
390
396
  return True
391
397
  elif array[1] == 0x2E:
392
398
  self._describe(array, "FocusZ")
@@ -637,10 +643,7 @@ class RuidaEmulator:
637
643
  except AttributeError:
638
644
  pass
639
645
  else:
640
- try:
641
- self.device.driver.home()
642
- except AttributeError:
643
- pass
646
+ self._home_device()
644
647
  elif array[1] == 0x30 or array[1] == 0x70:
645
648
  x = abscoord(array[3:8])
646
649
  y = abscoord(array[8:13])
meerk40t/ruida/plugin.py CHANGED
@@ -93,6 +93,7 @@ def plugin(kernel, lifecycle=None):
93
93
  jogless=False,
94
94
  man_in_the_middle=None,
95
95
  bridge=False,
96
+ remainder=None,
96
97
  **kwargs,
97
98
  ):
98
99
  """
@@ -101,10 +102,14 @@ def plugin(kernel, lifecycle=None):
101
102
  controls that type of device. This would then be sent to the device in a
102
103
  somewhat agnostic fashion.
103
104
  """
105
+ if remainder and remainder.lower() in ("stop", "quit"):
106
+ quit = True
107
+
104
108
  root = kernel.root
105
109
  ruidacontrol = root.device.lookup("ruidacontrol")
106
110
  if ruidacontrol is None:
107
111
  if quit:
112
+ channel(_("No control instance to stop."))
108
113
  return
109
114
  ruidacontrol = RuidaControl(root)
110
115
  root.device.register("ruidacontrol", ruidacontrol)
meerk40t/ruida/rdjob.py CHANGED
@@ -663,6 +663,7 @@ class RDJob:
663
663
  self.x = x
664
664
  self.y = y
665
665
  ox, oy = matrix.transform_point([self.x, self.y])
666
+ # print (f"Will generate plotcut with power: {self.power}")
666
667
  self.plotcut = PlotCut(
667
668
  settings={
668
669
  "speed": self.speed,
@@ -672,9 +673,8 @@ class RDJob:
672
673
  )
673
674
  self.plotcut.plot_init(int(round(ox)), int(round(oy)))
674
675
  tx, ty = matrix.transform_point([x, y])
675
- self.plotcut.plot_append(
676
- int(round(tx)), int(round(ty)), power * (self.power / 1000.0)
677
- )
676
+ # power is not a fraction of self.power, but just denoting laser on or off.
677
+ self.plotcut.plot_append(int(round(tx)), int(round(ty)), power)
678
678
  self.x = x
679
679
  self.y = y
680
680
 
@@ -1276,7 +1276,7 @@ class RDJob:
1276
1276
  else:
1277
1277
  desc = "Unknown Command!"
1278
1278
  if self.channel:
1279
- prefix = f"{offset:06x}" if offset is not None else ''
1279
+ prefix = f"{offset:06x}" if offset is not None else ""
1280
1280
  self.channel(f"{prefix}-**-> {str(bytes(array).hex())}\t({desc})")
1281
1281
 
1282
1282
  def unswizzle(self, data):
@@ -1422,7 +1422,7 @@ class RDJob:
1422
1422
  self.laser_device_0()
1423
1423
  if air == 1:
1424
1424
  self.air_assist_on()
1425
- elif air==2:
1425
+ elif air == 2:
1426
1426
  self.air_assist_off()
1427
1427
  self.speed_laser_1(speed)
1428
1428
  self.laser_on_delay(0)
meerk40t/tools/geomstr.py CHANGED
@@ -658,6 +658,14 @@ class Pattern:
658
658
  current = 0j
659
659
 
660
660
  for entry in pattern(a, b, *args, **kwargs):
661
+ if (
662
+ not isinstance(entry, (list, tuple))
663
+ or len(entry) < 3
664
+ or np.isnan(entry[1])
665
+ or np.isnan(entry[2])
666
+ ):
667
+ # If the entry is not a list or tuple, or if the first element is NaN, we just skip it.
668
+ continue
661
669
  key = entry[0].lower()
662
670
  if key == "m":
663
671
  current = complex(entry[1], entry[2])
@@ -715,6 +723,13 @@ class Pattern:
715
723
  @param y1:
716
724
  @return:
717
725
  """
726
+ try:
727
+ if np.isnan(x0) or np.isnan(y0) or np.isnan(x1) or np.isnan(y1):
728
+ # If any of the coordinates are NaN, we cannot generate a pattern.
729
+ return Geomstr()
730
+ except TypeError:
731
+ # If the coordinates are not numbers, we cannot generate a pattern.
732
+ return Geomstr()
718
733
  cw = self.cell_width
719
734
  ch = self.cell_height
720
735
  px = self.padding_x
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerk40t
3
- Version: 0.9.7910
3
+ Version: 0.9.7930
4
4
  Summary: MeerK40t LaserCutter Software
5
5
  Home-page: https://github.com/meerk40t/meerk40t
6
6
  Author: Tatarize
@@ -3,17 +3,17 @@ meerk40t/constants.py,sha256=iTcOFJF_MLo3Ugms_A5kyz5MM0Ln9ZlZweMepW6Peto,203
3
3
  meerk40t/external_plugins.py,sha256=OQ2475hUr9KJDmrIip4zyf-851igd5n6IIMrsAvnA-U,2126
4
4
  meerk40t/external_plugins_build.py,sha256=8pwgdxSpsQMdiXJAX9kXQUc0-Dw9AMBgBfcLbTLAKfI,857
5
5
  meerk40t/internal_plugins.py,sha256=lMslowIIev1t1mf_VTewNwNgFLn1W2xTCqa9Je00Bjw,3455
6
- meerk40t/main.py,sha256=WiDB7SieTQSd7qC9e--qybAYmlN0t5BA6mLsg2aUyYo,7572
6
+ meerk40t/main.py,sha256=U3iU2hf4cLWHDjPvtdmN_Kue-HllcQtyJ_eBQ1ZJ354,7572
7
7
  meerk40t/svgelements.py,sha256=OlHkjm9kDgx6ARGJ3M2Fyd2kMi06kWJizEt8zzV5xX8,333052
8
8
  meerk40t/balormk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  meerk40t/balormk/balor_params.py,sha256=S-kwGaHfBtXWDgtZlaudvQN_HkXPqlQyp8xVh5iSxW0,4290
10
10
  meerk40t/balormk/clone_loader.py,sha256=L2aMhCgvbKynqXcX3bVnvEtrL9EN26PBXNABUuEAJlU,20815
11
- meerk40t/balormk/controller.py,sha256=_JQdbnenHBxsD3rHddX7VYCHqboulj1QzO3z2_ItKZM,48958
11
+ meerk40t/balormk/controller.py,sha256=cOrSTNuu9z8l2AfiHr8j4q5ATv9Na72U2seWEf6CJss,50229
12
12
  meerk40t/balormk/cylindermod.py,sha256=uHcH9gDJffr9hoLwkFp0frFeBRsUiGg9MJZjMx3F0z0,2223
13
13
  meerk40t/balormk/device.py,sha256=LjKr8lvACsKpb57RsGPo7m38IElJAotajMMzWlmqzgU,33735
14
14
  meerk40t/balormk/driver.py,sha256=iFgQ6EoSTvCNDjJGqJTIeRmTw-HE1x7gRO47U0fjb7U,27909
15
15
  meerk40t/balormk/galvo_commands.py,sha256=b09BinrPWwo4KYTMVdUFGtk_jGl1wEwngfSGwaqsK7g,42584
16
- meerk40t/balormk/livelightjob.py,sha256=LjbnfRcOPXv3p2YNv-ydL4gAlGreQRHA0NQgQ-ekAqY,16920
16
+ meerk40t/balormk/livelightjob.py,sha256=sios52dTkUnE_z6Zek0L0WYbVS-h9lKD5HcugIVk2Fk,17962
17
17
  meerk40t/balormk/mock_connection.py,sha256=FCaInibW3wkGAL8GTqsB1As4Yfv0u33k6soTpC6hjcs,4295
18
18
  meerk40t/balormk/plugin.py,sha256=NhZ0oGJM_msmradpn2QkBgjukPO4_r_-aonLNTZcaVM,4887
19
19
  meerk40t/balormk/usb_connection.py,sha256=A6xgGKfjH95xdwJi2ytsKVj-GtsvhFeItkjykVRrgfI,11374
@@ -46,11 +46,11 @@ meerk40t/core/parameters.py,sha256=cJYN0KAmvP8Iho2JdDucP2Q68vlj0nRI6aVK-Qdr3PE,1
46
46
  meerk40t/core/planner.py,sha256=CG7ygD96hWUZdGYPqpMR1qvevB929oIs0QbYnv55Syg,36711
47
47
  meerk40t/core/plotplanner.py,sha256=p_YsaSoPAdvCL1aAsY2q8sfHwCMwRPP-SG9ebcTnZbo,23177
48
48
  meerk40t/core/space.py,sha256=0Epmr5hYHkw1shU1OiEt_tK9eq7BRc8XWhRn7tQ6Po8,4002
49
- meerk40t/core/spoolers.py,sha256=vvbxxYSoACPc_KTAFPWtcp-PIRM55YxtXgLnHI8r13I,25089
49
+ meerk40t/core/spoolers.py,sha256=PMG-BR78EfroPTnjh--fYbfh_-j1yx5dT0qzX_mpRuQ,25091
50
50
  meerk40t/core/svg_io.py,sha256=aBIHEGiAp5q3xTPFumA0kfhFb0Yd9Wp-uIU1zOsMS1Y,70520
51
51
  meerk40t/core/treeop.py,sha256=_L8Vv5Gp2JPxFzOZxsU17XiVFVrusmzLOHo5QtCH5CA,15190
52
52
  meerk40t/core/undos.py,sha256=VAvR4RZXp-jQC498JdqXYqyy2g28e3e6P7rnIfdH50A,11049
53
- meerk40t/core/units.py,sha256=LmuvS1kX4FKOWVPEX5TA0wf_9GlAsWzLGwacSIwXefc,23187
53
+ meerk40t/core/units.py,sha256=82L3aJGPqd_eIPkuo28dH_Y9O03y2k3BHWmoqooysps,23352
54
54
  meerk40t/core/view.py,sha256=4y5DI0b9C0FTSQvMo-5Sf2c-Qvc3zZjwUM2zLqr5UI0,12641
55
55
  meerk40t/core/webhelp.py,sha256=2IuysYKzjQnIObombd1tTQmEqsdvpumh-xBTyr3Z4iM,2807
56
56
  meerk40t/core/wordlist.py,sha256=Rta262IKuSdNwYliLhgNUI0lcR2nOlvtMH10zKvD7eo,18325
@@ -65,28 +65,28 @@ meerk40t/core/cutcode/homecut.py,sha256=fsYY2MPU68hY5WScM2atnRhWcKtReb9ePzB_L0uC
65
65
  meerk40t/core/cutcode/inputcut.py,sha256=-xyCRLjxT-CoKIU0LfITWmwnKzW75HGd_yDhKUZK8WM,742
66
66
  meerk40t/core/cutcode/linecut.py,sha256=QRXfSTa0iAQFKBFhBO2qXGt5vF_LZMeP-BGa0QX35TA,919
67
67
  meerk40t/core/cutcode/outputcut.py,sha256=xiYWfGw0L17Fc6QHXIgjbHfNGnHeMlW_VPIIZy9KBr0,752
68
- meerk40t/core/cutcode/plotcut.py,sha256=XfbLvdZBrudLbFgKKXlNawkv3mi2dXgcaY41GmDL__s,10655
68
+ meerk40t/core/cutcode/plotcut.py,sha256=FUufzVnT_k2X5Ni3sh78oRUJW-0ePb1Nu9ISDqieJBw,10737
69
69
  meerk40t/core/cutcode/quadcut.py,sha256=zMZ_KRv0fWdXwrZgPTidZ6UqqzTV9hP63POivxXmVIk,1592
70
70
  meerk40t/core/cutcode/rastercut.py,sha256=azBJhFJS1zhRhjUUvB553HHKDpts_eDijKdXerUKwTg,4793
71
71
  meerk40t/core/cutcode/waitcut.py,sha256=E5dOO5-LBUVBcP9_qClPkChYBNhQ8ElwucWqEkTlgRE,866
72
72
  meerk40t/core/elements/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
73
  meerk40t/core/elements/align.py,sha256=r68DOSr9DgkwbT8BvjoPGxtgJv52Hyz0YDMIFFIgMkA,30177
74
- meerk40t/core/elements/branches.py,sha256=7PobTrwghL82na_F5-9FqZimXaeYG6WyIVfMSCfvU6I,66546
75
- meerk40t/core/elements/clipboard.py,sha256=z0i4uM2zwPQAaZMDcWdN4fhfau4UXVOmLhKlLImPb34,8034
74
+ meerk40t/core/elements/branches.py,sha256=TH6VXV9rtwCnOqP_RrtDW_YPhWfhAlA4HeYT6KsF0L0,67382
75
+ meerk40t/core/elements/clipboard.py,sha256=RXS3nYKmDmonYDIyYQTSaQTy19ezTLYXelwJ2dciILo,8190
76
76
  meerk40t/core/elements/element_treeops.py,sha256=D2PzNY9NbMU_Qp9tVvs9G5IGdiSHruI1-Ik91nrYm6M,174699
77
77
  meerk40t/core/elements/element_types.py,sha256=MvHz7cYG1s4wAB215ZlEd1i4zanc2vv8iOxWzU0J4ys,2334
78
- meerk40t/core/elements/elements.py,sha256=kQitRHgubjz7qEs_y2DguBPiiQR3ojI8UFZukGB0iaw,181055
78
+ meerk40t/core/elements/elements.py,sha256=pkzMO1xUunhr1RvbMPR5QHJY-1JzsImAWJL4NdZ38hE,181797
79
79
  meerk40t/core/elements/files.py,sha256=cuZPrRmvLqdhQ0Nft4Bm4yDQjI44mMR08AMEHSYAfOQ,4548
80
- meerk40t/core/elements/geometry.py,sha256=E11qolLrg_r2XhTOkGKASS8Lx9tj2n9qxOJ7ptkFkQY,17605
81
- meerk40t/core/elements/grid.py,sha256=UP7KX_q2SVhnDy3JYtDHXoXrKwTtEV6kwHQjBHGdmLQ,18987
80
+ meerk40t/core/elements/geometry.py,sha256=tvIz3Rbr-yhwwcJjlAL8zQqhfHlDvi7CJ9M6NYtQ5vU,19464
81
+ meerk40t/core/elements/grid.py,sha256=ub3AV44gFjqz3RecaQl-nQWpPgQZaaCY08D29toBApk,19639
82
82
  meerk40t/core/elements/materials.py,sha256=FvypUyQ7hVf3fP8_cyLKYFGra9c-4rRgnUF1F_hd6Es,5873
83
83
  meerk40t/core/elements/notes.py,sha256=tReyNmqe5YwC2IntMJZ8f0qvKw0oH0RU5He34TKfgt4,1781
84
- meerk40t/core/elements/offset_clpr.py,sha256=_3eRy-iesY6LXVdxz2f1F0hb8T0z5UfcFnxMEcdXyrA,35544
84
+ meerk40t/core/elements/offset_clpr.py,sha256=XZ7fA9nUdbhBUdJUD6qkyDirmBLOs7-DBJM44yWOhWI,35562
85
85
  meerk40t/core/elements/offset_mk.py,sha256=LUjGbVgvPsHyy5T6AsB65Icok-SYl-GBJWyigdcRgfQ,37917
86
86
  meerk40t/core/elements/penbox.py,sha256=kW162SViOSMxJukBHafQa1i0H0qfgPhiPWbw3NrB8fs,12837
87
- meerk40t/core/elements/placements.py,sha256=r_b_8Net4_stPm0yPVKjyzA3WELXGZs6Susff5Y7QkI,10680
88
- meerk40t/core/elements/render.py,sha256=F-qsV7ii8Zh2xBMO7-orZKptkCbFPXbfahdt2qFXwTE,27382
89
- meerk40t/core/elements/shapes.py,sha256=rjWCojJii6qZ36f4evDZ9QhuH9Y--1a58W8VrsUsg0I,105549
87
+ meerk40t/core/elements/placements.py,sha256=4h45hmeSBhhxd6Bi_peq_-dNmUmHHXCFAY9df5UP3gs,10901
88
+ meerk40t/core/elements/render.py,sha256=x9wU_cGjXPWOjcTl_X4dtAIAJEs4YzIJpJPrH2TGriQ,27806
89
+ meerk40t/core/elements/shapes.py,sha256=wkH68VLcl2jM1f7geQbV--lKIBOhBGjDkCnk7R5Tvg8,111438
90
90
  meerk40t/core/elements/testcases.py,sha256=4Oqq2ruNh_E71LmxHkSUC93Bo6_A8GPDamw73xJolHk,3758
91
91
  meerk40t/core/elements/trace.py,sha256=OT2hWFKAVflHJS1BHu12zoUyohFpIFzvEvlfGArgZug,20427
92
92
  meerk40t/core/elements/tree_commands.py,sha256=KkB1h3FSNNpflBEsJfLEhFGDR3q2IsJHCSGyXYS4BQE,14612
@@ -179,12 +179,12 @@ meerk40t/grbl/control.py,sha256=WiWMOzXOvmIu1EWHHsGYN0o2sg5Pe33svWsfbRjuCPg,2622
179
179
  meerk40t/grbl/controller.py,sha256=zxQ733MFzgEssaQ1NlxPyAqzqf3fLH39evDxVjyMHK4,42040
180
180
  meerk40t/grbl/device.py,sha256=C30K5_9uwKjy9mrc6TYBM2gKW1Xc3lvvQJcSnNQPbo4,44216
181
181
  meerk40t/grbl/driver.py,sha256=npde5mUwUkP3ZdCrnwx3TdF_O5F0LF6XbRXLHNFIYY4,33286
182
- meerk40t/grbl/emulator.py,sha256=_rn0v5m0ZXHpXtLYKnr8OOYYc1juo3RUkF8ut1ZaQ38,21778
183
- meerk40t/grbl/gcodejob.py,sha256=YZRlhA6_W6rVEyBHUUiQTLK6SWQfKkXeDqmWgElegjA,29238
182
+ meerk40t/grbl/emulator.py,sha256=tTBipjjzH6VGRamyHG_paQqIbJQxAIed9t__Sr8l1No,21910
183
+ meerk40t/grbl/gcodejob.py,sha256=lkxlmUE8-aTcZxYt7XbUzXct2cR0MZacr1iBqWMmEcU,29644
184
184
  meerk40t/grbl/interpreter.py,sha256=jzUess5Ywxj_O9pkZL3gAWdRmBiGvRetRWt9SDC39sY,1569
185
185
  meerk40t/grbl/loader.py,sha256=UbXfTCJdkRbQBrEvlKcrZ2cfGiz8NJC8heyIOGYpyqo,596
186
186
  meerk40t/grbl/mock_connection.py,sha256=p-J8u1znNdNJ7olprZF-A5Ki9Kd_5Wls_oHH_85aVv4,1797
187
- meerk40t/grbl/plugin.py,sha256=OxcBvDgstoPBN8BdFgP3lvg1AdEdhUkABEncW7eb0do,10574
187
+ meerk40t/grbl/plugin.py,sha256=nbZ4T9lj8K6SZco2eAvbS9jqUyvS3KGgu1tXyASa_U4,10856
188
188
  meerk40t/grbl/serial_connection.py,sha256=n0Uqvx_4K3KNpPWpvveRUF19uQ1gFDSVQ2-TFTfaCus,3188
189
189
  meerk40t/grbl/tcp_connection.py,sha256=Wlr2CXGBCiedfEuxArgLqPLpO9ybaYzk-WEqt93nAvQ,2741
190
190
  meerk40t/grbl/ws_connection.py,sha256=Vr2EqJvtgrEHPIJPpb5-FO7gOz1H5o6Qto5T0se_iz8,4028
@@ -240,7 +240,7 @@ meerk40t/gui/tips.py,sha256=gJhKbNA7UKeJXgfTC3UYjAX8OHfcXjb0Ew6XwM2BOwo,22132
240
240
  meerk40t/gui/usbconnect.py,sha256=1kznvNlXlT14NCev1PngYFmvmTKXLGxoti94FuoWF28,3018
241
241
  meerk40t/gui/wordlisteditor.py,sha256=PHuz9wEkyGtK2IuoRTZvI1xHJ_rC6p6kEmUnLFQZlxI,36955
242
242
  meerk40t/gui/wxmeerk40t.py,sha256=VlIn5N2vxt6a9rEUd-2XgX67pHwo20kJI-J-XcGXKFo,55540
243
- meerk40t/gui/wxmmain.py,sha256=LQ6k_lMtYn7FKGHCAzmoj_IHFSZaqxRs8p1Lfb783TE,214759
243
+ meerk40t/gui/wxmmain.py,sha256=xqM8SmX0qataIvcz6nZwbJNsUTuUXax3v4npsskG-1U,215072
244
244
  meerk40t/gui/wxmribbon.py,sha256=-qiWL0c2fNfl6d-bwHF_PROKy3i34aTs9ujCaw37tYU,61708
245
245
  meerk40t/gui/wxmscene.py,sha256=KVx8DMjWwWd1HidaldYKChhYTlaSz5QzvGm-dFPyzYU,71657
246
246
  meerk40t/gui/wxmtree.py,sha256=_guVz39SxL7xQ_OoX7U6OvqrQ9eSbXnPzlI40G03VMc,93430
@@ -359,7 +359,7 @@ meerk40t/kernel/states.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
359
359
  meerk40t/lihuiyu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
360
360
  meerk40t/lihuiyu/controller.py,sha256=VGnoWfs13JMUNXg7t2nzGW3OIt27UYXkzFoT1Lv1yWs,32973
361
361
  meerk40t/lihuiyu/device.py,sha256=lhNQ__lnLhARhuCDUwl54vDtzOXSrSArk7tFblkMy7Y,49802
362
- meerk40t/lihuiyu/driver.py,sha256=Fv7vjlMLBK_WSppyHQAAq7Y10V4dJERSeGfLtK57zJA,50049
362
+ meerk40t/lihuiyu/driver.py,sha256=TeFjAKOK4pnjRWNhhBf9_rmcynBi1UtRvKIFPaS2BQg,49991
363
363
  meerk40t/lihuiyu/interpreter.py,sha256=BzzWGREVHnmqO1E3hRWA5vLdwqE59oiDo7ePqtP1RZo,1639
364
364
  meerk40t/lihuiyu/laserspeed.py,sha256=GkcUlOVjkSwtybhosS05Wd7tVo8EM0dIfqpIPf2hta0,16351
365
365
  meerk40t/lihuiyu/loader.py,sha256=zwOINnkqfVlVjY-MQIBpF6BtpiTRGO7EzaaH-oRUOAY,2618
@@ -412,12 +412,12 @@ meerk40t/ruida/control.py,sha256=ir9uddn_hZ-QjPxGWBKLc6xy1JtqXVBE904lLR63dUA,104
412
412
  meerk40t/ruida/controller.py,sha256=RIdFegB_tuaI1q2Asl3pXNTERMVvl8ltYL9kQNy4mTU,3460
413
413
  meerk40t/ruida/device.py,sha256=iojk8_ry5chLCBGnYfgG7tPddhFQQf-ncS5UOFi5P8Y,23656
414
414
  meerk40t/ruida/driver.py,sha256=4Hgm5ptXjARThqf76k1AqznpHl7PgJ7FIZwswnFlKPg,17340
415
- meerk40t/ruida/emulator.py,sha256=nr3Qisv7Ix4-HWK4DpReeXw004LAEF2AzciU0mjV6g0,55390
415
+ meerk40t/ruida/emulator.py,sha256=IUaJv-7JwARa6AyJFKanYtJBjJS6aJkF-Yaqe3lg2XI,55517
416
416
  meerk40t/ruida/exceptions.py,sha256=xJtpaxuLOLANQuo15p6Fl0Lgq3eUwODCIsWw0TQm78s,116
417
417
  meerk40t/ruida/loader.py,sha256=8gHnKX3D5V7qQltvueO-m6X9-xARjVEl8rjYIpKqLbk,1516
418
418
  meerk40t/ruida/mock_connection.py,sha256=Qig2x5s01f6U3BKHNlZockyaJTWHhfgcVV6w895R8R4,1577
419
- meerk40t/ruida/plugin.py,sha256=WCMm0PKc3I9Q8iI1ptXfWVcWp_j20-UUR_SowSFEvbU,4091
420
- meerk40t/ruida/rdjob.py,sha256=DkqvSiEndzO26kwOzBsBayq5FjFHvExj0Z1_YS3n1-4,71865
419
+ meerk40t/ruida/plugin.py,sha256=NRuDolYS-HNrxShEPRxhFlcLS8LCHJllWZd038agXOY,4279
420
+ meerk40t/ruida/rdjob.py,sha256=JzQl4lEWnMdv33OiIdrW3C3JD6gEPJvu_u4UuK1eJJY,71977
421
421
  meerk40t/ruida/serial_connection.py,sha256=RJ95TX933rAD3eUL2Uz48xwhm-7wm1m3Jo-Tv6jsypk,3573
422
422
  meerk40t/ruida/tcp_connection.py,sha256=3utEZQDDUI6DzYJP83RABoXAFB-wEYGVRaoNsuWqCqE,4657
423
423
  meerk40t/ruida/udp_connection.py,sha256=S6eSoh9smYWmax6VdSOTJyc9ixEStgvy7bWVkHgqtDU,2130
@@ -428,7 +428,7 @@ meerk40t/ruida/gui/ruidacontroller.py,sha256=nJpZPW-dy7YbxxLnHzmYcU6guc-6tK1oJIw
428
428
  meerk40t/ruida/gui/ruidaoperationproperties.py,sha256=pMEZFyWHDsbzoIfIKrFrKsw2IDPEK2HhHDw3HDQM3dw,1002
429
429
  meerk40t/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
430
430
  meerk40t/tools/driver_to_path.py,sha256=eeQOGZO-08CJBqeF9epQv-P7T3dcpP2grMILW5LLd3U,20851
431
- meerk40t/tools/geomstr.py,sha256=hzC99CpCAB2tSThNoBlOU8FBjFsKKKmAddtlAA2pZ78,207715
431
+ meerk40t/tools/geomstr.py,sha256=kSR9E-LRxZuA1hzYCnk1nf_YwHB5RqQee1QoMG4CPJg,208380
432
432
  meerk40t/tools/jhfparser.py,sha256=CGC9C2cthrMWfUfumFs5EBzVCUP4PldwIqkf1Qhq52k,14395
433
433
  meerk40t/tools/kerftest.py,sha256=dtm4sP-cXQdwr3tkEImif30lnd1tyEYGxnN6vUTWe2M,36449
434
434
  meerk40t/tools/livinghinges.py,sha256=oO9ERPh2ILXpJj3-DvYyA3P7Y6FR2ACf3dbBehJlgR4,46949
@@ -440,10 +440,10 @@ meerk40t/tools/rasterplotter.py,sha256=pfIIwWjBaVnJQH2dSyfj7nj-cAK7AGmTU0kD6dBzz
440
440
  meerk40t/tools/shxparser.py,sha256=5CPV4HW5ulH71hWtiIFMFj0-Jn4-OqXRCdaimjOSfOs,35169
441
441
  meerk40t/tools/ttfparser.py,sha256=Dqd8msoqiaJAyFQ-Kdr3sBGyi5QxJFq0EOVf6-LM4Ac,61301
442
442
  meerk40t/tools/zinglplotter.py,sha256=wsXA9jnORb0AR0Bvrhcow-hROJhgDeLRcE8DmnEbiWo,20164
443
- meerk40t-0.9.7910.dist-info/LICENSE,sha256=sMsd9pY-cLfcNzUkQ2DvZobE0qpiiLMmoPfJMBTznNY,1065
444
- meerk40t-0.9.7910.dist-info/METADATA,sha256=LCrrTJHmFu0e5mnLq0DnM5YJFuWQMYy5wqRkHrfTjkU,8014
445
- meerk40t-0.9.7910.dist-info/WHEEL,sha256=Ll72iyqtt6Rbxp-Q7FSafYA1LeRv98X15xcZWRsFEmY,109
446
- meerk40t-0.9.7910.dist-info/entry_points.txt,sha256=5KjPHpJvgQq3-SwLWJQtLE1BvfGeINBae3Josx6fgpk,47
447
- meerk40t-0.9.7910.dist-info/top_level.txt,sha256=ng4SDtNom2u-smf8sCHERr74HYQIOJOjZbBlDdlpvjU,9
448
- meerk40t-0.9.7910.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
449
- meerk40t-0.9.7910.dist-info/RECORD,,
443
+ meerk40t-0.9.7930.dist-info/LICENSE,sha256=sMsd9pY-cLfcNzUkQ2DvZobE0qpiiLMmoPfJMBTznNY,1065
444
+ meerk40t-0.9.7930.dist-info/METADATA,sha256=Z6pG-w2XQmvbJfn9Ih7qz0alxr3beE4ZZcnHUDClk0s,8014
445
+ meerk40t-0.9.7930.dist-info/WHEEL,sha256=Ll72iyqtt6Rbxp-Q7FSafYA1LeRv98X15xcZWRsFEmY,109
446
+ meerk40t-0.9.7930.dist-info/entry_points.txt,sha256=5KjPHpJvgQq3-SwLWJQtLE1BvfGeINBae3Josx6fgpk,47
447
+ meerk40t-0.9.7930.dist-info/top_level.txt,sha256=ng4SDtNom2u-smf8sCHERr74HYQIOJOjZbBlDdlpvjU,9
448
+ meerk40t-0.9.7930.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
449
+ meerk40t-0.9.7930.dist-info/RECORD,,