Weight, stones and cost-based pricing
From each band or head's 3D model the app works out the exact metal weight (all the metal merged into one solid, times the alloy's density), the number of side stones and their total carat. A ring adds its band and head, minus the metal they share at the seat, at the size the band was modelled at. It is the CAD weight, with no casting or finishing allowance, and a figure that cannot be measured reliably stays blank.
3D Jewelry Designer7 min read
What it measures
From each band or head's 3D model the app works out the exact metal weight (all the metal merged into one solid, times the alloy's density), the number of side stones (every stone except the centre stone) and their total carat. A ring adds its band and head, minus the metal they share at the seat, at the size the band was modelled at.
It is the CAD weight, with no casting or finishing allowance. If something cannot be measured reliably, the number stays blank with a plain warning; it is never estimated. Platform admins measure and set rates under Ring Catalog; each customer chooses, builder by builder, what shoppers and Shopify see.
On import
In Ring Catalog → Import, select a part and its Weight and stones card shows grams (pick the alloy in the list), side stones and total carat before you press Publish. It measures again a moment after you change a part's metal or gem role, and a large part takes a few seconds.
Hidden Rhino objects and layers are left out of the model and the weight, and a file saved in centimetres or inches is converted to millimetres. Carats come from your stone size chart (Setup); if it cannot load, the part is not measured and the card says so, with Try again. A failed measurement never blocks a publish.
Ask your CAD team for render meshes (not Save Small), closed solids, one object per stone, cutters hidden or deleted, and millimetre units.
Metals and densities
In Ring Catalog → Setup → Pricing and SKU → Metals, each metal has a density in g/cm³, seeded from supplier tables with a Source link. It reads Unconfirmed until you confirm or edit it, because one label varies by alloy (14K white gold is 12.61 with nickel and 14.11 with palladium); Use a listed density… offers the others. A metal with no density shows no weight.
These are the densities the app ships with, each with the supplier table it came from:
| Alloy | Density g/cm³ | Karat | Grams per 1000 mm³ |
|---|---|---|---|
| 9K Yellow Gold (approx.)1 | 11.50 | 9K | 11.50 |
| 10K Yellow Gold2 | 11.57 | 10K | 11.57 |
| 14K Yellow Gold2 | 13.07 | 14K | 13.07 |
| 18K Yellow Gold2 | 15.58 | 18K | 15.58 |
| 24K Yellow Gold3 | 19.32 | 24K | 19.32 |
| 10K White Gold (nickel)2 | 11.07 | 10K | 11.07 |
| 14K White Gold (nickel)2 | 12.61 | 14K | 12.61 |
| 18K White Gold (nickel)2 | 14.64 | 18K | 14.64 |
| 10K Rose Gold2 | 11.59 | 10K | 11.59 |
| 14K Rose Gold2 | 13.26 | 14K | 13.26 |
| 18K Rose Gold2 | 15.18 | 18K | 15.18 |
| 18K Red Gold2 | 15.18 | 18K | 15.18 |
| 18K Green Gold2 | 15.90 | 18K | 15.90 |
| Platinum 950 (ruthenium)3 | 20.70 | 950 | 20.70 |
| Platinum 900 (iridium)2 | 21.54 | 900 | 21.54 |
| Sterling Silver 9253 | 10.36 | 925 | 10.36 |
Densities are supplier figures, not estimates. One label can cover more than one alloy, so a shop confirms or edits its own in the studio under Setup, Metals.
Measure what is already live
In Ring Catalog → Health → Weights and stones, the card counts the parts that have numbers, and how many are not published (a blocking warning, such as metal that is not watertight).
Compute missing → measures every part with none, or with numbers from an older method or a replaced model. Once every part has numbers, Re-measure … flagged → measures again the parts whose compute failed, whose metal was not watertight, or whose weight is an estimate, so an improvement to the measuring rules reaches them without re-measuring the whole catalog.
It runs in your browser, so keep the tab open; each part is saved as it finishes, and you can pause, stop after the current part, or Retry failed. Flagged parts lists every part with a warning, including the ones that are only informative. Calibration → on the same card compares the measured volumes, stone counts and sizes with your CAD report, and the computed weights with rings you have weighed; it only reads, so nothing in the catalog changes.
On a part card, Recompute weight and stones measures one part again, and Override weight and stones… sets the side-stone count, total or centre stone by hand (a note is required; a recompute never replaces it, and clearing it measures the part afresh).
Seat overlap
A ring's weight leaves out the metal its band and head share at the seat. The seat tool (Ring Catalog → Health → Baked seats → Compute missing →) measures it as seats are baked, and its Measure overlaps button fills seats baked earlier, and seats whose overlap was cleared because a nudge or the band's seat adjustment changed.
It is measured where customers see the head, so after you change a band's design-wide seat adjustment or nudge a head, run Measure overlaps again. Until a seat has its overlap, that ring carries the warning Seat overlap not subtracted: the shared metal counts twice.
Weights by variant
In Ring Catalog → Designs, a design card's ⋯ menu, or tap its weight line: every head on that band as one ring, in the alloy you pick. Metal grams (band + head, seat overlap taken off once; hover for the split), side stones and carat, the centre carat (the head's carat attribute, else the measured stone), total diamond carat and gross grams.
A band with a plain shank also shows weights at other US sizes (marked derived). Rows with a part that has no current measurement say Not computed (run Compute missing in Health), and an amber note lists rings whose seat overlap is not measured yet. Download CSV exports that design in every alloy at full precision; Export all weights (CSV) above the designs exports the whole catalogue. One metal per row: two-tone builds are not listed.
Cost-based pricing
In Ring Catalog → Setup → Pricing and SKU, off by default. Turn it on and the metal is priced from each ring's measured grams times your price per gram for its alloy (plus casting loss), the accent stones from your tiers, then your margin on top.
Band and head base prices, option prices, the centre stone and engraving are still added, so set the base prices to a design or labour fee (or 0) first, or the metal is charged twice. The example under the switch shows the sum, and lists what is missing when a build cannot be priced this way.
If anything is missing (a price per gram, a tier for a stone size, a measurement)
that ring keeps its manual price, and its API quote carries the flag
cost_fallback. Changing rates re-mints Shopify variants in mint/create modes.
Accent-stone tiers and the stone size chart
A tier is a size range in mm (from its minimum up to, not including, its maximum) with a price per carat and a setting charge per stone. Add one table for all accent stones, or Own tiers for one stone type.
The folded Stone size chart gives each round stone its carat from its diameter, using the trade size classes seeded from Stuller; edit it, or Reset to Stuller default. Other shapes are weighed from their measured length, width and depth.
| Diameter (mm) | Nominal carat | Carat range |
|---|---|---|
| 0.80–0.99 | 0.0025 | 0.0022–0.0038 |
| 1.00–1.15 | 0.005 | 0.0039–0.0064 |
| 1.16–1.23 | 0.0075 | 0.0065–0.0084 |
| 1.24–1.40 | 0.01 | 0.0085–0.0125 |
| 1.41–1.55 | 0.015 | 0.0126–0.0165 |
| 1.56–1.80 | 0.02 | 0.0166–0.023 |
| 1.81–1.88 | 0.025 | 0.024–0.027 |
| 1.89–2.10 | 0.03 | 0.028–0.036 |
| 2.10–2.23 | 0.04 | 0.037–0.045 |
| 2.24–2.43 | 0.05 | 0.046–0.055 |
| 2.44–2.50 | 0.06 | 0.056–0.066 |
| 2.51–2.73 | 0.07 | 0.067–0.076 |
| 2.74–2.80 | 0.08 | 0.077–0.087 |
| 2.81–3.10 | 0.1 | 0.088–0.114 |
| 3.11–3.23 | 0.12 | 0.115–0.134 |
| 3.23–3.54 | 0.15 | 0.135–0.174 |
| 3.55–4.00 | 0.2 | 0.18–0.22 |
| 3.90–4.20 | 0.25 | 0.23–0.28 |
| 4.20–4.60 | 0.33 | 0.29–0.36 |
Tolerance classes follow the published Stuller round-melee list. Adjacent classes share an edge, which is why a stone measured exactly on a boundary falls into the larger class.
The price people see
With cost-based pricing on, the price comes from our server. In the studio and on the home-page builder, signed-out visitors (and a build with a live diamond picked in the studio) see Price confirmed at checkout instead of a live number. An embed shows our server's live price a moment after each change (a placeholder until it arrives, and Price confirmed at checkout if it cannot be reached), never a total added up in the browser.
Per builder
In Dashboard → Embeds → your builder → Pricing → a price book → Cost-based pricing: set the book to Inherit the platform switch, or On or Off (On works for that builder even while the platform switch is off, using the platform's margin and casting loss), and enter its own price per gram and tiers (in the platform currency; the book's FX rate and markup apply on top).
A book on Absolute or Store SKU prices never uses cost-based pricing, and a variant matched from your connected Shopify catalogue keeps its Shopify price.
Show it to shoppers
In Dashboard → Embeds → your builder → Features → Weight and stones, off by default: the builder shows a line under the price, such as 4.182 g 14K White Gold · 18 side stones · 0.360 ctw (at US 6.5). A build that has not been measured shows no line. Confirm your alloys first: the line also shows weights from densities that are still unconfirmed.
Send it to Shopify
In Dashboard → Shopify → Bulk update → Specs and weight: Shopify's CSV weight column only takes whole grams, so exact values go over the API.
Variant specs report downloads a CSV of exact grams, side stones and carat for each row of your product export; a row it cannot fill is blank with the reason, and a row where several heads fit and disagree shows a min to max range.
Push specs to Shopify writes seven rmj variant fields (metal weight, side
stones, carat and its range, gross weight, size basis, source) and, if you tick
Update shipping weight, each variant's shipping weight in grams (Metal only
(net) or Metal and side stones (gross); the centre stone is not counted).
If your store connection does not allow changing shipping weight, only the seven
fields are saved, the push says so, and those variants are not sent again until
the connection's permissions change. The window shows the weight it sent next to
the weight Shopify stored.
A variant you pushed before that can no longer be measured (for example its model
was replaced) is listed under Pushed before, now blocked: Shopify keeps the
old values and nothing is deleted automatically, so fix the reason and push
again, or clear the rmj fields on that variant in Shopify. A push overwrites
those seven fields if someone edited them in Shopify. Variants that already hold
the same values are skipped, only variants whose options name the metal are
filled, and a variant with a US ring-size option gets the weight at that size.
For developers
The quote API returns the same figures as specs
(POST /api/public/ring-builder/quote, the ringQuote GraphQL query and the
SDK), and POST /api/public/ring-builder/embeds/:id/shopify-specs (or the
pushShopifySpecs mutation) runs the Shopify push. The
developer reference lists both.
Related
- How to calculate gold weight from a 3D model
Work out the metal weight of a ring from its CAD volume and the alloy density, with the published density figures for 14K, 18K, white gold and platinum.
- Casting loss in jewellery manufacturing
Casting loss is the metal that never reaches the finished piece: sprues, flashing and polishing. It is why a cast ring weighs less than the metal poured.
- Checkout, cart modes and per-builder pricing
Connect Stripe, choose how a built ring reaches the cart, and give each builder its own currency, markup and per-part prices.