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

Tale of a Wooden Yoda.... 3d Printed Wood

Recommended Posts

Hi All,

I received my order of the new LAYWOO-D 3d printable wood filament yesterday so my first order of business was to print a Yoda. Here is a brief run-down on my first experience with this amazing material.

Firstly, it feels funny in filament format, it's certainly not like the PLA that I'm used to. I also noticed that it felt too thin. When I got home I measured it and found that indeed the end of my roll was only 2.01mm thick. Measuring at various spots throughout it I found variation between 2.00 and 3.2mm. That's a huge variation that may cause problems with some people. I do not have Bertho's extruder fix yet, but it looks like that might be an essential with this stuff.

I sliced a Yoda using NetFabb and then opened up the resulting Gcode in a text editor so that I could manually insert some m104's throughout it to get that nice banding effect that they advertise. I inserted an m104 about every 100 layer and alternated temperatures between 190 and 240 (the Thingiverse page suggests 180-245 variances). However, it turns out that the approach of alternating every 100 layers is not a good way to go. I thought the temperature changes would be graudal, but in fact they are sharp. My printer only takes a few seconds to change temps so instead of the temperature gradually (and colour) gradually changing over a few layers it happens immediately at a layer. Some more gradual changes are required for nice effect.

It extrudes easily... and is very liquid like PLA. At about 175 it started to freely ooze from my nozzle as PLA does. At the higher temperature above 220 there was a bit of smoke that smelled kinda like wood. I actually found that it smelled like freshly popped popcorn to me. It printed beautifully.

however, about 1/3rd of the way into the Yoda I realized that it was no longer extruding (I'm on a V2 hot-end btw). The Filament was grinding and I had about 4 or 5 layers of no extrusion so I had to stop the print. I could not push the filament through, but pulling it back was easy so I removed the wood filament and ran through some regular PLA. It took a bit of force, but then with a big puff of smoke out of the nozzle whatever was blocking it cleared and it flowed free again. I don't know what cause the jam, but there was no plug as we used to see with PLA in the V1 hot-end. The nozzle just seems to have been jammed with a particle. I don't know if it was a one-off thing or could be an issue with this filament in the Ultimaker nozzle. It also might be the temperature (maybe it was too high and burned the wood into a charred blockage?) Or it might have had something to do with the variation in diameter that I noted. My best guess right now is a combination of the above - I think a variation in thickness caused trouble with the filament feeding which in turn caused the wood that was in the nozzle to stay in the hot end too long and become charred and stuck. But that's a guess.

There was no warpage of the part and it came off the blue tape very easily... but there was very poor adhesion at my first temperature change (from about 230 degrees to 190) and the part separated cleanly on a layer there. It may take some tweaking to get the adhesion to be perfect on temp changes. Perhaps a gradual change would help again. The rest of the temperature changes worked fine and produced a solid part.

The results are very cool. It does feel like wood, and it smells like wood. The bottom surface of he part definitely looks like wood, the rest of it is a little strange looking - more like a dark baked biscuit with bands in it, but it could pass as natural wood if I had the banding a little less sharp.

The part overall is very solid. The bottom bit where (the downskin and about 100 layers where the layer adhesion issue separated from it the rest of the part) is quite flexible, but the main in-filled part is very rigid.

Anyway, I'm loving this stuff so far. Can't wait to hear other's experience. I'm going to make a few tweaks and see if I can get a complete wooden Yoda this weekend.

Cheers,

Troy.

Share this post


Link to post
Share on other sites

I ordered quite a bit of this stuff from the German-reprap-foundation. I think it has potential.

With some Cura hacking it should be quite easy to get nice rings in the object, with even more hacking you might even be able to burn logo's in the side, if you get the temperature to change fast enough and don't print too fast.

Share this post


Link to post
Share on other sites

I hand edited it in a simple text editor, however I think I'll write a simple shell script to post-process the g-code to get some nice looking rings. It should be fairly easy to add this kind of support right into Cura. With NetFabb unfortunately I don't think there is any way to integrate this as there is no plug-in or post-processing script support. I like your idea of burning logos into the side of a print. If you use m109s instead of m104s for the temp change you could get precise changes in colour. However, I think you'd need to retract and move the head away before a temp change or you would get a nasty blob each time.

Cheers,

Troy.

Share this post


Link to post
Share on other sites

I don't think you want to use an M109 so change the temperature. As you would also burn the wood around your nozzle. If printing slow enough then M104 should do the trick, maybe with some extra fan control to cool the nozzle a bit faster.

I cannot wait for the stuff, want to experiment with it =)

