---
title: Formlabs Nylon 12 GF — TDS values and our measured baselines
summary: Published Fuse 1 TDS mechanical properties for Nylon 12 GF, next to what we measured on Fuse-printed control specimens and our best Inova batches. These are the optimization targets.
---

# Formlabs Nylon 12 GF — TDS values and measured baselines

## Published TDS (Fuse 1, Formlabs datasheet 2201635)

| Property | Method | Value |
|---|---|---|
| Ultimate tensile strength | ASTM D638-14 Type I | 38 MPa |
| Tensile modulus | ASTM D638-14 Type I | 2800 MPa |
| Elongation at break | ASTM D638-14 Type I | 4% (X/Y), 3% (Z) |
| Flexural modulus | ASTM D790-15 | 2400 MPa |

Source: formlabs-media.formlabs.com/datasheets/2201635-TDS-ENUS-0.pdf

## Our measured baselines (see `astm_query` for live numbers)

- **Fuse-printed control specimens** (material_class `PA12GF_FL`, printed
  vertically, D638, n=5): tensile modulus **2599 ± 98 MPa**. Below TDS —
  consistent with the TDS quoting X/Y orientation while our controls were
  printed vertically (Z), the weak orientation in SLS.
- **Best Inova batch to date** (batch H, D638, n=3): tensile modulus
  **2815 MPa** — at TDS level. Batches I/J/J_MB (later profiles) sit at
  2245–2328 MPa.
- Full progression A→H spans 365 → 2815 MPa as energy density and thermal
  settings improved; query `astm_query {group_by: "profile"}` for the
  profile-by-profile picture.
- **Flexural (D790)** mirrors it: batch C 285 MPa → batch H **2272 MPa**
  (TDS 2400), controls 1950 MPa. Note: D790 moduli are chord values
  recomputed from load-deflection curves (span = 16 × depth); values for
  very weak batches are lower bounds (crosshead compliance).

## How to use these numbers

Treat TDS values as the **target envelope** when optimizing Inova profiles
for PA12 GF (and as the pattern for any new powder: pull its TDS, put it in
this corpus, tune toward it). Compare like-for-like: orientation matters
(X/Y vs Z), and our specimens' print orientation is recorded per batch in
the ASTM repo.


---
title: Fuse 1 → Inova MK1 parameter translation
summary: How to use Formlabs Fuse 1 material settings as starting points on the SLS4All Inova MK1 — machine differences, what transfers (normalized quantities), what doesn't (absolute settings).
---

# Fuse 1 → Inova MK1 parameter translation

Formlabs publishes material settings and TDS values for the Fuse 1. We print
the same powders (e.g. Nylon 12 GF) on a SLS4All Inova MK1. **Absolute
machine settings do not transfer; normalized quantities do.**

## Machine comparison

| Property | Formlabs Fuse 1 | SLS4All Inova MK1 |
|---|---|---|
| Laser | 10 W ytterbium fiber | (fill in: see firmware config — not yet verified in this corpus) |
| Laser spot size (FWHM) | 200 µm | (fill in) |
| Layer thickness | 110 µm | 100 µm (all profiles to date) |
| Build volume | 165 × 165 × 300 mm | see firmware `PrintableWidth/Height/Depth` |
| Heating | quartz tube elements + PTC cartridges | halogen surface heating + zone heaters (powder/print chambers 1–4, beds) |

Sources: Formlabs Fuse 1 tech specs (formlabs.com/3d-printers/fuse-1/tech-specs).

## What transfers between machines

1. **Volumetric energy input, not laser power.** The Inova's profile knob is
   `LaserFillEnergyDensity` in **mJ/mm of scan path** (profiles are named by
   it: 14–40 mJ/mm tried so far, all at 100 µm layers). The Fuse 1's 10 W /
   200 µm spot delivers energy per scan length that cannot be copied
   directly — different wavelength, spot, and scan speed. Treat energy
   density as the search variable on the Inova, using our own batch outcomes
   (see `astm_query` grouped by profile) as the map, not Fuse 1 settings.
2. **Temperatures relative to material transitions.** PA12's melting point
   (~187 °C) and crystallization window are material properties. Our
   PA12 GF profiles hold the powder surface at 168–176 °C
   (`SurfaceTarget` 168, `HeatingTargetPrint` 172,
   `BeginLayerTemperatureTarget` 176) — a few degrees below melt, the
   standard SLS sintering window. A new material's bed/chamber targets
   should be set the same way: from its DSC data or published sintering
   window, offset the same margins below melt.
