meerk40t 0.9.3001__py2.py3-none-any.whl → 0.9.7010__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/__init__.py +1 -1
- meerk40t/balormk/balor_params.py +167 -167
- meerk40t/balormk/clone_loader.py +457 -457
- meerk40t/balormk/controller.py +1566 -1512
- meerk40t/balormk/cylindermod.py +64 -0
- meerk40t/balormk/device.py +966 -1959
- meerk40t/balormk/driver.py +778 -591
- meerk40t/balormk/galvo_commands.py +1195 -0
- meerk40t/balormk/gui/balorconfig.py +237 -111
- meerk40t/balormk/gui/balorcontroller.py +191 -184
- meerk40t/balormk/gui/baloroperationproperties.py +116 -115
- meerk40t/balormk/gui/corscene.py +845 -0
- meerk40t/balormk/gui/gui.py +179 -147
- meerk40t/balormk/livelightjob.py +466 -382
- meerk40t/balormk/mock_connection.py +131 -109
- meerk40t/balormk/plugin.py +133 -135
- meerk40t/balormk/usb_connection.py +306 -301
- meerk40t/camera/__init__.py +1 -1
- meerk40t/camera/camera.py +514 -397
- meerk40t/camera/gui/camerapanel.py +1241 -1095
- meerk40t/camera/gui/gui.py +58 -58
- meerk40t/camera/plugin.py +441 -399
- meerk40t/ch341/__init__.py +27 -27
- meerk40t/ch341/ch341device.py +628 -628
- meerk40t/ch341/libusb.py +595 -589
- meerk40t/ch341/mock.py +171 -171
- meerk40t/ch341/windriver.py +157 -157
- meerk40t/constants.py +13 -0
- meerk40t/core/__init__.py +1 -1
- meerk40t/core/bindalias.py +550 -539
- meerk40t/core/core.py +47 -47
- meerk40t/core/cutcode/cubiccut.py +73 -73
- meerk40t/core/cutcode/cutcode.py +315 -312
- meerk40t/core/cutcode/cutgroup.py +141 -137
- meerk40t/core/cutcode/cutobject.py +192 -185
- meerk40t/core/cutcode/dwellcut.py +37 -37
- meerk40t/core/cutcode/gotocut.py +29 -29
- meerk40t/core/cutcode/homecut.py +29 -29
- meerk40t/core/cutcode/inputcut.py +34 -34
- meerk40t/core/cutcode/linecut.py +33 -33
- meerk40t/core/cutcode/outputcut.py +34 -34
- meerk40t/core/cutcode/plotcut.py +335 -335
- meerk40t/core/cutcode/quadcut.py +61 -61
- meerk40t/core/cutcode/rastercut.py +168 -148
- meerk40t/core/cutcode/waitcut.py +34 -34
- meerk40t/core/cutplan.py +1843 -1316
- meerk40t/core/drivers.py +330 -329
- meerk40t/core/elements/align.py +801 -669
- meerk40t/core/elements/branches.py +1844 -1507
- meerk40t/core/elements/clipboard.py +229 -219
- meerk40t/core/elements/element_treeops.py +4561 -2837
- meerk40t/core/elements/element_types.py +125 -105
- meerk40t/core/elements/elements.py +4329 -3617
- meerk40t/core/elements/files.py +117 -64
- meerk40t/core/elements/geometry.py +473 -224
- meerk40t/core/elements/grid.py +467 -316
- meerk40t/core/elements/materials.py +158 -94
- meerk40t/core/elements/notes.py +50 -38
- meerk40t/core/elements/offset_clpr.py +933 -912
- meerk40t/core/elements/offset_mk.py +963 -955
- meerk40t/core/elements/penbox.py +339 -267
- meerk40t/core/elements/placements.py +300 -83
- meerk40t/core/elements/render.py +785 -687
- meerk40t/core/elements/shapes.py +2618 -2092
- meerk40t/core/elements/trace.py +651 -563
- meerk40t/core/elements/tree_commands.py +415 -409
- meerk40t/core/elements/undo_redo.py +116 -58
- meerk40t/core/elements/wordlist.py +319 -200
- meerk40t/core/exceptions.py +9 -9
- meerk40t/core/laserjob.py +220 -220
- meerk40t/core/logging.py +63 -63
- meerk40t/core/node/blobnode.py +83 -86
- meerk40t/core/node/bootstrap.py +105 -103
- meerk40t/core/node/branch_elems.py +40 -31
- meerk40t/core/node/branch_ops.py +45 -38
- meerk40t/core/node/branch_regmark.py +48 -41
- meerk40t/core/node/cutnode.py +29 -32
- meerk40t/core/node/effect_hatch.py +375 -257
- meerk40t/core/node/effect_warp.py +398 -0
- meerk40t/core/node/effect_wobble.py +441 -309
- meerk40t/core/node/elem_ellipse.py +404 -309
- meerk40t/core/node/elem_image.py +1082 -801
- meerk40t/core/node/elem_line.py +358 -292
- meerk40t/core/node/elem_path.py +259 -201
- meerk40t/core/node/elem_point.py +129 -102
- meerk40t/core/node/elem_polyline.py +310 -246
- meerk40t/core/node/elem_rect.py +376 -286
- meerk40t/core/node/elem_text.py +445 -418
- meerk40t/core/node/filenode.py +59 -40
- meerk40t/core/node/groupnode.py +138 -74
- meerk40t/core/node/image_processed.py +777 -766
- meerk40t/core/node/image_raster.py +156 -113
- meerk40t/core/node/layernode.py +31 -31
- meerk40t/core/node/mixins.py +135 -107
- meerk40t/core/node/node.py +1427 -1304
- meerk40t/core/node/nutils.py +117 -114
- meerk40t/core/node/op_cut.py +462 -335
- meerk40t/core/node/op_dots.py +296 -251
- meerk40t/core/node/op_engrave.py +414 -311
- meerk40t/core/node/op_image.py +755 -369
- meerk40t/core/node/op_raster.py +787 -522
- meerk40t/core/node/place_current.py +37 -40
- meerk40t/core/node/place_point.py +329 -126
- meerk40t/core/node/refnode.py +58 -47
- meerk40t/core/node/rootnode.py +225 -219
- meerk40t/core/node/util_console.py +48 -48
- meerk40t/core/node/util_goto.py +84 -65
- meerk40t/core/node/util_home.py +61 -61
- meerk40t/core/node/util_input.py +102 -102
- meerk40t/core/node/util_output.py +102 -102
- meerk40t/core/node/util_wait.py +65 -65
- meerk40t/core/parameters.py +709 -707
- meerk40t/core/planner.py +875 -785
- meerk40t/core/plotplanner.py +656 -652
- meerk40t/core/space.py +120 -113
- meerk40t/core/spoolers.py +706 -705
- meerk40t/core/svg_io.py +1836 -1549
- meerk40t/core/treeop.py +534 -445
- meerk40t/core/undos.py +278 -124
- meerk40t/core/units.py +784 -680
- meerk40t/core/view.py +393 -322
- meerk40t/core/webhelp.py +62 -62
- meerk40t/core/wordlist.py +513 -504
- meerk40t/cylinder/cylinder.py +247 -0
- meerk40t/cylinder/gui/cylindersettings.py +41 -0
- meerk40t/cylinder/gui/gui.py +24 -0
- meerk40t/device/__init__.py +1 -1
- meerk40t/device/basedevice.py +322 -123
- meerk40t/device/devicechoices.py +50 -0
- meerk40t/device/dummydevice.py +163 -128
- meerk40t/device/gui/defaultactions.py +618 -602
- meerk40t/device/gui/effectspanel.py +114 -0
- meerk40t/device/gui/formatterpanel.py +253 -290
- meerk40t/device/gui/warningpanel.py +337 -260
- meerk40t/device/mixins.py +13 -13
- meerk40t/dxf/__init__.py +1 -1
- meerk40t/dxf/dxf_io.py +766 -554
- meerk40t/dxf/plugin.py +47 -35
- meerk40t/external_plugins.py +79 -79
- meerk40t/external_plugins_build.py +28 -28
- meerk40t/extra/cag.py +112 -116
- meerk40t/extra/coolant.py +403 -0
- meerk40t/extra/encode_detect.py +198 -0
- meerk40t/extra/ezd.py +1165 -1165
- meerk40t/extra/hershey.py +835 -340
- meerk40t/extra/imageactions.py +322 -316
- meerk40t/extra/inkscape.py +630 -622
- meerk40t/extra/lbrn.py +424 -424
- meerk40t/extra/outerworld.py +284 -0
- meerk40t/extra/param_functions.py +1542 -1556
- meerk40t/extra/potrace.py +257 -253
- meerk40t/extra/serial_exchange.py +118 -0
- meerk40t/extra/updater.py +602 -453
- meerk40t/extra/vectrace.py +147 -146
- meerk40t/extra/winsleep.py +83 -83
- meerk40t/extra/xcs_reader.py +597 -0
- meerk40t/fill/fills.py +781 -335
- meerk40t/fill/patternfill.py +1061 -1061
- meerk40t/fill/patterns.py +614 -567
- meerk40t/grbl/control.py +87 -87
- meerk40t/grbl/controller.py +990 -903
- meerk40t/grbl/device.py +1081 -768
- meerk40t/grbl/driver.py +989 -771
- meerk40t/grbl/emulator.py +532 -497
- meerk40t/grbl/gcodejob.py +783 -767
- meerk40t/grbl/gui/grblconfiguration.py +373 -298
- meerk40t/grbl/gui/grblcontroller.py +485 -271
- meerk40t/grbl/gui/grblhardwareconfig.py +269 -153
- meerk40t/grbl/gui/grbloperationconfig.py +105 -0
- meerk40t/grbl/gui/gui.py +147 -116
- meerk40t/grbl/interpreter.py +44 -44
- meerk40t/grbl/loader.py +22 -22
- meerk40t/grbl/mock_connection.py +56 -56
- meerk40t/grbl/plugin.py +294 -264
- meerk40t/grbl/serial_connection.py +93 -88
- meerk40t/grbl/tcp_connection.py +81 -79
- meerk40t/grbl/ws_connection.py +112 -0
- meerk40t/gui/__init__.py +1 -1
- meerk40t/gui/about.py +2042 -296
- meerk40t/gui/alignment.py +1644 -1608
- meerk40t/gui/autoexec.py +199 -0
- meerk40t/gui/basicops.py +791 -670
- meerk40t/gui/bufferview.py +77 -71
- meerk40t/gui/busy.py +170 -133
- meerk40t/gui/choicepropertypanel.py +1673 -1469
- meerk40t/gui/consolepanel.py +706 -542
- meerk40t/gui/devicepanel.py +687 -581
- meerk40t/gui/dialogoptions.py +110 -107
- meerk40t/gui/executejob.py +316 -306
- meerk40t/gui/fonts.py +90 -90
- meerk40t/gui/functionwrapper.py +252 -0
- meerk40t/gui/gui_mixins.py +729 -0
- meerk40t/gui/guicolors.py +205 -182
- meerk40t/gui/help_assets/help_assets.py +218 -201
- meerk40t/gui/helper.py +154 -0
- meerk40t/gui/hersheymanager.py +1430 -846
- meerk40t/gui/icons.py +3422 -2747
- meerk40t/gui/imagesplitter.py +555 -508
- meerk40t/gui/keymap.py +354 -344
- meerk40t/gui/laserpanel.py +892 -806
- meerk40t/gui/laserrender.py +1470 -1232
- meerk40t/gui/lasertoolpanel.py +805 -793
- meerk40t/gui/magnetoptions.py +436 -0
- meerk40t/gui/materialmanager.py +2917 -0
- meerk40t/gui/materialtest.py +1722 -1694
- meerk40t/gui/mkdebug.py +646 -359
- meerk40t/gui/mwindow.py +163 -140
- meerk40t/gui/navigationpanels.py +2605 -2467
- meerk40t/gui/notes.py +143 -142
- meerk40t/gui/opassignment.py +414 -410
- meerk40t/gui/operation_info.py +310 -299
- meerk40t/gui/plugin.py +494 -328
- meerk40t/gui/position.py +714 -669
- meerk40t/gui/preferences.py +901 -650
- meerk40t/gui/propertypanels/attributes.py +1461 -1131
- meerk40t/gui/propertypanels/blobproperty.py +117 -114
- meerk40t/gui/propertypanels/consoleproperty.py +83 -80
- meerk40t/gui/propertypanels/gotoproperty.py +77 -0
- meerk40t/gui/propertypanels/groupproperties.py +223 -217
- meerk40t/gui/propertypanels/hatchproperty.py +489 -469
- meerk40t/gui/propertypanels/imageproperty.py +2244 -1384
- meerk40t/gui/propertypanels/inputproperty.py +59 -58
- meerk40t/gui/propertypanels/opbranchproperties.py +82 -80
- meerk40t/gui/propertypanels/operationpropertymain.py +1890 -1638
- meerk40t/gui/propertypanels/outputproperty.py +59 -58
- meerk40t/gui/propertypanels/pathproperty.py +389 -380
- meerk40t/gui/propertypanels/placementproperty.py +1214 -383
- meerk40t/gui/propertypanels/pointproperty.py +140 -136
- meerk40t/gui/propertypanels/propertywindow.py +313 -181
- meerk40t/gui/propertypanels/rasterwizardpanels.py +996 -912
- meerk40t/gui/propertypanels/regbranchproperties.py +76 -0
- meerk40t/gui/propertypanels/textproperty.py +770 -755
- meerk40t/gui/propertypanels/waitproperty.py +56 -55
- meerk40t/gui/propertypanels/warpproperty.py +121 -0
- meerk40t/gui/propertypanels/wobbleproperty.py +255 -204
- meerk40t/gui/ribbon.py +2468 -2210
- meerk40t/gui/scene/scene.py +1100 -1051
- meerk40t/gui/scene/sceneconst.py +22 -22
- meerk40t/gui/scene/scenepanel.py +439 -349
- meerk40t/gui/scene/scenespacewidget.py +365 -365
- meerk40t/gui/scene/widget.py +518 -505
- meerk40t/gui/scenewidgets/affinemover.py +215 -215
- meerk40t/gui/scenewidgets/attractionwidget.py +315 -309
- meerk40t/gui/scenewidgets/bedwidget.py +120 -97
- meerk40t/gui/scenewidgets/elementswidget.py +137 -107
- meerk40t/gui/scenewidgets/gridwidget.py +785 -745
- meerk40t/gui/scenewidgets/guidewidget.py +765 -765
- meerk40t/gui/scenewidgets/laserpathwidget.py +66 -66
- meerk40t/gui/scenewidgets/machineoriginwidget.py +86 -86
- meerk40t/gui/scenewidgets/nodeselector.py +28 -28
- meerk40t/gui/scenewidgets/rectselectwidget.py +589 -346
- meerk40t/gui/scenewidgets/relocatewidget.py +33 -33
- meerk40t/gui/scenewidgets/reticlewidget.py +83 -83
- meerk40t/gui/scenewidgets/selectionwidget.py +2952 -2756
- meerk40t/gui/simpleui.py +357 -333
- meerk40t/gui/simulation.py +2431 -2094
- meerk40t/gui/snapoptions.py +208 -203
- meerk40t/gui/spoolerpanel.py +1227 -1180
- meerk40t/gui/statusbarwidgets/defaultoperations.py +480 -353
- meerk40t/gui/statusbarwidgets/infowidget.py +520 -483
- meerk40t/gui/statusbarwidgets/opassignwidget.py +356 -355
- meerk40t/gui/statusbarwidgets/selectionwidget.py +172 -171
- meerk40t/gui/statusbarwidgets/shapepropwidget.py +754 -236
- meerk40t/gui/statusbarwidgets/statusbar.py +272 -260
- meerk40t/gui/statusbarwidgets/statusbarwidget.py +268 -270
- meerk40t/gui/statusbarwidgets/strokewidget.py +267 -251
- meerk40t/gui/themes.py +200 -78
- meerk40t/gui/tips.py +591 -0
- meerk40t/gui/toolwidgets/circlebrush.py +35 -35
- meerk40t/gui/toolwidgets/toolcircle.py +248 -242
- meerk40t/gui/toolwidgets/toolcontainer.py +82 -77
- meerk40t/gui/toolwidgets/tooldraw.py +97 -90
- meerk40t/gui/toolwidgets/toolellipse.py +219 -212
- meerk40t/gui/toolwidgets/toolimagecut.py +25 -132
- meerk40t/gui/toolwidgets/toolline.py +39 -144
- meerk40t/gui/toolwidgets/toollinetext.py +79 -236
- meerk40t/gui/toolwidgets/toollinetext_inline.py +296 -0
- meerk40t/gui/toolwidgets/toolmeasure.py +160 -216
- meerk40t/gui/toolwidgets/toolnodeedit.py +2088 -2074
- meerk40t/gui/toolwidgets/toolnodemove.py +92 -94
- meerk40t/gui/toolwidgets/toolparameter.py +754 -668
- meerk40t/gui/toolwidgets/toolplacement.py +108 -108
- meerk40t/gui/toolwidgets/toolpoint.py +68 -59
- meerk40t/gui/toolwidgets/toolpointlistbuilder.py +294 -0
- meerk40t/gui/toolwidgets/toolpointmove.py +183 -0
- meerk40t/gui/toolwidgets/toolpolygon.py +288 -403
- meerk40t/gui/toolwidgets/toolpolyline.py +38 -196
- meerk40t/gui/toolwidgets/toolrect.py +211 -207
- meerk40t/gui/toolwidgets/toolrelocate.py +72 -72
- meerk40t/gui/toolwidgets/toolribbon.py +598 -113
- meerk40t/gui/toolwidgets/tooltabedit.py +546 -0
- meerk40t/gui/toolwidgets/tooltext.py +98 -89
- meerk40t/gui/toolwidgets/toolvector.py +213 -204
- meerk40t/gui/toolwidgets/toolwidget.py +39 -39
- meerk40t/gui/usbconnect.py +98 -91
- meerk40t/gui/utilitywidgets/buttonwidget.py +18 -18
- meerk40t/gui/utilitywidgets/checkboxwidget.py +90 -90
- meerk40t/gui/utilitywidgets/controlwidget.py +14 -14
- meerk40t/gui/utilitywidgets/cyclocycloidwidget.py +343 -340
- meerk40t/gui/utilitywidgets/debugwidgets.py +148 -0
- meerk40t/gui/utilitywidgets/handlewidget.py +27 -27
- meerk40t/gui/utilitywidgets/harmonograph.py +450 -447
- meerk40t/gui/utilitywidgets/openclosewidget.py +40 -40
- meerk40t/gui/utilitywidgets/rotationwidget.py +54 -54
- meerk40t/gui/utilitywidgets/scalewidget.py +75 -75
- meerk40t/gui/utilitywidgets/seekbarwidget.py +183 -183
- meerk40t/gui/utilitywidgets/togglewidget.py +142 -142
- meerk40t/gui/utilitywidgets/toolbarwidget.py +8 -8
- meerk40t/gui/wordlisteditor.py +985 -931
- meerk40t/gui/wxmeerk40t.py +1444 -1169
- meerk40t/gui/wxmmain.py +5578 -4112
- meerk40t/gui/wxmribbon.py +1591 -1076
- meerk40t/gui/wxmscene.py +1635 -1453
- meerk40t/gui/wxmtree.py +2410 -2089
- meerk40t/gui/wxutils.py +1769 -1099
- meerk40t/gui/zmatrix.py +102 -102
- meerk40t/image/__init__.py +1 -1
- meerk40t/image/dither.py +429 -0
- meerk40t/image/imagetools.py +2778 -2269
- meerk40t/internal_plugins.py +150 -130
- meerk40t/kernel/__init__.py +63 -12
- meerk40t/kernel/channel.py +259 -212
- meerk40t/kernel/context.py +538 -538
- meerk40t/kernel/exceptions.py +41 -41
- meerk40t/kernel/functions.py +463 -414
- meerk40t/kernel/jobs.py +100 -100
- meerk40t/kernel/kernel.py +3809 -3571
- meerk40t/kernel/lifecycles.py +71 -71
- meerk40t/kernel/module.py +49 -49
- meerk40t/kernel/service.py +147 -147
- meerk40t/kernel/settings.py +383 -343
- meerk40t/lihuiyu/controller.py +883 -876
- meerk40t/lihuiyu/device.py +1181 -1069
- meerk40t/lihuiyu/driver.py +1466 -1372
- meerk40t/lihuiyu/gui/gui.py +127 -106
- meerk40t/lihuiyu/gui/lhyaccelgui.py +377 -363
- meerk40t/lihuiyu/gui/lhycontrollergui.py +741 -651
- meerk40t/lihuiyu/gui/lhydrivergui.py +470 -446
- meerk40t/lihuiyu/gui/lhyoperationproperties.py +238 -237
- meerk40t/lihuiyu/gui/tcpcontroller.py +226 -190
- meerk40t/lihuiyu/interpreter.py +53 -53
- meerk40t/lihuiyu/laserspeed.py +450 -450
- meerk40t/lihuiyu/loader.py +90 -90
- meerk40t/lihuiyu/parser.py +404 -404
- meerk40t/lihuiyu/plugin.py +101 -102
- meerk40t/lihuiyu/tcp_connection.py +111 -109
- meerk40t/main.py +231 -165
- meerk40t/moshi/builder.py +788 -781
- meerk40t/moshi/controller.py +505 -499
- meerk40t/moshi/device.py +495 -442
- meerk40t/moshi/driver.py +862 -696
- meerk40t/moshi/gui/gui.py +78 -76
- meerk40t/moshi/gui/moshicontrollergui.py +538 -522
- meerk40t/moshi/gui/moshidrivergui.py +87 -75
- meerk40t/moshi/plugin.py +43 -43
- meerk40t/network/console_server.py +102 -57
- meerk40t/network/kernelserver.py +10 -9
- meerk40t/network/tcp_server.py +142 -140
- meerk40t/network/udp_server.py +103 -77
- meerk40t/network/web_server.py +390 -0
- meerk40t/newly/controller.py +1158 -1144
- meerk40t/newly/device.py +874 -732
- meerk40t/newly/driver.py +540 -412
- meerk40t/newly/gui/gui.py +219 -188
- meerk40t/newly/gui/newlyconfig.py +116 -101
- meerk40t/newly/gui/newlycontroller.py +193 -186
- meerk40t/newly/gui/operationproperties.py +51 -51
- meerk40t/newly/mock_connection.py +82 -82
- meerk40t/newly/newly_params.py +56 -56
- meerk40t/newly/plugin.py +1214 -1246
- meerk40t/newly/usb_connection.py +322 -322
- meerk40t/rotary/gui/gui.py +52 -46
- meerk40t/rotary/gui/rotarysettings.py +240 -232
- meerk40t/rotary/rotary.py +202 -98
- meerk40t/ruida/control.py +291 -91
- meerk40t/ruida/controller.py +138 -1088
- meerk40t/ruida/device.py +672 -231
- meerk40t/ruida/driver.py +534 -472
- meerk40t/ruida/emulator.py +1494 -1491
- meerk40t/ruida/exceptions.py +4 -4
- meerk40t/ruida/gui/gui.py +71 -76
- meerk40t/ruida/gui/ruidaconfig.py +239 -72
- meerk40t/ruida/gui/ruidacontroller.py +187 -184
- meerk40t/ruida/gui/ruidaoperationproperties.py +48 -47
- meerk40t/ruida/loader.py +54 -52
- meerk40t/ruida/mock_connection.py +57 -109
- meerk40t/ruida/plugin.py +124 -87
- meerk40t/ruida/rdjob.py +2084 -945
- meerk40t/ruida/serial_connection.py +116 -0
- meerk40t/ruida/tcp_connection.py +146 -0
- meerk40t/ruida/udp_connection.py +73 -0
- meerk40t/svgelements.py +9671 -9669
- meerk40t/tools/driver_to_path.py +584 -579
- meerk40t/tools/geomstr.py +5583 -4680
- meerk40t/tools/jhfparser.py +357 -292
- meerk40t/tools/kerftest.py +904 -890
- meerk40t/tools/livinghinges.py +1168 -1033
- meerk40t/tools/pathtools.py +987 -949
- meerk40t/tools/pmatrix.py +234 -0
- meerk40t/tools/pointfinder.py +942 -942
- meerk40t/tools/polybool.py +940 -940
- meerk40t/tools/rasterplotter.py +1660 -547
- meerk40t/tools/shxparser.py +989 -901
- meerk40t/tools/ttfparser.py +726 -446
- meerk40t/tools/zinglplotter.py +595 -593
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/LICENSE +21 -21
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/METADATA +150 -139
- meerk40t-0.9.7010.dist-info/RECORD +445 -0
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/WHEEL +1 -1
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/top_level.txt +0 -1
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/zip-safe +1 -1
- meerk40t/balormk/elementlightjob.py +0 -159
- meerk40t-0.9.3001.dist-info/RECORD +0 -437
- test/bootstrap.py +0 -63
- test/test_cli.py +0 -12
- test/test_core_cutcode.py +0 -418
- test/test_core_elements.py +0 -144
- test/test_core_plotplanner.py +0 -397
- test/test_core_viewports.py +0 -312
- test/test_drivers_grbl.py +0 -108
- test/test_drivers_lihuiyu.py +0 -443
- test/test_drivers_newly.py +0 -113
- test/test_element_degenerate_points.py +0 -43
- test/test_elements_classify.py +0 -97
- test/test_elements_penbox.py +0 -22
- test/test_file_svg.py +0 -176
- test/test_fill.py +0 -155
- test/test_geomstr.py +0 -1523
- test/test_geomstr_nodes.py +0 -18
- test/test_imagetools_actualize.py +0 -306
- test/test_imagetools_wizard.py +0 -258
- test/test_kernel.py +0 -200
- test/test_laser_speeds.py +0 -3303
- test/test_length.py +0 -57
- test/test_lifecycle.py +0 -66
- test/test_operations.py +0 -251
- test/test_operations_hatch.py +0 -57
- test/test_ruida.py +0 -19
- test/test_spooler.py +0 -22
- test/test_tools_rasterplotter.py +0 -29
- test/test_wobble.py +0 -133
- test/test_zingl.py +0 -124
- {test → meerk40t/cylinder}/__init__.py +0 -0
- /meerk40t/{core/element_commands.py → cylinder/gui/__init__.py} +0 -0
- {meerk40t-0.9.3001.dist-info → meerk40t-0.9.7010.dist-info}/entry_points.txt +0 -0
meerk40t/dxf/plugin.py
CHANGED
@@ -1,35 +1,47 @@
|
|
1
|
-
def plugin(kernel, lifecycle=None):
|
2
|
-
if lifecycle == "invalidate":
|
3
|
-
try:
|
4
|
-
import ezdxf # pylint: disable=unused-import
|
5
|
-
except ImportError:
|
6
|
-
print("DXF plugin could not load because ezdxf is not installed.")
|
7
|
-
return True
|
8
|
-
try:
|
9
|
-
# Includes ezdxf and all required imports therein
|
10
|
-
from meerk40t.dxf.dxf_io import DxfLoader
|
11
|
-
except ImportError:
|
12
|
-
print(
|
13
|
-
"DXF plugin could not load because, though ezdxf is installed, the version isn't supported."
|
14
|
-
)
|
15
|
-
return True
|
16
|
-
elif lifecycle == "register":
|
17
|
-
from meerk40t.dxf.dxf_io import DxfLoader
|
18
|
-
|
19
|
-
kernel.register("load/DxfLoader", DxfLoader)
|
20
|
-
_ = kernel.translation
|
21
|
-
choices = [
|
22
|
-
{
|
23
|
-
"attr": "dxf_center",
|
24
|
-
"object": kernel.elements,
|
25
|
-
"default": True,
|
26
|
-
"type": bool,
|
27
|
-
"label": _("DXF Center and Fit"),
|
28
|
-
"tip": _(
|
29
|
-
"Fit (scale down if necessary) and center a DXF file within the bed"
|
30
|
-
),
|
31
|
-
"page": "Input/Output",
|
32
|
-
"section": "Input",
|
33
|
-
},
|
34
|
-
|
35
|
-
|
1
|
+
def plugin(kernel, lifecycle=None):
|
2
|
+
if lifecycle == "invalidate":
|
3
|
+
try:
|
4
|
+
import ezdxf # pylint: disable=unused-import
|
5
|
+
except ImportError:
|
6
|
+
print("DXF plugin could not load because ezdxf is not installed.")
|
7
|
+
return True
|
8
|
+
try:
|
9
|
+
# Includes ezdxf and all required imports therein
|
10
|
+
from meerk40t.dxf.dxf_io import DxfLoader
|
11
|
+
except ImportError:
|
12
|
+
print(
|
13
|
+
"DXF plugin could not load because, though ezdxf is installed, the version isn't supported."
|
14
|
+
)
|
15
|
+
return True
|
16
|
+
elif lifecycle == "register":
|
17
|
+
from meerk40t.dxf.dxf_io import DxfLoader
|
18
|
+
|
19
|
+
kernel.register("load/DxfLoader", DxfLoader)
|
20
|
+
_ = kernel.translation
|
21
|
+
choices = [
|
22
|
+
{
|
23
|
+
"attr": "dxf_center",
|
24
|
+
"object": kernel.elements,
|
25
|
+
"default": True,
|
26
|
+
"type": bool,
|
27
|
+
"label": _("DXF Center and Fit"),
|
28
|
+
"tip": _(
|
29
|
+
"Fit (scale down if necessary) and center a DXF file within the bed"
|
30
|
+
),
|
31
|
+
"page": "Input/Output",
|
32
|
+
"section": "Input",
|
33
|
+
},
|
34
|
+
{
|
35
|
+
"attr": "dxf_try_unsupported",
|
36
|
+
"object": kernel.elements,
|
37
|
+
"default": True,
|
38
|
+
"type": bool,
|
39
|
+
"label": _("DXF: Try to read 3D-polylines"),
|
40
|
+
"tip": _(
|
41
|
+
"Tries to use dxf 3D-polylines, disable it if the file contains meshes or other 3D data"
|
42
|
+
),
|
43
|
+
"page": "Input/Output",
|
44
|
+
"section": "Input",
|
45
|
+
},
|
46
|
+
]
|
47
|
+
kernel.register_choices("preferences", choices)
|
meerk40t/external_plugins.py
CHANGED
@@ -1,79 +1,79 @@
|
|
1
|
-
"""
|
2
|
-
These are external plugins. They are dynamically found by entry points. This file is replaced with the build file during
|
3
|
-
builds, since compiled versions do not have access to entry points. External plugins therefore must be hard-coded for
|
4
|
-
builds. See the external_plugin_build.py file for regular built plugins.
|
5
|
-
"""
|
6
|
-
|
7
|
-
MEERK40T_ENTRYPOINT = "meerk40t.extension"
|
8
|
-
|
9
|
-
|
10
|
-
def plugins_pre_38():
|
11
|
-
"""
|
12
|
-
Import plugins using pkg_resources. pkg_resources was deprecated in 3.10 and removed in 3.12
|
13
|
-
@return:
|
14
|
-
"""
|
15
|
-
import pkg_resources
|
16
|
-
|
17
|
-
for entry_point in pkg_resources.iter_entry_points(MEERK40T_ENTRYPOINT):
|
18
|
-
try:
|
19
|
-
|
20
|
-
except pkg_resources.DistributionNotFound:
|
21
|
-
pass
|
22
|
-
except pkg_resources.VersionConflict as e:
|
23
|
-
print(
|
24
|
-
"Cannot install plugin - '{entrypoint}' due to version conflict.".format(
|
25
|
-
entrypoint=str(entry_point)
|
26
|
-
)
|
27
|
-
)
|
28
|
-
print(e)
|
29
|
-
else:
|
30
|
-
yield
|
31
|
-
|
32
|
-
|
33
|
-
def plugins_importlib():
|
34
|
-
"""
|
35
|
-
Import entry points with importlib.
|
36
|
-
|
37
|
-
@return:
|
38
|
-
"""
|
39
|
-
from importlib.metadata import entry_points
|
40
|
-
|
41
|
-
entry_points = entry_points()
|
42
|
-
|
43
|
-
try:
|
44
|
-
ep = entry_points.select(group=MEERK40T_ENTRYPOINT)
|
45
|
-
except AttributeError:
|
46
|
-
ep = entry_points.get(MEERK40T_ENTRYPOINT)
|
47
|
-
|
48
|
-
if ep is None:
|
49
|
-
return []
|
50
|
-
|
51
|
-
for entry_point in ep:
|
52
|
-
try:
|
53
|
-
yield entry_point.load()
|
54
|
-
except ImportError as e:
|
55
|
-
print(
|
56
|
-
"Cannot install plugin - '{entrypoint}'.".format(
|
57
|
-
entrypoint=str(entry_point.value)
|
58
|
-
)
|
59
|
-
)
|
60
|
-
print(e)
|
61
|
-
|
62
|
-
|
63
|
-
def plugin(kernel, lifecycle):
|
64
|
-
import sys
|
65
|
-
|
66
|
-
if lifecycle == "plugins":
|
67
|
-
if getattr(sys, "frozen", False):
|
68
|
-
return
|
69
|
-
if kernel.args.no_plugins:
|
70
|
-
return
|
71
|
-
|
72
|
-
try:
|
73
|
-
return list(plugins_importlib())
|
74
|
-
except ImportError:
|
75
|
-
return list(plugins_pre_38())
|
76
|
-
|
77
|
-
if lifecycle == "invalidate":
|
78
|
-
# Do not maintain plugin.
|
79
|
-
return True
|
1
|
+
"""
|
2
|
+
These are external plugins. They are dynamically found by entry points. This file is replaced with the build file during
|
3
|
+
builds, since compiled versions do not have access to entry points. External plugins therefore must be hard-coded for
|
4
|
+
builds. See the external_plugin_build.py file for regular built plugins.
|
5
|
+
"""
|
6
|
+
|
7
|
+
MEERK40T_ENTRYPOINT = "meerk40t.extension"
|
8
|
+
|
9
|
+
|
10
|
+
def plugins_pre_38():
|
11
|
+
"""
|
12
|
+
Import plugins using pkg_resources. pkg_resources was deprecated in 3.10 and removed in 3.12
|
13
|
+
@return:
|
14
|
+
"""
|
15
|
+
import pkg_resources
|
16
|
+
|
17
|
+
for entry_point in pkg_resources.iter_entry_points(MEERK40T_ENTRYPOINT):
|
18
|
+
try:
|
19
|
+
ep_plugin = entry_point.load()
|
20
|
+
except pkg_resources.DistributionNotFound:
|
21
|
+
pass
|
22
|
+
except pkg_resources.VersionConflict as e:
|
23
|
+
print(
|
24
|
+
"Cannot install plugin - '{entrypoint}' due to version conflict.".format(
|
25
|
+
entrypoint=str(entry_point)
|
26
|
+
)
|
27
|
+
)
|
28
|
+
print(e)
|
29
|
+
else:
|
30
|
+
yield ep_plugin
|
31
|
+
|
32
|
+
|
33
|
+
def plugins_importlib():
|
34
|
+
"""
|
35
|
+
Import entry points with importlib.
|
36
|
+
|
37
|
+
@return:
|
38
|
+
"""
|
39
|
+
from importlib.metadata import entry_points
|
40
|
+
|
41
|
+
entry_points = entry_points()
|
42
|
+
|
43
|
+
try:
|
44
|
+
ep = entry_points.select(group=MEERK40T_ENTRYPOINT)
|
45
|
+
except AttributeError:
|
46
|
+
ep = entry_points.get(MEERK40T_ENTRYPOINT)
|
47
|
+
|
48
|
+
if ep is None:
|
49
|
+
return []
|
50
|
+
|
51
|
+
for entry_point in ep:
|
52
|
+
try:
|
53
|
+
yield entry_point.load()
|
54
|
+
except ImportError as e:
|
55
|
+
print(
|
56
|
+
"Cannot install plugin - '{entrypoint}'.".format(
|
57
|
+
entrypoint=str(entry_point.value)
|
58
|
+
)
|
59
|
+
)
|
60
|
+
print(e)
|
61
|
+
|
62
|
+
|
63
|
+
def plugin(kernel, lifecycle):
|
64
|
+
import sys
|
65
|
+
|
66
|
+
if lifecycle == "plugins":
|
67
|
+
if getattr(sys, "frozen", False):
|
68
|
+
return
|
69
|
+
if kernel.args.no_plugins:
|
70
|
+
return
|
71
|
+
|
72
|
+
try:
|
73
|
+
return list(plugins_importlib())
|
74
|
+
except ImportError:
|
75
|
+
return list(plugins_pre_38())
|
76
|
+
|
77
|
+
if lifecycle == "invalidate":
|
78
|
+
# Do not maintain plugin.
|
79
|
+
return True
|
@@ -1,28 +1,28 @@
|
|
1
|
-
"""
|
2
|
-
This file is used in builds to replace the dynamic plugins file. This file should not be included anywhere. It should
|
3
|
-
be swapped during a full build so that entry_points get switched for hard-linked references. This ensures that builds
|
4
|
-
can contain a list of useful desired plugins.
|
5
|
-
|
6
|
-
If you have written such a plugin, raise an issue to have it reviewed and included into the builds.
|
7
|
-
"""
|
8
|
-
|
9
|
-
|
10
|
-
def plugin(kernel, lifecycle):
|
11
|
-
if lifecycle == "plugins":
|
12
|
-
if kernel.args.no_plugins:
|
13
|
-
# If no plugins was requested, we do not load these plugins.
|
14
|
-
return
|
15
|
-
|
16
|
-
plugins = list()
|
17
|
-
|
18
|
-
"""
|
19
|
-
This loads Jpirnay's meerk40t-barcodes plugin.
|
20
|
-
|
21
|
-
https://github.com/meerk40t/meerk40t-barcodes
|
22
|
-
"""
|
23
|
-
|
24
|
-
from barcodes.main import plugin as barplugin
|
25
|
-
|
26
|
-
plugins.append(barplugin)
|
27
|
-
|
28
|
-
return plugins
|
1
|
+
"""
|
2
|
+
This file is used in builds to replace the dynamic plugins file. This file should not be included anywhere. It should
|
3
|
+
be swapped during a full build so that entry_points get switched for hard-linked references. This ensures that builds
|
4
|
+
can contain a list of useful desired plugins.
|
5
|
+
|
6
|
+
If you have written such a plugin, raise an issue to have it reviewed and included into the builds.
|
7
|
+
"""
|
8
|
+
|
9
|
+
|
10
|
+
def plugin(kernel, lifecycle):
|
11
|
+
if lifecycle == "plugins":
|
12
|
+
if kernel.args.no_plugins:
|
13
|
+
# If no plugins was requested, we do not load these plugins.
|
14
|
+
return
|
15
|
+
|
16
|
+
plugins = list()
|
17
|
+
|
18
|
+
"""
|
19
|
+
This loads Jpirnay's meerk40t-barcodes plugin.
|
20
|
+
|
21
|
+
https://github.com/meerk40t/meerk40t-barcodes
|
22
|
+
"""
|
23
|
+
|
24
|
+
from barcodes.main import plugin as barplugin
|
25
|
+
|
26
|
+
plugins.append(barplugin)
|
27
|
+
|
28
|
+
return plugins
|
meerk40t/extra/cag.py
CHANGED
@@ -1,116 +1,112 @@
|
|
1
|
-
from meerk40t.svgelements import Color, Path, Polygon
|
2
|
-
|
3
|
-
|
4
|
-
def plugin(kernel, lifecycle):
|
5
|
-
if lifecycle == "invalidate":
|
6
|
-
try:
|
7
|
-
import numpy as np # pylint: disable=unused-import
|
8
|
-
except ImportError:
|
9
|
-
return True
|
10
|
-
elif lifecycle == "register":
|
11
|
-
from ..core.elements.elements import linearize_path
|
12
|
-
from ..tools import polybool as pb
|
13
|
-
|
14
|
-
_ = kernel.translation
|
15
|
-
context = kernel.root
|
16
|
-
|
17
|
-
@context.console_option(
|
18
|
-
"keep", "k", type=bool, action="store_true", help="keep original elements"
|
19
|
-
)
|
20
|
-
@context.console_command(
|
21
|
-
("intersection", "xor", "union", "difference"),
|
22
|
-
input_type="elements",
|
23
|
-
output_type="elements",
|
24
|
-
help=_("Constructive Additive Geometry: Add"),
|
25
|
-
)
|
26
|
-
def cag(command, channel, _, keep=False, data=None, **kwargs):
|
27
|
-
if len(data) < 2:
|
28
|
-
channel(
|
29
|
-
_(
|
30
|
-
"Not enough items selected to apply constructive geometric function"
|
31
|
-
)
|
32
|
-
)
|
33
|
-
return "elements", []
|
34
|
-
|
35
|
-
elements = context.elements
|
36
|
-
solution_path = Path(
|
37
|
-
stroke=elements.default_stroke,
|
38
|
-
stroke_width=elements.default_strokewidth,
|
39
|
-
fill=elements.default_fill,
|
40
|
-
)
|
41
|
-
|
42
|
-
# reorder elements
|
43
|
-
data.sort(key=lambda n: n.emphasized_time)
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
)
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
elements
|
113
|
-
return "elements", [node]
|
114
|
-
else:
|
115
|
-
channel(_("No solution found (empty path)"))
|
116
|
-
return "elements", []
|
1
|
+
from meerk40t.svgelements import Color, Path, Polygon
|
2
|
+
|
3
|
+
|
4
|
+
def plugin(kernel, lifecycle):
|
5
|
+
if lifecycle == "invalidate":
|
6
|
+
try:
|
7
|
+
import numpy as np # pylint: disable=unused-import
|
8
|
+
except ImportError:
|
9
|
+
return True
|
10
|
+
elif lifecycle == "register":
|
11
|
+
from ..core.elements.elements import linearize_path
|
12
|
+
from ..tools import polybool as pb
|
13
|
+
|
14
|
+
_ = kernel.translation
|
15
|
+
context = kernel.root
|
16
|
+
|
17
|
+
@context.console_option(
|
18
|
+
"keep", "k", type=bool, action="store_true", help="keep original elements"
|
19
|
+
)
|
20
|
+
@context.console_command(
|
21
|
+
("intersection", "xor", "union", "difference"),
|
22
|
+
input_type="elements",
|
23
|
+
output_type="elements",
|
24
|
+
help=_("Constructive Additive Geometry: Add"),
|
25
|
+
)
|
26
|
+
def cag(command, channel, _, keep=False, data=None, **kwargs):
|
27
|
+
if len(data) < 2:
|
28
|
+
channel(
|
29
|
+
_(
|
30
|
+
"Not enough items selected to apply constructive geometric function"
|
31
|
+
)
|
32
|
+
)
|
33
|
+
return "elements", []
|
34
|
+
|
35
|
+
elements = context.elements
|
36
|
+
solution_path = Path(
|
37
|
+
stroke=elements.default_stroke,
|
38
|
+
stroke_width=elements.default_strokewidth,
|
39
|
+
fill=elements.default_fill,
|
40
|
+
)
|
41
|
+
|
42
|
+
# reorder elements
|
43
|
+
data.sort(key=lambda n: n.emphasized_time)
|
44
|
+
|
45
|
+
last_fill = None
|
46
|
+
last_stroke = None
|
47
|
+
last_stroke_width = None
|
48
|
+
segment_list = []
|
49
|
+
for i, node in enumerate(data):
|
50
|
+
try:
|
51
|
+
path = abs(node.as_path())
|
52
|
+
except AttributeError:
|
53
|
+
return "elements", data
|
54
|
+
if last_fill is None and hasattr(node, "fill"):
|
55
|
+
last_fill = node.fill
|
56
|
+
if last_stroke is None and hasattr(node, "stroke"):
|
57
|
+
last_stroke = node.stroke
|
58
|
+
last_stroke_width = node.stroke_width
|
59
|
+
c = linearize_path(path)
|
60
|
+
try:
|
61
|
+
c = pb.Polygon(c)
|
62
|
+
c = pb.segments(c)
|
63
|
+
segment_list.append(c)
|
64
|
+
except pb.PolyBoolException:
|
65
|
+
channel(_("Polybool could not solve."))
|
66
|
+
if not segment_list:
|
67
|
+
return "elements", data
|
68
|
+
segs = segment_list[0]
|
69
|
+
for s in segment_list[1:]:
|
70
|
+
try:
|
71
|
+
combined = pb.combine(segs, s)
|
72
|
+
if command == "intersection":
|
73
|
+
segs = pb.selectIntersect(combined)
|
74
|
+
elif command == "xor":
|
75
|
+
segs = pb.selectXor(combined)
|
76
|
+
elif command == "union":
|
77
|
+
segs = pb.selectUnion(combined)
|
78
|
+
else:
|
79
|
+
# difference
|
80
|
+
segs = pb.selectDifference(combined)
|
81
|
+
except pb.PolyBoolException:
|
82
|
+
channel(_("Polybool could not solve."))
|
83
|
+
|
84
|
+
last_polygon = pb.polygon(segs)
|
85
|
+
for se in last_polygon.regions:
|
86
|
+
r = Polygon(*[(p.x, p.y) for p in se])
|
87
|
+
if solution_path is None:
|
88
|
+
solution_path = Path(r)
|
89
|
+
else:
|
90
|
+
solution_path += Path(r)
|
91
|
+
if solution_path:
|
92
|
+
with elements.undoscope("Constructive Additive Geometry: Add"):
|
93
|
+
if not keep:
|
94
|
+
for node in data:
|
95
|
+
node.remove_node()
|
96
|
+
stroke = last_stroke if last_stroke is not None else Color("blue")
|
97
|
+
fill = last_fill
|
98
|
+
stroke_width = last_stroke_width if last_stroke_width is not None else elements.default_strokewidth
|
99
|
+
new_node = elements.elem_branch.add(
|
100
|
+
path=solution_path,
|
101
|
+
type="elem path",
|
102
|
+
stroke=stroke,
|
103
|
+
fill=fill,
|
104
|
+
stroke_width=stroke_width,
|
105
|
+
)
|
106
|
+
context.signal("refresh_scene", "Scene")
|
107
|
+
if elements.classify_new:
|
108
|
+
elements.classify([new_node])
|
109
|
+
return "elements", [node]
|
110
|
+
else:
|
111
|
+
channel(_("No solution found (empty path)"))
|
112
|
+
return "elements", []
|