Giter Club home page Giter Club logo

slic3r's Introduction

Slic3r Build Status Build status Build StatusCoverity Status

We have automated builds for Windows (64-bit) and OSX (>= 10.7). Get a fresh build now and stay up-to-date with the development!

The MacOS X build server is kindly sponsored by:

So, what's this Slic3r?

Slic3r is mainly a toolpath generator for 3D printers: it reads 3D models (STL, OBJ, AMF, 3MF) and it converts them into G-code instructions for 3D printers. But it does much more than that, see the features list below.

Slic3r was born in 2011 within the RepRap community and thanks to its high configurability became the swiss-army knife for 3D printing. It served as a platform for implementing several new (experimental) ideas that later became technology standards, such as multiple extruders, brim, variable-height layers, per-object settings, modifiers, post-processing scripts, G-code macros and more. Despite being based on volunteer efforts, Slic3r is still pushing the boundaries of 3D printing.

Slic3r is:

  • Open: it is totally open source and it's independent from any commercial company or printer manufacturer. We want to keep 3D printing open and free.
  • Compatible: it supports all the known G-code dialects (Marlin, Repetier, Mach3, LinuxCNC, Machinekit, Smoothie, Makerware, Sailfish).
  • Advanced: many configuration options allow for fine-tuning and full control. While novice users often need just few options, Slic3r is mostly used by advanced users.
  • Community-driven: new features or issues are discussed in the GitHub repository. Join our collaborative effort and help improve it!
  • Robust: the codebase includes more than 1,000 unit and regression tests, collected in 6 years of development.
  • Modular: the core of Slic3r is libslic3r, a C++ library that provides a granular API and reusable components.
  • Embeddable: a complete and powerful command line interface allows Slic3r to be used from the shell or integrated with server-side applications.
  • Powerful: see the list below!

See the project homepage at slic3r.org for more information.

Features

(Most of these are also available in the command line interface.)

  • G-code generation for FFF/FDM printers;
  • conversion between STL, OBJ, AMF, 3MF and POV formats;
  • auto-repair of non-manifold meshes (and ability to re-export them);
  • SVG export of slices;
  • built-in USB/serial host controller, supporting multiple simultaneous printers each one with a spool queue;
  • OctoPrint integration (send to printer);
  • built-in projector and host for DLP printers;
  • tool for cutting meshes in multiple solid parts with visual preview (also in batch using a grid);
  • tool for extruding 2.5D TIN meshes.

What language is it written in?

The core parts of Slic3r are written in C++11, with multithreading. The graphical interface is in the process of being ported to C++14.

How to install?

You can download a precompiled package from slic3r.org (releases) or from dl.slicr3r.org (automated builds).

If you want to compile the source yourself follow the instructions on one of these wiki pages:

Can I help?

Sure, but please read the CONTRIBUTING document first!

Directory structure

  • package/: the scripts used for packaging the executables
  • src/: the C++ source of the slic3r executable and the CMake definition file for compiling it
  • src/GUI: The C++ GUI.
  • src/test: New test suite for libslic3r and the GUI. Implemented with Catch2
  • t/: the test suite (deprecated)
  • utils/: various useful scripts
  • xs/src/libslic3r/: C++ sources for libslic3r
  • xs/t/: test suite for libslic3r (deprecated)
  • xs/xsp/: bindings for calling libslic3r from Perl (XS) (deprecated)

Acknowledgements

The main author of Slic3r is Alessandro Ranellucci (@alranel, Sound in IRC, @alranel on Twitter), who started the project in 2011.

Joseph Lenox (@lordofhyphens, LoH in IRC, @LenoxPlay on Twitter) is the current co-maintainer.

Contributions by Henrik Brix Andersen, Vojtech Bubnik, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Y. Sapir, Mike Sheldrake, Kliment Yanev and numerous others. Original manual by Gary Hodgson. Slic3r logo designed by Corey Daniels, Silk Icon Set designed by Mark James, stl and gcode file icons designed by Akira Yasuda.

How can I invoke Slic3r using the command line?

The command line is documented in the relevant manual page.

slic3r's People

Contributors

alranel avatar andy5995 avatar beanz avatar bubnikv avatar cangelis avatar electroquanta avatar foreachthing avatar gilesbathgate avatar henrikbrixandersen avatar hroncok avatar hyperair avatar ixce avatar jaggzh avatar kliment avatar ledvinap avatar lordofhyphens avatar machinekoder avatar ntfshard avatar nwneisen avatar obra avatar oekn5w avatar olasd avatar platsch avatar samir55 avatar sapir avatar supermerill avatar thethirdone avatar triffid avatar uclaros avatar xoan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

