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
      last edited by PCR

      I just saw that PS added the option to call the dimensions of the print via expressions. So now it is easy to set the M557 for each print automaticly

      just insert

      M557 X{first_layer_print_min[0]}:{first_layer_print_max[0]} Y{first_layer_print_min[1]}:{first_layer_print_max[1]} S8
      

      in your startcode before G28 and mesh of course 😉

      Keep in mind that the M557 stays active till the next print 😉

      PCRundefined 1 Reply Last reply Reply Quote 5
      • PCRundefined
        PCR @PCR
        last edited by

        @pcr for clarification from the PS Soruce code

         // It does NOT encompass user extrusions generated by custom G-code,
                // therefore it does NOT encompass the initial purge line.
                // It does NOT encompass MMU/MMU2 starting (wipe) areas.
        
        Marius Breuerundefined Proschi3Dundefined 2 Replies Last reply Reply Quote 0
        • FBGundefined
          FBG
          last edited by

          Incredible!
          Some idea for Cura?

          PCRundefined 1 Reply Last reply Reply Quote 0
          • PCRundefined
            PCR @FBG
            last edited by PCR

            @fbg

            Will Look Into it tomorrow

            For Ideamaker

            M557 X{print_pos_min_x}:{print_pos_max_x} Y{print_pos_min_y}:{print_pos_max_y} S8
            
            dc42undefined 1 Reply Last reply Reply Quote 0
            • dc42undefined
              dc42 administrators @PCR
              last edited by dc42

              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!

              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

              o_lampeundefined Exerqtorundefined 2 Replies Last reply Reply Quote 1
              • Marius Breuerundefined
                Marius Breuer @PCR
                last edited by

                @pcr this is great!
                Could you clarify, which Prusaslicer version you are using? I'm running Prusaslicer 2.2.0 and it seems to require later versions.

                -Marius

                PCRundefined 1 Reply Last reply Reply Quote 0
                • PCRundefined
                  PCR @Marius Breuer
                  last edited by

                  @marius-breuer

                  Yep 2.3.0 and Higher 😉

                  Why Not Upgrade to 2.3 stable?;))

                  1 Reply Last reply Reply Quote 0
                  • o_lampeundefined
                    o_lampe @dc42
                    last edited by o_lampe

                    @dc42
                    Would it be a good idea to increase the probing area a bit?
                    E.g. 1 grid distance extra.
                    @PCR Or do the PS-dimensions include skirt too?

                    Maybe, if we can read distance part-skirt from PS, take this as safety margin

                    PCRundefined 1 Reply Last reply Reply Quote 0
                    • PCRundefined
                      PCR @o_lampe
                      last edited by

                      @o_lampe skirt is included

                      1 Reply Last reply Reply Quote 0
                      • PCRundefined PCR referenced this topic
                      • PCRundefined PCR referenced this topic
                      • gloomyandyundefined gloomyandy referenced this topic
                      • supernovaeundefined
                        supernovae
                        last edited by

                        Doesn't look like cura has anything that is set as a user variable for print position max that I can find

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

                          Poked around in a sliced gcode from cura - it passes MIX/MAX as comments in beginning of gcode.

                          ;FLAVOR:RepRap
                          ;TIME:1813
                          ;Filament used: 2.3164m
                          ;Layer height: 0.28
                          ;MINX:124.335
                          ;MINY:124.335
                          ;MINZ:0.24
                          ;MAXX:175.665
                          ;MAXY:175.664
                          ;MAXZ:21.45
                          ;Generated with Cura_SteamEngine 4.12.1
                          

                          Looking to see if those are values that can be used in start... if not, may be able to write a small plugin that set variables

                          1 Reply Last reply Reply Quote 1
                          • oliofundefined
                            oliof
                            last edited by oliof

                            min and max for X and Y are also available as macro variables in the recent kiri:moto 3.1 development release.

                            <>RatRig V-Minion Fly Super5Pro RRF<> V-Core 3.1 IDEX k*****r <> RatRig V-Minion SKR 2 Marlin<>

                            1 Reply Last reply Reply Quote 2
                            • supernovaeundefined
                              supernovae
                              last edited by

                              Found a post processing script for cura here: https://forum.duet3d.com/topic/14994/f-r-auto-define-m557-mesh-bounds-from-gcode/5?_=1637506151764

                              It would be nice if we could have the firmware parse this as defining it in every tool i use is a pain 😉

                              PCRundefined 1 Reply Last reply Reply Quote 0
                              • 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
                                            • First post
                                              Last post
                                            Unless otherwise noted, all forum content is licensed under CC-BY-SA