Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Only probe where printed. Solution here!

    Scheduled Pinned Locked Moved
    General Discussion
    10
    27
    5.7k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • PCRundefined
      PCR @supernovae
      last edited by

      @supernovae

      easier solution

      • (Cura slicer plugin) To make the macro to work in Cura slicer, you need to install the post process plugin by frankbags - In cura menu Help -> Show configuration folder. - Copy the python script from the above link in to plugins folder. - Restart Cura - In cura menu Extensions -> Post processing -> Modify G-Code and select Mesh Print Size (PLUGIN)

      the

      M557 X%MINX%:%MAXX% Y%MINY%:%MAXY% S8
      
      supernovaeundefined 2 Replies Last reply Reply Quote 1
      • supernovaeundefined
        supernovae @PCR
        last edited by supernovae

        @pcr So awesome! Thanks!!

        FYI, if its not loading for you, rename the file to match exactly the class name - it is CaSE SenSiTive "LevelingMeshOptimizer.pl" 😉

        1 Reply Last reply Reply Quote 0
        • Exerqtorundefined
          Exerqtor @dc42
          last edited by Exerqtor

          @dc42 said in Only probe where printed. Solution here!:

          Alternatively, to default to probing the whole bed, put this in your start GCode (example shown for IdeaMaker):

          var minPrintX = {print_pos_min_x}
          var maxPrintX = {print_pos_max_x}
          var minPrintY = {print_pos.min_y}
          var maxPrintY = {print_pos_max_y}
          

          Then in your mesh.g file:

          var m557MinX = -100;  ; put your default here
          var m557MaxX = 100;  ; put your default here
          var m557MinY = -100;  ; put your default here
          var m557MaxX = 100;  ; put your default here
          if exists(var.minPrintX)
            set m557MinX = var.minPrintX
          if exists(var.maxPrintX)
            set m557MaxX = var.maxPrintX
          if exists(var.minPrintY)
            set m557MinY = var.minPrintY
          if exists(var.maxPrintY)
            set m557MaxY = var.maxPrintY
          M557 X{var.m557MinX,var.m557MaxX} Y{var.m557MinY,var.m557MayY} S8  ; put your required spacing here
          G29 S0
          

          Caution: I have not tested this!

          I'm using parts of your example now and it it ALMOST works! if i try to run the mesh.g manually it picks up the default size and probe the full bed. But it don't look like it's picking up the actual print area for some reason if i try to do a print.

          This is what it my slicer outputs, and it seems right to me:

          var minPrintX = 243.659
          var maxPrintX = 278.245
          var minPrintY = 56.6481
          var maxPrintY = 91.2335
          

          I've gotten my slicer setup so that it output's this in the very start of the custom start Gcode, long before the G29.

          __

          But just a little headsup it's a couple typos in the code 😬

          You've set "MaxX" two times in the default section, instead of "MaxY".
          And in the M577 you're checking for " m557May" instead of "m557MaxY" 😅

          1 Reply Last reply Reply Quote 0
          • Exerqtorundefined
            Exerqtor
            last edited by

            @dc42

            Shouldn't the code be:

            if exists(var.minPrintX)
              set var.m557MinX = var.minPrintX
            if exists(var.maxPrintX)
              set var.m557MaxX = var.maxPrintX
            if exists(var.minPrintY)
              set var.m557MinY = var.minPrintY
            if exists(var.maxPrintY)
              set var.m557MaxY = var.maxPrintY
            

            🤔

            dc42undefined 1 Reply Last reply Reply Quote 1
            • dc42undefined
              dc42 administrators @Exerqtor
              last edited by

              @exerqtor said in Only probe where printed. Solution here!:

              @dc42

              Shouldn't the code be:

              if exists(var.minPrintX)
                set var.m557MinX = var.minPrintX
              if exists(var.maxPrintX)
                set var.m557MaxX = var.maxPrintX
              if exists(var.minPrintY)
                set var.m557MinY = var.minPrintY
              if exists(var.maxPrintY)
                set var.m557MaxY = var.maxPrintY
              

              🤔

              Correct! I did say it was untested.

              Duet WiFi hardware designer and firmware engineer
              Please do not ask me for Duet support via PM or email, use the forum
              http://www.escher3d.com, https://miscsolutions.wordpress.com

              Exerqtorundefined 1 Reply Last reply Reply Quote 0
              • Exerqtorundefined
                Exerqtor @dc42
                last edited by

                @dc42 said in Only probe where printed. Solution here!:

                @exerqtor said in Only probe where printed. Solution here!:

                @dc42

                Shouldn't the code be:

                if exists(var.minPrintX)
                  set var.m557MinX = var.minPrintX
                if exists(var.maxPrintX)
                  set var.m557MaxX = var.maxPrintX
                if exists(var.minPrintY)
                  set var.m557MinY = var.minPrintY
                if exists(var.maxPrintY)
                  set var.m557MaxY = var.maxPrintY
                

                🤔

                Correct! I did say it was untested.

                Yeah np, just trying to get why it don't work lol. For some reason still won't probe just the print area.

                Exerqtorundefined 1 Reply Last reply Reply Quote 0
                • Exerqtorundefined
                  Exerqtor @Exerqtor
                  last edited by Exerqtor

                  @dc42
                  Looks like it might be a scope issue, even though "var minPrintX = 88.6323" (for example) is in the start gcode of an ongoing print I get this

                  3.12.2021, 13:47:51	set var.m557MinX = var.minPrintX
                  Error: meta command: unknown variable 'minPrintX'
                  

                  when entered in DWC console.

                  dc42undefined 1 Reply Last reply Reply Quote 0
                  • dc42undefined
                    dc42 administrators @Exerqtor
                    last edited by dc42

                    @exerqtor each GCode input channel has its own set of local variables. So a local variable created by a print file will not be visible from the console.

                    Duet WiFi hardware designer and firmware engineer
                    Please do not ask me for Duet support via PM or email, use the forum
                    http://www.escher3d.com, https://miscsolutions.wordpress.com

                    Exerqtorundefined 1 Reply Last reply Reply Quote 1
                    • supernovaeundefined
                      supernovae @PCR
                      last edited by

                      @pcr said in Only probe where printed. Solution here!:

                      @supernovae

                      easier solution

                      • (Cura slicer plugin) To make the macro to work in Cura slicer, you need to install the post process plugin by frankbags - In cura menu Help -> Show configuration folder. - Copy the python script from the above link in to plugins folder. - Restart Cura - In cura menu Extensions -> Post processing -> Modify G-Code and select Mesh Print Size (PLUGIN)

                      the

                      M557 X%MINX%:%MAXX% Y%MINY%:%MAXY% S8
                      

                      Not sure if you can help, but running the python plugin and enabling the M557 in start gcode I always get a huge max X

                      For example:

                      looking at the gcode output:

                      M557 X131.900:1500.000 Y131.900:168.100 S35.000 ; Leveling mesh defined by LevelingMeshOptimizer

                      Not sure where 1500 comes from.. any idea where to look for in fixing/address that? Or anyone getting this in latest cura?

                      supernovaeundefined 1 Reply Last reply Reply Quote 0
                      • Exerqtorundefined
                        Exerqtor @dc42
                        last edited by

                        @dc42 said in Only probe where printed. Solution here!:

                        @exerqtor each GCode input channel has its own set of local variables. So a local variable created by a print file will not be visible from the console.

                        Well in that case I have no idea what to do except declare them as global instead of local, and reset them to the default in the end of each probing session.

                        dc42undefined 1 Reply Last reply Reply Quote 0
                        • dc42undefined
                          dc42 administrators @Exerqtor
                          last edited by

                          @exerqtor yes that should work.

                          Duet WiFi hardware designer and firmware engineer
                          Please do not ask me for Duet support via PM or email, use the forum
                          http://www.escher3d.com, https://miscsolutions.wordpress.com

                          1 Reply Last reply Reply Quote 0
                          • supernovaeundefined
                            supernovae @supernovae
                            last edited by

                            @supernovae

                            Found the issue, I have some commands to set speed on layers and it shows up as X1500 which the regex catches... maybe i'll try and see if i can limit/exclude it lol

                            1 Reply Last reply Reply Quote 0
                            • Dogma2kundefined
                              Dogma2k
                              last edited by

                              I'm trying to do this on my printer right now, but somehow I can't get S3D to output the min/max XY for the file to be printed.
                              Anyone have a tip on how to do this with S3D?

                              1 Reply Last reply Reply Quote 0
                              • engikeneerundefined engikeneer referenced this topic
                              • Proschi3Dundefined
                                Proschi3D @PCR
                                last edited by Proschi3D

                                This post is deleted!
                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post
                                Unless otherwise noted, all forum content is licensed under CC-BY-SA