slic3r's Issues

Retraction: Additional Length

I don't know how useful (or achievable) this idea is.

The concept here is to allow the printhead to start moving before retraction is completed, so this retraction would occur after the printhead is moving.

Questions: Can the retraction occur at speed while the head is moving? What happens if the head gets where it's going before the retraction has finished?

Advanced: Prefix and Suffix gcode

I currently use start.gcode to insure that my printer is homed properly before starting a print. Because I use sjfw, which doesn't support home commands, this is somewhat complicated.

My start.gcode also makes sure that my hotend is up to temperature before allowing the print to begin.

My end.gcode retracts the filament, turns off the hotend, and homes X and Y.

Tiny movement and jitter

This is hard to explain, but, this model, sliced on Windows w/ 11/4 build: http://www.thingiverse.com/thing:7047

This is the one that I believe drove him to add nearest point search outside of perims, and that's not reflected yet, so yes there is lots of travel from point to point. However, more concerning is that within each "pad" of the bracelet that gets laid down at the beginning, there is a ton of tiny movement and jitter, resulting in EXTREMELY long print time, and a Y axis motor that felt like it was going to burst into flames (never had an issue with it before).

So, I don't know how to explain what is going on, other than maybe to see it, or whether maybe it's related to nearest points bug (but again this happens inside an island). I had to cancel the print based on time and fear for my poor motor ;)

Different speed for inner perimeters

Add a speed setting for inside perimeters, as opposed to infill.

Generally, I've found that if I'm using multiple perimeters, I want them to be accurate, rather than fast, but I don't care where infill lands.

With thing:7013 (miniature castle), Slic3r creates a gcode file with just start and end commands

I've tried to slice http://www.thingiverse.com/thing:7013 several times now with several of my Slic3r profiles—including the default settings—using the version of Slic3r released on 11/04/11, with no luck. What happens is that as soon as I tell it to slice the file, it will immediately report success but produce an obviously bogus gcode file. Nothing is printed to the console. Here's the gcode file it creates with the app's default settings:

M104 S200 ; wait for temperature to be reached
G28 ; home all axes
G90 ; use absolute coordinates
G21 ; set units to millimeters
G92 E0 ; reset extrusion distance
M82 ; use absolute distances for extrusion
M104 S0 ; turn off temperature
G28 X0 ; home X axis
M84 ; disable motors

Odd fill/missing layers below solid pillars

Model here: http://www.thingiverse.com/thing:13408

Model prints mostly fine (way better than SF :) ), but below each pillar for 1 or 2 layers there is space left in in the infill. It actually tries to print the outlines of the columns as if they are inset into the model versus starting at the surface layer. Similar thing happens with Hollow Pyramid Short on thingiverse.

This is 11/4 build!

Skirt: Height

Add a height parameter to Skirt, so that it can be used for its original purpose, which was to hold heat in around the print to reduce warping.

Alternatively, replace the skirt with a prefix print which is defined only by its length, and which circles the print ending up a short distance from where the print will start.

Slic3r erroneously uses M104 to set temperature and wait; should be M109

Slic3r inserts an M104 command as the first line of every gcode file it generates:

M104 S185 ; wait for temperature to be reached

[ beginning of my start.gcode]

G1 E30 F300 ;Prime extruder 30mm
G28 ; home all axes

[ end of my start.gcode ]

G90 ; use absolute coordinates
G21 ; set units to millimeters
G92 E0 ; reset extrusion distance
M82 ; use absolute distances for extrusion
G1 Z-0.825 F18000.000 ; move to next layer
G1 X58.938 Y56.873 ; move to first skirt point
G1 F1080.000 E1.00000 ; compensate retraction
G1 X59.118 Y56.723 F3000.000 E1.00279 ; skirt
G1 X60.108 Y55.923 E1.01795 ; skirt
G1 X60.238 Y55.813 E1.01998 ; skirt

However, M104 does not wait for the temperature to be reached. M109 does that. M104 sets the temperature and them immediately executes the next command. Thus, the hardcoded M104 command should be an M109.

Unnecessary solid layers printed

