MakerBot Print is our newest print-prepration software, which supports native CAD files and STL assemblies,
allows you to interact with all your printers via the Cloud, and many other exciting new features.

Download Now


Anet A6 Z-Carriage (modular, parametric)

by runtimeterror Mar 18, 2018
Download All Files

Thing Apps Enabled

Please Login to Comment

Comments deleted.

Hello, thanks for sharing this awesome project!

I'm still printing the parts to assembly everything, I would like you to know that I was able to print the left-z-carriage without any type of support. I had to do some fixes on the back part, but the carriage came out really well.

PLA 0.2mm 40% infill (Slic3r)

Hello, someone knows the distance between holes for the Z axis rod

Great carriage, printing it currently in PLA (cause my old one warped when X motor got hot - too much current :>).

Also got an idea, since you're maybe still looking for some kind of counterweight on the right side - how about an Ender3-style extruder mountplace there? This will get more weight there (cause Z motors aren't doing basically anything), and also will be useful (well, for those who use bowden at least :)

Are the holes on the motor carriage on the wrong side? Thanks for the design, its great.

Ehrm ... no :) this design works as is.
Which holes do you mean? There are tens of them.

Sorry, the holes for the support plate.

Sorry, I still don't get it. The motor support? Those go straight through the plate. How can those be on the wrong side?
Did you see the Overview.stl and the photos which gives you a 3D tour through the whole model?

There seems to be no problem with the file. Still the model I printed has the holes on the wrong side.

You mean the holes for the decoration cover are on the bottom side? That's weird.
I have no other explanation than your slicer might be misconfigured and prints this part mirrored.
Those holes are completely unimportant to the functionality, but I expect more problems on other parts.

Sorry for my late reply. My X and Y motor where connected the wrong way. It's fine now. I have the carriages working. Thanks!

This is awesome, I can't even grasp the amount of work you've put into this. Thank you! I was just planning to print the carriages and I thought that you could do small modifications so that they print without supports. For example, the hex nut holes facing down can be done with a pair of bridges (I've attached a couple of pics so that you know what I'm talking about). These make the object more complex, but I'm tending to this now in my designs as it makes it much easier to print. I've noticed that's how Prusa prints their parts too.

The same principal can be applied to planes facing downwards, like in Lehaiver's chain (https://www.thingiverse.com/thing:644420) that uses magic bridges so that it can print without supports. These thin bridges then support the rest of the face.

I would try to implement this into your models, but I lack the SCAD skills!

Cable Chain ver.2, ver.3

Thanks for your kind words. It really took me several weeks and lots of redesigns to get everything right.

If I got this right, you want to modify the model to help the slicer to create proper bridges.

I basically like that idea, but it's not that easy to implement. I currently extrude a 2D-shape to obtain the shape of the holes. Your suggestion would imply to make it a 3D-shape which is more complex. Also it would make the design more dependent on your layer heights.

In practice most parts can be printed without supports (because I wanted them to avoid either). For the carriages I would have to solve the problem for the rather big hole below the bearings, which is way harder. If OpenSCAD were able to handle 1D-geometry I would have had an Idea how to solve this generically.

Comments deleted.

Here's a quick OpenSCAD mockup of what I'm talking about for the holes. I found it in one of Prusa's files and clobbered it together as best I could. Just in case it's helpful in any way. :)

So I'm not saying that you do it, I know that can be insanely difficult. And also I just started with OpenSCAD, so I don't know the limitations or how easy/difficult it is to implement certain things. But if I had to do it myself, I would probably have the layer height as another parameter. If all the holes are generated with the same routine, for the ones that are bottom holes we would extrude the extra 2D shapes on top of the hexagonal prism that you extrude now. First a rectangle of diameter of hole x prism width with a height of layer height. Then on top of that a square of side diameter of hole and a height of layer height. And then you extrude your hole. So all 2D extrusions (see pic for a very bad representation of how that looks like :) ).

I've mocked it up in FreeCAD, but I don't know how easy it is to place things in OpenSCAD.

For the planes, you could extrude on the surface of the volume you cut veins of a layer height height and a certain width at regular intervals to cover the whole plane.

