Introduction: Build Your Own C3Dt/dz 3D Printer

About: Avid 3D printer builder, currently completing my 3rd printer design. If you like what you see and maybe even implement what provide, consider supporting subscribing to my youtube channel…

Welcome to my 4th and latest design I'm making available here on For this design I focused on rigidity and quality. You can find the full Bill of materials in a later step.

In this instructable I will walk you through the steps of building your own C3Dt/dz (double Z) 3D printer. For those that have followed me, you'll see quite a few similarities to the C3Dt/c cantilever printer as seen in one of my earlier instructables (here). That is because this printer is based on the same "universal" linear actuators as seen here, here and here.

Here's the full feature set for this C3Dt/dz

  • Volume: 220mmx270mmx270mm (XYZ)
  • BuildTak Flex Plate System
  • BondTech BMG direct extrusion
  • Heated bed using Keenovo silicon heat pad
  • TMC2209 silent stepper drivers
  • Marlin Firmware
  • Generic Linear actuators for X and Y with Built-in tension springs
  • Enclosed power unit 24V
  • SKR 1.3 32bit
  • 12mm Z rods for extra stability
  • Auto Bed Leveling using inductive sensor
  • Noctua ultra quiet heat sink cooling
  • BondTech integrated Parts Cooling fan
  • E3D V6 Hotend

In the next steps I will take you through the instructions for building the C3Dt/dz. Since some steps are ery similar or covered in my other instructables I may refer to them. I also have an extensive set of youtube videos, walking through the full build of the C3Dt/c printer, so again I may refer to them as well. Please subscribe to my channel as I do post updates and new videos on this and other Printers of mine that you can build yourself.

Here is the C3Dt/dz at work on it's first 20 plus hour print

BuildTak and BondTech helped me out with their products. I approached both companies for help as I have used their products before and believe they are best in market and best suited for my printer designs.

I am an Amazon affiliate and for any product you purchase though one of my links I will get a small percentage. It's what pays for my filament mostly.

Step 1: Assembling the Frame

The core principle of this printer is the same as the C3Dt/c which is, it's built around/on top of the Universal PSU which measures 50mm from top to bottom. This in turn means this printer is built using 1010 extrusion (2525 also possible)

Instead of cantilever, this printer has a full arch and has two Z-axis running on 12mm rods (as did the C3Dt/c)

The frame is designed with rigidity in mind. Are the 4 corner plates with 30 bolts overkill? No, I think not. I want to be able to pick up this printer by it's top bar and not worry anything getting out of place.

The Y axis is attached to the main frame by two corner brackets (large and small) ensuring the Y axis to be level and perpendicular to the Main frame. The secondary Y Axis (second rail) is there to add the same rigidity for the bed as there is for the X Axis.

The Y axis will lean on (and is attached to) the PSU making for a steady base to the entire printer.

Parts required

I recommend getting the pieces ordered to length as 8020 inc will make sure all the cuts are 90 degrees. You can cut extrusion yourself with a miter saw but this tends to result in non perpendicular corners.

VERY IMPORTANT: Before you connect the 1020 and 1010 between the 513mm long 1010 extrusions. make sure you insert Slide-in Economy T-Nuts that will connect to the two corner brackets (second image). These T-nuts will only slide in sides ways, once closed at the ends you can't get them in.

While you're at it maybe slide in 1 or two extra ones on various sides, in case you want to add something like a second Y Axis Rail (see upgrade in last step).

Connect the two corner brackets using the button head 3059 bolts. The larger flange button head (part of 3321) won't fit that easily.

I recommend not tightening them to strong. Once Y axis is in place and the bed added you can still adjust the position to your needs.

At this point you can also add the brackets that will connect to the PSU. These two connectors are attached to the frame with m3 screws and t-nuts

STL Files:

  • PowerUnit To 1020.stl
  • PowerUnit To 1020_right.stl

Step 2: Assembling the Y Axis

The Y axis will hold the bed and is based of the Generic Linear Actuator with Built-in Tension Spring

VERY IMPORTANT: Before assembling the entire Y Axis, note that it is attached to the frame with two corner brackets (4136, 4132). make sure you slide in the Economy nuts prior to putting on the axis ends.

