Configuring slicer for multiple extruders



  • 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.



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

    What slicer are you using?



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



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



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



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



  • @deckingman exactly, and yes



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



  • 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.



  • 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.



  • 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.



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


  • administrators

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



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



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



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



  • 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;
    }
    

 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.