Share this post


Link to post
Share on other sites

I was looking for info on the commands related to temperature and tumbled upon this (how did I miss it?). That's also to upgrade my review at

http://betterprinter.blogspot.fr/2012/1 ... ament.html

I am looking into adding python scripts in the Start/End gcode tab instead of static search/replace

With a script, it would be easy to change temperature at each layer in a pseudo-random but continuous way, with no need for an annoying manual intervention.

Also, such dynamic plugins would open lots of possibilities (with some security breaches, but hey, plugins are plugins)

Update: I may better start with looking at skeinforge plugins, shall I? In cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins

Re-Update: I'm currently testing as a new plugin, I let you know

Share this post


Link to post
Share on other sites

I got 750g of this stuff now. So time to play with it!

Please please, do not hack in cura_sf, it's a horrible mess. It's better to make a stand-alone post-processing script, which would be better for future compatibility. You can run this post processing script from SF, but we could also run it from Cura. The less features that depend on SF, the better.

Share this post


Link to post
Share on other sites

LOL, too late man! Why on earth didn't I get an email notification of your reply? :?

I agree, it's a confusing mess :D It will be funny to try to localize as it relies on labels to find a variable back, had a hard time figuring this out properly to get my parameters forwarded from cura to my sk plugin (and not much b/c it's the first time I'm programming python, that was a nice reason to try)

But it's done now. I also added its config in cura expert settings (along the soon-to-go dwindle). I will post it after I give it some real-life testing.

Anyhow, what would have been the best way to add post-processing to cura WHITHOUT skeinforge then?

Actually: I'm currently adding perlin noise to get better z-wood grain. Would be cool to apply in each each dimension of the object skin (so as to spare exec time and reduce the g-code). I do not have much time though but may be you can help: is there an obvious existing plugin I could recycle to get the x,y,z "surface" coordinates (only) and know how to split a segment to insert M104 ?

I just checked it quickly in skeinforge standalone.

Share this post


Link to post
Share on other sites

With a post-processing script I mean a script that runs after generating the GCode. This won't have access to the SF functions.

Example script:

 

#Name: Pause the printer at a certain height#Param: float(pauseLevel) Pause heightimport repauseLevel = 5.0print "pauseAtZ (%f): %s: " % (pauseLevel, filename)def getValue(line, key, default = None):if not key in line or (';' in line and line.find(key) > line.find(';')):	return defaultsubPart = line[line.find(key) + 1:]m = re.search('^[0-9]+\.?[0-9]*', subPart)if m == None:	return defaulttry:	return float(m.group(0))except:	return defaultwith open(filename, "r") as f:lines = f.readlines()z = 0x = 0y = 0pauseState = 0with open(filename, "w") as f:for line in lines:	if getValue(line, 'G', None) == 1:		newZ = getValue(line, 'Z', z)		x = getValue(line, 'X', x)		y = getValue(line, 'Y', y)		if newZ != z:			z = newZ			print z, pauseState, pauseLevel			if z < pauseLevel and pauseState == 0:				pauseState = 1			if z >= pauseLevel and pauseState == 1:				pauseState = 2				#Retract				f.write("M83\n")				f.write("G1 E-5 F6000\n")				#Move the head away				f.write("G1 X190 Y190 F9000\n")				#Wait till the user continues printing				f.write("M0\n")				#Move the head back				f.write("G1 X%f Y%f F9000\n" % (x, y))				f.write("G1 E5 F6000\n")				f.write("G1 F9000\n")				f.write("M82\n")	f.write(line)

 

I quickly hacked cura to run this after slicing:

 