For the C3Dt/dz, the 1010 extrusion should be at least 395mm. Any longer won't make a difference as the Linear rail on top is only 320mm. It dictates the motion range of the slider. This Axis will be implemented WITH the built-in End stop (As part of the Nema Connector).

For this linear actuator I use 20 teeth pulleys and idles since the 16 teeth has a diameter too small to span the width of the center of the linear extrusion.

The difference with the Generic Linear Rail is the Linear Adapter (LinearAdapterY-Axis 20x15.STL) which is customized to hold the Bed Frame and reach the end stop bases on a 300mm linear rail. I've attached two versions of this adapter (LinearAdapterY-Axis 20x20.STL. My implementation uses linear rail blocks that have the screws spaced at 20mm and 15mm. many rails available come with a 20mmx20mm spacing (and block length of 45mm) of the screws

Personally, I prefer THK rails (not affiliated), they don't come cheap but they are top quality, I don't like shaving pennies on those specific parts. That said, new, they come at a price tag of $158 (one 320mm rail and 1 block). I'll put the link to the THK Store. You can try your luck on ebay and save a little on name brands like THK, NPO and IKO by buying them used.

I've gone with cheaper Amazon options in the past (I'll put the links out as well) but I've had very bad experiences with those.

The Little bracket at the end of the Axis, The LinearRailBreak (at the end of the Linear Rail) is there to prevent the linear rail block to roll of the rails. If that happens the bearing balls can fall out (pain in the .... to get back in). As for the orientation of the wiring coming from the Stepper see the image enclosed. For the C2Dt/dz Y Axis they point left.


Printed Parts (included with this step):

  • IdlerBracket.stl
  • BeltGrip.stl
  • NemaBracketWithEndstop.stl
  • LinearRailBreak.stl
  • LinearAdapterYAxis20x20.stl
  • LinearAdapterYAxis20x15.stl

Below is a video showing how I put a version of the universal together for the C3Dt/c. Measurements mentioned in the video will be different from this implementation.

Step 3: Assembling Y Axis Additional Rail

The previous Y axis is sufficient for Printing but considering the entire Bed Frame will rest on a single Rail Block implies there is some give. It certainly is not in line with the rigidity of the Frame. If you want this to be a real rugged 3D printer I recommend adding a second Linear Rail on the Y axis with to rail blocks. This will result in a triangular support that some prevent the bed from rocking.

Parts needed

Printed parts

  • Support.stl (2x)
  • Cap.stl (2x)

Step 4: Assembling the X Axis

Like the Y axis the X Axis is based of the Generic Linear Actuator with Built-in Tension Spring

For the C3Dt/dz, the 1010 extrusion should be at least 395mm. This Axis will be implemented with a seperate End stop Case (independent from the Nema Connector).

Like with the Y Axis, depending on the different types of Linear rail you use, I've added two versions of the Linear Adapter, one for linear blocks with screws spaced at 20mmx15mm (the ones I use) and those with 20mmx20mm spacing.

Again I've added links to the THK store (not affiliated) for high quality rails as well as more affordable rails from Amazon

The Little bracket at the end of the Axis, The LinearRailBreak (at the end of the Linear Rail) is there to prevent the linear rail block to roll of the rails. If that happens the bearing balls can fall out (pain in the .... to get back in). As for the orientation of the wiring coming from the Stepper see the image enclosed. For the C2Dt/dz X Axis they point down.

Do not connect the screws that go into the Linear Rail block yet as this will be part of assembling the Extruder Assembly.

I've added a collar that fits around the Nema Adapter will can be added later when the wiring is done. It is used to guide wires during the print process.


Printed Parts (included with this step):

  • IdlerBracket.stl
  • BeltGrip.stl
  • NemaBracket.stl
  • LinearRailBreak.stl
  • LinearAdapterXAxis20x20.stl
  • LinearAdapterXAxis20x15.stl
  • CordClamp.stl
  • CordBracket.stl
  • End Stop Case.stl

For exact assembly instructions watch the video found in the previous step.

Step 5: Assembling the Double Z Axis

