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

"Panellised" prints

Recommended Posts

Is there a way to easily "panellise" GCode? for example: I have a 15mm x 20mm part, and I need a lot of them, is there a program that I can load my gcode into to print say 8 columns of 8 rows of this part? This would print out 64 parts at a time.

Alternatively, if this could be set-up through the ulticontroller that would be amazing.

Share this post


Link to post
Share on other sites

In Skeinforge there's a module called "Multiply" for this purpose. I don't know if cura gives you access to it but you might try Daid's own version of it that builds an object at a time instead of all at once.

Or you could duplicate the object in your favourite 3d-editor.

Or you could use Netfabb.

I'm sure there are other ways but those are the ones that spring to mind at 9AM after 5 hours of sleep.

Share this post


Link to post
Share on other sites

Cura's project planner can do this, which will print 1 object at a time. The next release will include a feature to print all the objects at once, in the same way the multiply feature works.

In Cura RC2 or lower you can also use the multiply feature from Skeinforge, however this was removed in RC3 due to a number of reasons.

Share this post


Link to post
Share on other sites

So if you don't print one object at time, how do the others work? Printing all of the parts on one layer then going to the next layer for all parts? Or am I misunderstanding you?

Printing each part completely before moving onto the next would definitely be preferably to throwing away 60 half finished parts in the event of something going wrong!

Share this post


Link to post
Share on other sites
So if you don't print one object at time, how do the others work? Printing all of the parts on one layer then going to the next layer for all parts? Or am I misunderstanding you?

Printing each part completely before moving onto the next would definitely be preferably to throwing away 60 half finished parts in the event of something going wrong!

You are exactly right. Cura's project planner will print 1 object completely, and then move to the next. Due to the size of the printer head this will take up a bit more room on the printer bed.

All other tools (Slic3r, Skeinforge multiply) print 1 layer of all the objects at a time. Which indeed can cause a failure to have lots of half finished objects.

Here is an example of Cura:

http://daid.eu/~daid/IMG_20120424 ... .small.jpg

each object was printed separately there, shown by the skirt around each object.

Share this post


Link to post
Share on other sites

Ah, thats excellent. I didnt even think of printing one layer of each, i thought printing each part separately would be stronger too.

The part i'm immediately thinking of this for is quite low profile so i shouldn't need too much extra clearance around each part.

Share this post


Link to post
Share on other sites

We have had some succes using the print head to push a finished print off off the bed and then starting a new one. We use a different tape than the standard blue one for this: Sigma ProGold. It sticks a lot less, but still enough when printing the first layer at moderate speed and with the fan off. When cooled it just pops off. We use a switching routine and copy/paste the 'main' g-code + switch a couple of times. See

Our switch code: (printer just printed our part, is on top layer height of 34 mm)

G1 F4200; set rapid speed for travel move
G0 Z44 ;go up (actually just final print height + 10mm)
G0 X136.9 Y150 ; go to x-y spot, x is chosen to have the head push with the bolt on which the fan is attached
G0 Z4 ;move down
G1 Y0 F3000 ; push print off with movement speed 3000 mm/min

The code then looks like this:


  • [*:14hr3q3m]printer start code
    [*:14hr3q3m]main gcode
    [*:14hr3q3m]switch
    [*:14hr3q3m]main gcode
    [*:14hr3q3m]switch
    [*:14hr3q3m]... repeat
    [*:14hr3q3m]end gcode

We are still working on this (not a priority atm though). Some points:

  • [*:14hr3q3m]We use manual gcode editing at this point
    [*:14hr3q3m]We made an error with applying our tape, so the print got stuck at an edge and sprang away
    [*:14hr3q3m]We haven't got a good first layer (even with skirt), possibly because of a retract move at the end of print or oozing (Z-height is no problem, you correct this for the first print anyway)
    [*:14hr3q3m]Not sure about relative/absolute positioning and how we can use it best

Share this post


Link to post
Share on other sites

Interesting test to push off the printed object. I always assumed it was possible with some types of objects. I currently cannot test it as my tape sticks better to the object then the platform.

You could change the Z lift with a small piece of relative code:

G1 F4200; set rapid speed for travel move
G91 ;Relative mode
G0 Z10 ;go up
G90 ;Absolute mode
G0 X136.9 Y150 ; go to x-y spot, x is chosen to have the head push with the bolt on which the fan is attached
G0 Z4 ;move down
G1 Y0 F3000 ; push print off with movement speed 3000 mm/min

This way you don't need to know the height of your print.

Share this post


Link to post
Share on other sites

Haha, knocking the prints off is an awesome idea. We'll be printing with ABS on a heated bed though, a part about 20mm long, 17mm wide and 10mm high. I think we'll have too much surface adhesion, as awesome as spitting the parts out would be.

I wonder about buying a metre of kapton 200mm wide though, and making a cycling bed that would cool the parts down as it goes off to one side, and then as it gets to the roller it would fall off whether it wants to or not. Assuming you had no technical issues you could basically set it up and forget about it for a week.

Share this post


Link to post
Share on other sites
Haha, knocking the prints off is an awesome idea. We'll be printing with ABS on a heated bed though, a part about 20mm long, 17mm wide and 10mm high. I think we'll have too much surface adhesion, as awesome as spitting the parts out would be.

