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/balormk/controller.py +46 -13
- meerk40t/balormk/livelightjob.py +34 -7
- meerk40t/core/cutcode/plotcut.py +2 -1
- meerk40t/core/elements/branches.py +35 -14
- meerk40t/core/elements/clipboard.py +10 -12
- meerk40t/core/elements/elements.py +23 -0
- meerk40t/core/elements/geometry.py +48 -14
- meerk40t/core/elements/grid.py +56 -24
- meerk40t/core/elements/offset_clpr.py +2 -4
- meerk40t/core/elements/placements.py +17 -22
- meerk40t/core/elements/render.py +30 -11
- meerk40t/core/elements/shapes.py +205 -125
- meerk40t/core/spoolers.py +1 -1
- meerk40t/core/units.py +4 -0
- meerk40t/grbl/emulator.py +10 -8
- meerk40t/grbl/gcodejob.py +11 -3
- meerk40t/grbl/plugin.py +10 -1
- meerk40t/gui/wxmmain.py +7 -0
- meerk40t/lihuiyu/driver.py +2 -5
- meerk40t/main.py +1 -1
- meerk40t/ruida/emulator.py +12 -9
- meerk40t/ruida/plugin.py +5 -0
- meerk40t/ruida/rdjob.py +5 -5
- meerk40t/tools/geomstr.py +15 -0
- {meerk40t-0.9.7910.dist-info → meerk40t-0.9.7930.dist-info}/METADATA +1 -1
- {meerk40t-0.9.7910.dist-info → meerk40t-0.9.7930.dist-info}/RECORD +31 -31
- {meerk40t-0.9.7910.dist-info → meerk40t-0.9.7930.dist-info}/LICENSE +0 -0
- {meerk40t-0.9.7910.dist-info → meerk40t-0.9.7930.dist-info}/WHEEL +0 -0
- {meerk40t-0.9.7910.dist-info → meerk40t-0.9.7930.dist-info}/entry_points.txt +0 -0
- {meerk40t-0.9.7910.dist-info → meerk40t-0.9.7930.dist-info}/top_level.txt +0 -0
- {meerk40t-0.9.7910.dist-info → meerk40t-0.9.7930.dist-info}/zip-safe +0 -0
@@ -673,8 +673,7 @@ def init_commands(kernel):
|
|
673
673
|
offset = 0
|
674
674
|
else:
|
675
675
|
try:
|
676
|
-
|
677
|
-
offset = float(ll)
|
676
|
+
offset = float(Length(offset, settings=self.length_settings()))
|
678
677
|
except ValueError:
|
679
678
|
offset = 0
|
680
679
|
if offset == 0.0:
|
@@ -769,8 +768,7 @@ def init_commands(kernel):
|
|
769
768
|
offset = 0
|
770
769
|
else:
|
771
770
|
try:
|
772
|
-
|
773
|
-
offset = float(ll)
|
771
|
+
offset = float(Length(offset, settings=self.length_settings()))
|
774
772
|
except ValueError:
|
775
773
|
offset = 0
|
776
774
|
if offset == 0.0:
|
@@ -74,10 +74,10 @@ def init_commands(kernel):
|
|
74
74
|
type=int,
|
75
75
|
help=_("How many placements on the Y-Axis?\n(0 = as many as fit on the bed)"),
|
76
76
|
)
|
77
|
-
@self.console_option("dx", "m", type=
|
78
|
-
@self.console_option("dy", "n", type=
|
79
|
-
@self.console_argument("x", type=
|
80
|
-
@self.console_argument("y", type=
|
77
|
+
@self.console_option("dx", "m", type=str, help=_("Gap in x-direction"))
|
78
|
+
@self.console_option("dy", "n", type=str, help=_("Gap in y-direction"))
|
79
|
+
@self.console_argument("x", type=str, help=_("x coord"))
|
80
|
+
@self.console_argument("y", type=str, help=_("y coord"))
|
81
81
|
@self.console_command(
|
82
82
|
"placement",
|
83
83
|
help=_("Adds a placement = a fixed job start position"),
|
@@ -100,36 +100,31 @@ def init_commands(kernel):
|
|
100
100
|
loops=None,
|
101
101
|
**kwargs,
|
102
102
|
):
|
103
|
+
try:
|
104
|
+
# fmt: off
|
105
|
+
lensett = self.length_settings()
|
106
|
+
x = 0 if x is None else float(Length(x, relative_length=self.device.view.width, settings=lensett))
|
107
|
+
y = 0 if y is None else float(Length(y, relative_length=self.device.view.height, settings=lensett))
|
108
|
+
dx = 0 if dx is None else float(Length(dx, relative_length=self.device.view.width, settings=lensett))
|
109
|
+
dy = 0 if dy is None else float(Length(dy, relative_length=self.device.view.height, settings=lensett))
|
110
|
+
# fmt: on
|
111
|
+
except ValueError:
|
112
|
+
channel(_("Invalid length value."))
|
113
|
+
return
|
103
114
|
if loops is None:
|
104
115
|
loops = 1
|
105
116
|
if corner is None:
|
106
117
|
corner = 0
|
107
118
|
if rotation is None:
|
108
119
|
rotation = 0
|
109
|
-
if x is None:
|
110
|
-
x = 0
|
111
|
-
if y is None:
|
112
|
-
y = x
|
113
120
|
if nx is None:
|
114
121
|
nx = 1
|
115
122
|
if ny is None:
|
116
123
|
ny = 1
|
117
|
-
if dx
|
118
|
-
dx = 0
|
124
|
+
if dx == 0:
|
119
125
|
nx = 1
|
120
|
-
if dy
|
121
|
-
dy = 0
|
126
|
+
if dy == 0:
|
122
127
|
ny = 1
|
123
|
-
try:
|
124
|
-
x = Length(x)
|
125
|
-
y = Length(y)
|
126
|
-
len_dx = Length(dx)
|
127
|
-
dx_val = float(len_dx)
|
128
|
-
len_dy = Length(dy)
|
129
|
-
dy_val = float(len_dy)
|
130
|
-
except ValueError:
|
131
|
-
channel(_("Invalid values given"))
|
132
|
-
return
|
133
128
|
if nx < 0 or ny < 0:
|
134
129
|
channel(_("Invalid values for nx/ny provided"))
|
135
130
|
return
|
meerk40t/core/elements/render.py
CHANGED
@@ -342,7 +342,7 @@ def init_commands(kernel):
|
|
342
342
|
action="store_true",
|
343
343
|
help=_("Preserve intermediary objects"),
|
344
344
|
)
|
345
|
-
@self.console_argument("offset", type=
|
345
|
+
@self.console_argument("offset", type=str, help="Offset distance")
|
346
346
|
@self.console_command(
|
347
347
|
"outline",
|
348
348
|
help=_("Create an outline path at the inner and outer side of a path"),
|
@@ -436,10 +436,16 @@ def init_commands(kernel):
|
|
436
436
|
invert = False
|
437
437
|
if blacklevel is None:
|
438
438
|
blacklevel = 0.5
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
offset
|
439
|
+
try:
|
440
|
+
# fmt: off
|
441
|
+
lensett = self.length_settings()
|
442
|
+
if offset is None:
|
443
|
+
offset = "5mm"
|
444
|
+
offset = float(Length(offset, relative_length=self.device.view.width, settings=lensett))
|
445
|
+
# fmt: on
|
446
|
+
except ValueError:
|
447
|
+
channel(_("Invalid length value."))
|
448
|
+
return
|
443
449
|
if steps is None or steps < 1:
|
444
450
|
steps = 1
|
445
451
|
if outer is None:
|
@@ -718,7 +724,9 @@ def init_commands(kernel):
|
|
718
724
|
input_type=(None, "elements"),
|
719
725
|
output_type="elements",
|
720
726
|
)
|
721
|
-
def keyhole_elements(
|
727
|
+
def keyhole_elements(
|
728
|
+
command, channel, _, refid=None, nohide=None, data=None, post=None, **kwargs
|
729
|
+
):
|
722
730
|
if data is None:
|
723
731
|
data = list(self.elems(emphasized=True))
|
724
732
|
|
@@ -727,7 +735,12 @@ def init_commands(kernel):
|
|
727
735
|
if refid is None:
|
728
736
|
# We do look for the very first occurence of a path like object and take this...
|
729
737
|
for node in data:
|
730
|
-
if node.id is not None and node.type in (
|
738
|
+
if node.id is not None and node.type in (
|
739
|
+
"elem path",
|
740
|
+
"elem ellipse",
|
741
|
+
"elem rect",
|
742
|
+
"elem polyline",
|
743
|
+
):
|
731
744
|
refid = node.id
|
732
745
|
break
|
733
746
|
|
@@ -739,9 +752,13 @@ def init_commands(kernel):
|
|
739
752
|
channel(_("A node with such an ID couldn't be found"))
|
740
753
|
return
|
741
754
|
if not hasattr(refnode, "as_geometry"):
|
742
|
-
channel(
|
755
|
+
channel(
|
756
|
+
_("This node can not act as a keyhole: {nodetype}").format(
|
757
|
+
nodetype=refnode.type
|
758
|
+
)
|
759
|
+
)
|
743
760
|
return
|
744
|
-
images = list
|
761
|
+
images = list((e for e in data if e.type == "elem image"))
|
745
762
|
if len(images) == 0:
|
746
763
|
channel(_("No images selected/provided"))
|
747
764
|
return
|
@@ -765,11 +782,13 @@ def init_commands(kernel):
|
|
765
782
|
input_type=(None, "elements"),
|
766
783
|
output_type="elements",
|
767
784
|
)
|
768
|
-
def remove_keyhole_elements(
|
785
|
+
def remove_keyhole_elements(
|
786
|
+
command, channel, _, refid=None, nohide=None, data=None, post=None, **kwargs
|
787
|
+
):
|
769
788
|
if data is None:
|
770
789
|
data = list(self.elems(emphasized=True))
|
771
790
|
|
772
|
-
images = list
|
791
|
+
images = list((e for e in data if e.type == "elem image"))
|
773
792
|
if len(images) == 0:
|
774
793
|
channel(_("No images selected/provided"))
|
775
794
|
return
|