These are just ideas. If you're curious about this, you can download and check the 3D printed files package from Prusa's website. Some (all?) of their pieces are built with OpenSCAD and they use all these techniques.

If I find some time revisit this model I will certainly consider to improve the support situation. Thanks for your engagement!

BTW: Did you delete that comment above? You said you found a bug (like missing tolerances) if I remember this correctly.

Yes. When I printed the parts, I set my belt wheel (idler) diameter to 13mm and the idler holder (x_belt_tensioner.scad) was exactly 13mm long. I had to re-set it at 15mm so that it would have 1mm room on each side. I looked at the file and thought I had figured out how to fix it, but then some tests generated pieces that where also bigger in the x and z dimension. I think it's because you construct the y profile with the x length, but I couldn't figure out how to fix it. I saw that there was a lot of commented out code, so you worked quite a bit to get it to work. Anyway, that made my comment kinda irrelevant. :)

I just had a look and didn't see a problem in the model: x_belt_tensioner_size_x = x_belt_tensioner_wall_thickness + gap + belt_wheel_diameter + gap + x_belt_tensioner_wall_thickness; and the hole is x_belt_tensioner_size_x - 2 * x_belt_tensioner_wall_thickness wide.

gap is 0.4 mm, which should have been enough for the wheel to turn freely.

Can you upload files compatible with Solidworks?

Why outer brace are diferent?


I don't know Solidworks, but most programs can simply import the STL files.

The left one has to hold the motor and the right one holds the tensioning screw. Since this is kinda obvious, I might have gotten your question wrong ;)

I was asking because none of you have these exterior pieces

and I was asking for the files for solidworks because I did not use scad.
solidworks is a 3d editing program like blender

I uploaded two pictures showing the current design.

Thx !! I understund

I added them a few days ago and didn't upload new pictures. See one of my previous posts "The X-rods no longer have to be tightly clamped but have adjustable caps. The carriages are slightly wider to allow for some space for adjustments.

I also increased the length of the clamp screws. The nuts and the screw's heads won't be buried too deep any more."

Works really good so far.

What is the distance between the centers of the Z rods?

That's a tricky value:
z_rod_distance = 381.35 - 1.6; // measured + measured error
I measured 381.35 mm by combining several measures. After printing the carriages the X-rods were 1.6 mm too long (reaching out of the carriages). So I fixed my measurement by that error.

I'm still looking for an official source and therefore started a discussion on https://www.thingiverse.com/groups/anet-a6/forums/general/topic:30938

thank you very much, that's enough.
I'm designing a frame and I did not know that distance.

I will use your design, I like it

Hi, thank you for your very good work. It's probably one of the best Z-carriage design.
I was thinking if you could add X-rods twistness regulation? I have a front mounted leveling sensor (similar to this https://www.thingiverse.com/thing:2919903) and any misalignment cause first layer thickness difference between right and left side. It is possible to align it on bolts freeplay but maybe it would be more controllable to push against lower part of the z-rod bearing by bolt, or better push inner and outer brace against main carriage?

Anet A6 autolevel sensor holder

Thanks for your feedback! I understand the problem (good point!) you want to solve/anticipate but sadly not your suggested solution (sorry).

Is your question a theoretical one, or did you already run into problems? In what order of magnitude is the deviation you experience?

If you print both carriages and all braces in the same orientation, you shouldn't notice a relevant difference. I just tried to measure the "twist" for my x-rods and found them to be perfectly coplanar. I made sure the X-carriage runs as freely as possible freely from left to right using plain bearings (first calibration without the x-belt, second calibration with tensioned belt and disconnected motor). Twisted rods would have blocked the carriage.

I guess you can loosen the screws between the braces and the carriages, make some micro-adjustments and re-tighten them. You can even try drill the holes wider to have some play.

Another option might be to fasten the front- or back-screws of the z-rod bearings with varying tension. The vertical hole in the carriage is rather tight. You might have to drill it wider to see any effect or increase z_rod_bearings_tube_diameter in a6_dimensions.scad.

(I just realized that this might be what you were suggesting :) I recommend to try the former option)

Does this answer you question?

