Jump to content
Ultimaker Community of 3D Printing Experts
Sign in to follow this  
valkyrie

data generation

Recommended Posts

I'm working on a data visualization project related to 3D printing and how material usage, print time, etc., vary with part orientation. It's pretty easy to figure out material use and print time, but now I'm looking at a more interesting metric: support material removal time. There are a number of things that I think can influence this, including

1. surface area of print covered by support material

2. angle of join between support material and model (more oblique angles make the support easier to remove)

3. accessibility of support material (e.g. is the support material in a small place hidden behind other parts of the model vs. on a flat face in the open)

To gather these bits of data, I'm about to delve into Cura's source. Does anyone have pointers on where I should look? I'm planning to start with 1, since it seems the easiest to compute.

Have any of you hacked at the source that have tips? Does Cura secretly compute any of these things already?

 

Share this post


Link to post
Share on other sites

Yikes. Why bother? Sometimes support snaps off in less than a second as a single piece. Sometimes I have to get the dremel out and spend 20 minutes cleaning even a tiny part.

More useful would be to look at the gcode, know the acceleration and jerk settings and calculate the REAL time to print. Right now Cura just assumes every print line segment is printed at the full speed but in reality it accelerates and decelerates at every vertex. Plus retraction takes time - maybe 1 second for each retraction and prime motion.

Is this for a college research paper?

 

Share this post


Link to post
Share on other sites

gr5, it is for a research paper. :) I'm actually a PhD student working on 3D printing/digital fabrication as a research topic.

I'm happy to look at all kinds of stuff for the visualization; if you all have other ideas for what would be helpful, fire away!

Thanks, Daid, for the pointer! Makes this a lot easier.

 

Share this post


Link to post
Share on other sites

Is this visualization going to show a 3d picture of a part and then show a graph that shows "time to print" versus angle?

Or do I completely not understand?

 

Share this post


Link to post
Share on other sites

So the UM prints long lines faster than short because it takes a while to get up to speed (there are acceleration settings). So it seems like if you printed something shaped like a popsicle stick it would print much slower vertically. I don't know if this affects very many parts though.

Also when you print something like a scan of something in real life - there tends to be lots of very short line segments with very sharp corners from one line segment to the next. If 0 degrees is no change in direction then angles of 30 degrees are not uncommon so the printer has to slow way way down due to the "jerk" setting (which has a special definition in Marlin by the way). So smoothing these objects can drastically speed up the printing. The printer tends to vibrate and shake like crazy if they aren't smoothed - it comes out fine but it's noisy.

A simple way to smooth is to just reduce the qty of polygons:

http://www.shapeways.com/blog/archives/226-polygon-count-reduction-with-meshlab.html

 

But a better algorithm would actually do some smoothing of the noise. meshlab probably can do that also but I haven't played with it much.

 

Share this post


Link to post
Share on other sites

@Daid : can I get a quick pointer on what exactly is happening in the support code? I can see, of course, where support points are added to the support grid, but I don't precisely understand what a support point is. Is there one point per vertex of each triangle? Is a support point in the middle for the whole triangle?

 

Share this post


Link to post
Share on other sites

The support points are a 2D grid projected on the Z plane. The grid is as large as the object and each point has a fixed X/Y position by the dimensions for this grid, and each point has one or more Z positions for each time a ray from the bottom to the top crosses the object boundary.

 

Share this post


Link to post
Share on other sites

This project is almost done, hooray! :-P

My last question is related to the coordinate system being used in CuraEngine. If I inspect my STL files (ASCII, fortunately), I see a bunch of floating point vertices, some of which are >0 and some of which are <0. Cura seems to be not only rounding them off, but changing their order of magnitude and bumping them all up to be positive? What I'm hoping to do is visualize the faces that have support material attached, but Cura seems to be getting into a totally different coordinate space from the original STL.

 

Share this post


Link to post
Share on other sites

Cura centers the part in X and Y on the center of the machine (around 100,100mm - maybe 102.5,102.5?) and raises the part so the lowest point is at z=0.

There should be no other transformations unless you purposefully scale the part.

 

Share this post


Link to post
Share on other sites

If you're curious, the semi-final version of the visualization (for my class this semester, anyway), is up at:

http://supportsupport.valkyriesavage.com/

You can click around the heatmaps to rotate the wizard (darker colors on the heatmap correspond to orientations with worse values for that metric). I know the usability of it is really bad ATM, but if you all have comments on what we should add/improve, please let us know!

https://docs.google.com/forms/d/1d_D3WL3c-QuYscFnbdkzdYe00aSkD8PZyxxaBbFW9Bo/viewform

I'm planning to spruce it up a bit and allow folks to upload their own models for testing... but that hasn't happened yet. :)

 

Share this post


Link to post
Share on other sites

I get the red graphs - angle determines print time. There are 2 angles so you have a 2d map of print time.

Green graph - I guess material changes due to amount of support material? But why is green graph x axis from 0 to 26? and not 0 to 90?

don't understand purple either I guess.

Blue graph I assume is the amount of object that has angles over a certain value? 45 degrees? Based on orientation? Or something else?

 

Share this post


Link to post
Share on other sites

Hmm.. yes, interface problems.

The green graph: material use changes due to support. I am only calculating the volume of support, subtracting out the volume of the base model. The left is a heatmap of orientation from -180->180 on X and Y. The right one is a histogram of all the values that we got from our samples (we sampled every 20 degrees in X and Y for rotations).

The purple graph is the surface area of the model that contacts support material. This changes based on orientation, too.

The blue is a histogram of all the angles of support material in the current orientation. You can click around the heatmaps to change the orientation of the model; in my experience, the angle at which the support hits the model can make it harder or easier to remove, so I measured that, too.

Sadly the only interactive thing is the heatmaps on the far left. They rotate the model around.

Darker colors = worse, and lighter colors = better on the heatmaps. So longer print times are darker, more material use is darker, etc.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Our picks

    • Ultimaker Cura | a new interface
      We're not only trying to always make Ultimaker Cura better with the usual new features and improvements we build, but we're also trying to make it more pleasant to operate. The interface was the focus for the upcoming release, from which we would already like to present you the first glance. 
        • Like
      • 19 replies
    • "Back To The Future" using Generative Design & Investment Casting
      Designing for light-weight parts is becoming more important, and I’m a firm believer in the need to produce lighter weight, less over-engineered parts for the future. This is for sustainability reasons because we need to be using less raw materials and, in things like transportation, it impacts the energy usage of the product during it’s service life.
        • Like
      • 12 replies
×

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!