meerk40t 0.9.7020__py2.py3-none-any.whl → 0.9.7030__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/core/cutcode/cutcode.py +1 -1
- meerk40t/core/cutplan.py +70 -2
- meerk40t/core/elements/element_treeops.py +9 -7
- meerk40t/core/elements/grid.py +8 -1
- meerk40t/core/elements/offset_mk.py +2 -1
- meerk40t/core/elements/shapes.py +378 -259
- meerk40t/core/node/node.py +6 -3
- meerk40t/core/planner.py +23 -0
- meerk40t/core/undos.py +1 -1
- meerk40t/core/wordlist.py +1 -0
- meerk40t/dxf/dxf_io.py +6 -0
- meerk40t/extra/mk_potrace.py +1959 -0
- meerk40t/extra/param_functions.py +1 -1
- meerk40t/extra/potrace.py +14 -10
- meerk40t/grbl/interpreter.py +1 -1
- meerk40t/gui/about.py +3 -5
- meerk40t/gui/basicops.py +3 -3
- meerk40t/gui/choicepropertypanel.py +1 -4
- meerk40t/gui/gui_mixins.py +4 -1
- meerk40t/gui/spoolerpanel.py +6 -9
- meerk40t/gui/themes.py +7 -1
- meerk40t/gui/wxmeerk40t.py +26 -0
- meerk40t/gui/wxmscene.py +93 -0
- meerk40t/image/imagetools.py +1 -1
- meerk40t/kernel/kernel.py +10 -4
- meerk40t/kernel/settings.py +2 -0
- meerk40t/lihuiyu/device.py +9 -3
- meerk40t/main.py +22 -5
- meerk40t/ruida/gui/gui.py +6 -6
- meerk40t/ruida/gui/ruidaoperationproperties.py +1 -10
- meerk40t/ruida/rdjob.py +3 -3
- meerk40t/tools/geomstr.py +88 -0
- {meerk40t-0.9.7020.dist-info → meerk40t-0.9.7030.dist-info}/METADATA +1 -1
- {meerk40t-0.9.7020.dist-info → meerk40t-0.9.7030.dist-info}/RECORD +39 -38
- {meerk40t-0.9.7020.dist-info → meerk40t-0.9.7030.dist-info}/WHEEL +1 -1
- {meerk40t-0.9.7020.dist-info → meerk40t-0.9.7030.dist-info}/LICENSE +0 -0
- {meerk40t-0.9.7020.dist-info → meerk40t-0.9.7030.dist-info}/entry_points.txt +0 -0
- {meerk40t-0.9.7020.dist-info → meerk40t-0.9.7030.dist-info}/top_level.txt +0 -0
- {meerk40t-0.9.7020.dist-info → meerk40t-0.9.7030.dist-info}/zip-safe +0 -0
meerk40t/core/node/node.py
CHANGED
@@ -499,9 +499,12 @@ class Node:
|
|
499
499
|
node_copy._parent = copied_parent
|
500
500
|
copied_parent._children.append(node_copy)
|
501
501
|
if node.type == "reference":
|
502
|
-
|
503
|
-
|
504
|
-
|
502
|
+
try:
|
503
|
+
original_referenced, copied_referenced = links[id(node.node)]
|
504
|
+
node_copy.node = copied_referenced
|
505
|
+
copied_referenced._references.append(node_copy)
|
506
|
+
except KeyError:
|
507
|
+
pass
|
505
508
|
|
506
509
|
def _validate_tree(self):
|
507
510
|
for c in self._children:
|
meerk40t/core/planner.py
CHANGED
@@ -181,6 +181,29 @@ def plugin(kernel, lifecycle=None):
|
|
181
181
|
"section": "_20_Reducing Movements",
|
182
182
|
"conditional": (context, "opt_reduce_travel"),
|
183
183
|
},
|
184
|
+
{
|
185
|
+
"attr": "opt_stitching",
|
186
|
+
"object": context,
|
187
|
+
"default": False,
|
188
|
+
"type": bool,
|
189
|
+
"label": _("Combine path segments"),
|
190
|
+
"tip":
|
191
|
+
_("Stitch segments together that are very close (ideally having joint start/end points).") + "\n" +
|
192
|
+
_("Only inside a single cut/engrave operation."),
|
193
|
+
"page": "Optimisations",
|
194
|
+
"section": "_05_Stitching",
|
195
|
+
},
|
196
|
+
{
|
197
|
+
"attr": "opt_stitch_tolerance",
|
198
|
+
"object": context,
|
199
|
+
"default": "0",
|
200
|
+
"type": Length,
|
201
|
+
"label": _("Tolerance"),
|
202
|
+
"tip": _("Tolerance to decide whether two path segments should be joined."),
|
203
|
+
"page": "Optimisations",
|
204
|
+
"section": "_05_Stitching",
|
205
|
+
"conditional": (context, "opt_stitching"),
|
206
|
+
},
|
184
207
|
{
|
185
208
|
"attr": "opt_inner_first",
|
186
209
|
"object": context,
|
meerk40t/core/undos.py
CHANGED
@@ -81,7 +81,7 @@ class Undo:
|
|
81
81
|
elif self._undo_index < len(self._undo_stack) and self._undo_stack[self._undo_index].hold:
|
82
82
|
# Just add another one on top of it
|
83
83
|
self._undo_index += 1
|
84
|
-
elif self._undo_stack[self._undo_index].message == self.LAST_STATE:
|
84
|
+
elif self._undo_index < len(self._undo_stack) and self._undo_stack[self._undo_index].message == self.LAST_STATE:
|
85
85
|
# Will be overwritten
|
86
86
|
pass
|
87
87
|
elif self._undo_index < len(self._undo_stack) - 1 and self._undo_stack[self._undo_index + 1].message != self.LAST_STATE:
|
meerk40t/core/wordlist.py
CHANGED
meerk40t/dxf/dxf_io.py
CHANGED
@@ -251,6 +251,8 @@ class DXFProcessor:
|
|
251
251
|
elif dxftype == "ELLIPSE":
|
252
252
|
center = (entity.dxf.center) # Center point of the ellipse (3D, but we'll use x,y)
|
253
253
|
major_axis = entity.dxf.major_axis # Vector representing the major axis
|
254
|
+
minor_axis = entity.minor_axis # Vector representing the minor axis
|
255
|
+
# They should have the same sign, if they are different then they are mirrored?!
|
254
256
|
ratio = entity.dxf.ratio # Ratio of minor to major axis
|
255
257
|
start_angle, end_angle = get_angles(entity)
|
256
258
|
|
@@ -262,6 +264,10 @@ class DXFProcessor:
|
|
262
264
|
major_axis[0] ** 2 + major_axis[1] ** 2
|
263
265
|
) # Length of the major axis (in XY plane)
|
264
266
|
b = a * ratio # Length of the minor axis
|
267
|
+
# Different signs? Inverse
|
268
|
+
if major_axis[0] * minor_axis[1] < 0:
|
269
|
+
b *= -1
|
270
|
+
|
265
271
|
# geom = Geomstr.ellipse(
|
266
272
|
# start_t=start_angle,
|
267
273
|
# end_t=end_angle,
|