The suggestion is based on my experience.
The twistness is not noticeable in normal check methods (carriage move smoothly, putting spirit level on both rod ends do not show visible differences, even printing without leveling is ok), but leveling sensor magnitude this effect.
On first run I was sure that it is something wrong with leveling, right side was significantly more squished while right was perfect. Let assume that perfect first layer height is 0.1mm and the distance between rods is similar to extruder-sensor distance, every um difference on rods twistness results in wrong leveling. I was able to limit this effect by loosening bolts between braces and the carriage but it is like this: ok, rise right side of front rod by 0.03mm… test… oh no, it was too much ;)
That’s why I started to think on some micro-regulation… or to move sensor to side wall between rods, but this will limit printing area. Honestly, I’m not even sure if it is possible to tight permanently, such low tolerances.

If you need adjustments in the range below 0.1 mm you should try to do your adjustments with the alignment of the linear bearings (this is completely untested(!) but should work):

  • drill the holes for the bearings open or re-print them with a larger diameter (+1 mm or so)
  • lay something compressible (e.g. cotton tissue) into the carriage and re-insert the bearings
  • tighten the screws and use them to micro-adjust the twisting (torsion). The tissue below the flange should allow some µm of tolerance.

But I'm not sure, if your problem can be solved by an adjustable carriage alone. The whole frame can move during the print and thermal effects might also have an effect.

Hi there, i have been trying to print this for the past few days. the main body of the right Z carriage is fine; the inner and outer braze however always come out too thin for me on the wall around where the nut and bolt goes on either side to clamp the X rods in. I have tried printing them at several resolutions and infills including 100% infill but every time when i tighten the the bolt in it cracks when the nut tries to stop it continuing when u tighten it.

I have tried playing around with the OpenSCAD files but can't figure out how to edit and fix this issue. I've never used a code based modeller before and am only just getting started even in Fusion360 which i tried to load the file into but couldn't figure out how to edit it as a body.

Any chance you could make those walls just a little bit thicken and upload them for me please or tell me step by step what to edit and how to export it with the new settings?

Would be greatly appreciated as my original acrylic Z carriage has begun to crack and this is the best design i have found and owuld really like to use it. especially since it has the built in X axis belt tensioner!

I am printing in standard cheap PLA.

Thanks in advance for any help you are able to give.


(Also if you could do the same for the Left carriages braces as well please, since i'll most likely replace that one as soon as i have the left one working)

Note: I did also try it with your recommended settings on the details page and ad the same issue unfortunately. I can however tell you that the main body printed with no issue without any supports. The bottom surface was fairly rough and a little stringy but i just pulled off the loose bits. since it wont be seen being underneath and only the top part is needed to be smooth it works great without supports no problem :)

Also, if you are taking and/or like to hear any suggestions. it would be nice to have slots to fit nuts in for the top cover to go on rather than just screwing it into the plastic (If you do this several times the thread gets destroyed and becomes loose). Also under the Z guide rod bearing would be nice to have embedded hex nut placements like everywhere else on the design (I found this inconsistency in design method a little strange and made it more fiddly to get those nuts on and allot more difficult to tighten requiring pliers to hold the nuts whilst screwing in the bolt to get it tight)

I think, I fixed some of the issues without ruining the design. Please see the updated STLs.

The X-rods no longer have to be tightly clamped but have adjustable caps. The carriages are slightly wider to allow for some space for adjustments.

I also increased the length of the clamp screws. The nuts and the screw's heads won't be buried too deep any more.

I haven't printed everything by now, but I don't think I severely messed this up ;)

Sorry i didn't see your first reply. Thank you for the adjustments, hopefully i can try them soon and will give feedback. Though currently am unable to get a successful print right now :(

Soon as i get things working again ill let you know how it goes with ur carriage design! :)

First of all thanks for your detailed reply and sorry for the hassle! That deserves a detailed response:

I'm also having troubles with the clamps: either they cannot hold the rod in place (too loose) or they start to crack or the belt is too loose.

It might help to print in PETG without cooling. PLA is more brittle and tends to crack easier.