Insert m3 screw (10mm) through the slider and put on the t-Nut. DO THIS BEFORE ADDING THE SLIDE BLOCKS. There's enough room between the two block to tighten the screw but not to add the screw after the blocks are in place.

Connect the two Slide blocks to each Slider bracket using at least 4 M5 screws. There are 8 holes present and feel free to use the all but I find 4 per slider is enough. before tightening the screws make sure the shaft is inserted and can move freely. If one of the block is tightened at the slightest angle the bearing may end up binding.

Insert the Lead screw nut into the slider bracket and connect with 2 to 4 m3 (8mm) screws. There screws are really just there to keep the nut from turning. Upward movement is handled by the Flange on the screw and gravity will take care of downward movement.

Before placing the Nema Connector on the extrusion insert the m3 screws (10mm) and attach the t-nuts. Place the nema connector on the extrusion where the extrusion meets 1020 horizontal extrusion. That is as low as the connector can go. Putting it higher may put your hot end too far from the bed.

Tighten the t-nuts prior to adding the stepper motor (as you wont be able to reach the screws after).

insert the m3 screw (10mm) and add t-nut to the EndConnector, place the 12mm guide shaft into the Nema Connector and end connector and push end connector to the extrusion. tighten the m3 screw prior to inserting the Lead screws

The 3D printed parts for the Z axis (both left and right) were designed to clamp on the profiles of the 1010 extrusion. That I did put holes to insert m3 nuts along with t-nuts to ensure a tight connection and stop them from sliding up and down.

Connect the nema stepper to the Nema Connector with 4 16mm screws, insert Lead screw and connect to Stepper via the coupler.


Printed Parts (included with this step):

  • Z Axis NemaConnector12mm Right.stl
  • Z Axis NemaConnector12mm Left.stl
  • Z Axis Slider12mm Right.stl
  • Z Axis Slider12mm Left.stl
  • Z Axis EndConnector12mm Right.stl
  • Z Axis EndConnector12mm Left.stl

Step 6: Assembling the Power Unit

For the C3Dt/dz I'm using a 24V Universal PSU. the TMC drivers that operate all stepper operate better at 24V than at 12V.

It's important to get the universal one, as it has all the tapped holes in the exact same positions. The implementation of the C3Dt/dz (as well as the C3Dt/c) rely on all the screw holes to be in the right place. Like the C3Dt/c, the C3Dt/dz relies on the Power Unit's cooling fan to force air in the over the controller board and specifically the TMC2209 drivers.

To keep things save, the entire unit is enclosed and completed with a fused on/off switch. Insert the square nuts inside the place holder where the toggle switch goes.

Also insert 2 square nuts inside the main case (possible put some hot glue on to keep in place). Later in assembly the Electronics case will be attached to these.

when bolting the cover to the Power unit with 3 M4 nuts, insert the Frame's Power To Y Axis Clamp.stl between cover and unit.


Printed Parts (included with this step):

  • PowerUnitCover.stl
  • ToggleSwitchPlate.stl
  • Power To Y Axis Clamp.stl

Step 7: Assembling the Bed

For the C3Dt/dz, I choose a bigger than usual bed at 200mmx270mm but I tried to remain stock being able to buy the part readily online.

Because of the size and because I'm using 24V, I was not able to use the in-bed heater and ordered a custom Keenovo 24V silicone heat pad. If you want to save yourself the trouble, go with something more standard like a a 220x220 bed there's off the shelf options available for heating as well on eBay

Since most linear rails use standard blocks with hole spacing at 20mmx20mm I have added two options for the bed adapter; one with 20x20mm screw spacing and one with 20x15mm spacing.

The bed carriage for the C3Dt/dz is the same as used for the Tarantula 3D printer and can be found on

The linear adapter on the Y Axis has a large surface to receive the bed frame. Make sure this is smooth. Even the smallest bumps can slant your bed.

I highly recommend going with the BuildTak Flex Plate System. Not only do I love their print surfaces (they offer both BuildTak and PEI) but, being able to remove the flex plate from the printer is especially beneficial to the printer as, the entire bed rests on a single rail block. Applying force to remove a print from a mounted bed could wreak havoc on your leveling. You can find the flex plate system here:

