Jump to content

data generation


valkyrie

Recommended Posts

Posted · data generation

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?

 

  • Link to post
    Share on other sites

    Posted · data generation

    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

    Posted · data generation

    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.

     

  • Link to post
    Share on other sites

    Posted · data generation

    Yeah, basically. We're planning to sample a bunch of different rotations and show how time to print compares between them.

     

  • Link to post
    Share on other sites

    Posted · data generation

    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.

     

  • Link to post
    Share on other sites

    Posted · data generation

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

     

  • Link to post
    Share on other sites

    Posted · data generation

    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.

     

  • Link to post
    Share on other sites

    Posted · data generation

    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.

     

  • Link to post
    Share on other sites

    Posted · data generation

    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.

     

  • Link to post
    Share on other sites

    Posted · data generation

    Kewl. Thanks!

     

  • Link to post
    Share on other sites

    Posted · data generation

    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. :)

     

  • Link to post
    Share on other sites

    Posted · data generation

    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?

     

  • Link to post
    Share on other sites

    Posted · data generation

    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.

     

  • 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
    • Our picks

      • UltiMaker Cura 5.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
         
          • Like
        • 18 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
         
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    ×
    ×
    • Create New...