If you had a look at the code you might have noticed that lots of values are computed and derived from other values. There's an entangled bunch of constrains that has to be held. If you widen the braces, there will be less space for the X-carriage reducing the maximum width for your prints. I copied the original dimensions of the stock carriages. If you want the braces to grow towards the Z-rods (outwards), they would collide with the flange sunken in the Z-carriage. I could carve a slot into the brace to allow the flange to reach out of the main carriage. This would cause more support to be printed and severely break the optical design and symmetry (and it's rather complex to implement). I could also move up the whole nut, but I wanted it to be mounted by the original (short) screws and allow the carriage to max out the vertical space in Z-direction. Also it looks cooler to me ;)

The solution can only be a compromise and I'm still undecided what to change.

I'm currently working on a version where the outer clamps have (adjustable) caps to prevent the rod from slipping through. The inner clamps won't have to be tightened too much then. I also maximized the width of the braces (which essentially only adds about 1 mm).

My main problem is the lack of time :(

Thanks for your feedback about the optional support!

Regarding the top covers: I didn't want to punch too many holes into the (already too weak) braces for optional decoration. It's already hard enough to assemble everything and the nuts might slip out of place. Some cannot be reached very good after completing the assembly. I assumed the cover won't be removed too often to wear out the holes. If M3-screws get too loose you can switch to M4 ;) I don't use the covers any more - they were too unhandy when trying to test new designs but I think others like them.

There was a reason for the missing holes on the bottom side - but I can't remember exactly what it was. It had something to do with the optional feature I planned: it should be possible to attach a printed mount for plain bearings (such as IGUS) using the same length of screws. I decided to leave the bottom plain as the other option was that the screws would reach out of the nuts ... or something like that. I accepted that since it's not visible after assembly - but I share your feeling that this feels overlooked and is a bit fiddly.

I'll try to get the updated version online as soon as I find some spare time.

In case anyone else is wondering and what's to safe his filament: This does not fit the AM6 :-( Which is a shame because the design is great!


tried it with my AM6 myself and noticed the same problem. The AM6 design uses the AM8 frame dimensions, which are determined by the Anet A8 rod measurements. But the Anet A6 comes with shorter X linear rods.

The left AM6 carriage is used to "fix" this: instead of a hole through the whole carriage, the linear rods are pushed in only halfway.

I will get 46cm linear rods, that should make your carriage usable with the AM6.

Sorry to hear that.

The printer looks very similar. What doesn't fit?
Did you update all measures in a6_dimensions.scad to match your printer?

With your design the distinace between the threaded rods is ~33,5cm but the AM6 seems to need something around 36,5 - I don't think that's an easy adjustment in the scad file. I simply wasn't aware that the AM6 rebuild changes the rod distances.

In fact it's that easy ;)
Change the following line to meet your requirements:
z_spindle_rod_distance = 22.975; (that's a crucial value to prevent Z-wobbling; make sure it's as precise as possible. I measured mine from the top plate and the original carriages and the bottom plate's holes)
And re-generate all STLs from the scad files.
You might want to adjust some other values, too.

Always keep an eye on overview.scad to verify the model still makes sense.

Just to get it right:
z_rod_distance is the distance inbetween the rods (so inner edge to inner edge, not center to center)?
How is z_spindle_rod_distance measured?

Better ask twice :) Rounded objects are always center-to-center to make them independent from their diameter.

You can measure inner-to-inner and outer-to-outer and average the result. This also works for holes.

Looks like I'm simply out of luck: z_rod_distance is ~ 415 while the x_rod_length is still 422, so adjusting the distance breaks this design :-(

Ok, that's really too little overlap to make this design work. :(

Oh, thanks for the explanation. I'll give it a try tomorrow.

Wow! Super nice! I'll try that!

In reference to "allow the x-stop-switch to be moved from the x-carriage to the left z-carriage (no good ideas so far)"

Just wanted to let you know, that with my x-carriage at least, just screwing the x end stop into the inner right piece works fine. It could actually be moved further to the left, but that looks like it probably puts the screw holes on the seams of the carriage piece and the inner piece, which wouldn't be recommended.

I also have printed and am getting ready to install a Frankenstein carriage setup, and that looks like it will work as well.

Thank you!

So it seems the best position for the screws would be the gap between the brace and the carriage?

What did you use as counterpart for the switch? The original mounting plate? Maybe that could be replaced by a shorter part.

The original mounting plate is still on the printhead carriage I am using, which is Dovanzeijl's design(https://www.thingiverse.com/thing:2171816). I just screwed the switch directly into the inner piece. Without leaving the original switch mounting plate on this carriage, it would not work.

However, the Frankenstein carriage currently looks like it will work with no issue. Despite it being fully printed, I'm not ready to install it just yet.

Anet A6 x-carriage

Where can I find one of those belt wheels?

The timing pulley/belt wheel is sold by many shops as a standard part.

You need:

  • Belt width: 6 mm
  • Teeth count: 16 (or toothless)
  • Bore: 3 mm

An arbitrary source I found for reference: https://www.amazon.com/Aluminum-Printer-Accessories-Toothless-Toothed/dp/B074DSCZH8/ (make sure you select the right variant according to my specs above)

You can also try to re-use the original wheel(s) but please wait for the new design to be uploaded - the current one would be ground by the split-wheel-version that came with my printer.

Edit: Ok, fixed. The new holder should be able to cope with the split-version.

Will it fit the 20-tooth idlers?

Sorry for the late response. You can change the value for belt_wheel_diameter to match your idler's size.

Thanks for sharing your solution for people who don't want do use OpenSCAD.

I couldn't figure out how to use OpenSCAD. I just modified the stl in fusion 360. I may try playing with OpenSCAD again.

I think I fixed the issue with the non-perfect rod distance by introducing a shrinkage-parameter into tolerances.scad which compensates for the shrinkage that occurs on PLA. It should be possible to use the clamps for micro-adjustments.

I updated all scad and stl-files and I'm gonna test this as soon as my printer is back to life.

For whoever wants to test this out: you just need to re-print the braces. The rest remained unchanged.

Edit: Ok, this worked perfectly fine (PLA):

  • inner rod distance before tightening the clamps: 72.025 mm
  • after tightening the clamps: 71.975 mm

The X-carriage floats freely over the whole distance with plain bearings (Igus something). I updated all sources.

I accidentally printed the right carriage in PETG. It feel better-suited for the purpose and has a better red ;) I'm gonna re-print the rest in PETG and will report if the clamps need some tweaking.

