The code for support material is here:
https://github.com/Ultimaker/CuraEngine/blob/master/support.cpp
The angle is calculated, and the area could be easy calculated. Accessibility however, good luck with that.
The code for support material is here:
https://github.com/Ultimaker/CuraEngine/blob/master/support.cpp
The angle is calculated, and the area could be easy calculated. Accessibility however, good luck with that.
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.
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?
Yeah, basically. We're planning to sample a bunch of different rotations and show how time to print compares between them.
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.
@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?
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.
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.
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.
Kewl. Thanks!
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.
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?
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.
Recommended Posts
gr5 2,067
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?
Link to post
Share on other sites