X3DStudios

How X3D works

The full path from a model to a parcel: validation, a real OrcaSlicer measurement, checkout, the operator queue, printing, cooldown, packing and tracking.

This page follows one part all the way through: from the file you upload to the parcel that arrives. Read it if you want to know where a number in your quote came from, what happens after you pay, or which steps are software and which are a person standing in front of a printer.

Everything below happens in the same order for a model you generated at /design and a file you uploaded at /print. The only difference is where the mesh came from.

The pipeline#

  1. 1
    1. Upload or generate

    An uploaded file goes straight from your browser to storage through a signed URL, because a 100MB model cannot fit in a normal request body. A generated model is written to the same place. Either way, what you end up with is one stored model tied to your account.

  2. 2
    2. Validate the mesh

    The server reads the bytes back and works out what it has: triangle count, bounding box, volume. A file it cannot read a printable mesh from is rejected here with a 422, and a model whose largest three dimensions do not fit 340 x 320 x 340mm is rejected with a message naming its actual size. Rejecting now costs you a minute; rejecting three hours into a print costs a plate.

  3. 3
    3. Slice it for real

    The model is sent to our slicer service, which runs OrcaSlicer against Bambu's own machine, process and filament presets. It comes back with the filament volume in cm3, the print time in seconds, the layer count and the number of filament changes. That measurement is cached against the model so it is only paid for once.

  4. 4
    4. Quote from the measurement

    Filament volume times the material density gives grams. Grams times the all-in rate for that material, times 1.75 if you chose premium 0.1mm layers, gives the price. Weight rounds up to the whole gram and there is a $1.00 minimum per part.

  5. 5
    5. Check out

    Stripe collects the card and the address. The price is recomputed on the server from the stored model at this moment — the number your browser was showing is never trusted. Shipping is added as its own line so a gift card can settle it.

  6. 6
    6. The order and the work order

    Stripe confirming payment is what creates the order. You get a confirmation email; the operator gets the same summary plus a work order carrying a signed download link to your file, valid for seven days, and every setting the print needs.

  7. 7
    7. Queue it onto a machine

    The operator picks a printer and, for a multi-colour plate, the AMS trays. The server then slices the model again — this time for that specific printer, nozzle and plastic — and puts the finished plate in the queue. The tray the operator picked is fingerprinted as TYPE:#HEX so that if the spool is swapped before the job starts, the dialog reopens and says so.

  8. 8
    8. Print, then cool

    A finished print is not a collectable print. Parts release from a PEI plate when the bed contracts, so after the last layer the machine runs its fans and the job is held until the bed is at a removal temperature: 35C for PLA, PETG and TPU, 45C plus a chamber under 40C for ABS and ASA. It releases anyway after 45 minutes and says the part may still be warm.

  9. 9
    9. Inspect, pack, label, ship

    A person takes the part off the plate, looks at it, packs it and buys a label. The tracking number and carrier are recorded against your order, and the shipped email carries the number as a link.

  10. 10
    10. Delivered

    A nightly job asks the carrier about every shipped order that has a tracking number. When the carrier says delivered, the order moves to delivered and you get the last email.


Why the quote comes from a slice#

This is the part of the system worth understanding, because it is where most print services differ from us. You are billed per gram. The question is how the grams are worked out before the part exists.

A volume estimate takes the mesh volume, assumes some fraction of it is solid wall and the rest is infill, and multiplies by density. It is fast, it needs no infrastructure, and it is wrong in a specific direction: it cannot see supports, it cannot see the brim, it cannot see the purge a filament change throws away, and it does not know how the slicer will actually lay down walls on a thin part. Thin parts are where it fails worst — a plate that estimated at 12.9g came off the printer at 21g.

A slicer does not estimate any of that. It generates the actual toolpath and reports the filament it will consume, which already includes the supports, the brim, the skirt, the prime line and every purge. A multi-colour plate you painted and sliced yourself is the extreme case: four colours on the same mesh can burn 120g where one colour burns 40g, and can turn 30 minutes into 20 hours, because the printer spends most of its time swapping and purging. No function of geometry can predict that. A slicer just measures it.

