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
test/test_drivers_grbl.py
DELETED
@@ -1,108 +0,0 @@
|
|
1
|
-
import os
|
2
|
-
import unittest
|
3
|
-
from test import bootstrap
|
4
|
-
|
5
|
-
gcode_rect = """G90
|
6
|
-
G94
|
7
|
-
G21
|
8
|
-
M4
|
9
|
-
G0 X19.990 Y205.003 S0.0 F600.0
|
10
|
-
G1 X19.990 Y215.011 S1000.0 F900.0
|
11
|
-
G1 X29.997 Y215.011
|
12
|
-
G1 X29.997 Y205.003
|
13
|
-
G1 X19.990 Y205.003
|
14
|
-
G1 S0
|
15
|
-
M5
|
16
|
-
"""
|
17
|
-
|
18
|
-
gcode_blank = ""
|
19
|
-
|
20
|
-
|
21
|
-
class TestDriverGRBL(unittest.TestCase):
|
22
|
-
def test_reload_devices_grbl(self):
|
23
|
-
"""
|
24
|
-
We start a new bootstrap, delete any services that would have existed previously. Add several grbl services.
|
25
|
-
Shutdown the bootstrap. Reload. Test if those other services also booted back up.
|
26
|
-
@return:
|
27
|
-
"""
|
28
|
-
kernel = bootstrap.bootstrap(profile="MeerK40t_GRBL")
|
29
|
-
try:
|
30
|
-
for i in range(10):
|
31
|
-
kernel.console(f"service device destroy {i}\n")
|
32
|
-
kernel.console("service device start -i grbl 0\n")
|
33
|
-
kernel.console("service device start -i grbl 1\n")
|
34
|
-
kernel.console("service device start -i grbl 2\n")
|
35
|
-
kernel.console("service list\n")
|
36
|
-
kernel.console("contexts\n")
|
37
|
-
kernel.console("plugins\n")
|
38
|
-
finally:
|
39
|
-
kernel.shutdown()
|
40
|
-
|
41
|
-
kernel = bootstrap.bootstrap(profile="MeerK40t_GRBL")
|
42
|
-
try:
|
43
|
-
devs = [name for name in kernel.contexts if name.startswith("grbl")]
|
44
|
-
self.assertGreater(len(devs), 1)
|
45
|
-
finally:
|
46
|
-
kernel.shutdown()
|
47
|
-
|
48
|
-
def test_driver_basic_rect_engrave(self):
|
49
|
-
"""
|
50
|
-
@return:
|
51
|
-
"""
|
52
|
-
file1 = "te.gcode"
|
53
|
-
self.addCleanup(os.remove, file1)
|
54
|
-
|
55
|
-
kernel = bootstrap.bootstrap()
|
56
|
-
try:
|
57
|
-
kernel.console("service device start -i grbl 0\n")
|
58
|
-
kernel.console("operation* remove\n")
|
59
|
-
kernel.console(
|
60
|
-
f"rect 2cm 2cm 1cm 1cm engrave -s 15 plan copy-selected preprocess validate blob preopt optimize save_job {file1}\n"
|
61
|
-
)
|
62
|
-
finally:
|
63
|
-
kernel.shutdown()
|
64
|
-
with open(file1) as f:
|
65
|
-
data = f.read()
|
66
|
-
self.assertEqual(gcode_rect, data)
|
67
|
-
|
68
|
-
def test_driver_basic_rect_cut(self):
|
69
|
-
"""
|
70
|
-
@return:
|
71
|
-
"""
|
72
|
-
file1 = "tc.gcode"
|
73
|
-
self.addCleanup(os.remove, file1)
|
74
|
-
|
75
|
-
kernel = bootstrap.bootstrap()
|
76
|
-
try:
|
77
|
-
kernel.console("service device start -i grbl 0\n")
|
78
|
-
kernel.console("operation* remove\n")
|
79
|
-
kernel.console(
|
80
|
-
f"rect 2cm 2cm 1cm 1cm cut -s 15 plan copy-selected preprocess validate blob preopt optimize save_job {file1}\n"
|
81
|
-
)
|
82
|
-
finally:
|
83
|
-
kernel.shutdown()
|
84
|
-
with open(file1) as f:
|
85
|
-
data = f.read()
|
86
|
-
self.assertEqual(gcode_rect, data)
|
87
|
-
|
88
|
-
def test_driver_basic_rect_raster(self):
|
89
|
-
"""
|
90
|
-
Attempts a raster operation however wxPython isn't available so nothing is produced.
|
91
|
-
|
92
|
-
@return:
|
93
|
-
"""
|
94
|
-
file1 = "tr.gcode"
|
95
|
-
self.addCleanup(os.remove, file1)
|
96
|
-
|
97
|
-
kernel = bootstrap.bootstrap()
|
98
|
-
try:
|
99
|
-
kernel.console("service device start -i grbl 0\n")
|
100
|
-
kernel.console("operation* remove\n")
|
101
|
-
kernel.console(
|
102
|
-
f"rect 2cm 2cm 1cm 1cm raster -s 15 plan copy-selected preprocess validate blob preopt optimize save_job {file1}\n"
|
103
|
-
)
|
104
|
-
finally:
|
105
|
-
kernel.shutdown()
|
106
|
-
with open(file1) as f:
|
107
|
-
data = f.read()
|
108
|
-
self.assertEqual(data, gcode_blank)
|
test/test_drivers_lihuiyu.py
DELETED
@@ -1,443 +0,0 @@
|
|
1
|
-
import os
|
2
|
-
import unittest
|
3
|
-
from test import bootstrap
|
4
|
-
|
5
|
-
from PIL import Image, ImageDraw
|
6
|
-
|
7
|
-
from meerk40t.core.node.elem_image import ImageNode
|
8
|
-
from meerk40t.core.units import UNITS_PER_MM
|
9
|
-
from meerk40t.svgelements import Matrix
|
10
|
-
|
11
|
-
egv_rect = """Document type : LHYMICRO-GL file
|
12
|
-
File version: 1.0.01
|
13
|
-
Copyright: Unknown
|
14
|
-
Creator-Software: MeerK40t v0.0.0-testing
|
15
|
-
|
16
|
-
%0%0%0%0%
|
17
|
-
IBzzzvRzzzvS1P
|
18
|
-
ICV2490731016000027CNLBS1EDz139Rz139Tz139Lz139FNSE-
|
19
|
-
"""
|
20
|
-
|
21
|
-
egv_image = """Document type : LHYMICRO-GL file
|
22
|
-
File version: 1.0.01
|
23
|
-
Copyright: Unknown
|
24
|
-
Creator-Software: MeerK40t v0.0.0-testing
|
25
|
-
|
26
|
-
%0%0%0%0%
|
27
|
-
IB067R091S1P
|
28
|
-
IV1552121G002NLTS1EDnU|sB|oD|aU|qT|oD|iU|oB|oD|mU|qT|oD|sU|oB|oD|uU|oT|oD|yU|oB|oD054U|mT|oD054U|oB|oD058U|mT|oD058U|mB|oD058U|oT|oD062U|mB|oD062U|mT|oD062U|mB|oD062U|mT|oD062U|mB|oD062U|mT|oD062U|mB|qD058U|mT|oD058U|mB|oD058U|mT|qD054U|mB|oD054U|mT|qD|yU|mB|qD|uU|mT|qD|qU|mB|qD|mU|mT|qD|iU|mB|sD|aU|mT|uDlFNSE-
|
29
|
-
"""
|
30
|
-
|
31
|
-
egv_blank = """Document type : LHYMICRO-GL file
|
32
|
-
File version: 1.0.01
|
33
|
-
Copyright: Unknown
|
34
|
-
Creator-Software: MeerK40t v0.0.0-testing
|
35
|
-
|
36
|
-
%0%0%0%0%
|
37
|
-
"""
|
38
|
-
|
39
|
-
egv_override_speed_1_rect = """Document type : LHYMICRO-GL file
|
40
|
-
File version: 1.0.01
|
41
|
-
Copyright: Unknown
|
42
|
-
Creator-Software: MeerK40t v0.0.0-testing
|
43
|
-
|
44
|
-
%0%0%0%0%
|
45
|
-
ICV2452421011000060CNBRS1EMzzzvFNSE-
|
46
|
-
ICV2490731016000027CNLBS1EDz139Rz139Tz139Lz139FNSE-
|
47
|
-
"""
|
48
|
-
|
49
|
-
egv_override_speed_2_rect = """Document type : LHYMICRO-GL file
|
50
|
-
File version: 1.0.01
|
51
|
-
Copyright: Unknown
|
52
|
-
Creator-Software: MeerK40t v0.0.0-testing
|
53
|
-
|
54
|
-
%0%0%0%0%
|
55
|
-
ICV2452421011000060CNBRS1EMzzzvFNSE-
|
56
|
-
ICV2490731016000027CNLBS1EDz139Rz139Tz139Lz139FNSE-
|
57
|
-
ICV2452421011000060CNBRS1EMzzzwFNSE-
|
58
|
-
ICV2490731016000027CNLBS1EDz139Rz139Tz139Lz139FNSE-
|
59
|
-
"""
|
60
|
-
|
61
|
-
|
62
|
-
class TestDriverLihuiyu(unittest.TestCase):
|
63
|
-
def test_reload_devices_lihuiyu(self):
|
64
|
-
"""
|
65
|
-
We start a new bootstrap, delete any services that would have existed previously. Add 1 service and also have
|
66
|
-
the default service added by default.
|
67
|
-
@return:
|
68
|
-
"""
|
69
|
-
kernel = bootstrap.bootstrap(profile="MeerK40t_LHY")
|
70
|
-
try:
|
71
|
-
for i in range(10):
|
72
|
-
kernel.console(f"service device destroy {i}\n")
|
73
|
-
kernel.console("service device start -i lhystudios 0\n")
|
74
|
-
kernel.console("service device start -i lhystudios 1\n")
|
75
|
-
kernel.console("service device start -i lhystudios 2\n")
|
76
|
-
kernel.console("service list\n")
|
77
|
-
kernel.console("contexts\n")
|
78
|
-
kernel.console("plugins\n")
|
79
|
-
finally:
|
80
|
-
kernel.shutdown()
|
81
|
-
|
82
|
-
kernel = bootstrap.bootstrap(profile="MeerK40t_LHY")
|
83
|
-
try:
|
84
|
-
devs = [name for name in kernel.contexts if name.startswith("lhystudios")]
|
85
|
-
self.assertGreater(len(devs), 1)
|
86
|
-
finally:
|
87
|
-
kernel.shutdown()
|
88
|
-
|
89
|
-
def test_driver_basic_rect_engrave(self):
|
90
|
-
"""
|
91
|
-
@return:
|
92
|
-
"""
|
93
|
-
file1 = "teste.egv"
|
94
|
-
self.addCleanup(os.remove, file1)
|
95
|
-
|
96
|
-
kernel = bootstrap.bootstrap()
|
97
|
-
try:
|
98
|
-
kernel.console("service device start -i lhystudios 0\n")
|
99
|
-
kernel.console("operation* remove\n")
|
100
|
-
kernel.console(
|
101
|
-
f"rect 2cm 2cm 1cm 1cm engrave -s 15 plan copy-selected preprocess validate blob preopt optimize save_job {file1}\n"
|
102
|
-
)
|
103
|
-
finally:
|
104
|
-
kernel.shutdown()
|
105
|
-
with open(file1) as f:
|
106
|
-
data = f.read()
|
107
|
-
self.assertEqual(data, egv_rect)
|
108
|
-
|
109
|
-
def test_driver_basic_rect_cut(self):
|
110
|
-
"""
|
111
|
-
@return:
|
112
|
-
"""
|
113
|
-
file1 = "testc.egv"
|
114
|
-
self.addCleanup(os.remove, file1)
|
115
|
-
|
116
|
-
kernel = bootstrap.bootstrap()
|
117
|
-
try:
|
118
|
-
kernel.console("service device start -i lhystudios 0\n")
|
119
|
-
kernel.console("operation* remove\n")
|
120
|
-
kernel.console(
|
121
|
-
f"rect 2cm 2cm 1cm 1cm cut -s 15 plan copy-selected preprocess validate blob preopt optimize save_job {file1}\n"
|
122
|
-
)
|
123
|
-
finally:
|
124
|
-
kernel.shutdown()
|
125
|
-
with open(file1) as f:
|
126
|
-
data = f.read()
|
127
|
-
self.assertEqual(data, egv_rect)
|
128
|
-
|
129
|
-
def test_driver_basic_rect_raster(self):
|
130
|
-
"""
|
131
|
-
Attempts a raster operation however wxPython isn't available so nothing is produced.
|
132
|
-
|
133
|
-
@return:
|
134
|
-
"""
|
135
|
-
file1 = "testr.egv"
|
136
|
-
self.addCleanup(os.remove, file1)
|
137
|
-
|
138
|
-
kernel = bootstrap.bootstrap()
|
139
|
-
try:
|
140
|
-
kernel.console("service device start -i lhystudios 0\n")
|
141
|
-
kernel.console("operation* remove\n")
|
142
|
-
kernel.console(
|
143
|
-
f"rect 2cm 2cm 1cm 1cm raster -s 15 plan copy-selected preprocess validate blob preopt optimize save_job {file1}\n"
|
144
|
-
)
|
145
|
-
finally:
|
146
|
-
kernel.shutdown()
|
147
|
-
with open(file1) as f:
|
148
|
-
data = f.read()
|
149
|
-
self.assertEqual(data, egv_blank)
|
150
|
-
|
151
|
-
def test_driver_basic_ellipse_image(self):
|
152
|
-
"""
|
153
|
-
Attempts a raster operation however wxPython isn't available so nothing is produced.
|
154
|
-
|
155
|
-
@return:
|
156
|
-
"""
|
157
|
-
file1 = "testi.egv"
|
158
|
-
self.addCleanup(os.remove, file1)
|
159
|
-
|
160
|
-
image = Image.new("RGBA", (256, 256), "white")
|
161
|
-
matrix = Matrix.scale(UNITS_PER_MM / 64)
|
162
|
-
matrix.translate(UNITS_PER_MM * 2, UNITS_PER_MM * 2)
|
163
|
-
|
164
|
-
draw = ImageDraw.Draw(image)
|
165
|
-
draw.ellipse((50, 50, 150, 150), "black")
|
166
|
-
|
167
|
-
kernel = bootstrap.bootstrap()
|
168
|
-
try:
|
169
|
-
image_node = ImageNode(image=image, matrix=matrix)
|
170
|
-
kernel.elements.elem_branch.add_node(image_node)
|
171
|
-
kernel.console("element* list\n")
|
172
|
-
kernel.console("service device start -i lhystudios 0\n")
|
173
|
-
kernel.console("operation* remove\n")
|
174
|
-
kernel.console(
|
175
|
-
f"element0 imageop -s 15 plan copy-selected preprocess validate blob preopt optimize save_job {file1}\n"
|
176
|
-
)
|
177
|
-
finally:
|
178
|
-
kernel.shutdown()
|
179
|
-
with open(file1) as f:
|
180
|
-
data = f.read()
|
181
|
-
self.assertEqual(data, egv_image)
|
182
|
-
|
183
|
-
|
184
|
-
class TestDriverLihuiyuOverrideSpeed(unittest.TestCase):
|
185
|
-
def test_driver_override_speed_engrave(self):
|
186
|
-
"""
|
187
|
-
This test creates a lihuiyu device, forces the override and speeds in x and y.
|
188
|
-
|
189
|
-
This shall result in the movements not being within rapid speed mode but rather at a given speed:
|
190
|
-
'IBzzzvRzzzvS1P\n'
|
191
|
-
|
192
|
-
replaced with:
|
193
|
-
'ICV2452421011000060CNBRS1EBzzzvRzzzvFNSE-\n'
|
194
|
-
|
195
|
-
@return:
|
196
|
-
"""
|
197
|
-
file1 = "test_rapid_override.egv"
|
198
|
-
self.addCleanup(os.remove, file1)
|
199
|
-
|
200
|
-
kernel = bootstrap.bootstrap()
|
201
|
-
try:
|
202
|
-
kernel.console("service device start -i lhystudios 0\n")
|
203
|
-
kernel.console("operation* delete\n")
|
204
|
-
device = kernel.device
|
205
|
-
path = kernel.device.path
|
206
|
-
device(f"set -p {path} rapid_override True")
|
207
|
-
device(f"set -p {path} rapid_override_speed_x 10.0")
|
208
|
-
device(f"set -p {path} rapid_override_speed_y 10.0")
|
209
|
-
kernel.console(
|
210
|
-
f"rect 2cm 2cm 1cm 1cm engrave -s 15 plan copy-selected preprocess validate blob preopt optimize save_job {file1}\n"
|
211
|
-
)
|
212
|
-
device(f"set -p {path} rapid_override False")
|
213
|
-
finally:
|
214
|
-
kernel.shutdown()
|
215
|
-
with open(file1) as f:
|
216
|
-
data = f.read()
|
217
|
-
self.assertEqual(egv_override_speed_1_rect, data)
|
218
|
-
|
219
|
-
def test_driver_override_speed_between(self):
|
220
|
-
"""
|
221
|
-
This test creates a lihuiyu device, forces the override and speeds in x and y.
|
222
|
-
|
223
|
-
Tests the rapid speed feature between two different objects.
|
224
|
-
@return:
|
225
|
-
"""
|
226
|
-
file1 = "test_rapid_override_between.egv"
|
227
|
-
self.addCleanup(os.remove, file1)
|
228
|
-
|
229
|
-
kernel = bootstrap.bootstrap()
|
230
|
-
try:
|
231
|
-
kernel.console("service device start -i lhystudios 0\n")
|
232
|
-
kernel.console("operation* delete\n")
|
233
|
-
device = kernel.device
|
234
|
-
path = kernel.device.path
|
235
|
-
device(f"set -p {path} rapid_override True")
|
236
|
-
device(f"set -p {path} rapid_override_speed_x 10.0")
|
237
|
-
device(f"set -p {path} rapid_override_speed_y 10.0")
|
238
|
-
kernel.console("rect 2cm 2cm 1cm 1cm\n")
|
239
|
-
kernel.console(
|
240
|
-
"rect 4cm 4cm 1cm 1cm\n"
|
241
|
-
) # second rect is not overlapping / non-connecting
|
242
|
-
kernel.console(
|
243
|
-
f"element* engrave -s 15 plan copy-selected preprocess validate blob preopt optimize save_job {file1}\n"
|
244
|
-
)
|
245
|
-
finally:
|
246
|
-
kernel.shutdown()
|
247
|
-
with open(file1) as f:
|
248
|
-
data = f.read()
|
249
|
-
print(data)
|
250
|
-
self.assertEqual(egv_override_speed_2_rect, data)
|
251
|
-
|
252
|
-
def test_driver_override_speed_shifts(self):
|
253
|
-
"""
|
254
|
-
This test creates a lihuiyu device, forces the override and speeds in x and y at different rates.
|
255
|
-
|
256
|
-
Tests the rapid speed feature between two different objects.
|
257
|
-
@return:
|
258
|
-
"""
|
259
|
-
file1 = "test_rapid_fast_long.egv"
|
260
|
-
self.addCleanup(os.remove, file1)
|
261
|
-
rect_1in_at_15 = "ICV2490731016000027CNLBS1EDzzz235Rzzz235Tzzz235Lzzz235FNSE-\n"
|
262
|
-
|
263
|
-
kernel = bootstrap.bootstrap()
|
264
|
-
try:
|
265
|
-
kernel.console("service device start -i lhystudios 0\n")
|
266
|
-
|
267
|
-
# X fast, X long.
|
268
|
-
kernel.console("operation* delete\n")
|
269
|
-
kernel.console("element* delete\n")
|
270
|
-
kernel.console("rapid_override 10 1\n")
|
271
|
-
kernel.console("rect 2in 2in 1in 1in\n")
|
272
|
-
kernel.console("rect 4in 2.1in 1in 1in\n")
|
273
|
-
kernel.console(
|
274
|
-
f"element* engrave -s 15 plan preprocess validate blob save_job {file1}\n"
|
275
|
-
)
|
276
|
-
kernel.console("plan clear\n")
|
277
|
-
with open(file1) as f:
|
278
|
-
data = f.readlines()
|
279
|
-
self.assertEqual("ICV1551941002013022CNBRS1EMzzzzzzz215FNSE-\n", data[-4])
|
280
|
-
self.assertEqual(rect_1in_at_15, data[-3])
|
281
|
-
self.assertEqual(
|
282
|
-
"ICV2452421011000060CNRBS1Ezzzzzzz215@NSECV1551941002013022CNRBS1ER100FNSE-\n",
|
283
|
-
data[-2],
|
284
|
-
)
|
285
|
-
self.assertEqual(data[-3], data[-1])
|
286
|
-
|
287
|
-
# X fast, Y long.
|
288
|
-
kernel.console("operation* delete\n")
|
289
|
-
kernel.console("element* delete\n")
|
290
|
-
kernel.console("rapid_override 10 1\n")
|
291
|
-
kernel.console("rect 2in 2in 1in 1in\n")
|
292
|
-
kernel.console("rect 2.1in 4in 1in 1in\n")
|
293
|
-
kernel.console(
|
294
|
-
f"element* engrave -s 15 plan preprocess validate blob save_job {file1} clear\n"
|
295
|
-
)
|
296
|
-
kernel.console("plan clear\n")
|
297
|
-
with open(file1) as f:
|
298
|
-
data = f.readlines()
|
299
|
-
self.assertEqual("ICV1551941002013022CNBRS1EMzzzzzzz215FNSE-\n", data[-4])
|
300
|
-
self.assertEqual(rect_1in_at_15, data[-3])
|
301
|
-
self.assertEqual(
|
302
|
-
"ICV1551941002013022CNBRS1EM100Rzzzzzzz115FNSE-\n", data[-2]
|
303
|
-
)
|
304
|
-
self.assertEqual(data[-3], data[-1])
|
305
|
-
|
306
|
-
# Y fast, Y long.
|
307
|
-
kernel.console("operation* delete\n")
|
308
|
-
kernel.console("element* delete\n")
|
309
|
-
kernel.console("rapid_override 1 10\n")
|
310
|
-
kernel.console("rect 2in 2in 1in 1in\n")
|
311
|
-
kernel.console("rect 2.1in 4in 1in 1in\n")
|
312
|
-
kernel.console(
|
313
|
-
f"element* engrave -s 15 plan preprocess validate blob save_job {file1} clear\n"
|
314
|
-
)
|
315
|
-
kernel.console("plan clear\n")
|
316
|
-
with open(file1) as f:
|
317
|
-
data = f.readlines()
|
318
|
-
self.assertEqual("ICV1551941002013022CNBRS1EMzzzzzzz215FNSE-\n", data[-4])
|
319
|
-
self.assertEqual(rect_1in_at_15, data[-3])
|
320
|
-
self.assertEqual(
|
321
|
-
"ICV1551941002013022CNBRS1EB100@NSECV2452421011000060CNBRS1Ezzzzzzz215FNSE-\n",
|
322
|
-
data[-2],
|
323
|
-
)
|
324
|
-
self.assertEqual(data[-3], data[-1])
|
325
|
-
|
326
|
-
# Y fast, X long
|
327
|
-
kernel.console("operation* delete\n")
|
328
|
-
kernel.console("element* delete\n")
|
329
|
-
kernel.console("rapid_override 1 10\n")
|
330
|
-
kernel.console("rect 2in 2in 1in 1in\n")
|
331
|
-
kernel.console("rect 4in 2.1in 1in 1in\n")
|
332
|
-
kernel.console(
|
333
|
-
f"element* engrave -s 15 plan preprocess validate blob save_job {file1}\n"
|
334
|
-
)
|
335
|
-
kernel.console("plan clear\n")
|
336
|
-
with open(file1) as f:
|
337
|
-
data = f.readlines()
|
338
|
-
self.assertEqual("ICV1551941002013022CNBRS1EMzzzzzzz215FNSE-\n", data[-4])
|
339
|
-
self.assertEqual(rect_1in_at_15, data[-3])
|
340
|
-
# RB switch, RB 100, B 1900
|
341
|
-
self.assertEqual(
|
342
|
-
"ICV1551941002013022CNRBS1EM100Bzzzzzzz115FNSE-\n", data[-2]
|
343
|
-
)
|
344
|
-
self.assertEqual(data[-3], data[-1])
|
345
|
-
|
346
|
-
# Y fast, X long (Negative Values)
|
347
|
-
kernel.console("operation* delete\n")
|
348
|
-
kernel.console("element* delete\n")
|
349
|
-
kernel.console("rapid_override 1 10\n")
|
350
|
-
kernel.console("rect 2in 2in 1in 1in\n")
|
351
|
-
kernel.console("rect 0in 0.1in 1in 1in\n")
|
352
|
-
kernel.console(
|
353
|
-
f"element* engrave -s 15 plan preprocess validate blob save_job {file1}\n"
|
354
|
-
)
|
355
|
-
kernel.console("plan clear\n")
|
356
|
-
with open(file1) as f:
|
357
|
-
data = f.readlines()
|
358
|
-
self.assertEqual("ICV1551941002013022CNBRS1EMzzzzzzz215FNSE-\n", data[-4])
|
359
|
-
self.assertEqual(rect_1in_at_15, data[-3])
|
360
|
-
# LT switch, LT 1900, T 100
|
361
|
-
self.assertEqual(
|
362
|
-
"ICV1551941002013022CNLTS1EMzzzzzzz115T100FNSE-\n", data[-2]
|
363
|
-
)
|
364
|
-
self.assertEqual(data[-3], data[-1])
|
365
|
-
|
366
|
-
# Y fast, X long (+/- Values)
|
367
|
-
kernel.console("operation* delete\n")
|
368
|
-
kernel.console("element* delete\n")
|
369
|
-
kernel.console("rapid_override 1 10\n")
|
370
|
-
kernel.console("rect 2in 2in 1in 1in\n")
|
371
|
-
kernel.console("rect 4in 0.1in 1in 1in\n")
|
372
|
-
kernel.console(
|
373
|
-
f"element* engrave -s 15 plan preprocess validate blob save_job {file1}\n"
|
374
|
-
)
|
375
|
-
kernel.console("plan clear\n")
|
376
|
-
with open(file1) as f:
|
377
|
-
data = f.readlines()
|
378
|
-
self.assertEqual("ICV1551941002013022CNBRS1EMzzzzzzz215FNSE-\n", data[-4])
|
379
|
-
self.assertEqual(rect_1in_at_15, data[-3])
|
380
|
-
# LB switch, LB 1900, B 100
|
381
|
-
self.assertEqual(
|
382
|
-
"ICV1551941002013022CNLBS1EMzzzzzzz115B100FNSE-\n", data[-2]
|
383
|
-
)
|
384
|
-
self.assertEqual(data[-3], data[-1])
|
385
|
-
|
386
|
-
# Y fast, X long (-/+ Values)
|
387
|
-
kernel.console("operation* delete\n")
|
388
|
-
kernel.console("element* delete\n")
|
389
|
-
kernel.console("rapid_override 1 10\n")
|
390
|
-
kernel.console("rect 2in 2in 1in 1in\n")
|
391
|
-
kernel.console("rect 0in 2.1in 1in 1in\n")
|
392
|
-
kernel.console(
|
393
|
-
f"element* engrave -s 15 plan preprocess validate blob save_job {file1}\n"
|
394
|
-
)
|
395
|
-
kernel.console("plan clear\n")
|
396
|
-
with open(file1) as f:
|
397
|
-
data = f.readlines()
|
398
|
-
self.assertEqual("ICV1551941002013022CNBRS1EMzzzzzzz215FNSE-\n", data[-4])
|
399
|
-
self.assertEqual(rect_1in_at_15, data[-3])
|
400
|
-
# RT switch, RT 100 , T 1900
|
401
|
-
self.assertEqual(
|
402
|
-
"ICV1551941002013022CNRTS1EM100Tzzzzzzz115FNSE-\n", data[-2]
|
403
|
-
)
|
404
|
-
self.assertEqual(data[-3], data[-1])
|
405
|
-
|
406
|
-
# Y fast, X long (-/0 Values)
|
407
|
-
kernel.console("operation* delete\n")
|
408
|
-
kernel.console("element* delete\n")
|
409
|
-
kernel.console("rapid_override 1 10\n")
|
410
|
-
kernel.console("rect 2in 2in 1in 1in\n")
|
411
|
-
kernel.console("rect 0in 2in 1in 1in\n")
|
412
|
-
kernel.console(
|
413
|
-
f"element* engrave -s 15 plan preprocess validate blob save_job {file1}\n"
|
414
|
-
)
|
415
|
-
kernel.console("plan clear\n")
|
416
|
-
with open(file1) as f:
|
417
|
-
data = f.readlines()
|
418
|
-
self.assertEqual("ICV1551941002013022CNBRS1EMzzzzzzz215FNSE-\n", data[-4])
|
419
|
-
self.assertEqual(rect_1in_at_15, data[-3])
|
420
|
-
# RT switch, RT 0 , T 2000
|
421
|
-
self.assertEqual("ICV1551941002013022CNRTS1Ezzzzzzz215FNSE-\n", data[-2])
|
422
|
-
self.assertEqual(data[-3], data[-1])
|
423
|
-
|
424
|
-
# Same as previous but changed Y rather than X (should change speed)
|
425
|
-
kernel.console("operation* delete\n")
|
426
|
-
kernel.console("element* delete\n")
|
427
|
-
kernel.console("rapid_override 1 10\n")
|
428
|
-
kernel.console("rect 2in 2in 1in 1in\n")
|
429
|
-
kernel.console("rect 2in 0in 1in 1in\n")
|
430
|
-
kernel.console(
|
431
|
-
f"element* engrave -s 15 plan preprocess validate blob save_job {file1}\n"
|
432
|
-
)
|
433
|
-
kernel.console("plan clear\n")
|
434
|
-
with open(file1) as f:
|
435
|
-
data = f.readlines()
|
436
|
-
self.assertEqual("ICV1551941002013022CNBRS1EMzzzzzzz215FNSE-\n", data[-4])
|
437
|
-
self.assertEqual(rect_1in_at_15, data[-3])
|
438
|
-
# BL switch, BL 0 , L 2000
|
439
|
-
self.assertEqual("ICV2452421011000060CNBLS1Ezzzzzzz215FNSE-\n", data[-2])
|
440
|
-
self.assertEqual(data[-3], data[-1])
|
441
|
-
finally:
|
442
|
-
bootstrap.destroy(kernel)
|
443
|
-
kernel.shutdown()
|
test/test_drivers_newly.py
DELETED
@@ -1,113 +0,0 @@
|
|
1
|
-
import os
|
2
|
-
import unittest
|
3
|
-
from test import bootstrap
|
4
|
-
|
5
|
-
from PIL import Image, ImageDraw
|
6
|
-
|
7
|
-
from meerk40t.core.node.elem_image import ImageNode
|
8
|
-
from meerk40t.core.units import UNITS_PER_MM
|
9
|
-
from meerk40t.svgelements import Matrix
|
10
|
-
|
11
|
-
hpgl_rect = "ZZZFile0;VP100;VK100;SP2;VQ20;VJ10;VS10;PR;PU787,787;ZED;ZZZFile0;DW;VP100;VK100;SP0;DA0;VQ20;VJ10;VS10;PR;PD0,394;PD394,0;PD0,-394;PD-394,0;ZED;GZ;VP100;VK100;SP1;DA51;VS177;PR;PD0,394;PD394,0;PD0,-394;PD-394,0;ZED;ZZZFile0;ZG0;ZED;"
|
12
|
-
|
13
|
-
hpgl_blank = "ZZZFile0;VP100;VK100;SP2;VQ20;VJ10;VS10;PR;PU787,787;ZED;ZZZFile0;DW;VP100;VK100;SP0;DA0;VQ20;VJ10;VS10;PR;PD0,394;PD394,0;PD0,-394;PD-394,0;ZED;GZ;ZED;ZZZFile0;ZG0;ZED;"
|
14
|
-
|
15
|
-
|
16
|
-
hpgl_image = "ZZZFile0;VP100;VK100;SP2;VQ20;VJ10;VS10;PR;PU31,31;ZED;ZZZFile0;DW;VP100;VK100;SP0;DA0;VQ20;VJ10;VS10;PR;PD0,62;PD62,0;PD0,-62;PD-62,0;ZED;GZ;IN;VP100;VK100;SP2;VQ20;VJ10;VS10;PR;PU60,36;DA51;BT1;BC0;BD1;SP0;VQ20;VJ8;VS2;YF\x00\x00:ÿ?\x00\x00\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00l\x00\x00\x00\x00\x00ÿÿÿ\x03\x00\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00r\x00\x00\x00\x00\x00ÿÿÿÿ\x03\x00\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00x\x00\x00\x00\x00\x00ÿÿÿÿ?\x00\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00|\x00\x00\x00\x00\x00ÿÿÿÿÿ\x0f\x00\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00~\x00\x00\x00\x00\x00ÿÿÿÿÿ?\x00\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00\x82\x00\x00\x00\x00\x00ÿÿÿÿÿÿ\x03\x00\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00\x84\x00\x00\x00\x00\x00ÿÿÿÿÿÿ?\x00\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00\x86\x00\x00\x00\x00\x00ÿÿÿÿÿÿ?\x00\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00\x88\x00\x00\x00\x00\x00ÿÿÿÿÿÿÿ\x03\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00\x88\x00\x00\x00\x00\x00ÿÿÿÿÿÿÿ\x03\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00\x8a\x00\x00\x00\x00\x00ÿÿÿÿÿÿÿ\x03\x00\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00\x8c\x00\x00\x00\x00\x00ÿÿÿÿÿÿÿ?\x00\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00\x8c\x00\x00\x00\x00\x00ÿÿÿÿÿÿÿ?\x00\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00\x8c\x00\x00\x00\x00\x00ÿÿÿÿÿÿÿ?\x00\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00\x8c\x00\x00\x00\x00\x00ÿÿÿÿÿÿÿ?\x00\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00\x8c\x00\x00\x00\x00\x00ÿÿÿÿÿÿÿ?\x00\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00\x8c\x00\x00\x00\x00\x00ÿÿÿÿÿÿÿ?\x00\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00\x8c\x00\x00\x00\x00\x00ÿÿÿÿÿÿÿ?\x00\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00\x8a\x00\x00\x00\x00\x00üÿÿÿÿÿÿ\x0f\x00\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00\x88\x00\x00\x00\x00\x00ÿÿÿÿÿÿÿ\x03\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00\x88\x00\x00\x00\x00\x00ÿÿÿÿÿÿÿ\x03\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00\x86\x00\x00\x00\x00\x00üÿÿÿÿÿÿ\x00\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00\x84\x00\x00\x00\x00\x00ÿÿÿÿÿÿ?\x00\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00\x82\x00\x00\x00\x00\x00üÿÿÿÿÿ\x0f\x00\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00~\x00\x00\x00\x00\x00üÿÿÿÿÿ\x00\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00z\x00\x00\x00\x00\x00üÿÿÿÿ\x0f\x00\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00v\x00\x00\x00\x00\x00üÿÿÿÿ\x00\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00r\x00\x00\x00\x00\x00üÿÿÿ\x0f\x00\x00\x00\x00\x00;PR;PU-2,0;YZ\x00\x00l\x00\x00\x00\x00\x00ðÿÿ?\x00\x00\x00\x00\x00;PR;PU-2,0;YF\x00\x00:\x00\x00\x00\x00\x00Àÿ\x03;SP2;VQ20;VJ10;VS10;PU0,-24;ZED;ZZZFile0;ZG0;ZED;"
|
17
|
-
|
18
|
-
|
19
|
-
class TestDriverNewly(unittest.TestCase):
|
20
|
-
def test_driver_basic_rect_engrave(self):
|
21
|
-
"""
|
22
|
-
@return:
|
23
|
-
"""
|
24
|
-
file1 = "te.hpgl"
|
25
|
-
self.addCleanup(os.remove, file1)
|
26
|
-
|
27
|
-
kernel = bootstrap.bootstrap()
|
28
|
-
try:
|
29
|
-
kernel.console("service device start -i newly 0\n")
|
30
|
-
kernel.console("operation* remove\n")
|
31
|
-
kernel.console(
|
32
|
-
f"rect 2cm 2cm 1cm 1cm engrave -s 15 plan copy-selected preprocess validate blob preopt optimize save_job {file1}\n"
|
33
|
-
)
|
34
|
-
finally:
|
35
|
-
kernel.shutdown()
|
36
|
-
with open(file1) as f:
|
37
|
-
data = f.read()
|
38
|
-
self.assertEqual(hpgl_rect, data)
|
39
|
-
|
40
|
-
def test_driver_basic_rect_cut(self):
|
41
|
-
"""
|
42
|
-
@return:
|
43
|
-
"""
|
44
|
-
file1 = "tc.hpgl"
|
45
|
-
self.addCleanup(os.remove, file1)
|
46
|
-
|
47
|
-
kernel = bootstrap.bootstrap()
|
48
|
-
try:
|
49
|
-
kernel.console("service device start -i newly 0\n")
|
50
|
-
kernel.console("operation* remove\n")
|
51
|
-
kernel.console(
|
52
|
-
f"rect 2cm 2cm 1cm 1cm cut -s 15 plan copy-selected preprocess validate blob preopt optimize save_job {file1}\n"
|
53
|
-
)
|
54
|
-
finally:
|
55
|
-
kernel.shutdown()
|
56
|
-
with open(file1) as f:
|
57
|
-
data = f.read()
|
58
|
-
self.assertEqual(hpgl_rect, data)
|
59
|
-
|
60
|
-
def test_driver_basic_rect_raster(self):
|
61
|
-
"""
|
62
|
-
Attempts a raster operation however wxPython isn't available so nothing is produced.
|
63
|
-
|
64
|
-
@return:
|
65
|
-
"""
|
66
|
-
file1 = "tr.gcode"
|
67
|
-
self.addCleanup(os.remove, file1)
|
68
|
-
|
69
|
-
kernel = bootstrap.bootstrap()
|
70
|
-
try:
|
71
|
-
kernel.console("service device start -i newly 0\n")
|
72
|
-
kernel.console("operation* remove\n")
|
73
|
-
kernel.console(
|
74
|
-
f"rect 2cm 2cm 1cm 1cm raster -s 15 plan copy-selected preprocess validate blob preopt optimize save_job {file1}\n"
|
75
|
-
)
|
76
|
-
finally:
|
77
|
-
kernel.shutdown()
|
78
|
-
with open(file1) as f:
|
79
|
-
data = f.read()
|
80
|
-
self.assertEqual(data, hpgl_blank)
|
81
|
-
|
82
|
-
def test_driver_basic_ellipse_image(self):
|
83
|
-
"""
|
84
|
-
Attempts a raster operation however wxPython isn't available so nothing is produced.
|
85
|
-
|
86
|
-
@return:
|
87
|
-
"""
|
88
|
-
file1 = "testi.hpgl"
|
89
|
-
self.addCleanup(os.remove, file1)
|
90
|
-
|
91
|
-
image = Image.new("RGBA", (256, 256), "white")
|
92
|
-
matrix = Matrix.scale(UNITS_PER_MM / 64)
|
93
|
-
matrix.translate(UNITS_PER_MM * 2, UNITS_PER_MM * 2)
|
94
|
-
|
95
|
-
draw = ImageDraw.Draw(image)
|
96
|
-
draw.ellipse((50, 50, 150, 150), "black")
|
97
|
-
|
98
|
-
kernel = bootstrap.bootstrap()
|
99
|
-
try:
|
100
|
-
image_node = ImageNode(image=image, matrix=matrix)
|
101
|
-
kernel.elements.elem_branch.add_node(image_node)
|
102
|
-
kernel.console("element* list\n")
|
103
|
-
kernel.console("service device start -i newly 0\n")
|
104
|
-
kernel.console("operation* remove\n")
|
105
|
-
kernel.console(
|
106
|
-
f"element0 imageop -s 15 plan copy-selected preprocess validate blob preopt optimize save_job {file1}\n"
|
107
|
-
)
|
108
|
-
finally:
|
109
|
-
kernel.shutdown()
|
110
|
-
with open(file1, "rb") as f:
|
111
|
-
data = f.read()
|
112
|
-
data = data.decode(encoding="latin-1")
|
113
|
-
self.assertEqual(data, hpgl_image)
|