For this build you would pick the 8"x10" option.

First, attach the carriage with 4 hex socket scews to the Linear Adapter on the Y axis. The bed sits on a 3D printed adapter so if you find that, once the carriage is added, it's crooked you could remedy that by adding some washers between the adapter and carriage (in the appropriate places). Auto Bed Leveling will take care of crooked beds but it's best to try to start out as level as possible.

I use the bed springs for my printer implementation and specifically use 24mm Socket Flat Head Cap Screws as these will sit level or below the actual printer surface. Use Nylon insert lock nuts underneath the carriage. Do not use longer screws than needed, there's only a clearance of about 5mm between carriage and electronics case.


Printed Parts (included with this step):

  • LinearAdapterYAxis 20x15.STL
  • LinearAdapterYAxis 20x20.STL

Step 8: LCD Plus SD Card Reader

The C3Dt/dz uses a 12864 LCD display with built-in SD Card reader. The case kind of speaks for itself. the LCD fits exactly inside the case and is tied down with 4 m3 6mm screws. Since this printer uses an SKR 1.3 you could opt for the more fancy Touch screens but I currently have not implemented this

The back of the case has two openings for the 2 ribbon cables that connect the LCD to the KFB2.0


Optional: BIGTREETECH TFT24 V1.1 Graphic Smart Display Controller Board

Printed Parts (included with this step):

  • LCDCase.stl
  • LCDLid.stl
  • LCDKnob.stl

Step 9: Assembling Extruder and Hotend

