Giter Club home page Giter Club logo

matterslice's Introduction

MatterSlice

MatterSlice is a C# console application that generates GCode for 3D printing. It is an improved c# port of CuraEngine which is a c++ translation of Skienforge. MatterSlice has significant improvements to code readability, numerical stability and feature generation.

matterslice's People

Contributors

dependabot[bot] avatar gregory-diaz avatar jlewin avatar johnlewin avatar kevinepope avatar larsbrubaker avatar unlimitedbacon 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

matterslice's Issues

Thin lines not printing at air gap height

Merge overlap lines that should be printing at the airgap height are not. They are printing at the layer height of the layer they belong to rather than elevated by the airgap.

Feature Request

With the emergence of new high performance materials for 3D printing increasingly has been difficult for lay users to configure the correct temperatures for different types of materials, we also know that the materials require different temperatures for different print speeds, and it causes a lot of difference in the outcome of printing.
So I suggest the creation of a feature that allows the inclusion of a temperature table versus speed and the slicer follow this table for cutting. With this we hadware manufacturers we can optimize our mechanics in order to achieve excellence in print quality, and can create Presets temperatures of our materials and deliver it to customers to ease them.

Vinicius Miguel
CNC Brasil

Holes too small

Hi, and thanks in advance for the gr8 job.
I'm trying to leave Slic3r for MatterSlice, but seems that same issues in maths are present in both.
As in Slic3r, MatterSlice is affected by SMALLER HOLES than STL. As for the Slic3r, external dimensions are correct, only holes are affected. Tryed high and low desity poly holes, different speed, temps, layer height and material density (PP, PLA, ABS, HIPS, PVA, Sugar). Difference is between +0.6 / +0.4 , an unacceptable tolerance. And this is true for Cura, Slic3r, and MatterSlice, but not for SkeinForge, that makes holes correctly.

Don't know big maths, but as far as I can see, there is a constant in holes measures between those softwares, and, if I don't going wrong, is the inset routine, am I right?

I wanna really use your software for production, but I made mechanical parts, and this is a great barrier. Please, don't be stone-deaf like Alexrj. It's not a miscalibration behavior. It's a math fault.

Cheers

No retraction for Brim

If the skirt is complete, in case of no brim retraction, wipe and hop are executed before traveling to the start of the parts bottom layer. If first layer extension - brim - loops are set, there is no retraction from skirt to first brim line.

First Layer Support

In recent versions, the first support layer is now a solid layer (instead of spaced using the "Pattern Spacing" option). I understand why this is beneficial for small support structures, but for very large structures its a huge waste of material. Please include an option for "Solid first support layer"

Infill and perimeter speeds not honored if infill speed is 12 or more

Consider a 2 cm test cube with the following speed settings:

  • Infill - 25 mm/s
  • Top Solid Infill - 35 mm/s
  • Inside Perimeters - 40 mm/s
  • Outside Perimeters - 35 mm/s
  • First Layer Speed - 15 mm/s

When slicing with MatterSlice (the version included with version 1.6.2.8214 of MatterControl or the version included with the released 1.6.1 version of MatterControl), the generated perimeter and infill speeds in the G-code for infilled layers do not adhere to the provided settings. This is very apparent when speed is enabled in the layers view of MatterControl and can be seen in the attached image.

If we examine the attached G-code that was generated by MatterSlice, we see that starting at layer 2 (where the non-solid infill starts), the inner wall is printed at 24.4 mm/s, the outer wall is printed at 21.35 mm/s, and the infill is printed at 15.25 mm/s. These are obviously not correct for the settings provided to MatterSlice.

Doing some experimentation, I found that if I set the infill speed to 11 mm/s or less, then the perimeters and infill starting at layer 2 adhere to the prescribed settings.

Calibration Cube (2cm).gcode.txt

2cm cube layers

Infill overshoot

In some cases infill overshoots the perimeter, even if set to very low overlap:

image1
image2
Knob1.txt

The txt file contains the STL, Mattercontrol Version 1.6.1.7967

Skirt goes around nonexistant wipe tower

When the Wipe Tower Size > 0, the skirt goes around where the wipe tower would be even though the wipe tower doesn't exist because only one material is being printed.