I was printing the Vanderbilt Mansion (http://www.thingiverse.com/thing:10485) and in two places, many layers of infill were printed in the interior where they really didn't seem to be needed and can't even be seen once the print is done.

In this recording of the individual layers, you can see it at about the 15 and 29-second marks:
http://youtu.be/DLO3Mr_X_8w?t=15s

Here's the profile I used: http://pastebin.com/1PPKarx4

… And here's a zip of the profile, .stl, and generated .gcode file: http://techpaladin.com//wp-content/uploads/random/vanderbilt_issues.zip

Detection of thin walls

Definition: a thin wall is a part of your model whose thickness in the XY plane is <= extrusion width.

Slic3r currently ignores them and produces no extrusion. This is because it tries to draw an outline for the part (that is, 2*extrusion width). We need an algorithm to detect these parts and one to generate a single-path extrusion for them

Detection of thin-walls: inset polygons, then outset them again, and do the difference between the original ones and the result; what's missing are thin walls.

Now the question is: given a thin polygon (with variable thickness and direction), how can we detect its backbone?

Infill gets sparse when it's not printed every layer

I like to print infill every other layer to save time, but I've noticed that in this circumstance, the infill is printed very sparsely; often an infill line will barely touch the lines under it. In cases where I use a very small layer height like 0.08 and print infill only every three or four layers, the infill can break down entirely. Here's a picture that illustrates the layers of infill barely touching the ones beneath them with 0.15 mm layers and infill every other layer: http://www.flickr.com/photos/18245812@N00/6339039117/

Here's the profile I used: http://pastebin.com/1PPKarx4

… And here's a zip of the profile, .stl, and generated .gcode file: http://techpaladin.com//wp-content/uploads/random/vanderbilt_issues.zip

It seems like the flow rate of the infill needs to be increased a bit to ensure that enough of it is laid down in a way that it can properly support the next infill layer.

Accuracy: Perimeter Resolution

Replace the "High-res Perimeters" option with a value which specifies the ratio between perimeter layers and fill layers - a value of 4 would quadruple the vertical resolution of the perimeter.

Duplicate:

Separate "Multiply along X", "Multiply along Y" and "Distance:" into a separate grouping named "Duplicate:"

Rename "Multiply" to "Copies".

Filament: Extrusion Multiplier

Eliminate the backward logic of "Packing Density", and make it logical.

Change "Packing Density" to "Extrusion Multiplier", which is computed in exactly the opposite way, to eliminate the confusion of larger number = less extrusion.

Also has the advantage of being a nod to what people actually use "Packing Density" for - to correct their bad calibration.

Slicing process loses sections on some layers

please see http://triffid-hunter.no-ip.info/slic3r-bug-report-001.tar.lzma

contents:
git_head.txt
x-ends-both-lm8uu-M8-x1.stl
config.ini
x-ends-both-lm8uu-M8-x1.gcode

problem areas:
the skin in the nut traps (layer [email protected]). slic3r detects these as a separate part, and produces unprintable gcode that would leave the nut trap full of dribbles, instead of bridging.

the bridge layer at the top of the smooth rod holes (layer [email protected]). One layer below this, slic3r seems to turn the perimeters inside out, and fills the empty spaces in the nut trap and the central hole in x-end-idler, and leaves the body unfilled and untouched.

about 2/3 of the way up, two layers before the bottom of the top motor mount nut trap (layer [email protected]), the lm8uu holder on the x-end-motor has one complete layer missing.

I have fed this exact same STL to both skeinforge and webskein, neither of them slice those layers in this way so I suspect that this is a bug in slic3r's slicing code rather than a bad STL.

Having said that, webskein does complain about the paths on layers 66 and 213, and automatically applies a slight offset and slices again to get good paths so presumably there are triangles coplanar to the slicing plane at these layers that cause some of the issues.

some top layers erroneously printed as non-solid infill

I was printing the Vanderbilt Mansion (http://www.thingiverse.com/thing:10485) and in three places, infill was printed instead of solid top layers: http://www.flickr.com/photos/18245812@N00/6339822988/

You can also see it a little after second 18 in this recording of the individual layers: http://youtu.be/DLO3Mr_X_8w?t=18s

Here's the profile I used: http://pastebin.com/1PPKarx4

… And here's a zip of the profile, .stl, and generated .gcode file: http://techpaladin.com//wp-content/uploads/random/vanderbilt_issues.zip

Printer: Print Area setting

A setting which would describe the usable print area (X, Y and Z) of the printer, so that a warning could be generated when the user attempts to print something too large.

6d6533831: Can't locate object method "Pulse" via package "Wx::ProgressDialog" at Slic3r/lib/Slic3r/GUI/SkeinPanel.pm line 115.

After I click slice and select a file, I get a dialog saying Can't locate object method "Pulse" via package "Wx::ProgressDialog" at /home/triffid/Projects/Slic3r/lib/Slic3r/GUI/SkeinPanel.pm line 115.

Clicking OK on this dialog takes me back to the gui, no slicing occurs.

Slic3r $ git log | head
commit 6d65338
Author: Alessandro Ranellucci [email protected]
Date: Thu Oct 20 18:11:59 2011 +0200

New experimental --gcode-arcs options to generate G2/G3 commands. #23

Surface blemishes caused by drawing the exterior perimeter before enough filament is being extruded following retraction

I've found that at moderate speeds (50 mm/sec and above), drawing the exterior perimeter first can cause surface blemishes because the filament within the nozzle may not be entirely in position to be extruded following retraction. Here are some examples:

http://techpaladin.com/wp-content/uploads/2011/11/exterior.jpg

http://techpaladin.com/wp-content/uploads/2011/11/wall.png

http://techpaladin.com/wp-content/uploads/2011/11/interior-loop.jpg

The smaller the island and the more retractions before the next layer starts, the bigger the problem. I hesitate to recommend simply drawing exterior perimeters last, since drawing them first definitely results in a nicer finish in places where this problem doesn't manifest. Perhaps a little extra extrusion over an infill part to prime the extruder for putting down enough filament?

Here's the profile I used: http://pastebin.com/fyZci3sM

Accuracy: Extrusion width and/or Extrusion Spacing

Add "Extrusion width:" and "Extrusion spacing:" to the accuracy panel, as advanced options.

The two would be tied to each other, with changes to one being reflected in the other.

If I had to choose between one or the other, I'd rather see extrusion spacing.

In skeinforge, Extrusion spacing = Extrusion width / 1.272.

Note: When printing a 2mm wide rectangle with an extrusion spacing of 1/3mm (or extrusion width of .424), and 2 extra shells, Skeinforge lays down exactly 6 filaments, with equal spacing between them. This implies that the finished part will be about 1/10mm wider than expected, which could explain a small part of the issues we have with hole diameter in skeinforge.

Printer: Firmware setting (Popup)

I'm ambivalent on this one - the idea is to provide a popup which would change the behavior of Slic3r based on which firmware was in use (i.e. Relative E) rather than having the user tick checkboxes for each alteration that a given firmware needed.

The problem is that Slic3r would have to be updated for any new firmware, or the Relative E checkbox would have to be available regardless.

Perhaps a popup which just sets Relative E, and leave the checkbox there?

Arc conversion not ok

The arc g-codes G2 and G3 I and J values need the offset to the center point. Not the absolute position.

Multiple-minute hang for a single layer when slicing

On multiple Mac OS X machines (a 1 year old Mac Mini and a new MacBook Air) I've tried it on, the version of Slic3r released on 11/04/11 is frequently hanging for long periods of time, especially when slicing objects at small layer heights. Examining the console log reveals that it will ususlly hang while slicing a certain layer. For example, while trying to slice the Vica Illusion Sculpture into 0.15 mm layers, Slic3r hung for 15 minutes on layer 645:

11/10/11 6:43:49.767 PM [0x0-0x99099].Slic3r Making perimeter for layer 643:
11/10/11 6:43:49.767 PM [0x0-0x99099].Slic3r Making perimeter for layer 644:
11/10/11 6:43:49.767 PM [0x0-0x99099].Slic3r Making perimeter for laye
11/10/11 6:44:22.000 PM kernel macx_swapoff SUCCESS
11/10/11 6:59:59.000 PM kernel (default pager): [KERNEL]: ps_select_segment - send HI_WAT_ALERT
11/10/11 7:00:00.000 PM kernel (default pager): [KERNEL]: Switching ON Emergency paging segment
11/10/11 7:00:06.000 PM kernel (default pager): [KERNEL]: ps_vstruct_transfer_from_segment - ABORTED
11/10/11 7:00:06.000 PM kernel (default pager): [KERNEL]: Failed to recover emergency paging segment
11/10/11 7:00:06.000 PM kernel macx_swapon SUCCESS
11/10/11 7:00:22.190 PM [0x0-0x99099].Slic3r r 645:
11/10/11 7:00:22.190 PM [0x0-0x99099].Slic3r Making perimeter for layer 646:
11/10/11 7:00:22.190 PM [0x0-0x99099].Slic3r Making perimeter for layer 647:

That's a 15 minute hang! You can see that my system ran out of physical memory from the kernel logs! It eventually ate up 1.5 gigs of RAM. There was another 4-minute hang later, too.

Here's a link to a zip file containing the console log, my profile, two samples of the process while it was hung, the source .stl file, and the resulting .gcode file:

http://techpaladin.com//wp-content/uploads/random/vica_problems.zip

First layer: print at different height to rest of model

Rationale: my bed has surface imperfections up to 0.1mm high, but I want to print models at 0.05mm.

With skeinforge I print my first layer at 0.2mm by massaging bottom:altitude and raft:first layer flow.

Please add a first layer height to the first layer tunables like speed, perhaps a ratio so nothing bad happens if it's left untouched.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.