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
@@ -1,224 +1,473 @@
|
|
1
|
-
"""
|
2
|
-
This
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
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
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
""
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
)
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
1
|
+
"""
|
2
|
+
This module provides a set of console commands for managing geometric operations within the application.
|
3
|
+
These commands allow users to convert shapes to path nodes, create geometric figures, and perform various geometric manipulations.
|
4
|
+
|
5
|
+
Functions:
|
6
|
+
- plugin(kernel, lifecycle=None): Initializes the plugin and sets up geometry commands.
|
7
|
+
- init_commands(kernel): Initializes the geometry commands and defines the associated operations.
|
8
|
+
- element_shape_convert(data, **kwargs): Converts any shapes to path nodes and adds them to the element branch.
|
9
|
+
Args:
|
10
|
+
data: The geometry data to convert.
|
11
|
+
Returns:
|
12
|
+
A tuple containing the type of elements and the newly created node.
|
13
|
+
- geometry_copies(data: Geomstr, copies, **kwargs): Creates multiple copies of the specified geometry.
|
14
|
+
Args:
|
15
|
+
data: The geometry data to copy.
|
16
|
+
copies: The number of copies to create.
|
17
|
+
Returns:
|
18
|
+
A tuple containing the type of geometry and the modified data.
|
19
|
+
- geometry_base(data=None, **kwargs): Converts any element nodes to paths and returns the resulting geometry.
|
20
|
+
Args:
|
21
|
+
data: The elements to convert.
|
22
|
+
Returns:
|
23
|
+
A tuple containing the type of geometry and the resulting path.
|
24
|
+
- geometry_validate(channel, _, data=None, **kwargs): Validates the given geometry and reports its status.
|
25
|
+
Args:
|
26
|
+
channel: The communication channel for messages.
|
27
|
+
data: The geometry data to validate.
|
28
|
+
Returns:
|
29
|
+
A tuple containing the type of geometry and the validated data.
|
30
|
+
- element_circle(channel, _, x_pos, y_pos, r_pos, data=None, post=None, **kwargs): Adds a circle to the geometry at the specified position with a given radius.
|
31
|
+
Args:
|
32
|
+
channel: The communication channel for messages.
|
33
|
+
x_pos: The x-coordinate for the center of the circle.
|
34
|
+
y_pos: The y-coordinate for the center of the circle.
|
35
|
+
r_pos: The radius of the circle.
|
36
|
+
data: The geometry data to modify.
|
37
|
+
Returns:
|
38
|
+
A tuple containing the type of geometry and the modified data.
|
39
|
+
- element_rect(channel, _, x_pos, y_pos, width, height, rx=None, ry=None, data=None, post=None, **kwargs): Adds a rectangle to the geometry with optional rounded corners.
|
40
|
+
Args:
|
41
|
+
channel: The communication channel for messages.
|
42
|
+
x_pos: The x-coordinate for the top left corner of the rectangle.
|
43
|
+
y_pos: The y-coordinate for the top left corner of the rectangle.
|
44
|
+
width: The width of the rectangle.
|
45
|
+
height: The height of the rectangle.
|
46
|
+
rx: The rounded corner radius in the x-direction.
|
47
|
+
ry: The rounded corner radius in the y-direction.
|
48
|
+
data: The geometry data to modify.
|
49
|
+
Returns:
|
50
|
+
A tuple containing the type of geometry and the modified data.
|
51
|
+
- geometry_hull(channel, _, data: Geomstr, **kwargs): Computes the convex hull of the given geometry.
|
52
|
+
Args:
|
53
|
+
channel: The communication channel for messages.
|
54
|
+
data: The geometry data to process.
|
55
|
+
Returns:
|
56
|
+
A tuple containing the type of geometry and the resulting hull.
|
57
|
+
- geometry_two_opt(channel, _, data: Geomstr, max_passes=10, chunk=0, **kwargs): Performs a two-opt optimization on the current geometry.
|
58
|
+
Args:
|
59
|
+
channel: The communication channel for messages.
|
60
|
+
data: The geometry data to optimize.
|
61
|
+
max_passes: The maximum number of optimization passes.
|
62
|
+
chunk: The maximum forward-search for potential swaps.
|
63
|
+
Returns:
|
64
|
+
A tuple containing the type of geometry and the optimized data.
|
65
|
+
- geometry_greedy(channel, _, data: Geomstr, no_flips=False, **kwargs): Performs a greedy optimization on the current geometry.
|
66
|
+
Args:
|
67
|
+
channel: The communication channel for messages.
|
68
|
+
data: The geometry data to optimize.
|
69
|
+
no_flips: Whether to allow segment flips during optimization.
|
70
|
+
Returns:
|
71
|
+
A tuple containing the type of geometry and the optimized data.
|
72
|
+
- element_translate(tx, ty, data: Geomstr, **kwargs): Translates the geometry by the specified x and y values.
|
73
|
+
Args:
|
74
|
+
tx: The translation value in the x-direction.
|
75
|
+
ty: The translation value in the y-direction.
|
76
|
+
data: The geometry data to translate.
|
77
|
+
Returns:
|
78
|
+
A tuple containing the type of geometry and the modified data.
|
79
|
+
- element_uscale(scale, data: Geomstr, **kwargs): Uniformly scales the geometry by the specified scale factor.
|
80
|
+
Args:
|
81
|
+
scale: The scale factor to apply.
|
82
|
+
data: The geometry data to scale.
|
83
|
+
Returns:
|
84
|
+
A tuple containing the type of geometry and the modified data.
|
85
|
+
- element_scale(data: Geomstr, sx: float, sy: float, **kwargs): Scales the geometry by specified x and y factors.
|
86
|
+
Args:
|
87
|
+
data: The geometry data to scale.
|
88
|
+
sx: The scale factor in the x-direction.
|
89
|
+
sy: The scale factor in the y-direction.
|
90
|
+
Returns:
|
91
|
+
A tuple containing the type of geometry and the modified data.
|
92
|
+
- element_rotate(angle: Angle, data: Geomstr, **kwargs): Rotates the geometry by the specified angle.
|
93
|
+
Args:
|
94
|
+
angle: The angle to rotate the geometry.
|
95
|
+
data: The geometry data to rotate.
|
96
|
+
Returns:
|
97
|
+
A tuple containing the type of geometry and the modified data.
|
98
|
+
- geometry_hatch(data: Geomstr, distance: Length, angle: Angle, **kwargs): Adds hatch geometry to the specified data.
|
99
|
+
Args:
|
100
|
+
data: The geometry data to modify.
|
101
|
+
distance: The distance between hatch lines.
|
102
|
+
angle: The angle of the hatch lines.
|
103
|
+
Returns:
|
104
|
+
A tuple containing the type of geometry and the modified data.
|
105
|
+
- element_cag_combine(data: Geomstr, **kwargs): Combines the current geometry into a single shape.
|
106
|
+
Args:
|
107
|
+
data: The geometry data to combine.
|
108
|
+
Returns:
|
109
|
+
A tuple containing the type of geometry and the combined data.
|
110
|
+
- element_cag_union(subject: int, clip: int, data: Geomstr, **kwargs): Computes the union of two shapes in the geometry.
|
111
|
+
Args:
|
112
|
+
subject: The index of the subject shape.
|
113
|
+
clip: The index of the clipping shape.
|
114
|
+
data: The geometry data to process.
|
115
|
+
Returns:
|
116
|
+
A tuple containing the type of geometry and the resulting union.
|
117
|
+
- element_cag_intersection(subject: int, clip: int, data: Geomstr, **kwargs): Computes the intersection of two shapes in the geometry.
|
118
|
+
Args:
|
119
|
+
subject: The index of the subject shape.
|
120
|
+
clip: The index of the clipping shape.
|
121
|
+
data: The geometry data to process.
|
122
|
+
Returns:
|
123
|
+
A tuple containing the type of geometry and the resulting intersection.
|
124
|
+
- element_cag_xor(subject: int, clip: int, data: Geomstr, **kwargs): Computes the exclusive or (XOR) of two shapes in the geometry.
|
125
|
+
Args:
|
126
|
+
subject: The index of the subject shape.
|
127
|
+
clip: The index of the clipping shape.
|
128
|
+
data: The geometry data to process.
|
129
|
+
Returns:
|
130
|
+
A tuple containing the type of geometry and the resulting XOR.
|
131
|
+
- element_cag_difference(subject: int, clip: int, data: Geomstr, **kwargs): Computes the difference between two shapes in the geometry.
|
132
|
+
Args:
|
133
|
+
subject: The index of the subject shape.
|
134
|
+
clip: The index of the clipping shape.
|
135
|
+
data: The geometry data to process.
|
136
|
+
Returns:
|
137
|
+
A tuple containing the type of geometry and the resulting difference.
|
138
|
+
"""
|
139
|
+
|
140
|
+
from meerk40t.core.units import Angle, Length
|
141
|
+
from meerk40t.svgelements import Matrix
|
142
|
+
from meerk40t.tools.geomstr import BeamTable, Geomstr
|
143
|
+
|
144
|
+
|
145
|
+
def plugin(kernel, lifecycle=None):
|
146
|
+
_ = kernel.translation
|
147
|
+
if lifecycle == "postboot":
|
148
|
+
init_commands(kernel)
|
149
|
+
|
150
|
+
|
151
|
+
def init_commands(kernel):
|
152
|
+
self = kernel.elements
|
153
|
+
|
154
|
+
_ = kernel.translation
|
155
|
+
|
156
|
+
# ==========
|
157
|
+
# Geometry
|
158
|
+
# ==========
|
159
|
+
|
160
|
+
@self.console_command(
|
161
|
+
"node",
|
162
|
+
help=_("Convert any shapes to pathnodes"),
|
163
|
+
input_type="geometry",
|
164
|
+
output_type="elements",
|
165
|
+
)
|
166
|
+
def element_shape_convert(data, **kwargs):
|
167
|
+
param = None
|
168
|
+
if hasattr(data, "parameter_store"):
|
169
|
+
param = getattr(data, "parameter_store", None)
|
170
|
+
del data.parameter_store
|
171
|
+
node = self.elem_branch.add(
|
172
|
+
geometry=data,
|
173
|
+
stroke=self.default_stroke,
|
174
|
+
stroke_width=self.default_strokewidth,
|
175
|
+
type="elem path",
|
176
|
+
)
|
177
|
+
if param is not None:
|
178
|
+
node.functional_parameter = param
|
179
|
+
|
180
|
+
return "elements", [node]
|
181
|
+
|
182
|
+
@self.console_argument("copies", type=int)
|
183
|
+
@self.console_command(
|
184
|
+
"copies",
|
185
|
+
help=_("Convert any element nodes to paths"),
|
186
|
+
input_type="geometry",
|
187
|
+
output_type="geometry",
|
188
|
+
)
|
189
|
+
def geometry_copies(data: Geomstr, copies, **kwargs):
|
190
|
+
data.copies(copies)
|
191
|
+
return "geometry", data
|
192
|
+
|
193
|
+
@self.console_command(
|
194
|
+
"geometry",
|
195
|
+
help=_("Convert any element nodes to paths"),
|
196
|
+
input_type=(None, "elements"),
|
197
|
+
output_type="geometry",
|
198
|
+
)
|
199
|
+
def geometry_base(data=None, **kwargs):
|
200
|
+
path = Geomstr()
|
201
|
+
index = 0
|
202
|
+
if data:
|
203
|
+
for node in data:
|
204
|
+
try:
|
205
|
+
e = node.as_geometry()
|
206
|
+
except AttributeError:
|
207
|
+
continue
|
208
|
+
e.flag_settings(index)
|
209
|
+
index += 1
|
210
|
+
path.append(e)
|
211
|
+
return "geometry", path
|
212
|
+
|
213
|
+
@self.console_command("validate", input_type="geometry", output_type="geometry")
|
214
|
+
def geometry_validate(channel, _, data=None, **kwargs):
|
215
|
+
try:
|
216
|
+
data.validate()
|
217
|
+
channel(_("Geometry is valid."))
|
218
|
+
except AssertionError:
|
219
|
+
channel(_("Geometry was not valid."))
|
220
|
+
|
221
|
+
@self.console_argument("x_pos", type=Length)
|
222
|
+
@self.console_argument("y_pos", type=Length)
|
223
|
+
@self.console_argument("r_pos", type=Length)
|
224
|
+
@self.console_command(
|
225
|
+
"circle",
|
226
|
+
help=_("circle <x> <y> <r>"),
|
227
|
+
input_type="geometry",
|
228
|
+
output_type="geometry",
|
229
|
+
all_arguments_required=True,
|
230
|
+
)
|
231
|
+
def element_circle(channel, _, x_pos, y_pos, r_pos, data=None, post=None, **kwargs):
|
232
|
+
data.append(Geomstr.circle(r_pos, x_pos, y_pos, slices=4))
|
233
|
+
return "geometry", data
|
234
|
+
|
235
|
+
@self.console_argument(
|
236
|
+
"x_pos",
|
237
|
+
type=Length,
|
238
|
+
help=_("x position for top left corner of rectangle."),
|
239
|
+
)
|
240
|
+
@self.console_argument(
|
241
|
+
"y_pos",
|
242
|
+
type=Length,
|
243
|
+
help=_("y position for top left corner of rectangle."),
|
244
|
+
)
|
245
|
+
@self.console_argument("width", type=Length, help=_("width of the rectangle."))
|
246
|
+
@self.console_argument("height", type=Length, help=_("height of the rectangle."))
|
247
|
+
@self.console_option("rx", "x", type=Length, help=_("rounded rx corner value."))
|
248
|
+
@self.console_option("ry", "y", type=Length, help=_("rounded ry corner value."))
|
249
|
+
@self.console_command(
|
250
|
+
"rect",
|
251
|
+
help=_("adds rectangle to geometry"),
|
252
|
+
input_type="geometry",
|
253
|
+
output_type="geometry",
|
254
|
+
all_arguments_required=True,
|
255
|
+
)
|
256
|
+
def element_rect(
|
257
|
+
channel,
|
258
|
+
_,
|
259
|
+
x_pos,
|
260
|
+
y_pos,
|
261
|
+
width,
|
262
|
+
height,
|
263
|
+
rx=None,
|
264
|
+
ry=None,
|
265
|
+
data=None,
|
266
|
+
post=None,
|
267
|
+
**kwargs,
|
268
|
+
):
|
269
|
+
"""
|
270
|
+
Draws a svg rectangle with optional rounded corners.
|
271
|
+
"""
|
272
|
+
if rx is None:
|
273
|
+
rx = 0
|
274
|
+
if ry is None:
|
275
|
+
ry = 0
|
276
|
+
data.append(
|
277
|
+
Geomstr.rect(
|
278
|
+
x=float(x_pos),
|
279
|
+
y=float(y_pos),
|
280
|
+
width=float(width),
|
281
|
+
height=float(height),
|
282
|
+
rx=float(rx),
|
283
|
+
ry=float(ry),
|
284
|
+
)
|
285
|
+
)
|
286
|
+
return "geometry", data
|
287
|
+
|
288
|
+
@self.console_command(
|
289
|
+
"hull",
|
290
|
+
help=_("convex hull of the current selected elements"),
|
291
|
+
input_type="geometry",
|
292
|
+
output_type="geometry",
|
293
|
+
)
|
294
|
+
def geometry_hull(channel, _, data: Geomstr, **kwargs):
|
295
|
+
"""
|
296
|
+
Provides the convex hull of the given geometry.
|
297
|
+
"""
|
298
|
+
return "geometry", Geomstr.hull(data)
|
299
|
+
|
300
|
+
@self.console_option(
|
301
|
+
"chunk",
|
302
|
+
"c",
|
303
|
+
type=int,
|
304
|
+
help=_("Maximum forward-search for potential swaps"),
|
305
|
+
default=0,
|
306
|
+
)
|
307
|
+
@self.console_option(
|
308
|
+
"max_passes",
|
309
|
+
"m",
|
310
|
+
type=int,
|
311
|
+
help=_("Maximum number of optimizations passes"),
|
312
|
+
default=10,
|
313
|
+
)
|
314
|
+
@self.console_command(
|
315
|
+
"two-opt",
|
316
|
+
help=_("Perform two-opt on the current geometry"),
|
317
|
+
input_type="geometry",
|
318
|
+
output_type="geometry",
|
319
|
+
)
|
320
|
+
def geometry_two_opt(channel, _, data: Geomstr, max_passes=10, chunk=0, **kwargs):
|
321
|
+
"""
|
322
|
+
Provides a two-opt optimized version of the current data.
|
323
|
+
"""
|
324
|
+
if max_passes < 0:
|
325
|
+
max_passes = None
|
326
|
+
data.two_opt_distance(max_passes=max_passes, chunk=0)
|
327
|
+
return "geometry", data
|
328
|
+
|
329
|
+
@self.console_option(
|
330
|
+
"no_flips",
|
331
|
+
"x",
|
332
|
+
type=bool,
|
333
|
+
action="store_true",
|
334
|
+
help=_("Do not allow segment flips"),
|
335
|
+
default=10,
|
336
|
+
)
|
337
|
+
@self.console_command(
|
338
|
+
"greedy",
|
339
|
+
help=_("Perform greedy optimization on the current geometry"),
|
340
|
+
input_type="geometry",
|
341
|
+
output_type="geometry",
|
342
|
+
)
|
343
|
+
def geometry_greedy(channel, _, data: Geomstr, no_flips=False, **kwargs):
|
344
|
+
"""
|
345
|
+
Provides a two-opt optimized version of the current data.
|
346
|
+
"""
|
347
|
+
data.greedy_distance(0j, flips=not no_flips)
|
348
|
+
return "geometry", data
|
349
|
+
|
350
|
+
@self.console_argument("tx", type=Length, help=_("translate x value"))
|
351
|
+
@self.console_argument("ty", type=Length, help=_("translate y value"))
|
352
|
+
@self.console_command(
|
353
|
+
"translate",
|
354
|
+
help=_("translate <tx> <ty>"),
|
355
|
+
input_type="geometry",
|
356
|
+
output_type="geometry",
|
357
|
+
)
|
358
|
+
def element_translate(tx, ty, data: Geomstr, **kwargs):
|
359
|
+
data.translate(tx, ty)
|
360
|
+
return "geometry", data
|
361
|
+
|
362
|
+
@self.console_argument("scale", type=float, help=_("uniform scale value"))
|
363
|
+
@self.console_command(
|
364
|
+
"uscale",
|
365
|
+
help=_("scale <scale-factor>"),
|
366
|
+
input_type="geometry",
|
367
|
+
output_type="geometry",
|
368
|
+
)
|
369
|
+
def element_uscale(scale, data: Geomstr, **kwargs):
|
370
|
+
data.uscale(scale)
|
371
|
+
return "geometry", data
|
372
|
+
|
373
|
+
@self.console_argument("sx", type=float, help=_("Scale X value"))
|
374
|
+
@self.console_argument("sy", type=float, help=_("Scale Y value"))
|
375
|
+
@self.console_command(
|
376
|
+
"scale",
|
377
|
+
help=_("scale <scale-factor>"),
|
378
|
+
input_type="geometry",
|
379
|
+
output_type="geometry",
|
380
|
+
)
|
381
|
+
def element_scale(data: Geomstr, sx: float, sy: float, **kwargs):
|
382
|
+
data.transform(Matrix.scale(sx, sy))
|
383
|
+
return "geometry", data
|
384
|
+
|
385
|
+
@self.console_argument("angle", type=Angle, help=_("rotation angle"))
|
386
|
+
@self.console_command(
|
387
|
+
"rotate",
|
388
|
+
help=_("scale <scale-factor>"),
|
389
|
+
input_type="geometry",
|
390
|
+
output_type="geometry",
|
391
|
+
)
|
392
|
+
def element_rotate(angle: Angle, data: Geomstr, **kwargs):
|
393
|
+
data.rotate(angle.radians)
|
394
|
+
return "geometry", data
|
395
|
+
|
396
|
+
@self.console_option("distance", "d", type=Length, default="1mm")
|
397
|
+
@self.console_option("angle", "a", type=Angle, default="0deg")
|
398
|
+
@self.console_command(
|
399
|
+
"hatch",
|
400
|
+
help=_("Add hatch geometry"),
|
401
|
+
input_type="geometry",
|
402
|
+
output_type="geometry",
|
403
|
+
)
|
404
|
+
def geometry_hatch(data: Geomstr, distance: Length, angle: Angle, **kwargs):
|
405
|
+
segments = data.segmented()
|
406
|
+
hatch = Geomstr.hatch(segments, angle=angle.radians, distance=float(distance))
|
407
|
+
data.append(hatch)
|
408
|
+
return "geometry", data
|
409
|
+
|
410
|
+
@self.console_command(
|
411
|
+
"combine",
|
412
|
+
help=_("Constructive Area Geometry, Combine"),
|
413
|
+
input_type="geometry",
|
414
|
+
output_type="geometry",
|
415
|
+
)
|
416
|
+
def element_cag_combine(data: Geomstr, **kwargs):
|
417
|
+
bt = BeamTable(data)
|
418
|
+
data = bt.combine()
|
419
|
+
return "geometry", data
|
420
|
+
|
421
|
+
@self.console_argument("subject", type=int, help=_("Subject polygon shape"))
|
422
|
+
@self.console_argument("clip", type=int, help=_("Clipping polygon shape"))
|
423
|
+
@self.console_command(
|
424
|
+
"union",
|
425
|
+
help=_("Constructive Area Geometry, Union"),
|
426
|
+
input_type="geometry",
|
427
|
+
output_type="geometry",
|
428
|
+
)
|
429
|
+
def element_cag_union(subject: int, clip: int, data: Geomstr, **kwargs):
|
430
|
+
bt = BeamTable(data)
|
431
|
+
data = bt.union(subject, clip)
|
432
|
+
return "geometry", data
|
433
|
+
|
434
|
+
@self.console_argument("subject", type=int, help=_("Subject polygon shape"))
|
435
|
+
@self.console_argument("clip", type=int, help=_("Clipping polygon shape"))
|
436
|
+
@self.console_command(
|
437
|
+
"intersection",
|
438
|
+
help=_("Constructive Area Geometry, intersection"),
|
439
|
+
input_type="geometry",
|
440
|
+
output_type="geometry",
|
441
|
+
)
|
442
|
+
def element_cag_intersection(subject: int, clip: int, data: Geomstr, **kwargs):
|
443
|
+
bt = BeamTable(data)
|
444
|
+
data = bt.intersection(subject, clip)
|
445
|
+
return "geometry", data
|
446
|
+
|
447
|
+
@self.console_argument("subject", type=int, help=_("Subject polygon shape"))
|
448
|
+
@self.console_argument("clip", type=int, help=_("Clipping polygon shape"))
|
449
|
+
@self.console_command(
|
450
|
+
"xor",
|
451
|
+
help=_("Constructive Area Geometry, xor"),
|
452
|
+
input_type="geometry",
|
453
|
+
output_type="geometry",
|
454
|
+
)
|
455
|
+
def element_cag_xor(subject: int, clip: int, data: Geomstr, **kwargs):
|
456
|
+
bt = BeamTable(data)
|
457
|
+
data = bt.xor(subject, clip)
|
458
|
+
return "geometry", data
|
459
|
+
|
460
|
+
@self.console_argument("subject", type=int, help=_("Subject polygon shape"))
|
461
|
+
@self.console_argument("clip", type=int, help=_("Clipping polygon shape"))
|
462
|
+
@self.console_command(
|
463
|
+
"difference",
|
464
|
+
help=_("Constructive Area Geometry, difference"),
|
465
|
+
input_type="geometry",
|
466
|
+
output_type="geometry",
|
467
|
+
)
|
468
|
+
def element_cag_difference(subject: int, clip: int, data: Geomstr, **kwargs):
|
469
|
+
bt = BeamTable(data)
|
470
|
+
data = bt.difference(subject, clip)
|
471
|
+
return "geometry", data
|
472
|
+
|
473
|
+
# --------------------------- END COMMANDS ------------------------------
|