nowipetower

Javascript Port

A few of us (@openhardwarecoza @lautr3k) have been working on a browser based 3D Printing suite. Just the basic but necessary: drag in some STL files, display in a ThreeJS based viewer for plating, drag, resize, rotate. Then slice, get gcode back, display it, and send off to machine to print.

Right now I run Slic3r as a cloud service in Windows Azure that allows for HTTP POST with the 'master stl' of the bed layout and a json string of slicing parameters. It then sends gcode back as a string. It's really slow though and we have a lot of issues with CORS since the service in on a different domain.

Anyways, what I really like about MatterSlice is how neatly it is written: there are only 3 things that really seem to happen: variables, math, and Clipper: all of which we can do in JavaScript with only differences in syntax! So I'd like to take a shot at making a javascript implementation for browser based slicing without having to make any server calls.

I've been reading thru this code in depth, but could use some direction.

  • What can I start with for proof of concept? Is Slicer/Slicer.cs self sufficient to run a basic job?
  • Where is the entry point to pass in the input STL file? I can't seem to find this. We store everything as ThreeJS geometry inside an Object3D, but we already traverse it to create the 'master stl' for Slic3r, so we can pass an ASCII stl as a string to this. Maybe switch over to more 'raw' arrays of triangles later for better performance.
  • Similarly, how and where do we capture the output? Just need gcode in the form of a string.

Thanks guys. Looking forward to making this a reality.

Curaengine compatible?

Can this work as a drop-in replacement for Curaengine when called from a host application? (Repetier host)

Thanks

G-code generated requested 30m of filament to be extruded

G1 F6000 X39.25 Y-31.46 E10117.36035
G1 F4800 E10109.36035
<snip>
G92 E0
G1 F4800 E10117.36035
G1 F6000 X-39.81 Y27.37 E0.20195

Given my limited understanding of G-code, this is the reason I ended up with a large coil of filament on my floor that escaped my extruder.

The G-code seems fine outside of that reset-then-large-extrusion.

If you need the actual G-code generated and/or the stl file used to generate, I can provide both. Let me know where to send them.

I'll comment with the bottom of the G-code file that lists the settings.

img_20141227_173117

Spiral vase has movement/retracts in 1.5+

When spiral vase is on in versions since 1.5.1 (estimate), movements are allowed and so retractions can happen. Neither of these should occur with this setting enabled.

Brims overlap base of support material

Example STL and GCode

In this case I printed with support material and 8 brim loops. On the first layer, the brims overlap the base of the support material, so it is trying to print where plastic has already been layed down.

I think the best thing to do is have the brim loops go around the support material as well. This way they would also help hold down the support.

Request: stop using an extruder when it's no longer needed

@whosawhatsis commented on Sun Nov 23 2014

The slicer should not only be smart enough not to heat an extruder that will not be used (as all others do), but it should also be smart enough to begin cooling down an extruder that will not be needed for the remainder of the print and run the rest of the print as a single-extruder job (disabling dual extruder options like ooze shields and priming towers above that point).

Z-Lift not working when printing support material

It does not seem like materslice lifts nozzle when traveling away from a support structure after a retract. This is a huge issue and I have destroyed several 20+ hour prints because of it.

Models that I print have lots of small support structures, and if the nozzle is not lifted it either drags across the actual part leaving ugly lines on top layers, or it knocks over the delicate support structure when moving to/away from them.

Another option would be to have a "Don't travel over printed part/support structures" option, so it forces head to move around objects when traveling from an island. This will add a little extra print time, but it will save lots of headaches.

XY compensation / horizontal size expansion [feature request]

This is a VERY important feature that deals with fittings on 3d printed parts.

The newer slic3r allows it (XY compensation),
the newer Cura (horizontal size expansion),
and the newer Simplify3D (horizontal size compensation).

Different names but the same concept: amount of mm to expand (positive) or contract (negative) the XY layer.

Its best use is to compensate the border of the most exterior stream of extruded plastic, which is what prevent fittings from working (e.g. a 0.4mm nozzle will have and exterior border of 0.2mm, so you need to compensate by using this setting with -0.2mm).

