• Tags
  • Documentation
  • Order
  • Register
  • Login
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.
  • undefined
    gnydick
    last edited by 13 Jan 2019, 21:13

    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
    • undefined
      Phaedrux Moderator
      last edited by Phaedrux 13 Jan 2019, 23:45

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

      What slicer are you using?

      Z-Bot CoreXY Build | Thingiverse Profile

      undefined 1 Reply Last reply 14 Jan 2019, 03:23 Reply Quote 0
      • undefined
        gnydick @Phaedrux
        last edited by 14 Jan 2019, 03:23

        @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

        undefined 1 Reply Last reply 14 Jan 2019, 06:38 Reply Quote 0
        • undefined
          deckingman @gnydick
          last edited by 14 Jan 2019, 06:38

          @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

          undefined 1 Reply Last reply 14 Jan 2019, 19:41 Reply Quote 0
          • undefined
            gnydick @deckingman
            last edited by 14 Jan 2019, 19:41

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

            undefined 1 Reply Last reply 14 Jan 2019, 20:14 Reply Quote 0
            • undefined
              deckingman @gnydick
              last edited by 14 Jan 2019, 20:14

              @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

              undefined 1 Reply Last reply 15 Jan 2019, 01:20 Reply Quote 0
              • undefined
                gnydick @deckingman
                last edited by 15 Jan 2019, 01:20

                @deckingman exactly, and yes

                undefined 1 Reply Last reply 15 Jan 2019, 09:05 Reply Quote 0
                • undefined
                  deckingman @gnydick
                  last edited by 15 Jan 2019, 09:05

                  @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
                  • undefined
                    Scachi
                    last edited by Scachi 15 Jan 2019, 10:40

                    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
                    • undefined
                      deckingman
                      last edited by 15 Jan 2019, 11:01

                      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
                      • undefined
                        Scachi
                        last edited by 15 Jan 2019, 13:54

                        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.

                        undefined undefined 2 Replies Last reply 15 Jan 2019, 15:03 Reply Quote 0
                        • undefined
                          deckingman @Scachi
                          last edited by 15 Jan 2019, 15:03

                          @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

                          undefined 1 Reply Last reply 15 Jan 2019, 17:12 Reply Quote 0
                          • undefined
                            dc42 administrators @Scachi
                            last edited by 15 Jan 2019, 15:07

                            @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

                            undefined undefined 2 Replies Last reply 15 Jan 2019, 17:11 Reply Quote 0
                            • undefined
                              Scachi @dc42
                              last edited by 15 Jan 2019, 17:11

                              @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
                              • undefined
                                Scachi @deckingman
                                last edited by 15 Jan 2019, 17:12

                                @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
                                • undefined
                                  fma @dc42
                                  last edited by 16 Jan 2019, 07:29

                                  @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
                                  • undefined
                                    Scachi
                                    last edited by 16 Jan 2019, 18:12

                                    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
                                    9 out of 17
                                    • First post
                                      9/17
                                      Last post
                                    Unless otherwise noted, all forum content is licensed under CC-BY-SA