After your updated braces it works absolutely perfect (PLA). Although with sintered bushes. Thanks a lot :-)

Thanks for your feedback!

I'm still trying to determine the values for PETG.

Ok, there seems to be a problem with the belt wheel holder. After some weeks of intensive use it just broke apart. I don't know if the PLA couldn't withstand the jerks of if there was some friction that caused a thermal problem.

There is also some oily mess around the wheel. Maybe the PTFE-lube I added is also part of the problem. I now have to get my printer back into working condition.

However: until I get this fixed somehow, I highly recommend to print at least an extra wheel holder as a spare part - ideally in some sturdier material like PETG. Sorry for the trouble!

Update: I totally reworked the wheel holder:

  • hex nut turned by 90 ° to give the top and bottom of the wall more flesh
  • thicker walls everywhere
  • side plates to hold the wheel's stator. The screw can now be tightened a bit without blocking the wheel
  • counter nut is now optional
  • support bar to prevent the sides from clamping the wheel


  • uglier design
  • might benefit from supports now
  • bigger -> the right x-carriage has been updated. One screw tube now has an open wall after slicing (no problem, but ugly)
  • harder assembly

I'll test and upload all changes this weekend - looks good so far ...

Edit: Fixed!
The new one does a good job.


first of all, thank you very much for your absolutely great design. I printed it, but I have some problems. The carriages are absolutely perfect. everything fits from the beginning. The Z-Axis moves so quiet and easily its wonderful. But all four outer braces doesn't fit. As I mounted them, the X Axis only moved a little bit in the center. As I moved it to the left and right it stops. So I had to drill the holes to 9mm and make stoppers from aluminium so I first can print.

What should be the problem? My printer has so much updates. Like: Completely mounted on a wooden plate at Y-Axis with four braces and two extra threaded rod mounts, Z-Axis and motor mounts and the hole Frame is stabelised in X and Z and mounted to the plate, new belt, 20 teeth pulleys, new heatbedholder with 3 point leveling and so on. It has nearly no whobbling and it prints up to +-0.05mm. Absolutely no problem is +-0.1mm at 60mm/s printing speed and 120mm/s moving speed.