Please add this feature. The algorithm for the compensation is already there: it's sort of what you use for skirts and brim (the expansion of the exterior lines of the part - only for XY compensation you have to expand interior parts too). Implementing it on the slicing should not be difficult.

Feature Request

Hi

I've been trying with manual g-code and these features can really improve time saving and overall quality of the prints.

  1. The ability to choose different infills percentages by layers.
    For example, square base with 20% (it's just a cube) and statue on top with 50% (needs detail and has overhangs).
    same for the support. We only need the high density grid on top, like in the last millimeter.
    the setting could be configurable with something like: "1 [email protected], 81 [email protected]", or the interface has some kind of table where the user enters new rows with layer info.
    : This feature ensures low waste on simple structure forms and speed the printing process.
  2. The ability of choosing different layer thickness by layer, and outline/infill.
    for example the base could be printed at 0.4 and the statue at 0.1.
    In addition to these, the infill could always be at an higher thickness than the outline. The visible part of the printed object it's is outside, so for every 4 outlines at 0.1, the slicer adds an infill of 0.4.
    : This features combine could reduce the printing time more than 50% for a high detail print and the finished surface would be pretty and precise as an long print.

How I made these tests?
I've made it by exporting the same model with different infills and thickness.
Than, manually, combined the gcode from both and used an Max patch to offset the E distance. Very painful for me, but very easy for you to implement, I think!

Thanks for reading.

[enhancement] Relative E-values

I would like the option to use relative E-values, like in slic3r. It makes so much easier to debug the gcode and also to restart from a previous point in printing...

No output until 6th layer?

I'm working on updating the Orion docs and I wanted to show what support and a raft looked like. Unfortunately, MatterSlice doesn't appear to be doing any extrusion until layer six.
Here's what the raft configuration looks like:
http://www.geneb.org/orion/print-setup.jpg
Here's the layer view showing layer six where the extrusion actually begins:
http://www.geneb.org/orion/layer-six.jpg
This isn't an anomaly in the layer display - the printer actually doesn't begin to extrude until layer six. Nor does it appear to be doing any moves that would indicate it's laying down a raft.
The build of MatterControl is 1.2.2.3896.

Thanks!

MatterControl Slice Settings export is not the same as MatterSlice config files

Hello,

I've written an OctoPrint plugin that will allow users to use MatterSlice with OctoPrint. I've run into an issue where if I export Slice Settings from MatterControl, then try to use that file with -c with MatterSlice, the values don't match up and thus the slice settings are not useful in this instance. Are there plans to either change the settings to be the same values as the slice settings from MatterControl or perhaps a flag to indicate the settings are from MatterControl via a --from-mattercontrol/-mc or something similar?

Should I post this on MatterControl's repo instead?

Thanks!

Support material should respect retract when changing islands

Right now there are no retractions while printing support material. When moving from one support area to another, if the print is in between, it will leave a string connecting the support to the print. Z lift also does not happen, so the nozzle may knock into the print (related forum thread).

I think the best way to handle this is to have support honor the retract when changing island setting.

Very slow printing with some parts.

I have a simple part about 2" by 1.5" and 1/4" thick.
Using standard parameters it prints the first layer normal.
Then it prints the base 3 layers medium speed.
Then when it gets to fill layers it slows to a very slow speed.
When it gets to layer 28 it speeds back up.
It never uses the max speed for anything.
I have printed smaller parts and bigger parts with same settings with no problems.
Whats the problem?

Stabilizer.zip

Support without Brim

The brim (first layer expansion) setting from priming does not create a brim for the support towers.

The attached images outlines this, as well as the issue with creating support inside the model where it should only create support from build plate.

image2

STL is the small Dodeca from http://www.thingiverse.com/thing:1453733 (which prints well without support though)

IMHO a separate brim setting for support - as lines, positive and negative - would be ideal to have control over the support "foorprint".

Standalone build CS0019

Hey guys,
I cloned the matterslice repo, restored the nuget packages, but the project doesn't build, I get
CS0019 Operator '-' cannot be applied to operands of type 'IntPoint' and 'IntPoint'
and many identical errors for other kinds of operands.
Are there build dependencies I'm missing or a build procedure ? I could only find one for MatterControl and not for MatterSlice only.
Cheers

License

CuraEngine was AGPLv3. You cannot re-license this to LGPL like this. So it should be AGPL just like the CuraEngine.

(Nice that you kept the copyrightstatements in place, shows that this is not really intentional)

Top layer travel Z-Hop

When printing the final top layer, travel moves run in build height, leaving travel marks on the model surface. For some reason - I run retraction with Z Lift - this doesnt seem to apply here.

Disable retraction for infill?

The Triangle and Hex infill patterns can be very time-inefficient with regard to the high number of short line segments and the resulting high number of retractions. Many printers require retraction settings that incur significant time increases or other performance detriments when the number of retractions per layer is high. For example, bowden extruders often have extruder performance problems performing rapid sequences of closely spaces retractions. On a recent test with a non-bowden extruder where I used retraction distance of 1.5mm at 60mm/s to print a comparison using the same speeds and comparable features to gcode exported from slic3r I found that matterslice gcode took 24% longer to print. The increased layer time was due to hundreds of additional retractions during hex infill.

I suggest providing an option to disable retraction for infill, this would allow for no changes to the pattern itself and significantly improve layer times without much impact to quality since infill is usually not externally visible.

Internal support issue

Even though "Support Everywhere" is unchecked, MatterSlice will still generate support material on internal structures even when that material was mot started touching the bed.

Build errors

1>------ Build started: Project: MatterSlice, Configuration: Debug Any CPU ------
1>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "nunit.framework". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\BridgeTests.cs(37,7,37,12): error CS0246: The type or namespace name 'NUnit' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\TestUtlities.cs(38,7,38,12): error CS0246: The type or namespace name 'NUnit' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SettingsTests.cs(38,7,38,12): error CS0246: The type or namespace name 'NUnit' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SlicingTests.cs(38,7,38,12): error CS0246: The type or namespace name 'NUnit' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\BridgeTests.cs(47,10,47,14): error CS0246: The type or namespace name 'Test' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\BridgeTests.cs(47,10,47,14): error CS0246: The type or namespace name 'TestAttribute' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\BridgeTests.cs(44,6,44,17): error CS0246: The type or namespace name 'TestFixture' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\BridgeTests.cs(44,6,44,17): error CS0246: The type or namespace name 'TestFixtureAttribute' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SettingsTests.cs(98,10,98,14): error CS0246: The type or namespace name 'Test' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SettingsTests.cs(98,10,98,14): error CS0246: The type or namespace name 'TestAttribute' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SettingsTests.cs(108,10,108,14): error CS0246: The type or namespace name 'Test' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SettingsTests.cs(108,10,108,14): error CS0246: The type or namespace name 'TestAttribute' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SettingsTests.cs(117,10,117,14): error CS0246: The type or namespace name 'Test' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SettingsTests.cs(117,10,117,14): error CS0246: The type or namespace name 'TestAttribute' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SettingsTests.cs(42,6,42,17): error CS0246: The type or namespace name 'TestFixture' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SettingsTests.cs(42,6,42,17): error CS0246: The type or namespace name 'TestFixtureAttribute' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SlicingTests.cs(45,10,45,14): error CS0246: The type or namespace name 'Test' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SlicingTests.cs(45,10,45,14): error CS0246: The type or namespace name 'TestAttribute' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SlicingTests.cs(74,10,74,14): error CS0246: The type or namespace name 'Test' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SlicingTests.cs(74,10,74,14): error CS0246: The type or namespace name 'TestAttribute' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SlicingTests.cs(42,6,42,17): error CS0246: The type or namespace name 'TestFixture' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\mic_000\Downloads\MatterSlice-master\UnitTests\SlicingTests.cs(42,6,42,17): error CS0246: The type or namespace name 'TestFixtureAttribute' could not be found (are you missing a using directive or an assembly reference?)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

MatterSl

Closely spaced inner and outer walls with <50% infill causes MatterSlice to not lay down a closed top layer, even though the model has a solid top layer. See attached STL and image for reference, and set nozzle to .4, 2 perimeter walls, .3 layer hight, and 20% infill.

screen shot 2016-06-24 at 4 05 44 pm

2x Arduino_Breadboard_Holder_v5_netfabb_mm.stl.zip

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.