3. **Powder refresh ratio.** Material aging behavior transfers (it's powder
   chemistry, not machine). Formlabs specifies 30–50% refresh for their
   powders; our "100% Recycled" profile experiments track how the Inova
   tolerates deviation from that.
4. **TDS mechanical values as targets.** ASTM D638/D790 results are
   machine-independent measurements. The Fuse 1 TDS values (see
   `formlabs-nylon12gf-tds`) are the benchmark our Inova profiles are tuned
   toward; batch H (36 mJ/mm era) already reached TDS-level tensile modulus.

## What does NOT transfer

- Laser power/speed settings (different laser physics entirely).
- Layer thickness conventions (110 vs 100 µm — affects energy density per
  volume; when comparing mJ/mm figures across layer thicknesses, normalize
  to J/mm³: divide by hatch spacing × layer thickness).
- Chamber heating dynamics (heat-up rates, `HeatingMinimumTime`) — tune per
  machine.

## Practical recipe for a new powder on the Inova

1. Get the material's TDS + sintering window (melt point, recommended bed
   temp on any SLS machine — Fuse 1 settings are a fine source *for this*).
2. Set surface/bed targets the usual margin below melt (compare our PA12 GF
   profile: melt 187 °C → surface 168–176 °C, i.e. 11–19 °C below).
3. Start energy density conservatively (our PA12 GF experience: 14–20 mJ/mm
   sinters but underperforms; 28–36 mJ/mm is the strong region; 40 mJ/mm
   explores the upper bound). For goal "first print": low-middle of that
   range with a small test object.
4. Iterate using `astm_query` outcomes and `build_get` failure modes from
   prior builds as the evidence base.


title: Inova print profile conventions

content:
---
title: Inova print profile conventions
summary: How this lab's print profiles are named and structured, which JSON fields matter, and known naming pitfalls. Read before comparing profiles or proposing a new one.
---

# Inova print profile conventions

Profiles live in the firmware (synced to `inova_print_profiles` in Postgres,
full JSON in the `profile` column). One profile ≈ one experiment condition.

## Naming

`YYYY_MM_DD <energy> mJ/mm [variant] Formlabs PA12 GF` — the date is when
the profile was created, the energy is the `LaserFillEnergyDensity` value,
variants describe the deviation being tested ("Higher Temp", "Extended
Cap", "25% Overlap", "100% Recycled", "1 Second Heat Time").

**Pitfall: names can lie.** The profile named "2026_06_06 20mJ/mm" actually
contains `LaserFillEnergyDensity: 15`. Always read the JSON field, never
trust the name — `db_query` on `inova_print_profiles` or
`build_get.profile_key_params`.

## Energy densities tried so far (all at LayerThickness 100 µm)

14, 15, 20, 24, 28, 32, 36, 40 mJ/mm. Low end (14–20) sinters but
underperforms mechanically; 28–36 is the strong region; 40 explores the
upper bound. `LaserFillEnergyDensity` is per mm of scan path — to compare
across layer thicknesses or hatch spacings, normalize to J/mm³.

## Temperature fields (°C) for PA12 GF

- `SurfaceTarget` / `SurfaceTarget2`: powder surface hold (168 / 172
  baseline; Target2 applies after `SurfaceTarget2Time`).
- `HeatingTargetPrint` (172), `BedPreparationTemperatureTarget` (174),
  `BeginLayerTemperatureTarget` (176), `PrintCapTemperatureTarget` (174).
- PA12 melt ≈ 187 °C; these sit 11–19 °C below (the sintering window).

## Other fields that have mattered in experiments

- `HotspotOverlapPercent` (25 baseline; the "25% Overlap" profile varies
  scan overlap), `OutlineCount` (2), `IsFillEnabled`.
- `PrintCapThickness` / "Extended Cap" variants — powder above the last
  layer for thermal mass during cooldown.
- `HeatingMinimumTime` ("1 Second Heat Time" variant collapses it),
  `PowderVolumePercent` (110 = 10% extra dose per recoat),
  `RecoaterPasses`, `RecoaterShakePercent`.
- Durations are TimeSpan strings ("00:45:00"); factor-style runtime
  overrides multiply profile values (1.0 = neutral) — see AGENTS.md ground
  rules for the runtime knob semantics.

## Linking profiles to outcomes

`astm_query {group_by: "profile"}` gives mechanicals per profile;
`builds_list {profile: "36mJ"}` finds the builds that ran it;
`build_get` shows a build's `profile_key_params` and thermal tracking.