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

    Configuring slicer for multiple extruders

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    6
    17
    2.1k
    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.
    • gnydickundefined
      gnydick
      last edited by

      When I'm using my 2nd extruder alone, sometimes the printer puts the tool in standby instead of active, and it activates the first extruder.

      The g-code generated only has references to T1, so I don't understand how that happens.

      1 Reply Last reply Reply Quote 0
      • Phaedruxundefined
        Phaedrux Moderator
        last edited by Phaedrux

        Can you post your tpre.g tfree.g and tpost.g files?

        What slicer are you using?

        Z-Bot CoreXY Build | Thingiverse Profile

        gnydickundefined 1 Reply Last reply Reply Quote 0
        • gnydickundefined
          gnydick @Phaedrux
          last edited by

          @phaedrux
          slic3r

          tfree0&1 are blank

          tpost0&1 respectively are
          M116 P0

          M116 P1

          tpre0&1 respectively are
          G1 X1 Y205 F6000

          G1 X1 Y205 F6000

          deckingmanundefined 1 Reply Last reply Reply Quote 0
          • deckingmanundefined
            deckingman @gnydick
            last edited by

            @gnydick If the generated gcode file only had T1 command but no T0 commands then it's a slicer issue. How did you assign the extruders to model parts in slic3r?

            Ian
            https://somei3deas.wordpress.com/
            https://www.youtube.com/@deckingman

            gnydickundefined 1 Reply Last reply Reply Quote 0
            • gnydickundefined
              gnydick @deckingman
              last edited by

              @deckingman with the slicer interface itself. assigning extruder 2 to the model directly.

              with a dual extruder printer that is not using T0, why would generated g-code include T0?

              deckingmanundefined 1 Reply Last reply Reply Quote 0
              • deckingmanundefined
                deckingman @gnydick
                last edited by

                @gnydick said in Configuring slicer for multiple extruders:

                @deckingman with the slicer interface itself. assigning extruder 2 to the model directly.

                with a dual extruder printer that is not using T0, why would generated g-code include T0?

                Sorry I may have misunderstood what you were trying to do. So basically what you are trying to do is print a single colour using the second tool (T1) only. Is that correct?

                If so, are you sure there are no references to T0 anywhere in the gcode file and that before any print moves, there is a T1 command?

                Ian
                https://somei3deas.wordpress.com/
                https://www.youtube.com/@deckingman

                gnydickundefined 1 Reply Last reply Reply Quote 0
                • gnydickundefined
                  gnydick @deckingman
                  last edited by

                  @deckingman exactly, and yes

                  deckingmanundefined 1 Reply Last reply Reply Quote 0
                  • deckingmanundefined
                    deckingman @gnydick
                    last edited by

                    @gnydick Try putting the active and standby temperatures in slic3r start and end gcodes.

                    So in the starting gcode put:

                    G10 P0 Snnn Rnnn
                    G10 P1 Snnn Rnnn

                    (where nnn are the temperatures you want to use)

                    Then in the end gcode put the following to turn off all hot end heaters

                    G10 P0 S-273 R-273
                    G10 P1 S-273 R-273

                    Ian
                    https://somei3deas.wordpress.com/
                    https://www.youtube.com/@deckingman

                    1 Reply Last reply Reply Quote 0
                    • Scachiundefined
                      Scachi
                      last edited by Scachi

                      Similar issue here, using slic3r prusa edition 1.41.2+win64 and a y-adapter for mm using two extruders.

                      I can get slic3rPE to include a tool when using a single material or both extruder as long as I assign a extruder to each part and assign a none existing tool as the default. But it won't run the first used tools filament load for me.
                      I use the post files only for waiting for temp to be reached. I use the mm settings in slic3r for the loading/unloading.
                      It looks like it thinks the first filament is already loaded always. But I prefer to unload it when finished printing.

                      So I ended up using multiple print and printer settings (3 : 1xMM, 1xTool 0, 1xTool 1) that includes the gcode to load the first filament used and run a post processing script for the fan and temp settings:
                      Post processing script entry:

                      d:\slic3r_script.bat
                      

                      d:\slic3r_script.bat content:

                      C:\"Program Files"\Prusa3D\Slic3rPE\perl5.24.0.exe d:\slic3r_my.pl %*
                      

                      d:\slic3r_my.pl content:

                      #!/usr/bin/perl -i
                      #
                      # Translate Fan gcodes 
                      
                      use strict;
                      use warnings;
                      
                      $^I = '.bak';
                      # read stdin and any/all files passed as parameters one line at a time
                      
                      my $ActiveTool="-1";
                      my $NewTool="-1";
                      while (<>) {
                      
                      	if (/^T([0-9]{1,3})/) { # search for tool change command
                      	  print "; Found Tool Nr: $1\n";
                      	  $NewTool=$1
                      	}
                      	s/M106/M106 P0/; # model fan speed command
                      	s/M107/M106 P0 S0/; # model fan turn off
                      	s/M104\s*(S[0-9]{1,3}) T([0-9])/G10 P$2 $1/; # set tool temperature (old)
                      	if ($NewTool > -1) {
                      		s/M104\s*(S[0-9]{1,3})\s*; set temperature/G10 P$NewTool $1 ; set temperature - modified/;
                      	} else {
                      		s/M104\s*(S[0-9]{1,3})\s*; set temperature/;M104 $1 ; set temperature - modified/;
                      	}
                      	
                      	s/M109/;M109/; # deprecated don't use "set temperature and wait for it to be reached" - use duets own tool change macros and G10 command
                      	print;
                      }
                      

                      I think I would be able to use only one printer settings when I would know perl better.

                      1 Reply Last reply Reply Quote 0
                      • deckingmanundefined
                        deckingman
                        last edited by

                        I'm starting to hate the PE version of slic3r with a vengeance. It's getting more and more biased to the way that Prusa's firmware and hardware works and can really screw things up when using other printers and/or firmware. IMO slicers should be firmware agnostic and not mess around with printer configuration settings as Prusa's version of slic3r can do. My start and end codes are now empty apart from one command that just calls my own macros.

                        Ian
                        https://somei3deas.wordpress.com/
                        https://www.youtube.com/@deckingman

                        1 Reply Last reply Reply Quote 0
                        • Scachiundefined
                          Scachi
                          last edited by

                          Using the prime tower of slic3r PE requires to use "Single Extruder Multi Material" setting at the moment.
                          I'll try to switch to use a purge bucket so I don't need to use the prime tower/MM settings of slic3r anymore.
                          This would also allow easier testing/usage of different slicer software without having to adjust everything.

                          deckingmanundefined dc42undefined 2 Replies Last reply Reply Quote 0
                          • deckingmanundefined
                            deckingman @Scachi
                            last edited by

                            @scachi Or use plain vanilla slic3r instead of the PE version - at least for testing.

                            Ian
                            https://somei3deas.wordpress.com/
                            https://www.youtube.com/@deckingman

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

                              @scachi said in Configuring slicer for multiple extruders:

                              Using the prime tower of slic3r PE requires to use "Single Extruder Multi Material" setting at the moment.

                              Have you considered implementing a prime tower in the RRF tool change files?

                              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

                              Scachiundefined fmaundefined 2 Replies Last reply Reply Quote 0
                              • Scachiundefined
                                Scachi @dc42
                                last edited by

                                @dc42 I have no idea how to do that. Is it possible without a tool change on every layer ?

                                1 Reply Last reply Reply Quote 0
                                • Scachiundefined
                                  Scachi @deckingman
                                  last edited by

                                  @deckingman said in Configuring slicer for multiple extruders:

                                  @scachi Or use plain vanilla slic3r instead of the PE version - at least for testing.

                                  Thank you. I will test it.

                                  1 Reply Last reply Reply Quote 0
                                  • fmaundefined
                                    fma @dc42
                                    last edited by

                                    @dc42 said in Configuring slicer for multiple extruders:

                                    Have you considered implementing a prime tower in the RRF tool change files?

                                    It may not that simple, as we need to know some slicer parameters, like nozzle width or layer height, in order to compute the correct amount of extrusion.

                                    I agree with Ian about Slic3rPE becoming to Prusa hardware dependent... On the other hand, it has unique features.

                                    Frédéric

                                    1 Reply Last reply Reply Quote 0
                                    • Scachiundefined
                                      Scachi
                                      last edited by

                                      I have modified my perl script. It will add the first tool to the file if not is found before the first layer change.
                                      Now I can use a single print & printer settings with slic3r PE.

                                      You need to add this line to your start gcode in slic3r so the script knows the default tool to use:

                                      ;my_default_tool=[perimeter_extruder]
                                      

                                      and this line to the end of your start gcode for the script to know when the first layer is started:

                                      ;my_startgcode_end
                                      

                                      Here is the script:

                                      #!/usr/bin/perl -i
                                      #
                                      # - Translates Fan gcodes 
                                      # -	Adds the default tool as first tool when none is found before the first layer change
                                      # -	Removes M109 : set and wait for temperature command
                                      #
                                      # You need to add this line to your start gcode in slic3r so the script knows the default tool:
                                      #	;my_default_tool=[perimeter_extruder]
                                      # and this line to the end of your start gcode for the script to know when the first layer is started:
                                      #	;my_startgcode_end
                                      
                                      use strict;
                                      use warnings;
                                      
                                      $^I = '.bak';
                                      # read stdin and any/all files passed as parameters one line at a time
                                      
                                      my $DefaultTool="0";
                                      my $FirstToolCheck="0";
                                      my $SlicerTool="-1";
                                      
                                      while (<>) {
                                      	if (/^;my_default_tool\=([0-9]{1})/) { # search for ;my_default_tool
                                      		#print "; Found Default Tool $1\n";
                                      		$DefaultTool=$1-1;
                                      	}
                                      	
                                      	s/M106/M106 P0/; 	# model fan speed command
                                      	s/M107/M106 P0 S0/; # model fan turn off
                                      	
                                      	s/M104\s*(S[0-9]{1,3}) T([0-9])/G10 P$2 $1/; # set tool temperature (old)
                                      	
                                      	# first tool search , use DefaultTool if none is found before the first line containing ;BEFORE_LAYER_CHANGE
                                      	if ($FirstToolCheck > 0) { # check if first tool is defined
                                      		#print "; First Tool Check > 0\n";
                                      		if (/^T([0-9]{1})/) { # search for first tool set
                                      			$SlicerTool=$1;
                                      		}
                                      		if (/^;BEFORE_LAYER_CHANGE/) { # when no tool is found use DefaultTool parsed from GCODE line, example: ;my_default_tool=[perimeter_extruder]
                                      			$FirstToolCheck = "0";
                                      			if ($SlicerTool < 0) {
                                      				print "T$DefaultTool; set default tool as first tool as none was found\n";
                                      			}
                                      		}
                                      	}
                                      	if (/^;my_startgcode_end/) { # search for ;my_startgcode_end
                                      	  print "; is a tool defined before reaching line ;BEFORE_LAYER_CHANGE ?\n";
                                      	  $FirstToolCheck="1";
                                      	}
                                      	
                                      	s/M109/;M109/; # deprecated don't use "set temperature and wait for it to be reached" - use duets own tool change macros and G10 command
                                      	print;
                                      }
                                      
                                      1 Reply Last reply Reply Quote 1
                                      • First post
                                        Last post
                                      Unless otherwise noted, all forum content is licensed under CC-BY-SA