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 @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