Volume estimateReal slice
Where it comes fromMesh volume and an infill assumptionOrcaSlicer with Bambu's presets
Sees supports and brimNoYes — they are in the filament total
Sees multi-colour purgeNo — and no purge is charged for on an estimateYes, per filament
Knows the real print timeNo — derived from a throughput constantYes
Time to produceInstantRoughly 10 to 60 seconds
Used forThe first price the page showsThe price you are charged
Both exist. The estimate is a placeholder; the slice is the quote.
Checkout refuses an unmeasured print
If the slicer has not finished when you press Checkout, the cart holds the button closed and the server answers 409 rather than charging you. Slicing usually takes 10 to 60 seconds. The alternative — charging the estimate — means selling below the rate we advertise, so the cart waits instead.

The estimate is still used in two places. It is the number the page shows in the first seconds after upload, before the slice lands. And it is used when a slice would not be representative: above 35% requested infill the slicer runs at its profile default, so its answer stops matching what you asked for and the estimate takes over. If the slicer is unreachable, quotes fall back to the estimate everywhere except checkout, which blocks.

Slice it yourself and we use your numbers
Upload a .gcode or .gcode.3mf you exported from Bambu Studio or OrcaSlicer and there is nothing for us to measure — its own filament weight and print time become the quote, and its plate is printed exactly as you arranged it. A file you sliced already contains every purge and tool change, so nothing is added on top of its own numbers — the only thing that can bill separately is measured hours far past what its weight implies.

What the price is made of#

For an ordinary part there is one line: weight times rate. Machine time is only billed separately in one case — a file you sliced yourself whose measured hours run far past what its weight implies, which is what tool changes on a plate you painted yourself look like in the numbers.

LineHow it is worked out
Billable gramsSliced filament volume x material density, rounded up to the whole gram
Per-gram rate$0.12 PLA, PETG and ABS; $0.13 TPU; $0.14 ASA. A colour we do not stock is $0.20/g
QualityStandard 0.2mm layers x1. Premium 0.1mm layers x1.75
Minimum$1.00 per part
Bulk5% off at 5 or more of a part, 10% off at 10 or more
Shipping$7 flat in the US, free over $50. International $30 flat, free over $500
Full detail, including the excess-hours surcharge on a file you sliced yourself, is on the pricing page.

What is automated and what is a person#

Docs that blur this line are how customers end up expecting a robot to catch something only a human was ever going to catch. So, plainly:

StepWho does it
Mesh validation and build-volume checkAutomatic, on upload
Slicing and quotingAutomatic
Re-quoting at checkoutAutomatic, server-side
Safety check on the plateAutomatic — dangerous G-code commands, temperature ceilings, wrong printer model
Choosing the printer and the spoolsOperator, in front of the fleet
Cooldown before the part is collectableAutomatic, watching the bed temperature
Looking at the finished partA person. There is no vision model and no automated pass/fail record
Advancing placed, printed, packed, shippedOperator, by hand
Setting deliveredAutomatic, from the carrier, nightly
One honest limit
The printer's own detectors do run — every job we send carries first-layer inspection turned on, and Bambu's spaghetti detector watches through the chamber camera throughout. What is missing is on our side: we do not read those verdicts back or gate anything on them, and nothing records a pass or a fail against your order. The judgement that a finished part is good enough to ship is a person looking at it. This is a known gap.

Following it afterwards#

Your orders live at /orders. An order moves through five stages plus cancelled, and three of them email you: printed, shipped and delivered. Placed does not, because the confirmation email already went out at checkout, and packed does not, because there is nothing in it you can act on.

StageMeaningEmails you
placedPaid, in the queueNo
printedOff the printer and coolingYes
packedBoxed, waiting for pickupNo
shippedHanded to the carrier, tracking recordedYes
deliveredCarrier confirmed deliveryYes
cancelledCancelled, any payment refundedNo

The clickable tracking link is in the shipped email, with the carrier name on it. The /orders page shows the same tracking number as plain text without a link — a known gap, not a missing number.