The extruder assembly is put together with quality and noise in mind.


  • Parts Cooling fan (4010 blower fan)
  • Heatsink cooling fan (noctua for quiet)
  • BondTech extruder for the best extrusion experience (check out
  • Proximity Sensor for Auto Bed Leveling
  • E3D v6 all metal hotend

Before you go look for a knock off BMG extruder, please look at the image with the bad gears. That was my first "BMG" which happened to be a knockoff. I don't want to think what damage these metal splinters could have done to my linear rails. Since I've only bought the brand only.

Noctua fans are the most quiet fans I have found on the market. Since the heat sink fan is always on, you want it to be the quietest. Unfortunately Noctua does not make 24V fans so this printer uses a 5V instead that is powered by one of the end stop connectors on the board.

The proximity sensor senses metal, in this case the spring steel from the flex plate. This will not work on a glass bed.

I designed the Parts cooling bracket such that you can attached and remove it without disconnecting the actual extruder.

The BMG Fan Bracket (BGM Fan Bracket.stl) will connect directly along with the BondTech BMG to the stepper motor. For this you will need two longer m3 screws to replace the two bottom ones that come with the BondTech.

The Fan Bracket (FanBracket.STL) and Cooling Fan Shroud (fan shroud.stl) connect to the 4010 blower fan using

I created two versions of the Extruder bracket which is the main plate that connects to the linear actuator and holds the stepper/extruder and proximity sensor. One for the linear rail screw spacing at 20x20mm (extruderBracket20x20.stl) and one for 20mmx15mm (extruderBracket.stl),

Because the Extruder Bracket is plastic and the Stepper motor "hangs" in the back, there is room for the entire extruder assembly to flex back and forth. For this reason I added a Stabilizer bracket that can slide underneath the stepper motor so flexing is removed. Measure the space between Stepper motor and linear Rail adapter and scale you adapter in the z-axis to that size.


Printed Parts:

  • extruderBracket.stl/extruderBracket20x20.stl
  • Fran Bracket.stl
  • Fan Shroud.stl
  • BMG Fan Bracket.stl
  • 30mm_to_40mm_FanAdapter.stl
  • Fan Duct.stl (optional as you can use the one that comes with E3D)
  • stabilizer.stl

Step 10: Assembling Electronics

For the C3Dt/dz printer, I went with the same approach as the C3Dt/c; mounting the electronics case over the Power unit's cooling fan. it's exhaust runs right over the main board and most importantly the TMC drivers and out the electronics case through the front. It's not exactly active cooling as the air might be warmed up a bit but I believe it might beat passive cooling (no fan on controller at all). For this implementation I decided to close the top of the case to make sure less air escaped and runs over the drivers.

For a clean look I've decided to use the Expandable Braided Sleeves to keep all wiring together.

The large hole at the bottom of the electronics case fits right over the fan exhaust from the power unit. The small hole is to keep all the wiring coming into the case together.

I found it useful to first get all the wiring through the small hole leading them to the bigger compartment to subsequently slide the controller board behind it.

The orientation for the controller speak for itself. The drivers all point downward and the usb port and micro SD port slides into the openings at the front of the electronics case.

I'm not going into the specifics of wiring the SKR 1.3/1.4 I'll post a link but there are two items specific to the C3Dt/dz that I want to call out.

  • The printer uses a proximity sensor that needs some resistors installed to deal with the 24V output (voltage divider). You can see how I did that in the video here:

The proximity sensor is powered by 12/24v Board Fan (next to the Stepper motor outputs)

  • I use a noctua fan to cool the heatsink and since noctua does not sell 24V fans, I used a 5V fan and used the 5V/GND output of the Z-Max endstop.

A good Video to watch for setting up the SKR 1.3 can be found here:

As far as wiring is concerned you'll need to make sure it all the proper length or at least not to short. for the wires leading to the Extruder account for close to 1.5 meters. There will be:

  • One stepper cable (4 strands)
  • 2 wires for heatsink fan (22 awg)
  • 2 wires for parts cooling fan (22 awg)
  • 3 wires for Proximity sensor (22 awg)
  • 2 wires for thermistor (22 awg)
  • 2 wires for heater cartridge (16 AWG)

Wires leading to heated bed no more than a meter is needed:

  • 2 wires for thermistor (22 awg)
  • 2 wires for heater cartridge (16 AWG)

Wires leading to Y Axis Stepper motor and end stop no more than half a meter is needed

  • One stepper cable (4 strands)
  • 3 wires for end stop (22 awg) which come with the end stop

Wires leading to X Axis Stepper and End Stop (no more than 60cm is needed)

  • One stepper cable (4 strands)
  • 3 wires for end stop (22 awg) which come with the end stop

Wires for Z Axis will be connected in parallel to the Z axis stepper output. For my implementation I used single stepper wire connected to board and split it to two outputs outside of case. total length need not be longer than 50cm.

  • Two stepper cables (4 strands)


Printed Parts (included with this step)

  • ElectronicsCaseSKR.stl

Step 11: Setting Up Marlin 2.0

The C3Dt/dz runs Marlin 2.0.1 that can handle 32 bit boards. You can download Marlin here:

The following files will need to be updated to be in line with the C3Dt/dz:


select proper board:

// Choose the name from boards.h that matches your setup<br>#ifndef MOTHERBOARD

You can name it:

// Name displayed in the LCD "Ready" message and Info menu<br>#define CUSTOM_MACHINE_NAME "C3Dt/dz 0.1"

if set otherwize, change:


for thermal setting set the following:

#define TEMP_SENSOR_0 5<br>#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_4 0
#define TEMP_SENSOR_5 0
#define TEMP_SENSOR_BED 11

Keep it safe , make sure these are set:

#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders<br>#define THERMAL_PROTECTION_BED     // Enable thermal protection for the heated bed
#define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber

for the end stops set:

#define USE_XMIN_PLUG<br>#define USE_YMIN_PLUG
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).<br>#define X_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // Set to true to invert the logic of the probe.

enable the TMC2209 Drivers:

#define X_DRIVER_TYPE  TMC2209<br>#define Y_DRIVER_TYPE  TMC2209
#define Z_DRIVER_TYPE  TMC2209
#define E0_DRIVER_TYPE TMC2209

define the steps for all X,Y,Z and E

#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 400,  415 }

Acceleration and jerk can be set as follows but feel free to experiment after to change:

#define DEFAULT_ACCELERATION          1200    // X, Y, Z and E acceleration for printing moves<br>#define DEFAULT_RETRACT_ACCELERATION  3000    // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION   1500    // X, Y, Z acceleration for travel (non printing) moves
 * Default Jerk limits (mm/s)
 * Override with M205 X Y Z E
 * "Jerk" specifies the minimum speed change that requires acceleration.
 * When changing speed and direction, if the difference is less than the
 * value set here, it may happen instantaneously.