the script could control the HBP temp. print the plate with all your parts, when finished, turn off the HBP, wait until it dropped to 50C, and come up with a path to push all the parts off the platform. then heat up again, and start printing again. sounds possible to me.

 

I wonder about buying a metre of kapton 200mm wide though, and making a cycling bed that would cool the parts down as it goes off to one side, and then as it gets to the roller it would fall off whether it wants to or not. Assuming you had no technical issues you could basically set it up and forget about it for a week.

something like this: http://www.makerbot.com/blog/2010/09/13/makerbot-automated-build-platform/ ?

a simple sweeper (like the ones used in bowling alleys to remove the pins) would work as well.

Share this post


Link to post
Share on other sites

I think an heated bed would make it easier to push off parts, not harder. You can use M190 to cool down and wait for the heated bed.

Some kind of wiper would be pretty cool, and I think easier and more reliable then the ABP from Makerbot. However, it would make it hard to shove off thin parts.

Share this post


Link to post
Share on other sites
I think an heated bed would make it easier to push off parts, not harder. You can use M190 to cool down and wait for the heated bed.

I've been working on a push off routine for my HBP. Within a month or so I expect to be making a lot of the same model, so I really need to get this working. The push off routine looks like this after the print is ready:

 

G1 F4500		; set feedrate 4500G28 X0 Y0 Z0		; home all axisG0 Z4			; lower platform by 4mmM104 S120		; keep extruder warmM190 S35		; wait for HBP temp to reach 35CM107			; turn off fanG0 Y200			; go to Y 200 				G0 X150			; go to X 150					G0 Z2 F180		; raise platform 2mmG1 F4500		; set push-off feedrateG0 YO			; push off moveG28 X0 Y0 Z0		; home all axisG92 X0 Y0 Z0 E0		; reset software position to front/left/z=0.0G0 Z15 F180		; lower platform 15mmM190 S55		; wait for HBP temp to reach 55CM109 S210		; wait for extruder temp to reach 210G92 E0			; zero extruded lengthG1 F200 E5		; extrude 5mmG92 E0			; zero extruded length

 

When testing this I noticed that the M190 S35 does not work when the current HBP temp is 55 C, it continues immediately with the next command. However when the HBP temp is lower then 35 C it does work and waits until the temperature is reached.

Is it true I can't use a M190 to wait for the temperature to drop below a certain value?

Is there a work around?

Share this post


Link to post
Share on other sites
Is it true I can't use a M190 to wait for the temperature to drop below a certain value?

Is there a work around?

Look into the marlin source code, in one of the configuration files is a line with WAIT_FOR_COOLDOWN false, and change that to true, this should help

Share this post


Link to post
Share on other sites

Look into the marlin source code, in one of the configuration files is a line with WAIT_FOR_COOLDOWN false, and change that to true, this should help

Hi Joergen,

I was able to find the following pieces of code:

In the configuration_adv.h file

 

// Wait for Cooldown// This defines if the M109 call should not block if it is cooling down.// example: From a current temp of 220, you set M109 S200. // if CooldownNoWait is defined M109 will not wait for the cooldown to finish#define CooldownNoWait true

 

In the Marlin_main.cpp file

 

case 190: // M190 - Wait for bed heater to reach target.   #if TEMP_BED_PIN > -1       LCD_MESSAGEPGM(MSG_BED_HEATING);       if (code_seen('S')) setTargetBed(code_value());       codenum = millis();        while(isHeatingBed())        {         if(( millis() - codenum) > 1000 ) //Print Temp Reading every 1 second while heating up.         {           float tt=degHotend(active_extruder);           SERIAL_PROTOCOLPGM("T:");           SERIAL_PROTOCOL(tt);           SERIAL_PROTOCOLPGM(" E:");           SERIAL_PROTOCOL((int)active_extruder);            SERIAL_PROTOCOLPGM(" B:");           SERIAL_PROTOCOL_F(degBed(),1);            SERIAL_PROTOCOLLN("");            codenum = millis();          }         manage_heater();         manage_inactivity();         lcd_update();       }       LCD_MESSAGEPGM(MSG_BED_DONE);       previous_millis_cmd = millis();   #endif       break;

 

I dit not find an exact 'WAIT_FOR_COOLDOWN false' line. I'm not sure if I have been looking at the correct version of marlin, github is new for me. I looked at this version of Daid:

https://github.com/daid/Marlin/tree/Marlin_v1/Marlin

The "#define CooldownNoWait true" seems a bit similar to what you were suggesting accept that it is used for M109 and nog M190.

Share this post


Link to post
Share on other sites

Oke, so I wasn't patient enough and tried the push off routine with the not working 'M190 S35' command, and it worked! At least for this particular print it will work. Still I would like to make a push off routine with a working M190 command. Any help is appreciated!

Here's a video of the routine:

 

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  

Announcements

  • Our picks

    • Architect Design Contest | Vehicles.
      We're open for entries! - Design and submit your 3D designs of architectural entourage - vehicles - for a chance to win a large filament pack. Presenting an idea, an architectural design or something as big as an urban project isn't easy. A scaled model can really help to get your idea across.
        • Like
      • 24 replies
    • What The DfAM?
      I'm Steve Cox, an experienced engineer familiar with 3D printing. I wanted to share some DfAM guidelines with this community to help and make stronger parts.
      I'm also an Autodesk Certified Instructor for Fusion 360, so many of the images in ...
        • Thanks
        • Like
      • 22 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!