3D Printing Language Code T: How Two-Track Control Changes Toolpath Planning
3D printing language Code T splits one G-code stream into two coordinated tracks: motion and function. This page explains the mechanism, the boundary conditions, and when a machined or cast part still beats an additive one.

In this article
- 1
- 2
- 3
- 4
- 5
- 6
What Code T Splits Apart, and Why That Matters
G-code carries one instruction stream. A move command tells the head where to go, and every other variable — extrusion rate, temperature, tool change, laser power — has to be inserted as a separate line between moves. The controller reads them in order. Nothing runs at the same time as anything else.
Code T divides that stream into two coordinated tracks. One track carries the printing path: position, velocity, acceleration. The second track carries function: extrusion volume, material switching, colour, cure intensity, nozzle state. The two tracks run in parallel and meet at synchronisation points that the programmer sets.
That split is the whole idea. Once function is its own track, a printer can change material composition while the head is still moving along the same path. The controller no longer has to stop, purge, and restart for every transition.
The practical result is a shorter toolpath for the same geometry. Fewer stops also mean fewer seams, less stringing, and more repeatable layer bonding. Those are the three defects most people fight when they print with two materials.
- 1Track onePosition, velocity, acceleration — the kinematic plan
- 2Track twoExtrusion, material, colour, cure — the functional plan
- 3Sync pointsWhere the two tracks must agree before the next move
How the 3D Printing Language Code T Differs from G-Code
G-code was written for a single-tool, single-material machine. It assumes one nozzle, one filament, one thermal profile per print. Multi-material work gets bolted on with tool-change commands, and each change costs time and creates a weak spot.
Code T assumes the machine has several controllable axes of function. That could be two extruders, a mixing nozzle, a laser with variable power, or a spray head. The language does not care what the function is; it only cares that the function can be scheduled against the motion.
The consequence is that machine builders can add capability without rewriting the whole toolpath. A printer with a new nozzle design needs a new function definition, not a new slicing strategy. That is why the same code can drive a desktop machine and an industrial system.
There is a cost. Two tracks need a controller that can schedule them, and the firmware has to resolve conflicts when the function track falls behind the motion track. On older 8-bit boards this is not possible. On modern 32-bit boards it is a scheduling problem, not a hardware problem.
For a designer, the difference shows up in the slicer settings. Instead of choosing a material for the whole part, you assign material and properties per path segment. The toolpath becomes a design file, not just a motion file.
- 1G-codeSequential commands, one active state at a time
- 2Code TParallel tracks resolved at sync points
- 3Firmware floorNeeds a scheduler; 8-bit boards cannot keep up
Functional Gradients and What They Enable
A functional gradient means a property changes along the path. Wire diameter, material ratio, cure level, or colour can shift gradually instead of switching at a hard boundary. G-code cannot express this because it has no variable that changes continuously with position.
Code T can, because the function track is a curve, not a list of discrete commands. You define the gradient once, and the controller interpolates it across the segment. The printer does the rest.
The engineering value is in parts where stiffness, damping, or thermal response has to vary across the same geometry. A bracket that is stiff at the mounting boss and compliant at the tip is one print, not two parts glued together.
Gradients also remove a common failure mode. A hard material boundary is a stress riser. A graded boundary spreads the load. For cyclic loading, that difference shows up in fatigue life, not in the first pull test.
The limits are real. Gradient control is only as good as the extruder response. A nozzle that takes 200 ms to change mix ratio cannot print a sharp gradient at high speed. Slow the print down, or accept a softer transition.
- 1Continuous variableProperty changes along the path, not at a boundary
- 2Stress risersGraded transitions spread load better than hard joints
- 3Rate limitGradient sharpness is capped by extruder response time
Where the Approach Still Falls Short
Code T does not fix the fundamentals of additive manufacturing. Layer adhesion is still a thermal process. Anisotropy is still there: a printed part is weaker across layers than along them. No language changes that.
Surface finish is another boundary. As-printed surfaces sit around Ra 10–15 μm on a good FDM machine. If a drawing calls for Ra 0.8–1.6 μm or Ra 0.2–0.8 μm, printing gets you close to net shape, not to final spec.
Dimensional tolerance is the third. A well-tuned printer holds roughly ±0.1 mm on small features. When the drawing says ±0.005 mm, the print is a blank, not a finished part. That is where we come in.
The sensible workflow is additive first, subtractive second. Print the near-net geometry with the internal channels and gradients, then machine the critical faces, bores, and sealing surfaces. You keep the complexity and recover the tolerance.
Not every part suits this. A simple bracket with three holes and one flat face is cheaper to machine from bar stock. Printing it, then machining it, adds a setup and a fixture for no gain.
- 1Keep printingInternal channels, lattices, graded sections
- 2Switch to machiningSeals, bores, bearing seats, flatness-critical faces
- 3Skip printingSimple prismatic parts with few features
From Printed Blank to Finished Part on the Shop Floor
When a printed blank arrives at our floor, the first job is datum strategy. Printed surfaces are not reliable datums. We pick a machined face or a cast boss and build the coordinate system from there.
The second job is stock allowance. We ask for 0.5–1.0 mm on faces that will be cut, and more on bores that need to be true. Thin printed walls deflect under cutting force, so we support them or leave them alone.
Fixtures matter more than the toolpath here. A printed part is often light and irregular. Vacuum plates, soft jaws, and 5-axis access reduce the number of setups and the chance of a scrapped blank.
We run 16 simultaneous 5-axis machining centers and 127 CNC machines in total, so a one-off prototype and a 10,000-part run use the same process window. No minimum order quantity applies.
Inspection closes the loop. We check raw material, monitor in process, and inspect 100% before shipment. Reports are available on request, including the dimensions that the print could not hold.
- 1DatumsNever trust a printed surface as a primary datum
- 2Allowance0.5–1.0 mm on faces, more on bores
- 3SupportThin printed walls deflect; back them up or leave them
Printed, Machined, or Both: Choosing by Requirement
Match the requirement to the process before you commit a design.
| Requirement | Additive with Code T | Subtractive CNC | Practical choice |
|---|---|---|---|
| Internal channels and lattices | Easy, no extra cost | Hard or impossible | |
| Tolerance ±0.005 mm | Not achievable | Standard capability | Machine |
| Surface Ra 0.2–0.8 μm | Needs post-processing | Direct from the tool | Machine |
| Graded stiffness in one part | Native capability | Not possible in one piece | |
| Simple prismatic geometry | Slow and costly | Fast from bar stock | Machine |
| Near-net blank for finishing | Cheap complexity | Adds setups | Both |
| Material choice | Limited filament range | Aluminium, steel, titanium, plastics | Machine for metals |
The Verdict
Use 3D printing language Code T when the part needs internal geometry, graded properties, or features a cutter cannot reach. Switch to CNC when the drawing carries ±0.005 mm, a sealing surface, or a bearing seat. For most production parts, print the blank and machine the critical features.
Questions Engineers Ask Next
Does Code T replace G-code entirely?
No. The motion track still describes position and velocity in terms a controller understands. Code T adds a second, parallel track and a set of synchronisation rules.
Existing machines keep running G-code. A machine needs a firmware scheduler before it can execute the two-track form.
Which printers can run it?
The design is equipment-agnostic: a desktop FDM machine and an industrial system can both use it, provided the controller can schedule two tracks.
The practical floor is a 32-bit board with enough buffer to hold the function curve. Older 8-bit boards cannot resolve sync points fast enough.
Can a printed part hold a tight tolerance?
A tuned printer holds roughly ±0.1 mm on small features. Our machining tolerance is ±0.005 mm.
If a drawing calls for ±0.005 mm, treat the print as a blank and machine the critical faces, bores, and seats.
What should I leave as-printed?
Internal channels, lattice structures, and graded sections are expensive or impossible to cut, so leave them as printed.
Faces that seal, mate, or carry a bearing need machining, and that is where the allowance goes.
How much stock should I add on a printed blank?
0.5–1.0 mm on faces that will be cut is a workable starting point. Bores that need to run true take more.
Thin walls deflect under cutting force, so either support them or leave them unmachined.
Can you handle both steps in one order?
Yes. We run custom 3D printing alongside 127 CNC machines, including 16 simultaneous 5-axis centers, so the blank and the finished part stay in one process window.
No minimum order quantity applies, from one prototype to 10,000+ parts. Quote and DFM analysis come back within 12 hours.
Send the Drawing, Get a Process Recommendation
Upload your CAD and we will tell you which features to print, which to machine, and what allowance to leave. Quote and free DFM analysis within 12 hours.
12-hour quote±0.005 mm tolerance100% inspection