meerk40t 0.9.2000__tar.gz → 0.9.3001__tar.gz
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-0.9.3001/LICENSE +21 -0
- meerk40t-0.9.3001/PKG-INFO +139 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/README.md +19 -12
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/balor_params.py +1 -43
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/controller.py +1 -41
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/device.py +16 -22
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/driver.py +4 -4
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/gui/balorconfig.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/gui/balorcontroller.py +13 -5
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/gui/baloroperationproperties.py +0 -46
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/gui/gui.py +17 -17
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/camera/gui/camerapanel.py +18 -11
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/rastercut.py +3 -1
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutplan.py +145 -14
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/clipboard.py +18 -9
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/element_treeops.py +320 -180
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/element_types.py +7 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/elements.py +53 -27
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/geometry.py +8 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/offset_clpr.py +129 -4
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/offset_mk.py +3 -1
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/shapes.py +28 -25
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/laserjob.py +7 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/bootstrap.py +4 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/effect_hatch.py +85 -96
- meerk40t-0.9.3001/meerk40t/core/node/effect_wobble.py +309 -0
- meerk40t-0.9.3001/meerk40t/core/node/elem_image.py +801 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/elem_line.py +60 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/elem_rect.py +5 -3
- meerk40t-0.9.2000/meerk40t/core/node/elem_image.py → meerk40t-0.9.3001/meerk40t/core/node/image_processed.py +19 -24
- meerk40t-0.9.3001/meerk40t/core/node/image_raster.py +113 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/node.py +120 -1
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/op_cut.py +2 -8
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/op_dots.py +0 -8
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/op_engrave.py +2 -18
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/op_image.py +22 -35
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/op_raster.py +0 -9
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/planner.py +32 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/svg_io.py +699 -461
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/treeop.py +191 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/undos.py +15 -1
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/units.py +14 -4
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/device/dummydevice.py +3 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/device/gui/defaultactions.py +43 -55
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/device/gui/formatterpanel.py +58 -49
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/device/gui/warningpanel.py +12 -12
- meerk40t-0.9.3001/meerk40t/device/mixins.py +13 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/dxf/dxf_io.py +9 -5
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/ezd.py +28 -26
- meerk40t-0.9.3001/meerk40t/extra/imageactions.py +316 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/lbrn.py +19 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/fill/fills.py +6 -6
- meerk40t-0.9.3001/meerk40t/fill/patternfill.py +1061 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/fill/patterns.py +2 -6
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/controller.py +168 -52
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/device.py +23 -18
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/driver.py +39 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/emulator.py +79 -19
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/gcodejob.py +10 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/gui/grblconfiguration.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/gui/grblcontroller.py +24 -8
- meerk40t-0.9.3001/meerk40t/grbl/gui/grblhardwareconfig.py +153 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/gui/gui.py +17 -14
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/mock_connection.py +15 -34
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/plugin.py +0 -4
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/serial_connection.py +2 -1
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/about.py +8 -5
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/alignment.py +10 -6
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/basicops.py +27 -17
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/bufferview.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/choicepropertypanel.py +101 -13
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/consolepanel.py +12 -9
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/devicepanel.py +38 -25
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/executejob.py +6 -4
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/help_assets/help_assets.py +13 -10
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/hersheymanager.py +8 -6
- meerk40t-0.9.3001/meerk40t/gui/icons.py +2747 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/imagesplitter.py +14 -7
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/keymap.py +3 -3
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/laserpanel.py +151 -84
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/laserrender.py +61 -70
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/lasertoolpanel.py +8 -7
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/materialtest.py +3 -3
- meerk40t-0.9.3001/meerk40t/gui/mkdebug.py +359 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/navigationpanels.py +321 -180
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/notes.py +3 -3
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/opassignment.py +12 -12
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/operation_info.py +13 -13
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/plugin.py +5 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/position.py +20 -18
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/preferences.py +21 -6
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/attributes.py +70 -22
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/blobproperty.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/consoleproperty.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/groupproperties.py +3 -3
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/hatchproperty.py +11 -18
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/imageproperty.py +4 -3
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/opbranchproperties.py +1 -1
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/pathproperty.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/pointproperty.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/propertywindow.py +4 -4
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/textproperty.py +3 -3
- meerk40t-0.9.3001/meerk40t/gui/propertypanels/wobbleproperty.py +204 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/ribbon.py +367 -259
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scene/scene.py +31 -5
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/elementswidget.py +12 -4
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/gridwidget.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/laserpathwidget.py +7 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/machineoriginwidget.py +6 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/relocatewidget.py +1 -1
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/reticlewidget.py +9 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/selectionwidget.py +12 -7
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/simpleui.py +95 -8
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/simulation.py +44 -36
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/spoolerpanel.py +124 -26
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/defaultoperations.py +18 -6
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/infowidget.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/opassignwidget.py +12 -12
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/shapepropwidget.py +45 -18
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/statusbar.py +11 -4
- meerk40t-0.9.3001/meerk40t/gui/themes.py +78 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolcircle.py +2 -1
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolellipse.py +2 -1
- meerk40t-0.9.3001/meerk40t/gui/toolwidgets/toolimagecut.py +132 -0
- meerk40t-0.9.3001/meerk40t/gui/toolwidgets/toolline.py +144 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolnodeedit.py +72 -145
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolpoint.py +1 -1
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolpolygon.py +8 -55
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolrect.py +2 -1
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/usbconnect.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/cyclocycloidwidget.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/harmonograph.py +7 -7
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/scalewidget.py +1 -1
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/wordlisteditor.py +33 -18
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/wxmeerk40t.py +166 -66
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/wxmmain.py +236 -157
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/wxmribbon.py +49 -25
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/wxmscene.py +49 -38
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/wxmtree.py +216 -85
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/wxutils.py +62 -4
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/image/imagetools.py +443 -15
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/internal_plugins.py +2 -10
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/kernel.py +12 -4
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/controller.py +7 -7
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/device.py +3 -1
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/driver.py +3 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/gui/gui.py +8 -8
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/gui/lhyaccelgui.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/gui/lhycontrollergui.py +73 -27
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/gui/lhydrivergui.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/gui/tcpcontroller.py +22 -9
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/main.py +6 -1
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/controller.py +5 -5
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/device.py +5 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/driver.py +4 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/gui/gui.py +8 -8
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/gui/moshicontrollergui.py +24 -8
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/gui/moshidrivergui.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/controller.py +2 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/device.py +9 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/driver.py +4 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/gui/gui.py +16 -17
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/gui/newlyconfig.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/gui/newlycontroller.py +13 -5
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/rotary/gui/gui.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/rotary/gui/rotarysettings.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/device.py +3 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/driver.py +4 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/gui/gui.py +6 -6
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/gui/ruidaconfig.py +2 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/gui/ruidacontroller.py +13 -5
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/svgelements.py +9 -9
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/geomstr.py +849 -153
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/kerftest.py +8 -4
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/livinghinges.py +15 -8
- meerk40t-0.9.3001/meerk40t.egg-info/PKG-INFO +139 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t.egg-info/SOURCES.txt +415 -2
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t.egg-info/entry_points.txt +0 -1
- meerk40t-0.9.3001/pyproject.toml +649 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/setup.cfg +1 -1
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_core_elements.py +8 -24
- meerk40t-0.9.3001/test/test_file_svg.py +176 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_fill.py +9 -9
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_geomstr.py +258 -8
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_kernel.py +4 -0
- meerk40t-0.9.3001/test/test_tools_rasterplotter.py +29 -0
- meerk40t-0.9.2000/PKG-INFO +0 -120
- meerk40t-0.9.2000/meerk40t/extra/embroider.py +0 -56
- meerk40t-0.9.2000/meerk40t/extra/imageactions.py +0 -324
- meerk40t-0.9.2000/meerk40t/extra/pathoptimize.py +0 -249
- meerk40t-0.9.2000/meerk40t/fill/patternfill.py +0 -1061
- meerk40t-0.9.2000/meerk40t/gui/icons.py +0 -3861
- meerk40t-0.9.2000/meerk40t/gui/mkdebug.py +0 -106
- meerk40t-0.9.2000/meerk40t.egg-info/PKG-INFO +0 -120
- meerk40t-0.9.2000/test/test_file_svg.py +0 -88
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/clone_loader.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/elementlightjob.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/gui/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/livelightjob.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/mock_connection.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/plugin.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/balormk/usb_connection.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/camera/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/camera/camera.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/camera/gui/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/camera/gui/gui.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/camera/plugin.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ch341/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ch341/ch341device.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ch341/libusb.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ch341/mock.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ch341/windriver.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/bindalias.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/core.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/cubiccut.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/cutcode.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/cutgroup.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/cutobject.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/dwellcut.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/gotocut.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/homecut.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/inputcut.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/linecut.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/outputcut.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/plotcut.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/quadcut.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/cutcode/waitcut.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/drivers.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/element_commands.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/align.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/branches.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/files.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/grid.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/materials.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/notes.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/penbox.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/placements.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/render.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/trace.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/tree_commands.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/undo_redo.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/elements/wordlist.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/exceptions.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/logging.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/blobnode.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/branch_elems.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/branch_ops.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/branch_regmark.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/cutnode.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/elem_ellipse.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/elem_path.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/elem_point.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/elem_polyline.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/elem_text.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/filenode.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/groupnode.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/layernode.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/mixins.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/nutils.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/place_current.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/place_point.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/refnode.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/rootnode.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/util_console.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/util_goto.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/util_home.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/util_input.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/util_output.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/node/util_wait.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/parameters.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/plotplanner.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/space.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/spoolers.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/view.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/webhelp.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/core/wordlist.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/device/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/device/basedevice.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/device/gui/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/dxf/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/dxf/plugin.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/external_plugins.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/external_plugins_build.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/cag.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/hershey.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/inkscape.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/param_functions.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/potrace.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/updater.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/vectrace.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/extra/winsleep.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/fill/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/control.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/gui/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/interpreter.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/loader.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/grbl/tcp_connection.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/busy.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/dialogoptions.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/fonts.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/guicolors.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/help_assets/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/mwindow.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/inputproperty.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/operationpropertymain.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/outputproperty.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/placementproperty.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/rasterwizardpanels.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/propertypanels/waitproperty.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scene/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scene/sceneconst.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scene/scenepanel.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scene/scenespacewidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scene/widget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/affinemover.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/attractionwidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/bedwidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/guidewidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/nodeselector.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/scenewidgets/rectselectwidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/snapoptions.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/selectionwidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/statusbarwidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/statusbarwidgets/strokewidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/circlebrush.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolcontainer.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/tooldraw.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toollinetext.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolmeasure.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolnodemove.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolparameter.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolplacement.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolpolyline.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolrelocate.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolribbon.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/tooltext.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolvector.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/toolwidgets/toolwidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/buttonwidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/checkboxwidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/controlwidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/handlewidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/openclosewidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/rotationwidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/seekbarwidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/togglewidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/utilitywidgets/toolbarwidget.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/gui/zmatrix.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/image/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/channel.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/context.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/exceptions.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/functions.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/jobs.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/lifecycles.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/module.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/service.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/settings.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/kernel/states.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/gui/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/gui/lhyoperationproperties.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/interpreter.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/laserspeed.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/loader.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/parser.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/plugin.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/lihuiyu/tcp_connection.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/builder.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/gui/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/moshi/plugin.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/network/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/network/console_server.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/network/kernelserver.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/network/tcp_server.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/network/udp_server.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/gui/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/gui/operationproperties.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/mock_connection.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/newly_params.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/plugin.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/newly/usb_connection.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/rotary/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/rotary/gui/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/rotary/rotary.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/control.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/controller.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/emulator.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/exceptions.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/gui/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/gui/ruidaoperationproperties.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/loader.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/mock_connection.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/plugin.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/ruida/rdjob.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/driver_to_path.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/jhfparser.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/pathtools.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/pointfinder.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/polybool.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/rasterplotter.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/shxparser.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/ttfparser.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t/tools/zinglplotter.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t.egg-info/dependency_links.txt +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t.egg-info/requires.txt +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t.egg-info/top_level.txt +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/meerk40t.egg-info/zip-safe +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/setup.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/__init__.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/bootstrap.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_cli.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_core_cutcode.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_core_plotplanner.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_core_viewports.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_drivers_grbl.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_drivers_lihuiyu.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_drivers_newly.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_element_degenerate_points.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_elements_classify.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_elements_penbox.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_geomstr_nodes.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_imagetools_actualize.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_imagetools_wizard.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_laser_speeds.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_length.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_lifecycle.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_operations.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_operations_hatch.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_ruida.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_spooler.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_wobble.py +0 -0
- {meerk40t-0.9.2000 → meerk40t-0.9.3001}/test/test_zingl.py +0 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2021 meerk40t
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
@@ -0,0 +1,139 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: meerk40t
|
3
|
+
Version: 0.9.3001
|
4
|
+
Summary: MeerK40t LaserCutter Software
|
5
|
+
Home-page: https://github.com/meerk40t/meerk40t
|
6
|
+
Author: Tatarize
|
7
|
+
Author-email: tatarize@gmail.com
|
8
|
+
License: MIT
|
9
|
+
Keywords: lasercutter,laser,vector,parser
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
12
|
+
Classifier: Operating System :: OS Independent
|
13
|
+
Classifier: Programming Language :: Python
|
14
|
+
Classifier: Programming Language :: Python :: 3.6
|
15
|
+
Classifier: Programming Language :: Python :: 3.7
|
16
|
+
Classifier: Programming Language :: Python :: 3.8
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
19
|
+
Classifier: Topic :: Multimedia :: Graphics
|
20
|
+
Classifier: Topic :: Multimedia :: Graphics :: Editors :: Vector-Based
|
21
|
+
Classifier: Topic :: Utilities
|
22
|
+
Description-Content-Type: text/markdown
|
23
|
+
License-File: LICENSE
|
24
|
+
Requires-Dist: pyusb>=1.0.0
|
25
|
+
Requires-Dist: pyserial
|
26
|
+
Requires-Dist: numpy
|
27
|
+
Provides-Extra: all
|
28
|
+
Requires-Dist: wxPython>=4.0.0; extra == "all"
|
29
|
+
Requires-Dist: Pillow>=7.0.0; extra == "all"
|
30
|
+
Requires-Dist: opencv-python-headless>=3.4.0.0; extra == "all"
|
31
|
+
Requires-Dist: ezdxf>=0.14.0; extra == "all"
|
32
|
+
Provides-Extra: gui
|
33
|
+
Requires-Dist: wxPython>=4.0.0; extra == "gui"
|
34
|
+
Requires-Dist: Pillow>=7.0.0; extra == "gui"
|
35
|
+
Provides-Extra: cam
|
36
|
+
Requires-Dist: opencv-python-headless>=3.4.0.0; extra == "cam"
|
37
|
+
Provides-Extra: dxf
|
38
|
+
Requires-Dist: ezdxf>=0.14.0; extra == "dxf"
|
39
|
+
Provides-Extra: camhead
|
40
|
+
Requires-Dist: opencv-python>=3.4.0.0; extra == "camhead"
|
41
|
+
|
42
|
+
# MeerK40t
|
43
|
+
MeerK40t (pronounced MeerKat) is a built-from-the-ground-up MIT licensed open-source laser cutting software.
|
44
|
+
|
45
|
+
## Primary Goals
|
46
|
+
* Provide users with high quality laser control software.
|
47
|
+
* Provide developers with a highly extensible platform to help further their own ideas, and provide novel work to the laser community at large.
|
48
|
+
|
49
|
+
## Running
|
50
|
+
MeerK40t is written in Python and precompiled versions are [available for download](https://github.com/meerk40t/meerk40t/releases) for Windows, Mac OSX, Linux and Raspberry Pi (more infos below). Due note this sometimes will give false postitives for various viruses (especially since Meerk40t isn't signed).
|
51
|
+
|
52
|
+
### Source
|
53
|
+
|
54
|
+
Alternatively you can run MeerK40t directly from Python. `pip install meerk40t[all]` with python installed will usually be sufficient. Then merely run `meerk40t` at the command line.
|
55
|
+
|
56
|
+
See [Install: Source wiki page](https://github.com/meerk40t/meerk40t/wiki/Install:-Source)
|
57
|
+
|
58
|
+
### GUI
|
59
|
+

|
60
|
+
|
61
|
+
The wxMeerK40t is the GUI and is written in wxPython. We use AUI to allow to have a very highly configurable UI. We can easily add panes and tools and there are quite a few available already.
|
62
|
+
|
63
|
+
### Command Line Interface
|
64
|
+
|
65
|
+
Meerk40t has an advanced internal console system allowing access to most parts of the code with various commands. It also provides a command line interface which should allow you to automate any processes.
|
66
|
+
|
67
|
+
## Drivers
|
68
|
+
|
69
|
+
Meerk40t provides a variety of drivers with an extensible framework to provide support for other new laser devices. The code was written with the myriad of possibilities for different software in mind. For example, it may be essential that GRBL be able to reset an alarm or notify the user of particular error codes. The configuration for GRBL is not the same for the configuration of other laser control drivers. With this in mind, Meerk40t can radically change how and when it works
|
70
|
+
|
71
|
+
|
72
|
+
### Supported devices
|
73
|
+
* Lihuiyu M2/M3-Nano
|
74
|
+
* GRBL
|
75
|
+
* Ezcad2-compatible JCZ controllers galvo lasers
|
76
|
+
* Moshiboard
|
77
|
+
* NewlyDraw System 8.1 Lasers
|
78
|
+
* Ruida-Emulation (Middleman between Lightburn and K40)
|
79
|
+
|
80
|
+
### Lihuiyu M2-Nano
|
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.
|
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
|
88
|
+
|
89
|
+
Meerk40t supports controlling galvo as well as gantry lasers with open source support.
|
90
|
+
|
91
|
+
### Moshiboard
|
92
|
+
|
93
|
+
The support for old moshiboards makes meerk40t the only known opensource software that controls moshiboards.
|
94
|
+
|
95
|
+
### System 8.1 Lasers (NewlyDraw)
|
96
|
+
|
97
|
+
HPGL-modified laser systems produced under many different company names
|
98
|
+
|
99
|
+
## Support
|
100
|
+
The primary source for help and documentation is the [MeerK40t Wiki - please click here](https://github.com/meerk40t/meerk40t/wiki).
|
101
|
+
|
102
|
+
If you have a bug, feature request, or other issue raise it here. These are likely to be resolved. Squeaky wheels get the grease.
|
103
|
+
https://github.com/meerk40t/meerk40t/issues
|
104
|
+
|
105
|
+
If you need additional support, please research/ask on:
|
106
|
+
|
107
|
+
* [Facebook](https://www.facebook.com/groups/716000085655097/)
|
108
|
+
* [Maker Forums](https://forum.makerforums.info/t/about-the-meerk40t-category/79660)
|
109
|
+
* [YouTube - David Olsen's channel](https://www.youtube.com/channel/UCsAUV23O2FyKxC0HN7nkAQQ)
|
110
|
+
* [YouTube - Some instruction videos](https://www.youtube.com/channel/UCMN9gGvpacxZINPZCSOecaQ)
|
111
|
+
* [Discord](https://discord.gg/vkDD3HdQq6)
|
112
|
+
|
113
|
+
## Assisting the Project
|
114
|
+
|
115
|
+
Open source projects live and die with their support. There are a lots of ways to help the project. There are also a lot of ways the project should help you.
|
116
|
+
* Code
|
117
|
+
* Provide Translations in other languages.
|
118
|
+
* Design ( Good design instincts, smooth out the rough edges)
|
119
|
+
* Compile/Testers
|
120
|
+
* Beta testers
|
121
|
+
* Make helpful support content
|
122
|
+
* Make guides ("How to setup cameras?", etc)
|
123
|
+
* Bounce ideas around
|
124
|
+
|
125
|
+
## Download
|
126
|
+
You can find and download all current and historical versions in the [Releases](https://github.com/meerk40t/meerk40t/releases) section.
|
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)
|
133
|
+
|
134
|
+
Just download one of the files for Windows, Mac OSX, Linux and Raspberry Pi.
|
135
|
+
|
136
|
+
## Lightburn integration
|
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)
|
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.
|
@@ -29,16 +29,21 @@ Meerk40t provides a variety of drivers with an extensible framework to provide s
|
|
29
29
|
|
30
30
|
|
31
31
|
### Supported devices
|
32
|
-
* M2-Nano
|
33
|
-
* Moshiboard
|
32
|
+
* Lihuiyu M2/M3-Nano
|
34
33
|
* GRBL
|
35
|
-
*
|
34
|
+
* Ezcad2-compatible JCZ controllers galvo lasers
|
35
|
+
* Moshiboard
|
36
|
+
* NewlyDraw System 8.1 Lasers
|
36
37
|
* Ruida-Emulation (Middleman between Lightburn and K40)
|
37
38
|
|
38
39
|
### Lihuiyu M2-Nano
|
39
40
|
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.
|
40
41
|
|
41
|
-
###
|
42
|
+
### GRBL
|
43
|
+
|
44
|
+
GRBL is itself open source and the various interfaces with the board should be quite well understood.
|
45
|
+
|
46
|
+
### EZCAD2-Compatible Galvo LMC
|
42
47
|
|
43
48
|
Meerk40t supports controlling galvo as well as gantry lasers with open source support.
|
44
49
|
|
@@ -46,9 +51,9 @@ Meerk40t supports controlling galvo as well as gantry lasers with open source su
|
|
46
51
|
|
47
52
|
The support for old moshiboards makes meerk40t the only known opensource software that controls moshiboards.
|
48
53
|
|
49
|
-
###
|
54
|
+
### System 8.1 Lasers (NewlyDraw)
|
50
55
|
|
51
|
-
|
56
|
+
HPGL-modified laser systems produced under many different company names
|
52
57
|
|
53
58
|
## Support
|
54
59
|
The primary source for help and documentation is the [MeerK40t Wiki - please click here](https://github.com/meerk40t/meerk40t/wiki).
|
@@ -78,14 +83,16 @@ Open source projects live and die with their support. There are a lots of ways t
|
|
78
83
|
|
79
84
|
## Download
|
80
85
|
You can find and download all current and historical versions in the [Releases](https://github.com/meerk40t/meerk40t/releases) section.
|
81
|
-
|
82
|
-
|
83
|
-
* 0.
|
84
|
-
* 0.
|
86
|
+
|
87
|
+
Currently, primary branches:
|
88
|
+
* 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)
|
89
|
+
* 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)
|
90
|
+
* 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)
|
91
|
+
* 0.6 - Discontinued - K40 support only, latest version: [0.6.24](https://github.com/meerk40t/meerk40t/releases/tag/0.6.24) (Oct 11, 2021)
|
85
92
|
|
86
93
|
Just download one of the files for Windows, Mac OSX, Linux and Raspberry Pi.
|
87
94
|
|
88
95
|
## Lightburn integration
|
89
|
-
Meerk40t allows to act as an
|
96
|
+
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)
|
90
97
|
|
91
|
-
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.
|
98
|
+
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.
|
@@ -13,19 +13,17 @@ FLOAT_PARAMETERS = (
|
|
13
13
|
"delay_laser_on",
|
14
14
|
"delay_laser_off",
|
15
15
|
"delay_polygon",
|
16
|
-
"wobble_speed",
|
17
16
|
)
|
18
17
|
INT_PARAMETERS = ("pulse_width",)
|
19
18
|
|
20
19
|
BOOL_PARAMETERS = (
|
21
|
-
"wobble_enabled",
|
22
20
|
"timing_enabled",
|
23
21
|
"rapid_enabled",
|
24
22
|
"pulse_width_enabled",
|
25
23
|
)
|
26
24
|
|
27
25
|
|
28
|
-
STRING_PARAMETERS = (
|
26
|
+
STRING_PARAMETERS = ()
|
29
27
|
|
30
28
|
|
31
29
|
class Parameters:
|
@@ -96,46 +94,6 @@ class Parameters:
|
|
96
94
|
def timing_enabled(self, value):
|
97
95
|
self.settings["timing_enabled"] = value
|
98
96
|
|
99
|
-
@property
|
100
|
-
def wobble_enabled(self):
|
101
|
-
return self.settings.get("wobble_enabled", False)
|
102
|
-
|
103
|
-
@wobble_enabled.setter
|
104
|
-
def wobble_enabled(self, value):
|
105
|
-
self.settings["wobble_enabled"] = value
|
106
|
-
|
107
|
-
@property
|
108
|
-
def wobble_radius(self):
|
109
|
-
return self.settings.get("wobble_radius", "1.5mm")
|
110
|
-
|
111
|
-
@wobble_radius.setter
|
112
|
-
def wobble_radius(self, value):
|
113
|
-
self.settings["wobble_radius"] = value
|
114
|
-
|
115
|
-
@property
|
116
|
-
def wobble_speed(self):
|
117
|
-
return self.settings.get("wobble_speed", 50.0)
|
118
|
-
|
119
|
-
@wobble_speed.setter
|
120
|
-
def wobble_speed(self, value):
|
121
|
-
self.settings["wobble_speed"] = value
|
122
|
-
|
123
|
-
@property
|
124
|
-
def wobble_interval(self):
|
125
|
-
return self.settings.get("wobble_interval", "0.3mm")
|
126
|
-
|
127
|
-
@wobble_interval.setter
|
128
|
-
def wobble_interval(self, value):
|
129
|
-
self.settings["wobble_interval"] = value
|
130
|
-
|
131
|
-
@property
|
132
|
-
def wobble_type(self):
|
133
|
-
return self.settings.get("wobble_type", "circle")
|
134
|
-
|
135
|
-
@wobble_type.setter
|
136
|
-
def wobble_type(self, value):
|
137
|
-
self.settings["wobble_type"] = value
|
138
|
-
|
139
97
|
@property
|
140
98
|
def speed(self):
|
141
99
|
return self.settings.get("speed", 100.0)
|
@@ -12,7 +12,6 @@ from copy import copy
|
|
12
12
|
|
13
13
|
from meerk40t.balormk.mock_connection import MockConnection
|
14
14
|
from meerk40t.balormk.usb_connection import USBConnection
|
15
|
-
from meerk40t.fill.fills import Wobble
|
16
15
|
|
17
16
|
DRIVER_STATE_RAPID = 0
|
18
17
|
DRIVER_STATE_LIGHT = 1
|
@@ -273,7 +272,6 @@ class GalvoController:
|
|
273
272
|
self._delay_poly = None
|
274
273
|
self._delay_end = None
|
275
274
|
|
276
|
-
self._wobble = None
|
277
275
|
self._port_bits = 0
|
278
276
|
self._machine_index = 0
|
279
277
|
|
@@ -627,40 +625,6 @@ class GalvoController:
|
|
627
625
|
self.list_laser_off_delay(self.service.delay_laser_off)
|
628
626
|
self.list_polygon_delay(self.service.delay_polygon)
|
629
627
|
|
630
|
-
def set_wobble(self, settings):
|
631
|
-
"""
|
632
|
-
Set the wobble parameters and mark modifications routines.
|
633
|
-
|
634
|
-
@param settings: The dict setting to extract parameters from.
|
635
|
-
@return:
|
636
|
-
"""
|
637
|
-
if settings is None:
|
638
|
-
self._wobble = None
|
639
|
-
return
|
640
|
-
wobble_enabled = str(settings.get("wobble_enabled", False)).lower() == "true"
|
641
|
-
if not wobble_enabled:
|
642
|
-
self._wobble = None
|
643
|
-
return
|
644
|
-
wobble_radius = settings.get("wobble_radius", "1.5mm")
|
645
|
-
wobble_r, _ = self.service.view.position(wobble_radius, 0, vector=True)
|
646
|
-
wobble_interval = settings.get("wobble_interval", "0.3mm")
|
647
|
-
wobble_speed = settings.get("wobble_speed", 50.0)
|
648
|
-
wobble_type = settings.get("wobble_type", "circle")
|
649
|
-
wobble_interval, _ = self.service.view.position(wobble_interval, 0, vector=True)
|
650
|
-
algorithm = self.service.lookup(f"wobble/{wobble_type}")
|
651
|
-
if self._wobble is None:
|
652
|
-
self._wobble = Wobble(
|
653
|
-
algorithm=algorithm,
|
654
|
-
radius=wobble_r,
|
655
|
-
speed=wobble_speed,
|
656
|
-
interval=wobble_interval,
|
657
|
-
)
|
658
|
-
else:
|
659
|
-
# set our parameterizations
|
660
|
-
self._wobble.algorithm = algorithm
|
661
|
-
self._wobble.radius = wobble_r
|
662
|
-
self._wobble.speed = wobble_speed
|
663
|
-
|
664
628
|
#######################
|
665
629
|
# PLOTLIKE SHORTCUTS
|
666
630
|
#######################
|
@@ -673,11 +637,7 @@ class GalvoController:
|
|
673
637
|
return
|
674
638
|
if self._mark_speed is not None:
|
675
639
|
self.list_mark_speed(self._mark_speed)
|
676
|
-
|
677
|
-
for wx, wy in self._wobble(self._last_x, self._last_y, x, y):
|
678
|
-
self.list_mark(wx, wy)
|
679
|
-
else:
|
680
|
-
self.list_mark(x, y)
|
640
|
+
self.list_mark(x, y)
|
681
641
|
|
682
642
|
def goto(self, x, y, long=None, short=None, distance_limit=None):
|
683
643
|
if x == self._last_x and y == self._last_y:
|
@@ -15,12 +15,13 @@ from meerk40t.core.laserjob import LaserJob
|
|
15
15
|
from meerk40t.core.spoolers import Spooler
|
16
16
|
from meerk40t.core.units import Angle, Length
|
17
17
|
from meerk40t.core.view import View
|
18
|
+
from meerk40t.device.mixins import Status
|
18
19
|
from meerk40t.kernel import CommandSyntaxError, Service, signal_listener
|
19
20
|
from meerk40t.svgelements import Path, Point
|
20
21
|
from meerk40t.tools.geomstr import Geomstr
|
21
22
|
|
22
23
|
|
23
|
-
class BalorDevice(Service):
|
24
|
+
class BalorDevice(Service, Status):
|
24
25
|
"""
|
25
26
|
The BalorDevice is a MeerK40t service for the device type. It should be the main method of interacting with
|
26
27
|
the rest of meerk40t. It defines how the scene should look and contains a spooler which meerk40t will give jobs
|
@@ -29,6 +30,7 @@ class BalorDevice(Service):
|
|
29
30
|
|
30
31
|
def __init__(self, kernel, path, *args, choices=None, **kwargs):
|
31
32
|
Service.__init__(self, kernel, path)
|
33
|
+
Status.__init__(self)
|
32
34
|
self.name = "balor"
|
33
35
|
self.extension = "lmc"
|
34
36
|
self.job = None
|
@@ -1791,35 +1793,27 @@ class BalorDevice(Service):
|
|
1791
1793
|
"""
|
1792
1794
|
if data is None:
|
1793
1795
|
data = list(self.elements.elems(emphasized=True))
|
1794
|
-
|
1796
|
+
g = Geomstr()
|
1795
1797
|
for e in data:
|
1796
|
-
if e
|
1798
|
+
if hasattr(e, "as_image"):
|
1797
1799
|
bounds = e.bounds
|
1798
|
-
|
1799
|
-
(
|
1800
|
-
|
1801
|
-
|
1802
|
-
|
1803
|
-
|
1800
|
+
g.append(
|
1801
|
+
Geomstr.rect(
|
1802
|
+
bounds[0],
|
1803
|
+
bounds[1],
|
1804
|
+
bounds[2] - bounds[0],
|
1805
|
+
bounds[3] - bounds[1],
|
1806
|
+
)
|
1807
|
+
)
|
1804
1808
|
elif e.type == "elem text":
|
1805
1809
|
continue # We can't outline text.
|
1806
1810
|
else:
|
1807
|
-
|
1808
|
-
|
1809
|
-
except AttributeError:
|
1810
|
-
try:
|
1811
|
-
path = abs(e.path)
|
1812
|
-
except AttributeError:
|
1813
|
-
continue
|
1814
|
-
pts += [q for q in path.as_points()]
|
1815
|
-
hull = [p for p in Point.convex_hull(pts)]
|
1811
|
+
g.append(e.as_geometry())
|
1812
|
+
hull = Geomstr.hull(g)
|
1816
1813
|
if len(hull) == 0:
|
1817
1814
|
channel(_("No elements bounds to trace."))
|
1818
1815
|
return
|
1819
|
-
hull
|
1820
|
-
hull = list(map(complex, hull))
|
1821
|
-
geometry = Geomstr.lines(*hull)
|
1822
|
-
return "geometry", geometry
|
1816
|
+
return "geometry", hull
|
1823
1817
|
|
1824
1818
|
def ant_points(points, steps):
|
1825
1819
|
points = list(points)
|
@@ -102,7 +102,7 @@ class BalorDriver:
|
|
102
102
|
"""
|
103
103
|
Required.
|
104
104
|
|
105
|
-
Sets a laser parameter this could be speed, power,
|
105
|
+
Sets a laser parameter this could be speed, power, number_of_unicorns, or any unknown parameters for
|
106
106
|
yet to be written drivers.
|
107
107
|
|
108
108
|
@param key:
|
@@ -186,7 +186,6 @@ class BalorDriver:
|
|
186
186
|
con.program_mode()
|
187
187
|
self._list_bits = con._port_bits
|
188
188
|
last_on = None
|
189
|
-
con.set_wobble(None)
|
190
189
|
queue = self.queue
|
191
190
|
self.queue = list()
|
192
191
|
for q in queue:
|
@@ -198,7 +197,6 @@ class BalorDriver:
|
|
198
197
|
except KeyError:
|
199
198
|
self.value_penbox = None
|
200
199
|
con.set_settings(settings)
|
201
|
-
con.set_wobble(settings)
|
202
200
|
# LOOP CHECKS
|
203
201
|
if self._aborting:
|
204
202
|
con.abort()
|
@@ -323,7 +321,6 @@ class BalorDriver:
|
|
323
321
|
except KeyError:
|
324
322
|
self.value_penbox = None
|
325
323
|
con.set_settings(settings)
|
326
|
-
con.set_wobble(settings)
|
327
324
|
elif on & (
|
328
325
|
PLOT_RAPID | PLOT_JOG
|
329
326
|
): # Plot planner requests position change.
|
@@ -533,6 +530,7 @@ class BalorDriver:
|
|
533
530
|
return
|
534
531
|
self.paused = True
|
535
532
|
self.connection.pause()
|
533
|
+
self.service.signal("pause")
|
536
534
|
|
537
535
|
def resume(self):
|
538
536
|
"""
|
@@ -545,6 +543,7 @@ class BalorDriver:
|
|
545
543
|
"""
|
546
544
|
self.paused = False
|
547
545
|
self.connection.resume()
|
546
|
+
self.service.signal("pause")
|
548
547
|
|
549
548
|
def reset(self):
|
550
549
|
"""
|
@@ -554,6 +553,7 @@ class BalorDriver:
|
|
554
553
|
"""
|
555
554
|
self.paused = False
|
556
555
|
self.connection.abort()
|
556
|
+
self.service.signal("pause")
|
557
557
|
|
558
558
|
def dwell(self, time_in_ms):
|
559
559
|
"""
|
@@ -4,7 +4,7 @@ from meerk40t.device.gui.defaultactions import DefaultActionPanel
|
|
4
4
|
from meerk40t.device.gui.formatterpanel import FormatterPanel
|
5
5
|
from meerk40t.device.gui.warningpanel import WarningPanel
|
6
6
|
from meerk40t.gui.choicepropertypanel import ChoicePropertyPanel
|
7
|
-
from meerk40t.gui.icons import
|
7
|
+
from meerk40t.gui.icons import icons8_administrative_tools
|
8
8
|
from meerk40t.gui.mwindow import MWindow
|
9
9
|
from meerk40t.kernel import signal_listener
|
10
10
|
|
@@ -16,7 +16,7 @@ class BalorConfiguration(MWindow):
|
|
16
16
|
super().__init__(420, 570, *args, **kwds)
|
17
17
|
self.context = self.context.device
|
18
18
|
_icon = wx.NullIcon
|
19
|
-
_icon.CopyFromBitmap(
|
19
|
+
_icon.CopyFromBitmap(icons8_administrative_tools.GetBitmap())
|
20
20
|
self.SetIcon(_icon)
|
21
21
|
self.SetTitle(_(_("Balor-Configuration")))
|
22
22
|
|
@@ -2,7 +2,11 @@ import threading
|
|
2
2
|
|
3
3
|
import wx
|
4
4
|
|
5
|
-
from meerk40t.gui.icons import
|
5
|
+
from meerk40t.gui.icons import (
|
6
|
+
get_default_icon_size,
|
7
|
+
icons8_connected,
|
8
|
+
icons8_disconnected,
|
9
|
+
)
|
6
10
|
from meerk40t.gui.mwindow import MWindow
|
7
11
|
from meerk40t.gui.wxutils import dip_size
|
8
12
|
from meerk40t.kernel import signal_listener
|
@@ -58,7 +62,9 @@ class BalorControllerPanel(wx.ScrolledWindow):
|
|
58
62
|
_("Force connection/disconnection from the device.")
|
59
63
|
)
|
60
64
|
self.button_device_connect.SetBitmap(
|
61
|
-
|
65
|
+
icons8_disconnected.GetBitmap(
|
66
|
+
use_theme=False, resize=get_default_icon_size()
|
67
|
+
)
|
62
68
|
)
|
63
69
|
# end wxGlade
|
64
70
|
|
@@ -89,14 +95,16 @@ class BalorControllerPanel(wx.ScrolledWindow):
|
|
89
95
|
def set_button_connected(self):
|
90
96
|
self.button_device_connect.SetBackgroundColour("#00ff00")
|
91
97
|
self.button_device_connect.SetBitmap(
|
92
|
-
|
98
|
+
icons8_connected.GetBitmap(use_theme=False, resize=get_default_icon_size())
|
93
99
|
)
|
94
100
|
self.button_device_connect.Enable()
|
95
101
|
|
96
102
|
def set_button_disconnected(self):
|
97
103
|
self.button_device_connect.SetBackgroundColour("#dfdf00")
|
98
104
|
self.button_device_connect.SetBitmap(
|
99
|
-
|
105
|
+
icons8_disconnected.GetBitmap(
|
106
|
+
use_theme=False, resize=get_default_icon_size()
|
107
|
+
)
|
100
108
|
)
|
101
109
|
self.button_device_connect.Enable()
|
102
110
|
|
@@ -161,7 +169,7 @@ class BalorController(MWindow):
|
|
161
169
|
self.add_module_delegate(self.panel)
|
162
170
|
self.SetTitle(_("Balor-Controller"))
|
163
171
|
_icon = wx.NullIcon
|
164
|
-
_icon.CopyFromBitmap(
|
172
|
+
_icon.CopyFromBitmap(icons8_connected.GetBitmap())
|
165
173
|
self.SetIcon(_icon)
|
166
174
|
self.Layout()
|
167
175
|
|
@@ -92,52 +92,6 @@ class BalorOperationPanel(ScrolledPanel):
|
|
92
92
|
"label": _("Polygon Delay"),
|
93
93
|
"tip": _("Delay amount between different points in the path travel."),
|
94
94
|
},
|
95
|
-
{
|
96
|
-
"attr": "wobble_enabled",
|
97
|
-
"object": params,
|
98
|
-
"default": False,
|
99
|
-
"type": bool,
|
100
|
-
"label": _("Enable Wobble"),
|
101
|
-
"tip": _("Enable wobble for this particular cut"),
|
102
|
-
},
|
103
|
-
{
|
104
|
-
"attr": "wobble_radius",
|
105
|
-
"object": params,
|
106
|
-
"default": "1.5mm",
|
107
|
-
"type": Length,
|
108
|
-
"conditional": (params, "wobble_enabled"),
|
109
|
-
"label": _("Radius of wobble"),
|
110
|
-
"tip": _("Radius of the wobble for this cut, if wobble is enabled."),
|
111
|
-
},
|
112
|
-
{
|
113
|
-
"attr": "wobble_interval",
|
114
|
-
"object": params,
|
115
|
-
"default": "0.2mm",
|
116
|
-
"type": Length,
|
117
|
-
"conditional": (params, "wobble_enabled"),
|
118
|
-
"label": _("Wobble Sampling Interval"),
|
119
|
-
"tip": _("Sample interval for the wobble of this cut"),
|
120
|
-
},
|
121
|
-
{
|
122
|
-
"attr": "wobble_speed",
|
123
|
-
"object": params,
|
124
|
-
"default": 50.0,
|
125
|
-
"type": float,
|
126
|
-
"conditional": (params, "wobble_enabled"),
|
127
|
-
"label": _("Wobble Speed Multiplier"),
|
128
|
-
"tip": _("Wobble rotation speed multiplier"),
|
129
|
-
},
|
130
|
-
{
|
131
|
-
"attr": "wobble_type",
|
132
|
-
"object": params,
|
133
|
-
"default": "circle",
|
134
|
-
"type": str,
|
135
|
-
"style": "combo",
|
136
|
-
"choices": list(self.context.match("wobble", suffix=True)),
|
137
|
-
"conditional": (params, "wobble_enabled"),
|
138
|
-
"label": _("Wobble Pattern Type"),
|
139
|
-
"tip": _("Pattern type for the given wobble."),
|
140
|
-
},
|
141
95
|
]
|
142
96
|
|
143
97
|
self.panel = ChoicePropertyPanel(
|