For example before I mounted your great design, I printed 3 adapters, so I can use sintered bronze bearings at my y-axis and they has the measurements of 7,99 inner diameter, 15,01 outer diamter and 24,00 length.

So what can I do. I am very sad and don't know further, I really really want to use your whole design.

Thank you very much.

Best Regards

I fixed the problem by incorporating the shinkage of PLA - see my updated comment above.
Will do a test with PETG shortly.

Thanks for your feedback and the pictures! I'm sorry you have problems to get this working.

Since my printer just broke, I no longer have an excuse to not disassemble the carriages :( I'll try to figure out how to modify the braces, so the rods' distance will be better than 0.1 mm in precision. A deviation of 0.2 mm seems to be too much for the plain bearings.

I fixed this for me by not fastening the inner braces.

I'm working on it.

If I let the x-carriage determine the rods' distance, I get the following values:

  • outer distance: 87.9 mm
  • inner distance: 72.0 mm
  • diameter: 7.95 mm
  • center distance (computed): 79.95 mm

The braces with their clamps force the rods to have an inner distance of 71.8 mm (loose clamps) or 71,725 (tight clamps). Maybe the error is caused by the PLA shrinking during cooldown? The error is 0.28 % and I read PLA has a shrinkage of 0.25 % - 0.3 %. Sounds like a perfect candidate.

I think the best solution would be to tweak the base-distance of the rod holes by the error value and use the clamps' tension to fine tune the distance.

Can you confirm some of the values for your printer?

This thing finally entered the "works for me"-phase. Please let me know if it works for you, too.

What I'm still unsatisfied with:

  • the x-rod distance is way closer to its optimum (80 mm), so I could upgrade to plain bearings for the x-carriage. Sadly I may not tighten the screws of the inner clamps, or the x-carriage cannot run freely any more. Maybe I'll add a tweak value to get this better.
  • the "ugly-duck" (xz_stop) collides with the left carriage cover. I just clipped off 1 mm.
  • The cover doesn't look as awesome as expected, but still good. Maybe someone wants to try a bigger line width for the decoration.

Happy printing!

Brilliant design! I'll stay tuned, as I plan to change Z carriages in a couple of months. Thank you!

Glad to hear that!

I just printed the left carriage. Looks good so far ;)

Maybe I can remove the work-in-progress-status by sunday.

this looks AWESOME!! next month will print. time to choose color. what would be even sweeter is a matching e3d clone carriage to use with a bodwen setup.

Thank you - I just uploaded the first draft of the covers I plan to use - bi-colored of course B-)

Since I'm fairly new to 3D-printing (and OpenSCAD), could you give me a hint what you have in mind for a "e3d clone carriage"?

im currently using this carriage (https://www.thingiverse.com/thing:2171816) however. it doesn't match with your awesome design. plus. i am using these, Solid Polymer LM8UU Bearing, but they keep working out. with your design the can be clamped in and have the e3d clone adjustable for the volcano clone hotend which the heat block is taller. this would make it 20% cooler.

Anet A6 x-carriage

I see. The design is really great but totally different from mine.

I currently cannot put this on top-priority, since I still have a lot of other things to upgrade and learn - I just started 7 weeks ago, and this design took me about 3 weeks so far. But when I decide to rebuild the x-carriage, it'll quite surely be a similar design - and fully parameterized of course ;)

its just an idea. it would look cool.

tu utilise quoi comme support ? zigzag ?

I tried Zig-Zag first, but as you can see from the pics, the quality is awful for the bearings tube flange holes.

I found "hovering holes" really hard to print and try to avoid them when possible.

Next, I'll try "triangles" with gradual support infill = 1 and 40 %; I changed the support distance from 0.45 to 0.4. I hope, I can get them off afterwards.

ok, give me news, I'm waiting for your opinion to start printing

I added my alternate support settings to the description as a suggestion. The results were better, but slower to print and harder to remove.

Let me know, if this works for you.

À bientôt!