+++ b/Cura/util/profile.py@@ -531,3 +531,8 @@ def getAlterationFileContents(filename):                       alterationContents = ''       return unicode(prefix + re.sub("(.)\{([^\}]*)\}", replaceTagMatch, alter+def runPostProcessing(filename):+       print "runPostProcessing: %s" % (filename)++       pythonFile = os.path.normpath(os.path.join(os.path.dirname(os.path.abspa+       execfile(pythonFile, {'filename': filename})...skipping...diff --git a/Cura/gui/sliceProgessPanel.py b/Cura/gui/sliceProgessPanel.pyindex 28f7582..09fdda4 100644--- a/Cura/gui/sliceProgessPanel.py+++ b/Cura/gui/sliceProgessPanel.py@@ -168,6 +168,7 @@ class WorkerThread(threading.Thread):                               if logLine.startswith('Model error('):                                       gcodefile.write(';%s\n' % (logLine))                       gcodefile.close()+                       profile.runPostProcessing(gcodeFilename)                       self.gcode = gcodeInterpreter.gcode()                       self.gcode.load(gcodeFilename)                       profile.replaceGCodeTags(gcodeFilename, self.gcode)diff --git a/Cura/util/profile.py b/Cura/util/profile.pyindex 62a32f9..d797868 100644--- a/Cura/util/profile.py+++ b/Cura/util/profile.py@@ -531,3 +531,8 @@ def getAlterationFileContents(filename):                       alterationContents = ''       return unicode(prefix + re.sub("(.)\{([^\}]*)\}", replaceTagMatch, alterationContents).rstrip() + '\n' + postfix).encode('utf-8')+def runPostProcessing(filename):+       print "runPostProcessing: %s" % (filename)++       pythonFile = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'post_process', 'pauseAtZ.py'))+       execfile(pythonFile, {'filename': filename})

 

I wanted to add features like this to Cura for some time now, but I never got around to do it.

A default library to help with parsing GCode and inserting extra points would be helpful.

This means we do not modify the slicer, and could easier replace the slicer later on without losing features.

Share this post


Link to post
Share on other sites

Many thanks :)

There may be no libraries yet, but it is way more readable.

The main drawback would be not to benefit from third-party additional skeinforge plugins, and not to bring ours to others sk users. While Cura rules, it does no laser cutting yet... Also, complex plugins may require access to the guts of gcode generation (eg inset, etc)

Now, post-processing calls for pre-processing...! Hacking in perlin noise makes me think I should have a look at disturbing the vertices to give an object a hand-made look... I always promised myself NOT to start coding in there, but I could not resist...

Share this post


Link to post
Share on other sites

Not supporting lasercutting/milling is a good thing. SF is a horrible mess, especially because it can do 100.000 things.

I like the post-processing scripts idea because it's so separate from the slicer, many things we want to add have nothing to do with the actual slicing process. And could be done after every slicer, if it's SF, Slic3r, KissSlicer of MircleGrue.

Share this post


Link to post
Share on other sites

Damn, it looks like linux lacks an official 12.11 release ;)

On

http://software.ultimaker.com/index_.php/

So I switched to the source... but sorry for this highly off-topic newbie question: how shall I launch it once downloaded from git? I keep on getting this error?

 

Traceback (most recent call last): File "cura.py", line 17, in    from Cura.util import profileImportError: No module named Cura.util

 

No such file, even on the older cura release? I also quickly tried to package.sh it for myself but kubuntu's quantal cx-Freeze got in the way (too old a version...)

Share this post


Link to post
Share on other sites

We're refactoring the development version, so that's breaking things left and right.

As for the 12.11 release, it's the same as the 12.10 release except for a bugfix for Windows. I did upload the Mac 12.11 so I would get less questions. But the 12.10 for linux would be 100% the same as the 12.11 for linux.

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

    • Taking Advantage of DfAM
      This is a statement that’s often made about AM/3DP. I'll focus on the way DfAM can take advantage of some of the unique capabilities that AM and 3DP have to offer. I personally think that the use of AM/3DP for light-weighting is one of it’s most exciting possibilities and one that could play a key part in the sustainability of design and manufacturing in the future.
        • Like
      • 3 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!