//#define CLASSIC_JERK
  #define DEFAULT_XJERK 6.0
  #define DEFAULT_YJERK 6.0
  #define DEFAULT_ZJERK  0.3
  //#define LIMITED_JERK_EDITING        // Limit edit via M205 or LCD to DEFAULT_aJERK * 2
    #define MAX_JERK_EDIT_VALUES { 20, 20, 0.6, 10 } // ...or, set your own edit limits

<p>#define DEFAULT_EJERK    5.0  // May be used by Linear Advance</p>

assign the Z probe to Z-min (this is the proximity sensor)


tell the system where the sensor sits in relation to the nozzle (z will change when calibrating):

#define NOZZLE_TO_PROBE_OFFSET { -27, 5, 0 }

define the bed and travel max and mins

// The size of the print bed<br>#define X_BED_SIZE 200
#define Y_BED_SIZE 270
// Travel limits (mm) after homing, corresponding to endstop positions.
#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS 210
#define Y_MAX_POS 280
#define Z_MAX_POS 270

Turn on Auto Bed leveling


Turn on Z safe homing to prevent bringing the sensor down next to the plate


turn on eeprom settings so that you can make changes with gcode without having to flash the board

#define EEPROM_SETTINGS     // Persistent storage with M500 and M501

turn on SD support so you can print from SD card


The C3Dt/dz as seen here is setup with the following LCD


That's it for the configuration.h

Since we're using the TMC2209 stepper drivers we also will make some changes in the configuration_adv.h

First setting we (may) want to change is baby stepping. It allows for real-time adjustment of the Z-offset while printing.


next do a search for "HAS_TRINAMIC"

here change the setting for X Y Z and E0. Currencies can be changed once everything is running

#if HAS_TRINAMIC<br>  #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current
  #define INTERPOLATE       true  // Interpolate X/Y/Z_MICROSTEPS to 256  #if AXIS_IS_TMC(X)
    #define X_CURRENT     840  // (mA) RMS current. Multiply by 1.414 for peak current.
    #define X_MICROSTEPS   16  // 0..256
    #define X_RSENSE     0.075
    #define X_CHAIN_POS     0  // 0 - Not chained, 1 - MCU MOSI connected, 2 - next in chain, ...

  #if AXIS_IS_TMC(Y)
    #define Y_CURRENT     840    
    #define Y_MICROSTEPS   16
    #define Y_RSENSE     0.075
    #define Y_CHAIN_POS     0
  #endif  <br><br>  

  #if AXIS_IS_TMC(Z)
    #define Z_CURRENT     840
    #define Z_MICROSTEPS   16
    #define Z_RSENSE     0.075
    #define Z_CHAIN_POS     0
  #endif <br>  

  #if AXIS_IS_TMC(E0)    
    #define E0_CURRENT    650
    #define E0_MICROSTEPS  16
    #define E0_RSENSE    0.075
    #define E0_CHAIN_POS    0

I recommend turning on StealthChop


having debug options can be really helpful so I recommend turning it on

#define TMC_DEBUG

Step 12: Testing and Calibration

at this point your firmware has been uploaded and we can start testing and calibrating the printer. You'll want to test the direction of the axis, whether your end-stops and sensor are working and calibrate the printer. The Video below shows the process as I recorded iit for my C3Dt/c printer. The same steps apply to the C3Dt/dz.

The pronterface as seen in the video (start at 18:30) can be downloaded here:

Step 13: Full Bill of Materials With Links

This is not a budget printer. All parts below add up to some $1,580. You can certainly look for cheaper parts. If you choose to go with budget linear rail instead of THK you'll immediately save some $300. All fasteners (they add up to $128) come in bulk. Going to your local hardware store and getting exact amounts will save you too.

Here are all the part I used for my build with links one where to find them. Feel free to shop around for better deals. I'm sure they're out there.

8020 Inc

(Shipping is added to these)

3D Printer Hard Ware

Additional Y Axis Rail (assume additional $80 to $380)