feat(additive-manufacturing): add AM expert skill, references, and planning scripts
- add skill package and SKILL.md with AM workflow, guardrails, and output structure - add technical reference corpus (DfAM, fatigue, defects, process parameters, compliance, cost) - add materials-db.json with polymer/metal data, roughness/post-processing ranges, and selection guides - add CLI tools: select_material.py and postprocess_route.py for material ranking and post-processing route generation
This commit is contained in:
@@ -0,0 +1,299 @@
|
||||
---
|
||||
name: additive-manufacturing
|
||||
description: >
|
||||
Expert in additive manufacturing (3D printing) and senior materials engineer. ALWAYS activate
|
||||
when the user mentions: stampa 3D, 3D printing, additive manufacturing, AM, FDM, SLS, SLA, DLP,
|
||||
DMLS, LPBF, MJF, EBM, WAAM, DED, Binder Jetting, rapid prototyping, laser sintering,
|
||||
or asks to design/print a component. Also activate for: material selection for 3D printing,
|
||||
AM process selection, part optimization for AM, design for additive manufacturing (DfAM),
|
||||
print supports, surface roughness Ra of printed parts, post-processing of AM parts
|
||||
(heat treatments, finishing), print parameters, lattice and infill, topology optimization,
|
||||
AM cost estimation, comparison between AM processes, mechanical properties of 3D-printed materials, HIP,
|
||||
stress relief, anodizing, electropolishing on AM parts. Also activate for: fatigue, cyclic
|
||||
loading, fatigue life, S-N curve, Wöhler, LOF defects, lack of fusion, AM porosity, thermal
|
||||
distortion in printing, AM cost analysis, break-even AM vs machining, AS9100, ISO 13485,
|
||||
NADCAP standards, AM process qualification. Also activate if the user simply says "I want to print
|
||||
this part" or "what material should I use for..." or "how do I finish this printed part" without
|
||||
explicitly mentioning 3D printing.
|
||||
---
|
||||
|
||||
# Additive Manufacturing Expert
|
||||
|
||||
You are a **mechanical and materials engineer with 20+ years of experience in additive manufacturing** —
|
||||
polymers, metals and ceramics. You have worked in aerospace, biomedical and automotive environments,
|
||||
and you have seen AM parts fail because fatigue, anisotropy and defects were not considered during design.
|
||||
Your approach is that of an expert technical consultant: you do not give generic answers,
|
||||
you do not dodge difficult trade-offs, you do not use filler phrases.
|
||||
When you have sufficient data, you are direct and specific. When you do not, you ask for it.
|
||||
|
||||
Your value is not telling the user what is theoretically possible — it is helping them make
|
||||
the right decision for their specific case, given their real constraints.
|
||||
|
||||
If you see a critical risk — unevaluated fatigue, missing heat treatment, porosity in a
|
||||
critical application, wrong orientation — you state it explicitly before proceeding,
|
||||
even if not asked. Never recommend the "most common" process: recommend the right one
|
||||
for the specific case, with reasons.
|
||||
|
||||
---
|
||||
|
||||
## Phase 1 — Requirements Gathering
|
||||
|
||||
Never recommend a process or material before having sufficient data.
|
||||
Extract from context everything the user has already provided. Ask only for what is missing.
|
||||
Group questions into a single ordered block — do not run a multi-round interrogation.
|
||||
|
||||
**Data to collect:**
|
||||
|
||||
| Category | What to ask |
|
||||
|---|---|
|
||||
| **Geometry** | Dimensions X×Y×Z (mm), minimum wall thicknesses, critical features (holes, threads, thin walls), tolerances |
|
||||
| **Function** | Visual prototype / functional prototype / series production? Loads (static, dynamic, fatigue, impact)? |
|
||||
| **Environment** | Operating temperature (°C)? UV exposure? Required chemical resistance (solvents, fuels, acids)? |
|
||||
| **Surface** | **Target surface roughness Ra (µm)?** Which surfaces are critical? Aesthetic only or functional (seals, fits, sliding contacts)? |
|
||||
| **Material** | Target mechanical requirements (UTS, modulus E)? Biocompatibility? Transparency? Lightweight? |
|
||||
| **Fatigue / Cycles** | Is the component subject to cyclic loading? Total expected number of cycles (10^4, 10^6, 10^8)? Stress ratio R (pulsating R=0.1, fully reversed R=-1)? If yes: fatigue rules govern, not static UTS. |
|
||||
| **Practical constraints** | Available machines or open process selection? Per-part budget? Quantity (1 / 10 / 100 / 1000+)? Lead time? |
|
||||
|
||||
If roughness has not been specified, **ask for it explicitly** — it is a primary driver for:
|
||||
- process selection (SLA achieves Ra 1–3 µm as-built; FDM side surface is Ra 15–40 µm)
|
||||
- the post-processing plan (from none to machining + grinding)
|
||||
- the final part cost (post-print machining can cost more than the printing itself)
|
||||
|
||||
---
|
||||
|
||||
## Phase 2 — Process and Material Selection
|
||||
|
||||
### 2A — Process map
|
||||
|
||||
```
|
||||
POLYMERS
|
||||
├── FDM/FFF Ra 15–50 µm side, 5–15 top | ±0.3mm | PLA/PETG/ABS/ASA/PA/PC/TPU/PEEK/CF
|
||||
├── SLA/DLP Ra 1–6 µm | ±0.15mm | Standard/flex/HT/medical/ceramic resins
|
||||
├── SLS Ra 8–15 µm | ±0.3mm | PA12/PA11/TPU/PA-CF — no supports
|
||||
└── MJF Ra 6–12 µm | ±0.25mm | PA12/PA11 — full-color, high throughput
|
||||
|
||||
METALS
|
||||
├── LPBF/DMLS Ra 8–20 µm side | ±0.1mm | Al/Ti/steels/superalloys/CoCr/Cu
|
||||
├── EBM Ra 20–35 µm | ±0.2mm | Ti-6Al-4V/CoCr — vacuum chamber
|
||||
└── Binder Jetting Ra 4–10 µm post-sinter | ±0.4mm | 316L/17-4PH/Cu — no supports, 20% shrinkage
|
||||
|
||||
CERAMICS
|
||||
└── SLA/DLP ceramic Ra 0.5–3 µm post-sinter | Shrinkage 20–25% | Alumina/Zirconia
|
||||
```
|
||||
|
||||
### 2B — Data-driven material selection
|
||||
|
||||
Load `references/materials-db.json` — complete database with mechanical, thermal,
|
||||
roughness by orientation, achievable post-processing properties, and selection guides.
|
||||
|
||||
For selection, apply this filter in order:
|
||||
|
||||
1. **T_max_service** ≥ operating temperature → eliminate unsuitable candidates
|
||||
2. **Ra target** → compare `surface_roughness.Ra_asbuilt_typical` and `postprocess_achievable`
|
||||
to determine whether the target is achievable and at what post-processing cost
|
||||
3. **Mechanical requirements** → `mechanical.UTS_min/max`, `E_min/max`, `elongation_min/max`
|
||||
4. **Special flags** → `biocompatible`, `uv_resistant`, `chemical_resistance`, `transparent`
|
||||
5. **Available process** → material `processes` field
|
||||
6. **Cost + availability** → `cost_relative`, `selection_guides.by_process_availability`
|
||||
7. **Warnings** → always read for the final candidates
|
||||
|
||||
**If the component is fatigue-critical (N > 10^4 cycles):** load `references/fatigue-design.md`
|
||||
and apply Kf factors from surface roughness. UTS alone is not sufficient —
|
||||
the effective as-built fatigue limit can be 30–50% of the tabulated nominal value.
|
||||
|
||||
The selection logic is applied as conversational reasoning following the described phases —
|
||||
Python scripts in `scripts/` are available for local execution
|
||||
but are not run in this session.
|
||||
|
||||
### 2C — Roughness: decision logic
|
||||
|
||||
Surface roughness impacts process selection, orientation AND post-processing.
|
||||
|
||||
| Ra target (µm) | Typical meaning | AM strategy |
|
||||
|---|---|---|
|
||||
| < 0.4 | O-ring seat, precision seals, H6/h6 fits | Any AM + grinding/lapping machining |
|
||||
| 0.4–1.6 | Mechanical functional surfaces, bearings, sliding | SLA as-built, or LPBF/SLS + CNC machining |
|
||||
| 1.6–3.2 | Inner surfaces, semi-finished surfaces | SLA. LPBF + vibratory/electropolish. SLS + vibratory |
|
||||
| 3.2–6.3 | Non-critical functional surfaces | SLS/MJF + bead blast. LPBF + bead blast |
|
||||
| 6.3–12.7 | Non-functional surfaces, internal features | FDM top surface. SLS as-built. LPBF as-built |
|
||||
| > 12.7 | Prototypes, rough aesthetic parts | FDM side/down-facing as-built |
|
||||
|
||||
**Orientation and roughness (typical FDM values):**
|
||||
- top_surface (parallel to XY plane): Ra 5–15 µm — best
|
||||
- side_XY (vertical surfaces): Ra 15–40 µm — layer line stairstepping
|
||||
- down_facing (below overhang/support): Ra 25–60 µm — worst
|
||||
|
||||
The same logic applies to LPBF: orient critical surfaces in the XY plane or plan post-machining.
|
||||
|
||||
---
|
||||
|
||||
## Phase 3 — DfAM (Design for Additive Manufacturing)
|
||||
|
||||
Load `references/dfam-guidelines.md` for complete rules.
|
||||
|
||||
**Quick reference:**
|
||||
- Minimum wall thicknesses: FDM ≥0.8mm | SLS ≥1.0mm | LPBF ≥0.3mm | SLA ≥0.2mm
|
||||
- Overhang: <45° without support (FDM/LPBF) | SLS/MJF/EBM → full geometric freedom
|
||||
- Tolerances: compensate shrinkage in CAD (PA12 SLS ~3.5%; AlSi10Mg ~0.4%; BJT ~20%)
|
||||
- Critical surfaces (tight tolerances): orient in XY plane + plan machining allowance for post-machining
|
||||
|
||||
**Lattice and infill** — load `references/lattice-infill.md` when:
|
||||
- weight reduction is an objective (metal AM, SLS)
|
||||
- parts must absorb energy or vibrations
|
||||
- heat exchangers or biomedical scaffolds (use TPMS Gyroid)
|
||||
|
||||
**Anisotropy and directional orientation** — load `references/dfam-guidelines.md` section
|
||||
"Anisotropy and Directional Orientation" when the load direction is known:
|
||||
- For fatigue-critical parts: the primary cyclic load axis must lie in the XY plane
|
||||
- Z-direction fatigue limit as-built can be 40–50% lower than the XY plane for FDM/LPBF Al
|
||||
- If optimal orientation is impossible: HIP is mandatory to reduce anisotropy
|
||||
|
||||
**Supports** — load `references/support-structures.md` for per-process detail:
|
||||
- FDM: standard or soluble PVA/HIPS supports; tree supports for aesthetic surfaces
|
||||
- SLA: always supports + raft; tilt 15–30° to reduce them
|
||||
- SLS/MJF: no structural supports — only powder escape holes (≥ ø5mm) for closed cavities
|
||||
- LPBF: metal supports for thermal anchoring — stress relief MANDATORY before removal
|
||||
- EBM: light supports, critical angle ~35°
|
||||
|
||||
---
|
||||
|
||||
## Phase 4 — Post-Processing Plan
|
||||
|
||||
Post-processing is not an optional add-on — it is part of the process and impacts cost and lead time.
|
||||
|
||||
Load `references/post-processing.md` for complete sequences.
|
||||
|
||||
The post-processing plan is built as conversational reasoning following the
|
||||
sequences in `references/post-processing.md`. Scripts in `scripts/` are available
|
||||
for local execution but are not run in this session.
|
||||
|
||||
**Universal sequence for metal AM (do not deviate):**
|
||||
1. Stress relief (before removing from build plate)
|
||||
2. Removal from build plate (EDM wire or saw)
|
||||
3. HIP (if critical application: biomedical, fatigue, pressure vessel)
|
||||
4. Specific heat treatment (if required: 17-4PH H900, IN718 aging, etc.)
|
||||
5. Support removal
|
||||
6. Post-machining of critical surfaces
|
||||
7. Surface finishing (blasting / vibratory / electropolish / grinding)
|
||||
8. Functional treatments (passivation, anodizing)
|
||||
9. Inspection (CMM + CT scan for critical parts)
|
||||
|
||||
**Critical warning on heat treatments:**
|
||||
- **17-4PH:** H900 aging (480°C/1h) mandatory — without it, properties at ~40%
|
||||
- **IN718:** full solution + double aging cycle — plan weeks ahead
|
||||
- **Ti-6Al-4V:** stress relief 650°C + HIP for biomedical — never skip
|
||||
- **AlSi10Mg:** stress relief 300°C/2h BEFORE removing from build plate
|
||||
|
||||
**For fatigue-critical parts:** load `references/fatigue-design.md` — shot peening section
|
||||
for correct sequence and quantitative benefit (+20–40% Ti, +15–25% Al).
|
||||
Shot peening ALWAYS AFTER all heat treatments. NEVER before HIP.
|
||||
|
||||
**To define the inspection plan:** load `references/defect-atlas.md` — acceptance
|
||||
criteria by application (max porosity, accepted/not accepted LOF, required inspection method:
|
||||
CT scan, PT, UT, CMM).
|
||||
|
||||
---
|
||||
|
||||
## Phase 5 — Structured Output
|
||||
|
||||
Use this format for the final recommendation:
|
||||
|
||||
```
|
||||
## Requirements Summary
|
||||
[What you understood + explicit assumptions]
|
||||
|
||||
## Recommended Process
|
||||
[Technology + rationale. Alternative with trade-offs if one exists.]
|
||||
|
||||
## Recommended Material
|
||||
[Specific material + key properties + why this and not the others.
|
||||
Alternative if applicable.]
|
||||
|
||||
## Roughness: Situation and Plan
|
||||
[Ra as-built of the chosen process for critical surfaces.
|
||||
Comparison with target.
|
||||
Strategy: optimal orientation + post-processing needed to reach Ra target.
|
||||
If Ra target is achievable as-built: state it explicitly.]
|
||||
|
||||
## DfAM — Specific Notes
|
||||
[Orientation, critical wall thicknesses, features to revise, shrinkage to compensate]
|
||||
|
||||
## Internal Structure (if relevant)
|
||||
[Lattice/infill strategy: type, density, rationale. Omit if not relevant.]
|
||||
|
||||
## Supports
|
||||
[Where needed, strategy, material, removal plan. For SLS/MJF: indicate geometric freedom.]
|
||||
|
||||
## Indicative Process Parameters
|
||||
[Layer height, speed, temperature, atmosphere. State these are starting points.]
|
||||
|
||||
## Post-Processing Sequence
|
||||
[Numbered steps with operating conditions. Distinguish mandatory from recommended.]
|
||||
|
||||
## Cost and Lead Time Estimate
|
||||
[Indicative range for the specified quantity. Be honest about uncertainty.]
|
||||
|
||||
## Risks and Critical Points
|
||||
[3–5 concrete risks with mitigation action. No generic lists.]
|
||||
|
||||
## Fatigue Assessment (if applicable)
|
||||
- Regime: HCF / LCF — N = __ cycles, R = __
|
||||
- Baseline fatigue limit (from references/fatigue-design.md): __ MPa
|
||||
- Estimated Kf at Ra as-built (__ µm): __ → effective limit = __ MPa
|
||||
- Anisotropy (load in direction __): Z/XY factor = __
|
||||
- Estimated fatigue Factor of Safety: __ [target ≥ 1.5 standard, ≥ 2.0 safety-critical]
|
||||
- Required actions: □ HIP □ Machining of critical surfaces (Ra ≤ __ µm) □ Shot peening (AMS 2430)
|
||||
- Red lines: [any stop conditions]
|
||||
|
||||
## Final Recommendation
|
||||
[A direct, reasoned paragraph with the definitive recommendation.]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Deep Dives on Request
|
||||
|
||||
After the initial recommendation, proactively offer to go deeper on:
|
||||
- Strength-to-weight ratio calculation and comparison with forged aluminum
|
||||
- Detail of VED (Volumetric Energy Density) parameters for LPBF
|
||||
- Specific lattice strategy (Gibson-Ashby, TPMS vs strut type)
|
||||
- **Detailed fatigue analysis** (S-N curve, Kf from Ra, surface finish effect, shot peening plan)
|
||||
- **AM defect atlas** (defect type identification, acceptance criteria, inspection plan by application)
|
||||
- **Residual stress and distortion** (quantitative values, HIP timing by alloy, scan strategy)
|
||||
- **AM cost model** (€/part range by process/volume, break-even AM vs machining vs casting, lead time)
|
||||
- **Qualification plan** for aerospace (AS9100/NADCAP) or biomedical (ISO 13485/FDA)
|
||||
- Make vs buy cost comparison (in-house AM vs service bureau)
|
||||
|
||||
---
|
||||
|
||||
## Reference Files
|
||||
|
||||
| File | When to load |
|
||||
|---|---|
|
||||
| `references/materials-db.json` | **Always** for material selection/comparison — primary data source |
|
||||
| `references/polymer-am-materials.md` | Qualitative decision notes on polymer families |
|
||||
| `references/metal-am-alloys.md` | Notes on heat treatment, strength-to-weight ratio, Binder Jetting |
|
||||
| `references/dfam-guidelines.md` | Overhang, wall thicknesses, holes, tolerances, shrinkage, checklist |
|
||||
| `references/lattice-infill.md` | TPMS/strut lattice, FDM infill, Gibson-Ashby, software tools |
|
||||
| `references/support-structures.md` | Supports for each process — parameters and sequences |
|
||||
| `references/post-processing.md` | Complete HT, HIP, finishing, inspection sequences |
|
||||
| `references/process-parameters.md` | FDM parameters by material, VED for LPBF by alloy, SLS |
|
||||
| `references/fatigue-design.md` | **Cyclic loads, S-N, Kf from Ra, shot peening** — load for any fatigue-critical part |
|
||||
| `references/defect-atlas.md` | **Defect catalog by process, acceptance criteria, inspection plan** |
|
||||
| `references/cost-model.md` | Process decision tree by volume/cost, post-processing breakdown, lead time |
|
||||
| `references/residual-stress-distortion.md` | Quantified residual stresses, distortion, HIP timing by alloy |
|
||||
| `references/compliance-qualification.md` | AS9100/NADCAP checklists, ISO 13485/FDA, acceptance criteria, traceability |
|
||||
|
||||
**Scripts available for local execution:**
|
||||
- `scripts/select_material.py` — filters and ranks materials by requirements (T, UTS, Ra, process)
|
||||
- `scripts/postprocess_route.py` — generates post-processing sequence for material + Ra target + use case
|
||||
|
||||
---
|
||||
|
||||
## Response Style
|
||||
|
||||
Reply in the user's language (Italian if they write in Italian).
|
||||
Use concrete numerical values — no "approximately", no "it depends" without follow-up.
|
||||
Always state assumptions explicitly. Be honest about what cannot be determined without more data.
|
||||
Do not use empty opening phrases. Do not repeat the user's question.
|
||||
Anticipate the next question the user has not yet asked but should.
|
||||
@@ -0,0 +1,307 @@
|
||||
# Compliance and Process Qualification — Additive Manufacturing
|
||||
|
||||
> Use this file when:
|
||||
> - The designer operates in aerospace, biomedical, defense, oil&gas, or structural automotive
|
||||
> - An AM process must be qualified for production (not just prototyping)
|
||||
> - Specific regulatory requirements must be met (AS9100, NADCAP, ISO 13485, FDA 21 CFR)
|
||||
> - A traceability and documentation plan must be defined
|
||||
> - The customer requires a Certificate of Conformance (CoC) or First Article Inspection (FAI)
|
||||
|
||||
---
|
||||
|
||||
## 1. Regulatory Framework by Sector
|
||||
|
||||
### Aerospace — AS9100 Rev D + NADCAP AM
|
||||
|
||||
```
|
||||
Regulatory hierarchy:
|
||||
AS9100 Rev D (Quality Management System — company level)
|
||||
└── NADCAP AC7110/14 (Additive Manufacturing — AM-specific qualification)
|
||||
└── AMS 7000–7099 (SAE series for AM material specifications)
|
||||
└── AMS 4999 (Ti-6Al-4V LPBF — most widely used)
|
||||
└── AMS 4931 (Ti-6Al-4V annealed sheet — mechanical reference)
|
||||
```
|
||||
|
||||
**NADCAP AM (AC7110/14) — Key requirements:**
|
||||
- Machine qualification: tests on standard coupons (defined periodicity, typically annual)
|
||||
- Frozen process parameters: no changes without re-qualification
|
||||
- Mandatory powder lot traceability: lot number, PSD, chemical composition, morphology, usage cycles
|
||||
- Test coupons for each build plate (or sampling defined in the qualification plan)
|
||||
- Certified operators (documented training)
|
||||
- 100% CT scan for flight-critical components (Part 25, Part 23, Part 27)
|
||||
|
||||
**AS9100 Rev D — Relevant elements for AM:**
|
||||
- Section 8.5.1: production control — printed parameters documented in the job file
|
||||
- Section 8.5.2: identification and traceability — from CAD file to finished part
|
||||
- Section 8.6: product release — documented final inspection
|
||||
- Section 8.7: control of nonconforming outputs — procedure for defective parts
|
||||
- Section 10.2: nonconformity and corrective actions (CAPA)
|
||||
|
||||
### Biomedical — ISO 13485 + FDA 21 CFR Part 820 + EU MDR 2017/745
|
||||
|
||||
```
|
||||
Europe:
|
||||
EU MDR 2017/745 (Medical Device Regulation)
|
||||
└── ISO 13485:2016 (Quality Management System for medical devices)
|
||||
└── ISO 10993 (biocompatibility)
|
||||
└── ASTM F3302, F2924, F3001 (specifications for Ti/CoCr/PA12 AM)
|
||||
|
||||
USA:
|
||||
FDA 21 CFR Part 820 (Quality System Regulation)
|
||||
└── FDA Guidance "Technical Considerations for AM Devices" (2017)
|
||||
```
|
||||
|
||||
**ISO 13485 — AM-specific requirements:**
|
||||
- Design History File (DHF): includes CAD file, AM parameters, mechanical validation, biocompatibility testing
|
||||
- Process Validation: for each AM process used in production (IQ/OQ/PQ)
|
||||
- Risk Management: ISO 14971 — AM introduces specific risks (porosity, anisotropy, surface defects)
|
||||
- Sterilization compatibility: the AM process must not degrade biocompatibility
|
||||
- Post-market surveillance: for AM implants (lifetime traceability per patient)
|
||||
|
||||
**FDA AM Guidance (2017) — Key points:**
|
||||
- Material characterization: powder + finished part, not just powder
|
||||
- Building orientation effects: document and justify the chosen orientation
|
||||
- Post-processing effects: any post-processing that alters properties must be validated
|
||||
- Cleaning and sterilization validation: lattice geometries and internal channels are critical
|
||||
|
||||
### Oil & Gas — ASME, DNV, API
|
||||
|
||||
| Standard | Application | Key AM requirement |
|
||||
|---|---|---|
|
||||
| **ASME BPVC Section VIII Div 1/2** | Pressure vessel | Welding procedure qualification (PQR) → AM analogously requires AM PQR |
|
||||
| **ASME B31.3** | Process piping | AM components must comply with material and testing standards |
|
||||
| **DNV ST-0145** | Additive Manufacturing — offshore | AM-specific standard for Oil&Gas; includes machine, material, and process qualification |
|
||||
| **API 6A** | Wellhead equipment | Full qualification of material + process + inspection |
|
||||
|
||||
### Automotive — IATF 16949 + VDA
|
||||
|
||||
- **IATF 16949:2016**: PPAP (Production Part Approval Process) is required for every new part in production
|
||||
- **PPAP for AM**: includes MSA (Measurement System Analysis) for AM machines and measurement methods on AM parts
|
||||
- **VDA 6.3**: process audit — in Germany/Europe for tier suppliers
|
||||
- **Automotive AM**: still in the standardization phase — BMW, Mercedes, Volkswagen have internal standards
|
||||
|
||||
---
|
||||
|
||||
## 2. AM Process Qualification — Universal Sequence
|
||||
|
||||
Qualification is divided into three phases:
|
||||
|
||||
### IQ — Installation Qualification (machine)
|
||||
|
||||
Verify that the AM machine is installed and configured correctly according to the manufacturer's specifications.
|
||||
|
||||
**IQ Checklist:**
|
||||
- [ ] Machine installed according to manual and certified by the manufacturer
|
||||
- [ ] Atmosphere verified: O₂ < 100 ppm (Ti), < 500 ppm (Al, steels)
|
||||
- [ ] Powder feed system calibrated (flow rate, uniform distribution)
|
||||
- [ ] Laser/e-beam calibrated: power, spot size, focus position
|
||||
- [ ] Optical/galvo system calibrated (max deviation ±0.05mm in field)
|
||||
- [ ] Build plate temperature calibrated (EBM: preheat 600–900°C; LPBF: 80–200°C depending on alloy)
|
||||
- [ ] Software version documented (slicer, process parameters database)
|
||||
- [ ] Integrated metrology calibration (if present)
|
||||
- [ ] Updated preventive maintenance documentation
|
||||
|
||||
### OQ — Operational Qualification (process)
|
||||
|
||||
Verify that the process produces parts with mechanical properties conforming to specifications.
|
||||
|
||||
**Standard qualification coupons (ASTM E8 / ISO 6892-1):**
|
||||
|
||||
```
|
||||
For each qualified alloy, print and test:
|
||||
- 3× tensile coupons XY direction (horizontal)
|
||||
- 3× tensile coupons Z direction (vertical)
|
||||
- 3× fatigue coupons R=0.1 @ 10^7 cycles (if fatigue-critical application)
|
||||
- 3× Charpy coupons (if impact is relevant)
|
||||
- 1× sample for metallographic analysis (cross-section)
|
||||
- 1× sample for CT scan (baseline porosity)
|
||||
- 1× sample for HV hardness measurement (map on cross-section)
|
||||
|
||||
Acceptance requirements (example Ti-6Al-4V LPBF for aerospace):
|
||||
UTS_XY ≥ 930 MPa | UTS_Z ≥ 860 MPa | YS ≥ 830 MPa | Elong. ≥ 8%
|
||||
Porosity CT scan < 0.1% | Hardness HV 310–360
|
||||
```
|
||||
|
||||
**Process window:**
|
||||
- Define minimum and maximum acceptable VED for the alloy
|
||||
- Document: P (W), v (mm/s), h (mm), t (µm) → golden parameters
|
||||
- Any modification to these parameters requires partial or full OQ
|
||||
|
||||
### PQ — Performance Qualification (part)
|
||||
|
||||
Verify that representative parts of the production geometry meet all requirements.
|
||||
|
||||
**First article (First Article Inspection — FAI):**
|
||||
|
||||
```
|
||||
Complete FAI documentation:
|
||||
□ Technical drawing with all inspected dimensions (CMM report)
|
||||
□ Material Test Report (MTR): powder composition + finished part analysis
|
||||
□ Heat Treatment Report (parameters T, t, atmosphere, furnace N°)
|
||||
□ HIP Report (parameters, autoclave N°, pressure, T)
|
||||
□ CT Scan Report (no defects beyond acceptance criteria)
|
||||
□ Mechanical Test Report (coupons from same build plate)
|
||||
□ Surface Roughness Report (Ra on critical surfaces)
|
||||
□ CoC (Certificate of Conformance) signed
|
||||
□ PPAP (if automotive) or FAI report (if aerospace)
|
||||
□ Traceability record: powder lot → build ID → part ID → inspection
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Traceability — Minimum Requirements
|
||||
|
||||
Traceability is non-negotiable in regulated environments. Every part must have a complete documentation chain.
|
||||
|
||||
### Data to record for each build
|
||||
|
||||
| Data | Why it is critical |
|
||||
|---|---|
|
||||
| **Powder lot** (supplier lot N° + N° reuses) | Powder properties degrade with reuse; lot identifies risk |
|
||||
| **Powder PSD** (D10, D50, D90) | Out of spec → risk of LOF, gas porosity |
|
||||
| **Powder chemical composition** (supplier CoC) | Compliance with material specification (AMS, ASTM) |
|
||||
| **Build file** (file name + MD5/SHA hash) | Unambiguously identifies the parameters used |
|
||||
| **Machine parameters** (P, v, h, t, scan strategy, atmosphere) | Frozen process → any deviation must be documented |
|
||||
| **Machine ID + current maintenance N°** | Tracks machine history at the time of build |
|
||||
| **Operator** (name + training record) | NADCAP and ISO 13485 requirement |
|
||||
| **Build date/time** | For correlation with maintenance, calibrations, environmental conditions |
|
||||
| **Build plate ID** (if reused) | Influences the first layer |
|
||||
| **Position on build plate** (XY coordinate of the part) | Defects correlatable to position in the chamber |
|
||||
| **In-process log** (melt pool monitoring, layer images if available) | Evidence of ongoing process |
|
||||
|
||||
### Part identification
|
||||
|
||||
- **Direct marking:** laser marking with unique ID on non-critical surface
|
||||
- **Recommended ID format:** `[Alloy]-[Date]-[Build ID]-[Part N°]` e.g. `Ti64-240315-B047-P3`
|
||||
- **For biomedical implants:** traceability must allow recall over the patient's lifetime → permanent database
|
||||
|
||||
---
|
||||
|
||||
## 4. Acceptance Criteria by Sector
|
||||
|
||||
### Aerospace (AS9100 + NADCAP)
|
||||
|
||||
| Parameter | Criterion |
|
||||
|---|---|
|
||||
| Porosity (CT scan) | < 0.05% volume for flight-critical parts |
|
||||
| LOF | Zero in load-bearing zones; none tolerated for fatigue-critical |
|
||||
| Spherical defects | < 0.1mm diameter in critical zones |
|
||||
| Roughness of critical surfaces | As per drawing (typically Ra ≤ 3.2 µm after post-processing) |
|
||||
| Dimensional (CMM) | All dimensions conforming to drawing; statistically SPC for series |
|
||||
| Mechanical coupons | Conforming to AMS 4999 (Ti), AMS 5662 (IN718), or customer specification |
|
||||
| Hardness | Conforming to specification; mapping required for PH alloys |
|
||||
| Documentation | Complete FAI + CoC + MTR + all reports |
|
||||
|
||||
### Biomedical (ISO 13485)
|
||||
|
||||
| Parameter | Criterion |
|
||||
|---|---|
|
||||
| Porosity | < 0.05% for osseointegrated implants; < 0.1% for surgical instruments |
|
||||
| Biocompatibility | ISO 10993-1 (cytotoxicity, sensitization, implantation) — testing on final parts |
|
||||
| Roughness | Ra 1.6–3.2 µm for implants (promotes osseointegration); < 0.8 µm for articular surfaces |
|
||||
| Sterility | Sterilization process validation on AM parts with actual geometry |
|
||||
| Traceability | Complete from powder lot to patient (UDI — Unique Device Identifier) |
|
||||
| Design Freeze | Any change to design or process → new validation |
|
||||
|
||||
### Pressure Vessel (ASME BPVC)
|
||||
|
||||
| Parameter | Criterion |
|
||||
|---|---|
|
||||
| Porosity | < 0.1% (equivalent to grade E weld) |
|
||||
| LOF | Zero — analogous to lack of fusion in welding |
|
||||
| Hydrostatic test | 1.5× MAWP for 30 min without leaks |
|
||||
| NDE | 100% UT or RT (not only CT scan) |
|
||||
| AM PQR | AM procedure qualification analogous to WPS/PQR for welding |
|
||||
|
||||
---
|
||||
|
||||
## 5. Nonconformance Management (NCR)
|
||||
|
||||
### Management process
|
||||
|
||||
```
|
||||
Nonconforming part identified (out-of-spec dimensional, CT defect, low mechanical properties)
|
||||
↓
|
||||
Immediate segregation + labeling "NONCONFORMING"
|
||||
↓
|
||||
Root Cause Analysis (8D or A3)
|
||||
→ Questions: is it an isolated defect or systematic?
|
||||
→ Is it the powder? The process? The machine? The post-processing?
|
||||
↓
|
||||
Decision (review board):
|
||||
├── Scrap → documented destruction
|
||||
├── Rework → only if technically feasible (machining, repair welding)
|
||||
│ → rework must be re-qualified
|
||||
└── Use-As-Is (UAI) → only if engineeringly justified
|
||||
→ requires customer approval for regulated parts
|
||||
↓
|
||||
CAPA (Corrective and Preventive Action)
|
||||
→ Corrective action: eliminates the cause
|
||||
→ Preventive action: prevents recurrence
|
||||
↓
|
||||
Effectiveness verification (follow-up in the next build)
|
||||
```
|
||||
|
||||
### Common errors (frequent NCR causes in AM)
|
||||
|
||||
| NCR Cause | Frequency | Prevention |
|
||||
|---|---|---|
|
||||
| Wet powder (gas porosity, balling) | High | Systematic pre-dry + humidity monitoring in storage |
|
||||
| Powder beyond service life (high MFR) | Medium | Periodic MFR test; documented reuse limit |
|
||||
| Drifted machine parameters (degraded laser) | Medium | Periodic laser calibration + control coupons |
|
||||
| Stress relief omitted or at wrong temperature | High | Written procedures + operator checklist |
|
||||
| HIP not planned in lead time | High | Include HIP in the quote and production plan from the start |
|
||||
| Shrinkage not compensated in CAD | Medium | CAD template with pre-loaded compensation for each process/alloy |
|
||||
| Supports in fatigue-critical zone | High | Pre-print design review with DfAM checklist |
|
||||
|
||||
---
|
||||
|
||||
## 6. Pre-Production Checklist (Qualification)
|
||||
|
||||
**To be completed before starting series production:**
|
||||
|
||||
### Machine qualification
|
||||
- [ ] IQ completed and documented
|
||||
- [ ] Laser/e-beam calibration within expiry
|
||||
- [ ] Current preventive maintenance
|
||||
|
||||
### Material qualification
|
||||
- [ ] Certified powder (supplier CoC)
|
||||
- [ ] PSD conforming to specification (D50 target, satellites < 10%)
|
||||
- [ ] N° reuses documented and within qualified limit
|
||||
- [ ] Pre-dry performed (Ti: 120°C/4h | Al: 70°C/4h | Steels: 80°C/4h)
|
||||
|
||||
### Process qualification (OQ)
|
||||
- [ ] Golden parameters documented and frozen
|
||||
- [ ] Mechanical coupons (XY + Z) conforming to specifications
|
||||
- [ ] Baseline porosity < acceptance limit
|
||||
- [ ] CT scan of qualification coupon completed
|
||||
|
||||
### Part qualification (PQ / FAI)
|
||||
- [ ] FAI completed on first series part
|
||||
- [ ] All dimensions conforming to drawing
|
||||
- [ ] CoC signed
|
||||
- [ ] Complete traceability record
|
||||
|
||||
### Qualified post-processing
|
||||
- [ ] Stress relief: T, t, atmosphere documented
|
||||
- [ ] HIP: validated cycle for the alloy (T, P, t, autoclave N°)
|
||||
- [ ] Heat treatment: cycle conforming to AMS/ASTM specification
|
||||
- [ ] Machining: correct stock allowance, qualified tooling
|
||||
- [ ] Inspection: calibrated method, certified operator
|
||||
|
||||
---
|
||||
|
||||
## 7. Useful Certifications for the Service Bureau
|
||||
|
||||
When selecting a service bureau for regulated parts, verify:
|
||||
|
||||
| Certification | Sector | What it guarantees |
|
||||
|---|---|---|
|
||||
| **AS9100 Rev D** | Aerospace | Compliant QMS → documented and controlled processes |
|
||||
| **NADCAP AM** | Aerospace | AM-specific process qualification (machine + material + personnel) |
|
||||
| **ISO 13485** | Medical | QMS for medical devices; mandatory for CE/FDA implants |
|
||||
| **ISO 9001** | General | Basic QMS — insufficient for aerospace and medical |
|
||||
| **ISO 17025** | Laboratory | Accredited metrology calibration and mechanical testing |
|
||||
| **PED 2014/68/EU** | Pressure equipment | For production of pressure vessels in Europe |
|
||||
| **ITAR registered** | US Defense | Mandatory for parts subject to US export control |
|
||||
@@ -0,0 +1,250 @@
|
||||
# Cost and Lead Time Model — Additive Manufacturing
|
||||
|
||||
> Use this file when:
|
||||
> - The user asks whether AM is cost-effective compared to machining, casting or moulding
|
||||
> - A cost estimate is needed for an AM part (raw + post-processing)
|
||||
> - AM must be justified internally or to a customer
|
||||
> - Choosing between a service bureau and in-house production
|
||||
|
||||
---
|
||||
|
||||
## 1. AM Cost Structure
|
||||
|
||||
**Common mistake:** comparing the raw print cost against the cost of CNC machining.
|
||||
The correct comparison is the **total finished part cost**, including all post-processing.
|
||||
|
||||
```
|
||||
Total AM part cost =
|
||||
Printing (machine + gas + energy)
|
||||
+ Material (powder / filament / resin)
|
||||
+ Post-processing (stress relief, HIP, HT, machining, finishing, treatments)
|
||||
+ Inspection (CMM, CT scan, PT)
|
||||
+ Qualification (coupons, documentation, certifications)
|
||||
+ Scrap/rework (to be considered as an amortised cost)
|
||||
```
|
||||
|
||||
**Rule of thumb for metal AM with quality requirements:**
|
||||
- General application: post-processing = 30–50% of total cost
|
||||
- Fatigue-critical application (HIP + CNC + CT): post-processing = **50–70%** of total cost
|
||||
- Indicative budget: final cost ≈ **3–5× the raw print cost** for aerospace-quality metal
|
||||
|
||||
---
|
||||
|
||||
## 2. Decision Tree: Which Process for Which Volume and Application?
|
||||
|
||||
### Metals
|
||||
|
||||
```
|
||||
Volume (parts/year) + Geometry + Material
|
||||
|
||||
1–10 parts, complex geometry (undercuts, internal channels, optimised topology)
|
||||
LPBF is often the only practical option
|
||||
→ Ti-6Al-4V LPBF: €300–2000/part (depending on size and post-processing)
|
||||
→ AlSi10Mg LPBF: €150–800/part
|
||||
→ 316L LPBF: €120–600/part
|
||||
Alternative: CNC from solid — comparison in section 4
|
||||
|
||||
1–10 parts, simple geometry (turning, standard milling)
|
||||
→ CNC almost always wins on cost
|
||||
→ AM justified only for very short lead times or geometry that cannot be machined
|
||||
|
||||
10–100 parts, moderate tolerances (±0.3mm acceptable)
|
||||
→ Binder Jetting (316L, 17-4PH): €60–300/part at 50+ parts
|
||||
→ Advantages: no supports, high productivity, as-sintered finish 4–10 µm
|
||||
→ Limitations: 20% shrinkage, not suitable for tight-tolerance geometries without post-machining
|
||||
|
||||
10–100 parts, tight tolerances or special alloys (Ti, superalloys)
|
||||
→ LPBF remains the choice
|
||||
→ Consider in-house vs service bureau (section 6)
|
||||
|
||||
> 500 parts, simple metal
|
||||
→ Investment casting: typically €20–80/part at 500+ (with tooling)
|
||||
→ AM wins only if: geometry cannot be cast, no tooling budget, critical lead time
|
||||
```
|
||||
|
||||
### Polymers
|
||||
|
||||
```
|
||||
1–50 parts, complex geometry / no critical supports
|
||||
→ SLS PA12: €25–80/part (includes breakout and bead blast)
|
||||
→ MJF PA12: €20–60/part (higher throughput, better finish)
|
||||
→ FDM technical material (PEEK, PC, PA): €10–50/part (simple geometries only)
|
||||
→ SLA/DLP resin: €15–60/part (high accuracy, Ra < 3 µm, non-structural)
|
||||
|
||||
50–500 parts, standard polymer
|
||||
→ SLS/MJF drop to €10–30/part with optimised nesting
|
||||
→ In-house FDM can drop to €3–15/part (excluding machine amortisation)
|
||||
|
||||
> 500–1000 parts, standard geometry
|
||||
→ Injection moulding wins on variable cost (€1–5/part in series)
|
||||
→ Tooling: €5,000–50,000 per mould (recovered over 500–5,000 parts)
|
||||
→ AM still preferable if: high customisation, geometry with undercuts, short run
|
||||
|
||||
> 1000 parts, AM still justified if:
|
||||
→ Per-unit customisation (orthoses, implants, personalised products)
|
||||
→ TPMS / lattice geometry not producible with IM
|
||||
→ Large components that do not fit in a mould
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Post-Processing Cost Breakdown
|
||||
|
||||
| Operation | Indicative cost | Time | Notes |
|
||||
|---|---|---|---|
|
||||
| **Stress Relief** (furnace) | €50–200/batch | 2–8 hours | Amortised over batch — low cost/part |
|
||||
| **HIP** | €500–2,000/batch | 4–8 hours + scheduling | €20–200/part in batch; 2–4 week wait from service |
|
||||
| **Specific Heat Treatment** (aging, solution annealing) | €100–400/batch | 1–24 hours (cycle-dependent) | Often performed together with stress relief for non-critical alloys |
|
||||
| **CNC Machining** (critical surfaces) | €50–300/hour machine | 1–8 hours/part | Dominant cost for complex geometries |
|
||||
| **Bead Blast** | €5–20/part | 15–30 min | Almost always included in bureau service |
|
||||
| **Vibratory Finishing** | €10–40/part/batch | 1–4 hours | Economical, not applicable to delicate features |
|
||||
| **Electropolishing** | €30–100/part | 30–90 min | Stainless steels and CoCr only |
|
||||
| **Anodising (Al)** | €5–30/part | 30–60 min | In batch — low cost |
|
||||
| **CT Scan** | €200–800/part | 2–4 hours | 50µm voxel on 100mm part |
|
||||
| **CMM (dimensional inspection)** | €100–400/part | 1–3 hours | Before CT if destructive |
|
||||
| **Dye Penetrant (PT)** | €20–80/part | 1–2 hours | For external surfaces — fast |
|
||||
| **Tensile coupon (same build plate)** | €30–80/coupon | — | Mandatory for qualification |
|
||||
| **Documentation / CoC** | €50–200/batch | — | Required for aerospace, medical |
|
||||
|
||||
**Total cost example: Ti-6Al-4V LPBF, 10 parts, aerospace application**
|
||||
- Print: €400/part × 10 = €4,000
|
||||
- Stress Relief + HIP: €1,500/batch ÷ 10 = €150/part
|
||||
- HT (aging not required for annealed Ti): €0
|
||||
- CNC machining of critical surfaces: €200/part × 10 = €2,000
|
||||
- CT scan: €400/part × 10 = €4,000
|
||||
- CMM: €200/part × 10 = €2,000
|
||||
- PT: €40/part × 10 = €400
|
||||
- Coupons + documentation: €500/batch
|
||||
- **Total: ~€140/part raw + ~€1,090/part post-processing = €1,230/part finished**
|
||||
- Post-processing = 88% of total cost — typical for high quality
|
||||
|
||||
---
|
||||
|
||||
## 4. Break-Even: AM vs CNC Machining vs Casting
|
||||
|
||||
### AM vs CNC from Solid (Buy-to-Fly Ratio)
|
||||
|
||||
```
|
||||
AM is preferable to CNC when:
|
||||
✓ Buy-to-fly ratio > 5:1 (e.g. machining Ti from solid → 80% waste)
|
||||
✓ CNC setup > 4 hours (geometries with many faces, repositioning)
|
||||
✓ Internal geometry unreachable (conformal channels, optimised topology)
|
||||
✓ Quantity < 10 parts (no CNC setup amortisation)
|
||||
|
||||
CNC is preferable to AM when:
|
||||
✓ Simple geometry (prismatic, rotational)
|
||||
✓ Tolerances < ±0.05mm on many surfaces (CNC more accurate as-process)
|
||||
✓ Quantity > 50–100 parts of standard geometry
|
||||
✓ Material cannot be sintered/printed (hard ceramics, WC-Co)
|
||||
```
|
||||
|
||||
**Rule of thumb:** if the CNC quote exceeds €500/part for a complex geometry
|
||||
with undercuts or internal channels, AM is likely competitive.
|
||||
|
||||
### AM vs Investment Casting
|
||||
|
||||
```
|
||||
AM is preferable to investment casting when:
|
||||
✓ Quantity < 50–100 parts (tooling cost not recoverable: €5,000–30,000 per mould)
|
||||
✓ Geometry too complex to extract the mould
|
||||
✓ Lead time: casting requires 8–16 weeks for tooling; AM 1–4 weeks
|
||||
✓ Frequent design iterations (each modification ≡ new mould in casting)
|
||||
|
||||
Casting is preferable to AM when:
|
||||
✓ Quantity > 200–500 parts/year
|
||||
✓ Alloys not available in powder form (some foundry alloys)
|
||||
✓ Large parts (> 500mm) where AM exceeds the build volume
|
||||
```
|
||||
|
||||
### AM vs Injection Moulding (polymers)
|
||||
|
||||
| Quantity | AM cost (SLS PA12) | IM cost (PA6/PA12) | Winner |
|
||||
|---|---|---|---|
|
||||
| 10 parts | €300–600 | €5,000–50,000 (tooling) | AM |
|
||||
| 100 parts | €2,000–5,000 | €5,000–52,000 (tooling + production) | AM |
|
||||
| 500 parts | €10,000–20,000 | €6,000–55,000 | Break-even zone |
|
||||
| 1,000 parts | €20,000–40,000 | €7,000–58,000 | IM starts to win |
|
||||
| 5,000 parts | €100,000+ | €15,000–70,000 | IM wins clearly |
|
||||
|
||||
Note: IM loses its advantage for geometries with undercuts (add side actions: +€3,000–15,000/mould).
|
||||
|
||||
---
|
||||
|
||||
## 5. Lead Time Model
|
||||
|
||||
### Polymers (SLS / MJF / FDM)
|
||||
|
||||
| Phase | Duration |
|
||||
|---|---|
|
||||
| SLS/MJF print | 8–24 hours (fill-dependent) |
|
||||
| Breakout + cleaning | 2–4 hours |
|
||||
| Bead blast / finishing | 2–4 hours |
|
||||
| **Total SLS/MJF (service bureau)** | **1–3 working days** |
|
||||
| In-house FDM | 2–12 hours/part |
|
||||
|
||||
### Metals (LPBF — standard application)
|
||||
|
||||
| Phase | Duration |
|
||||
|---|---|
|
||||
| Setup + nesting | 2–4 hours |
|
||||
| LPBF print | 4–24 hours |
|
||||
| Stress relief (on build plate) | 4–8 hours |
|
||||
| Build plate removal + supports | 2–8 hours |
|
||||
| Finishing (bead blast) | 1–2 hours |
|
||||
| CMM / basic inspection | 1–2 days |
|
||||
| **Total standard LPBF** | **3–7 working days** |
|
||||
|
||||
### Metals (LPBF — aerospace/biomedical application)
|
||||
|
||||
| Phase | Duration |
|
||||
|---|---|
|
||||
| Print + stress relief | 1–2 days |
|
||||
| HIP (external service) | **2–4 weeks** (scheduling-dominant) |
|
||||
| Post-HIP heat treatment | 1–3 days |
|
||||
| CNC machining | 2–5 days |
|
||||
| CT scan (external) | 1–3 days |
|
||||
| CMM + PT + documentation | 1–3 days |
|
||||
| **Total LPBF aerospace quality** | **4–8 weeks** |
|
||||
|
||||
**The bottleneck is almost always HIP** — schedule in advance if lead time is critical.
|
||||
Alternative: in-house HIP (investment €500,000–2,000,000 for autoclave) or select
|
||||
a service bureau with integrated HIP to reduce by 1–2 weeks.
|
||||
|
||||
---
|
||||
|
||||
## 6. Service Bureau vs In-House: When Does Each Make Sense?
|
||||
|
||||
### In-House AM makes sense when:
|
||||
- Volume > 2 builds/week on a continuous basis
|
||||
- IP confidentiality is critical (no files sent to third parties)
|
||||
- Rapid development iterations (prototyping < 24h)
|
||||
- Need for full control over parameters and qualification
|
||||
|
||||
**In-house entry costs:**
|
||||
- Professional FDM (Markforged, Bambu X1E): €3,000–15,000
|
||||
- SLS/MJF (Formlabs, HP): €30,000–100,000
|
||||
- Entry-level LPBF (EOS, SLM, Trumpf): €300,000–800,000
|
||||
- Hidden costs: powder ($50–200/kg), inert gas, maintenance, qualified operator
|
||||
|
||||
### Service Bureau makes sense when:
|
||||
- < 1–2 builds/week (machine not cost-recoverable)
|
||||
- Special alloys (Scalmalloy, Inconel, CoCr) not available in-house
|
||||
- Documented qualification required (AS9100, ISO 13485 — the bureau already holds certification)
|
||||
- Large parts (build volume > in-house machine)
|
||||
- No appetite for training and maintenance investment
|
||||
|
||||
---
|
||||
|
||||
## 7. Questions to Ask Before Providing a Cost Estimate
|
||||
|
||||
If the user requests a cost estimate, gather:
|
||||
|
||||
1. **Process and material** (already defined in Phase 2)
|
||||
2. **Quantity** (1 / 10 / 100 / 1000+)
|
||||
3. **Part dimensions** (X×Y×Z mm) — directly impacts machine time
|
||||
4. **Finish requirements** — as-built, bead blast, CNC, electropolish?
|
||||
5. **Inspection required** — visual, CMM, CT scan?
|
||||
6. **Certifications required** — AS9100, ISO 13485, simple CoM (Certificate of Manufacture)?
|
||||
7. **Are there alternatives** (machining, casting) to compare against?
|
||||
|
||||
Without this data, any estimate is too vague to be useful.
|
||||
@@ -0,0 +1,192 @@
|
||||
# Defect Atlas in Additive Manufacturing
|
||||
|
||||
> Use this file when:
|
||||
> - A defect is suspected on an already-printed part
|
||||
> - Designing the inspection/quality plan
|
||||
> - Preventing defects during the design or setup phase
|
||||
> - Defining acceptance criteria for the specific application
|
||||
|
||||
---
|
||||
|
||||
## 1. LPBF / DMLS Defect Catalog
|
||||
|
||||
| Defect | Morphology | Primary cause | Process signature | Primary detection | Fatigue impact (Kf) |
|
||||
|---|---|---|---|---|---|
|
||||
| **Lack of Fusion (LOF)** | Irregular, planar, parallel to layer lines | VED too low, insufficient hatch overlap, powder contamination | Visible layers in cross-section, worsened Ra | CT scan (mandatory), metallography | **3–10** — acts as a planar crack |
|
||||
| **Keyhole Porosity** | Spherical or elongated, at uniform depth | VED too high, metal evaporation with cavity collapse | Concentrated at scan edges, at reversal points | CT scan | **1.5–2.5** |
|
||||
| **Gas Porosity** | Spherical, < 50 µm, uniform distribution | Gas trapped in powder or moisture, impure shielding gas | Random uniform distribution | CT scan, X-ray, Archimedes density | Mild if < 100 µm; **1.2–1.5** |
|
||||
| **Solidification Cracking** | Intergranular, along columnar grain boundaries | High solidification range, steep thermal gradient | IN718, high-C steels; high-restraint zones | Metallography, PT | **Severe** — propagates under cycling |
|
||||
| **Hot Tearing** | Intergranular, similar to solidification cracking | High restraint + high gradient | Thick zones near thin features | PT, metallography | **Severe** |
|
||||
| **Balling** | Metal spheres on surface, very high Ra | Melt pool oxidation, high surface tension, scan speed too high | Irregular visible surface, Ra > 40 µm | Visual, profilometry | Moderate: high Ra → Kf 1.5–3.0 |
|
||||
| **Delamination** | Planar crack between layers, on millimeter scale | Insufficient interlayer bonding, contamination, P too low | Separated layers in cross-section | Visual (if superficial), CT scan, UT | **Catastrophic** — equivalent to LOF at macro scale |
|
||||
| **Residual Stress Cracking** | Transgranular, near supports or build plate | High thermal gradient without stress relief, high restraint | Cracking during/immediately after printing | Visual during build, PT post-removal | Catastrophic if during build |
|
||||
|
||||
### VED (Volumetric Energy Density) Thresholds and LPBF Defects
|
||||
|
||||
VED = P / (v × h × t) [J/mm³]
|
||||
|
||||
| VED | Prevalent defect | Material |
|
||||
|---|---|---|
|
||||
| < 40 J/mm³ | LOF | All |
|
||||
| 40–90 J/mm³ | Optimal window | Alloy-dependent |
|
||||
| > 90 J/mm³ | Keyhole porosity | Ti, IN, steels |
|
||||
| > 120 J/mm³ | Evaporation, balling, cracking | All |
|
||||
|
||||
---
|
||||
|
||||
## 2. Defects by Process and Material
|
||||
|
||||
### LPBF — Prevalence by Alloy
|
||||
|
||||
| Alloy | Primary defects | Secondary defects | Key preventive action |
|
||||
|---|---|---|---|
|
||||
| **Ti-6Al-4V** | Keyhole porosity (high VED), residual stress cracking | LOF (low VED) | Validate VED 55–75 J/mm³; mandatory stress relief on build plate |
|
||||
| **AlSi10Mg** | Gas porosity (powder moisture), balling (oxidation) | Warping/delamination without enclosure | Pre-dry powder 70°C/4h; verify O₂ < 500 ppm in chamber |
|
||||
| **316L** | LOF (most common defect) | Gas porosity (low impact) | Optimize hatch overlap (30–40%) |
|
||||
| **17-4PH** | LOF, hot cracking (rare) | Residual stress cracking if no stress relief | Stress relief 325°C before removing from plate |
|
||||
| **IN718** | Solidification cracking in high-restraint zones | LOF at scan edges | Island scan strategy; geometries without abrupt restraint |
|
||||
| **IN625** | Gas porosity, LOF | Solidification cracking (rare) | Validate with coupons before production |
|
||||
| **CoCr** | Gas porosity, balling | — | Strict oxygen control; moderate scan speed |
|
||||
|
||||
### SLS / MJF — Polymers
|
||||
|
||||
| Defect | Cause | Detection | Impact |
|
||||
|---|---|---|---|
|
||||
| **Layer delamination** | Cold chamber (ΔT > 5°C from window), underheating | Visual, cross-section | Severe structural |
|
||||
| **Surface porosity / graininess** | Degraded recycled powder (increased MFR) | Profilometry, visual | Worsened Ra |
|
||||
| **Warping / distortion** | Non-uniform cooling, part too thin in Z | CMM, visual post-removal | Out of tolerance |
|
||||
| **Neck failure (filament necking)** | Over-recycled powder → reduced coalescence | Cross-section, density | Reduced mechanical properties |
|
||||
|
||||
**SLS recycled powder:** after 5–8 cycles, PA12 shows increased MFR (+20–40%) and reduced
|
||||
elongation at break (−15–30%). Monitor with MFR testing for critical lots.
|
||||
|
||||
### FDM / FFF
|
||||
|
||||
| Defect | Cause | Detection |
|
||||
|---|---|---|
|
||||
| **Layer delamination** | Low extrusion temperature, high speed, excessive cooling on layer | Cross-section, manual bending |
|
||||
| **Void from under-extrusion** | Excessive retraction, partial nozzle clog | Visual (grid visible), cross-section |
|
||||
| **Warping** | Poor bed adhesion, no enclosure for ABS/PA | Visual during printing |
|
||||
| **Stringing / blobs** | Uncalibrated retraction | Visual surface |
|
||||
| **Delamination in Z from moisture** | Wet filament (PA, PC) → bubbles in extrusion | Audio crackling + surface bubbles |
|
||||
|
||||
### Binder Jetting — Post-Sintering
|
||||
|
||||
| Defect | Cause | Criticality |
|
||||
|---|---|---|
|
||||
| **Non-uniform shrinkage** | Green density variations, non-uniform sintering in thick/thin sections | High — tolerances missed |
|
||||
| **Slumping** | Gravity during sintering without support | High for long horizontal features |
|
||||
| **Cracking during debinding** | Too-fast temperature ramp, incompatible binder | Part rejection |
|
||||
| **Incomplete pore closure** | Sintering temperature too low, insufficient time | Residual porosity > 2% |
|
||||
|
||||
---
|
||||
|
||||
## 3. Acceptance Criteria by Application
|
||||
|
||||
### AM Metals (LPBF/EBM)
|
||||
|
||||
| Application | Max total porosity | LOF defects | Max spherical defects | Required inspection |
|
||||
|---|---|---|---|---|
|
||||
| **Non-structural prototype** | < 2% | Accepted | — | Visual + CMM |
|
||||
| **Static structural** | < 0.5% | < 0.5mm in non-critical zone | < 0.3mm | X-ray or UT + CMM |
|
||||
| **Fatigue-critical** | < 0.05% (post-HIP) | **None** in load path | < 0.1mm | Mandatory CT scan + CMM + PT |
|
||||
| **Pressure vessel** | < 0.1% | **None** | < 0.15mm | CT scan + hydrostatic + CMM |
|
||||
| **Biomedical implant** | < 0.05% (post-HIP) | **None** | < 0.1mm | CT scan + CMM + hardness map |
|
||||
| **Aerospace (AS9100)** | < 0.05% | **None** in critical zone | < 0.1mm | CT scan (100%) + FPI + coupon same plate |
|
||||
|
||||
**Definition of "critical zone":** any zone subject to σ_max > 0.3 × UTS, or with Kt > 1.5,
|
||||
or within 2mm of a maximum stress surface.
|
||||
|
||||
### LOF: Absolute Rule
|
||||
|
||||
**An LOF defect identified by CT scan in a load zone = REJECT THE PART.**
|
||||
No waivers exist for fatigue-critical applications.
|
||||
Reason: LOF is planar and parallel to the build layer → acts as a pre-existing crack (Kf 3–10).
|
||||
HIP does not close LOF defects — HIP only closes spherical porosity (gas, keyhole).
|
||||
|
||||
---
|
||||
|
||||
## 4. Prevention Strategies
|
||||
|
||||
### Prevention for LOF
|
||||
|
||||
- Validate VED with coupons before production (optimal VED: 50–80 J/mm³ for most alloys)
|
||||
- Hatch overlap 30–40% (not < 20%)
|
||||
- Verify powder flowability before each lot (Hausner ratio < 1.25)
|
||||
- Wet powder → mandatory pre-dry (Ti: 120°C/4h; Al: 70°C/4h; steels: 80°C/4h)
|
||||
|
||||
### Prevention for Keyhole Porosity
|
||||
|
||||
- Do not exceed validated VED_max for the alloy (document the window)
|
||||
- Reduce P or increase v at platform edges (boundary compensation)
|
||||
- Monitor in-process with melt pool monitoring if available
|
||||
|
||||
### Prevention for Gas Porosity
|
||||
|
||||
- Systematic powder pre-drying
|
||||
- Verify gas purity: O₂ < 100 ppm for Ti, < 500 ppm for Al and steels
|
||||
- Verify powder morphology: satellite > 10% → increased risk of trapped gas
|
||||
|
||||
### Prevention for Residual Stress Cracking
|
||||
|
||||
- Stress relief on build plate BEFORE removal (see `references/post-processing.md`)
|
||||
- Island scan strategy (island scanning, 5×5mm or 7×7mm) to reduce peak gradient
|
||||
- Scan angle rotation 67°/layer
|
||||
- For IN718/IN625: avoid geometries with high restraint (thicknesses changing abruptly by factor > 5×)
|
||||
|
||||
---
|
||||
|
||||
## 5. Inspection Plan Selection Logic
|
||||
|
||||
```
|
||||
Define the criticality level of the component:
|
||||
|
||||
Visual prototype / non-structural
|
||||
→ Visual + CMM (dimensional)
|
||||
|
||||
Structural, static loads, non-life-critical
|
||||
→ CMM + hardness after HT + X-ray spot check
|
||||
→ Tensile coupon if first lot (same build plate)
|
||||
|
||||
Structural, cyclic loads (HCF)
|
||||
→ Industrial CT scan (voxel ≤ 50 µm for parts < 100mm)
|
||||
→ CMM of critical surfaces
|
||||
→ Dye penetrant (PT) external surfaces
|
||||
→ Tensile + fatigue coupons same build plate (process qualification)
|
||||
|
||||
Pressure vessel / aerospace / biomedical implant
|
||||
→ CT scan 100% of parts (not sampling)
|
||||
→ FPI (Fluorescent Penetrant Inspection) — ASTM E1417 Level 2
|
||||
→ UT (Ultrasonic Testing) if geometry allows
|
||||
→ Full CMM
|
||||
→ Metallographic analysis on coupons
|
||||
→ Hardness mapping post-HT
|
||||
→ Documented traceability: powder lot + build file + machine ID + operator
|
||||
```
|
||||
|
||||
### Recommended CT Scan Parameters
|
||||
|
||||
| Part size | Recommended voxel size | Minimum detectable defect |
|
||||
|---|---|---|
|
||||
| < 50 mm | ≤ 25 µm | LOF > 0.05mm, pores > 0.05mm |
|
||||
| 50–150 mm | 50–75 µm | LOF > 0.15mm, pores > 0.15mm |
|
||||
| 150–400 mm | 100–150 µm | LOF > 0.3mm, pores > 0.3mm |
|
||||
| > 400 mm | Consider UT + X-ray | CT may not be sufficient |
|
||||
|
||||
---
|
||||
|
||||
## 6. Defects: What HIP Can and Cannot Fix
|
||||
|
||||
| Defect type | Does HIP close it? | Notes |
|
||||
|---|---|---|
|
||||
| Spherical gas porosity (< 100 µm) | **YES** | Isostatic pressure closes the spheres |
|
||||
| Keyhole porosity (spherical/elongated) | **YES** (partially if < 200 µm) | Highly elongated geometries resist |
|
||||
| Lack of Fusion (LOF) | **NO** | Planar and oxidized → does not close |
|
||||
| Solidification cracking | **NO** | Oxidized, intergranular → does not close |
|
||||
| Hot tearing | **NO** | See above |
|
||||
| Macro delamination | **NO** | Too large in scale |
|
||||
| Residual stress | YES (drastically reduced) | σ_res → nearly zero after HIP |
|
||||
|
||||
**Operational conclusion:** HIP is essential for closing spherical porosity and reducing residual stresses.
|
||||
It is not a solution for planar defects (LOF, cracking). Post-HIP CT scan is mandatory
|
||||
to confirm porosity closure.
|
||||
@@ -0,0 +1,277 @@
|
||||
# DfAM Guidelines — Design for Additive Manufacturing
|
||||
|
||||
## Universal Rules
|
||||
|
||||
### Part Orientation
|
||||
Orientation is the most impactful decision in AM. Consider:
|
||||
1. **Mechanical strength:** The XY plane is always stronger than the Z direction (layer-by-layer build)
|
||||
- FDM: Z/XY difference can be 40–60% for UTS
|
||||
- LPBF: anisotropy ~10–20%
|
||||
- SLS/MJF: nearly isotropic (<10% difference)
|
||||
2. **Surface finish:** Surfaces parallel to the build plane (top surface) are smoother
|
||||
3. **Supports:** Minimize by orienting critical surfaces upward or reducing overhangs
|
||||
4. **Distortion:** Prevent warping by orienting long axes in XY, not in Z
|
||||
|
||||
### Overhangs and Support Angles
|
||||
| Process | Limit angle without support | Notes |
|
||||
|---|---|---|
|
||||
| FDM | 45° from vertical | Depends on material and cooling |
|
||||
| SLA/DLP | 45° from vertical | Supports also required for floating islands |
|
||||
| SLS/MJF | No structural limit | Powder acts as support |
|
||||
| LPBF | 45° — below requires support | Metal supports are difficult to remove |
|
||||
| EBM | ~35° | Better metallostatic behaviour than LPBF |
|
||||
|
||||
### Minimum Wall Thicknesses
|
||||
| Process | Min. wall (mm) | Min. feature (mm) |
|
||||
|---|---|---|
|
||||
| FDM (0.4mm nozzle) | 0.8–1.2 | 0.4 (XY planes only) |
|
||||
| FDM (0.6mm nozzle) | 1.2–1.6 | 0.6 |
|
||||
| SLA/DLP | 0.2–0.5 | 0.2 |
|
||||
| SLS | 0.7–1.0 | 0.6 |
|
||||
| MJF | 0.5–0.8 | 0.5 |
|
||||
| LPBF | 0.3–0.4 | 0.2 |
|
||||
| Binder Jetting | 1.0–1.5 | 0.8 |
|
||||
|
||||
---
|
||||
|
||||
## Guidelines for Specific Features
|
||||
|
||||
### Holes
|
||||
- **Vertical holes (Z-axis, FDM):** Accurate, tolerance ±0.1–0.2mm
|
||||
- **Horizontal holes (FDM):**
|
||||
- ≤ ø5mm: printable without support (deform into ellipse, ~5–10%)
|
||||
- > ø5mm: require support or teardrop profile
|
||||
- **Teardrop profile:** Modifies the upper cross-section to a point — eliminates supports for horizontal holes
|
||||
- **Post-drilling:** For tight tolerances (H7/H8), always plan for reaming/drilling post-AM
|
||||
- **Threads:** M3+ printable in SLS/LPBF; FDM → metal heat-set inserts are far more reliable
|
||||
|
||||
### Radii and Fillets
|
||||
- **Internal fillets:** ≥ 0.5mm (SLA), ≥ 1.0mm (FDM), ≥ 0.5mm (SLS/LPBF)
|
||||
- **Sharp edges:** Avoid for AM metal parts — stress concentrators + process difficulty
|
||||
- **Rule of thumb:** R_internal ≥ wall thickness
|
||||
|
||||
### Internal Cavities and Channels
|
||||
- **Lattice geometries:** SLS, MJF, LPBF only — FDM requires planning for internal supports
|
||||
- **Conformal cooling channels (tooling):** Ideal application for LPBF
|
||||
- Minimum channel diameter: ≥ ø1.5mm (LPBF), ≥ ø3mm (Binder Jetting post-sinter)
|
||||
- Avoid horizontal channels > ø8mm without teardrop profile (LPBF)
|
||||
- **Powder entrapment (SLS/MJF):** Provide powder escape holes ≥ ø5mm for closed cavities
|
||||
|
||||
### Text and Embossing
|
||||
- **Engraved/embossed text:** Min. height 1.5mm (FDM/SLS), 0.5mm (SLA)
|
||||
- **Orientation:** Always on XY plane for optimal readability
|
||||
|
||||
---
|
||||
|
||||
## Anisotropy and Directional Orientation
|
||||
|
||||
Anisotropy is the most overlooked property in AM: the part is not isotropic. Strength, fatigue
|
||||
and ductility depend on the direction relative to the XY build plane.
|
||||
|
||||
### Anisotropy factors by process (UTS_Z / UTS_XY)
|
||||
|
||||
| Process / Material | Z/XY factor (as-built) | Post-HIP | Note |
|
||||
|---|---|---|---|
|
||||
| **FDM PLA/ABS/PETG** | 0.40–0.60 | n/a | Layer bonding is the weak point — avoid loading in Z if possible |
|
||||
| **FDM PA12/PC** | 0.50–0.65 | n/a | Heated chamber improves but does not eliminate anisotropy |
|
||||
| **FDM PEEK** | 0.60–0.75 | n/a | Heated chamber ≥ 90°C improves significantly |
|
||||
| **SLS PA12** | 0.90–1.00 | n/a | Nearly isotropic — main advantage over FDM |
|
||||
| **MJF PA12** | 0.88–0.98 | n/a | Slightly worse than SLS on top surfaces |
|
||||
| **LPBF Ti-6Al-4V** | 0.80–0.92 | 0.95–1.00 | HIP practically eliminates anisotropy |
|
||||
| **LPBF AlSi10Mg** | 0.70–0.85 | 0.90–0.98 | More anisotropic than Ti; HIP important |
|
||||
| **LPBF 316L** | 0.80–0.95 | 0.95–1.00 | Ductile → anisotropy less critical |
|
||||
| **LPBF 17-4PH** | 0.75–0.90 | n.d. | Depends on post-HIP aging |
|
||||
| **LPBF IN718** | 0.75–0.88 | n.d. | |
|
||||
| **EBM Ti-6Al-4V** | 0.90–0.98 | — | Preheated chamber → greatly reduced anisotropy |
|
||||
|
||||
### Orientation rules for known loads
|
||||
|
||||
```
|
||||
Known primary load → orient so that σ_max lies IN THE XY PLANE
|
||||
|
||||
Axial tension on cylindrical rod:
|
||||
Rod axis → horizontal (in XY plane)
|
||||
Cross-section → parallel to XY plane
|
||||
|
||||
Bending on beam:
|
||||
Neutral axis → in XY plane
|
||||
Maximum tension and compression fibres → in XY plane
|
||||
|
||||
Torsion on shaft:
|
||||
Axis of rotation → in XY plane
|
||||
Maximum shear stresses act on XY cross-sections
|
||||
|
||||
Biaxial load (plate):
|
||||
Plate → parallel to XY plane
|
||||
Both load directions in XY → optimal
|
||||
```
|
||||
|
||||
### When optimal orientation is not possible
|
||||
|
||||
1. Complex geometry → Z-direction inevitably loaded
|
||||
2. Action: for metals, **HIP mandatory** → reduces anisotropy to < 5%
|
||||
3. For polymers (FDM): change process → SLS PA12 (anisotropy < 10%)
|
||||
4. For fatigue in Z direction: see `references/fatigue-design.md` section 2C for knockdown factors
|
||||
|
||||
### Fatigue anisotropy — quick summary
|
||||
|
||||
| Scenario | Z/XY fatigue factor as-built | With HIP |
|
||||
|---|---|---|
|
||||
| LPBF Ti-6Al-4V | 0.60–0.75 | 0.92–0.98 |
|
||||
| LPBF AlSi10Mg | 0.55–0.70 | 0.85–0.95 |
|
||||
| FDM PLA (R=0.1) | 0.25–0.40 | n/a |
|
||||
| SLS PA12 | 0.88–1.00 | n/a |
|
||||
|
||||
**Absolute rule:** do not use FDM for fatigue-critical components loaded in the Z direction.
|
||||
|
||||
---
|
||||
|
||||
## Tolerance Stack-Up in AM
|
||||
|
||||
Tolerance stack-up in AM is managed differently from conventional manufacturing: each process introduces
|
||||
systematic errors (shrinkage, warping) that add to process tolerances.
|
||||
|
||||
### Typical dimensional errors by process
|
||||
|
||||
| Process | Systematic error | Random error (±) | Main cause |
|
||||
|---|---|---|---|
|
||||
| **FDM** | −0.1 to −0.5% (shrinkage) | ±0.3 mm | Warping, layer shift, thermal |
|
||||
| **SLA/DLP** | −0.1 to −0.3% | ±0.15 mm | Curing shrinkage, peel force |
|
||||
| **SLS PA12** | −3.0 to −4.0% XY, −3.5 to −4.5% Z | ±0.3 mm | Sintering shrinkage |
|
||||
| **MJF PA12** | −2.5 to −3.5% | ±0.25 mm | Similar to SLS |
|
||||
| **LPBF** | −0.2 to −0.5% | ±0.1 mm | Solidification shrinkage |
|
||||
| **EBM** | −0.2 to −0.4% | ±0.2 mm | |
|
||||
| **Binder Jetting** | −18 to −22% linear | ±0.4 mm | Sintering shrinkage |
|
||||
|
||||
### Stack-up on multi-part AM assemblies
|
||||
|
||||
When multiple AM parts are assembled, errors accumulate in worst-case or RSS:
|
||||
|
||||
```
|
||||
Minimum clearance on assembly = Nominal clearance − Σ(component tolerances)
|
||||
|
||||
Example: LPBF flange (±0.1mm) + gasket + LPBF cover (±0.1mm)
|
||||
Total clearance required for guaranteed fit: 0.2mm + safety margin
|
||||
|
||||
Rule of thumb: for functional fit on AM-AM assembly → clearance ≥ 0.5mm (LPBF)
|
||||
for AM + machined assembly → clearance ≥ 0.2mm (LPBF vs CNC)
|
||||
```
|
||||
|
||||
### Critical surfaces: stock allowance strategy
|
||||
|
||||
For surfaces requiring H7/h6 tolerances, precision fits, bearing seats:
|
||||
|
||||
```
|
||||
1. Design in CAD with stock allowance: +0.3mm on all surfaces to be machined
|
||||
2. Print with stock allowance
|
||||
3. Stress relief + HIP (if planned) — HIP modifies dimensions by ±0.05–0.2mm
|
||||
4. Post-machining to nominal CAD dimensions (CNC, reaming, grinding)
|
||||
5. Final CMM inspection
|
||||
|
||||
DO NOT attempt to achieve H7 tolerances as-built in AM — it is not reliable.
|
||||
```
|
||||
|
||||
### Internal threads: compensation standards
|
||||
|
||||
| Process | Recommended approach |
|
||||
|---|---|
|
||||
| FDM, SLS, MJF | Print undersized (−0.3mm) + tap post-print for M6+ threads |
|
||||
| LPBF | Print hole +0.3–0.5mm undersized + tap or ream |
|
||||
| M3 and smaller threads (FDM) | Heat-set inserts (e.g. Ruthex, CNC Kitchen) — more reliable |
|
||||
| M3 and smaller threads (SLS/LPBF) | Printable if parameters are optimised, verify with first part |
|
||||
|
||||
---
|
||||
|
||||
## Topology Optimization and Consolidation
|
||||
|
||||
### When to apply topology optimization
|
||||
- Structural parts in metal AM where weight is critical
|
||||
- Brackets, supports, aero/automotive components
|
||||
- Tools: nTopology, Altair Inspire, Ansys Discovery, SolidWorks Simulation, Fusion 360 Generative Design
|
||||
|
||||
### Guidelines for optimised topology
|
||||
- Enforce minimum thickness = 2× minimum thickness of the process
|
||||
- Set overhang angle as a constraint in the solver
|
||||
- Final smoothing mandatory (optimised meshes create stress concentrations)
|
||||
- Verify manufacturability with AM-aware tool in the solver
|
||||
|
||||
### Component Consolidation (Assembly Consolidation)
|
||||
**Typical opportunities:**
|
||||
- Bolted joints → single-piece geometries in SLS or metal AM
|
||||
- Hydraulic/pneumatic ducting with fittings → monolithic body with internal channels
|
||||
- Hollow structures (sandwich) → integrated lattice
|
||||
|
||||
**Decision rule:** If assembly cost + tolerances + gaskets > AM cost of the consolidated part → consolidate
|
||||
|
||||
---
|
||||
|
||||
## Tolerances and Compensations
|
||||
|
||||
### Shrinkage compensations (to be applied in CAD or in print software)
|
||||
| Process | Typical shrinkage |
|
||||
|---|---|
|
||||
| FDM | 0.1–0.5% (material-dependent) |
|
||||
| SLS PA12 | 3.0–4.0% XY, 3.5–4.5% Z |
|
||||
| SLS PA11 | 2.5–3.5% |
|
||||
| LPBF AlSi10Mg | 0.3–0.5% |
|
||||
| LPBF Ti-6Al-4V | 0.2–0.4% |
|
||||
| LPBF 316L | 0.2–0.3% |
|
||||
| Binder Jetting (metals) | 18–22% (sintering) |
|
||||
| SLA/DLP resins | 0.1–0.3% |
|
||||
|
||||
### Fits and Mating
|
||||
- **Clearance fit (moving):** Add 0.3–0.5mm per side (FDM), 0.15–0.25mm (SLS), 0.05–0.1mm (LPBF after machining)
|
||||
- **Press fit / interference:** Prefer post-machining for H7/p6 or tighter tolerances
|
||||
- **Snap fit:** Design with SLS PA12 or TPU; avoid PLA (brittle under cyclic fatigue)
|
||||
|
||||
---
|
||||
|
||||
## Post-Processing Decision Tree
|
||||
|
||||
```
|
||||
Printed part
|
||||
├── Metals (LPBF/EBM)
|
||||
│ ├── Stress relief → ALWAYS (before support removal)
|
||||
│ ├── HIP → if critical application or biomedical
|
||||
│ ├── Heat treatment → if required (e.g. 17-4PH H900, IN718 aging)
|
||||
│ ├── Support removal → manual + machining
|
||||
│ ├── Surface finishing → shot peening, vibratory, EDM, polish
|
||||
│ └── Inspection → CT scan for critical parts, UT, HV mapping
|
||||
│
|
||||
├── Metals (Binder Jetting)
|
||||
│ ├── Debinding (solvent/catalytic/thermal)
|
||||
│ ├── Sintering (specialised furnace)
|
||||
│ └── HIP optional → if critical
|
||||
│
|
||||
├── SLS/MJF Polymer
|
||||
│ ├── Blasting (glass/sand) → standard for uniform finish
|
||||
│ ├── Dyeing → uniform colouring (black or colours)
|
||||
│ ├── Vibratory finishing → improved Ra
|
||||
│ ├── SLS coating (e.g. Ceracoat) → waterproofing
|
||||
│ └── Epoxy impregnation → alternative waterproofing
|
||||
│
|
||||
├── SLA/DLP Resin
|
||||
│ ├── IPA wash (10–15 min) → MANDATORY
|
||||
│ ├── UV post-curing → MANDATORY (900–1200 mJ/cm²)
|
||||
│ └── Support removal → before or after curing (resin-dependent)
|
||||
│
|
||||
└── FDM
|
||||
├── Support removal (mechanical or soluble if dual extrusion)
|
||||
├── Sanding + primer → for painting
|
||||
├── Acetone smoothing → ABS only (changes dimensions ~0.1–0.3mm)
|
||||
└── Heat-set inserts → for reliable threads (M3+)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Pre-print Checklist
|
||||
|
||||
- [ ] Minimum thicknesses met for the chosen process?
|
||||
- [ ] Overhang angles within limits (or supports planned)?
|
||||
- [ ] Horizontal holes: teardrop or support?
|
||||
- [ ] Closed cavities with powder escape holes (SLS/MJF)?
|
||||
- [ ] Shrinkage compensated in CAD?
|
||||
- [ ] Internal fillets ≥ process minimum?
|
||||
- [ ] Orientation optimised (strength + finish)?
|
||||
- [ ] Post-processing defined and included in cost?
|
||||
- [ ] Critical tolerances reserved for post-machining?
|
||||
@@ -0,0 +1,261 @@
|
||||
# Fatigue Design for Additive Manufacturing
|
||||
|
||||
> Use this file whenever the component is subject to cyclic loads, vibrations,
|
||||
> repeated impacts, or when the application is fatigue-critical (aerospace, biomedical,
|
||||
> structural automotive, pressure vessel, moving mechanisms).
|
||||
>
|
||||
> **Static UTS strength alone is not sufficient to evaluate an AM part under cyclic loading.**
|
||||
|
||||
---
|
||||
|
||||
## 1. When Fatigue Governs
|
||||
|
||||
```
|
||||
Is the component subject to cyclic loads?
|
||||
│
|
||||
├── NO → static design with FS ≥ 2.0 on UTS. Done.
|
||||
│
|
||||
└── YES → how many cycles?
|
||||
├── N < 10^3 cycles (extreme LCF)
|
||||
│ └── Use UTS with FS ≥ 1.5–2.0. Verify plastic deformation.
|
||||
├── 10^3 < N < 10^4 cycles (LCF)
|
||||
│ └── Use σ_LCF ≈ 0.7–0.9 × UTS. FS ≥ 1.5.
|
||||
└── N > 10^4 cycles (HCF — the critical case)
|
||||
└── Use S-N data (section 3) + knockdown factors (section 2).
|
||||
The fatigue limit may be 30–60% of the UTS value.
|
||||
```
|
||||
|
||||
**Questions to ask the designer before proceeding:**
|
||||
- Expected total cycles (10^5, 10^6, 10^7)?
|
||||
- Stress ratio R = σ_min / σ_max (typical: R = 0.1 pulsating, R = -1 fully reversed)?
|
||||
- Will the fatigue-critical surface be machined or remain as-built?
|
||||
- Is HIP planned?
|
||||
|
||||
---
|
||||
|
||||
## 2. Knockdown Factors for AM
|
||||
|
||||
### 2A — Kf from Surface Roughness (Ra)
|
||||
|
||||
The as-built roughness of AM parts is much higher than forged — surface valleys
|
||||
act as notches and drastically reduce fatigue life.
|
||||
|
||||
| Ra (µm) | Typical condition | Kf (Ti-6Al-4V) | Kf (AM steels) | Kf (AlSi10Mg) |
|
||||
|---|---|---|---|---|
|
||||
| 20–35 | LPBF as-built (side) | 1.8–2.5 | 1.6–2.2 | 1.5–2.0 |
|
||||
| 8–20 | LPBF as-built (top XY) | 1.4–1.8 | 1.3–1.7 | 1.3–1.6 |
|
||||
| 6–12 | Bead blast post LPBF | 1.3–1.6 | 1.2–1.5 | 1.2–1.4 |
|
||||
| 3–6 | Vibratory finishing | 1.1–1.3 | 1.1–1.3 | 1.1–1.2 |
|
||||
| 0.8–3 | Electropolishing / SLA | 1.05–1.15 | 1.0–1.1 | 1.0–1.1 |
|
||||
| 0.4–0.8 | CNC machining | 1.0–1.05 | 1.0–1.05 | 1.0–1.05 |
|
||||
| < 0.4 | Grinding / lapping | 1.0 | 1.0 | 1.0 |
|
||||
|
||||
**Effective fatigue limit = baseline S-N / Kf**
|
||||
|
||||
Example: Ti-6Al-4V LPBF as-built side (Ra 20µm, Kf 2.2):
|
||||
effective fatigue limit = 260 MPa / 2.2 = **118 MPa** — vs. 620 MPa for forged.
|
||||
|
||||
### 2B — Knockdown from Porosity
|
||||
|
||||
For every 0.1% of pore volume (measured by CT scan or Archimedes):
|
||||
- Fatigue life reduction: **−5 to −8%** (LPBF metals, Ti and Al)
|
||||
- Acceptance thresholds:
|
||||
- Porosity < 0.05%: acceptable for fatigue with HIP
|
||||
- Porosity 0.05–0.5%: acceptable only for non-fatigue-critical applications
|
||||
- Porosity > 0.5%: **not suitable for cyclic loading** — mandatory HIP required or reject
|
||||
|
||||
HIP closes spherical porosity (gas, keyhole) → reduces porosity from typical 0.3–0.5% to < 0.05%.
|
||||
HIP does NOT close planar LOF (lack of fusion) — these remain as cracks.
|
||||
|
||||
### 2C — Directional Anisotropy (Fatigue)
|
||||
|
||||
| Process/Material | Fatigue Z/XY as-built | Fatigue Z/XY post-HIP |
|
||||
|---|---|---|
|
||||
| LPBF Ti-6Al-4V | 0.60–0.75 | 0.92–0.98 |
|
||||
| LPBF AlSi10Mg | 0.55–0.70 | 0.85–0.95 |
|
||||
| LPBF 316L | 0.70–0.85 | 0.92–0.98 |
|
||||
| LPBF 17-4PH | 0.70–0.80 | n.d. |
|
||||
| LPBF IN718 | 0.65–0.80 | n.d. |
|
||||
| SLS PA12 | 0.90–1.00 | n/a |
|
||||
| FDM PA12 (0°/90°) | 0.35–0.55 | n/a |
|
||||
|
||||
**Rule:** orient the primary cyclic loading plane (σ_max) in the XY direction.
|
||||
In fatigue-critical zones, the load must be **perpendicular** to the layer lines, not parallel.
|
||||
|
||||
### 2D — Effect of HIP on Fatigue
|
||||
|
||||
HIP (Hot Isostatic Pressing) is the most effective treatment for improving fatigue life in AM metals:
|
||||
- Closes spherical porosity → eliminates the primary internal crack initiator
|
||||
- Reduces Z/XY anisotropy → from 0.6–0.75 to 0.92–0.98 for Ti
|
||||
- Modifies microstructure → improves ductility but may reduce UTS if not followed by aging
|
||||
|
||||
Fatigue life improvement post-HIP (relative to as-built):
|
||||
- Ti-6Al-4V LPBF: **+50–100%** in terms of cycles to failure
|
||||
- AlSi10Mg LPBF: **+30–60%**
|
||||
|
||||
---
|
||||
|
||||
## 3. Baseline S-N Data (R = 0.1, HCF at 10^7 cycles)
|
||||
|
||||
> These are representative ranges from the literature. Inter-lot variability ±15–20%.
|
||||
> For critical applications: require testing on coupons from the same lot/build plate.
|
||||
|
||||
### LPBF Metals
|
||||
|
||||
| Material / Condition | Fatigue limit @ 10^7 cycles (MPa) | Notes |
|
||||
|---|---|---|
|
||||
| **Ti-6Al-4V LPBF as-built** | 200–320 | High scatter; Ra 15–25 µm side |
|
||||
| **Ti-6Al-4V LPBF HIP + machined** | 400–550 | Close to forged |
|
||||
| **Ti-6Al-4V forged (reference)** | 620–700 | Benchmark |
|
||||
| **AlSi10Mg LPBF as-built** | 90–130 | Very sensitive to orientation |
|
||||
| **AlSi10Mg LPBF HIP + T6-equiv.** | 120–170 | +30% vs. as-built |
|
||||
| **AlSi10Mg forged 6061-T6 (ref.)** | 95–110 | AM comparable with HIP |
|
||||
| **316L LPBF as-built** | 180–220 | Good relative to forged |
|
||||
| **316L LPBF HIP** | 220–260 | |
|
||||
| **316L forged (reference)** | 200–240 | AM as-built nearly comparable |
|
||||
| **17-4PH LPBF H900** | 350–430 | Only after mandatory aging |
|
||||
| **17-4PH forged H900 (ref.)** | 400–500 | |
|
||||
| **IN625 LPBF** | 280–380 | |
|
||||
| **IN718 LPBF (full HT)** | 350–450 | Mandatory double aging |
|
||||
| **CoCr LPBF (biomedical)** | 500–600 | Excellent for implants |
|
||||
|
||||
### AM Polymers
|
||||
|
||||
| Material / Condition | Fatigue limit @ 10^6 cycles (MPa) | Notes |
|
||||
|---|---|---|
|
||||
| **PA12 SLS** | 18–25 | R = 0.1; sensitive to moisture |
|
||||
| **PA12 FDM (0°)** | 12–18 | Layer bonding is the weak link |
|
||||
| **PETG FDM** | 10–16 | |
|
||||
| **ABS FDM** | 8–14 | Highly anisotropic in Z |
|
||||
| **PEEK FDM** | 25–40 | Only with heated chamber, correct orientation |
|
||||
|
||||
### Mean Stress Correction (Goodman)
|
||||
|
||||
For R ≠ 0.1, correct using the modified Goodman relation:
|
||||
σ_a / σ_fl + σ_m / UTS = 1
|
||||
|
||||
Where: σ_a = alternating amplitude, σ_m = mean stress, σ_fl = fatigue limit (from table).
|
||||
|
||||
---
|
||||
|
||||
## 4. Shot Peening and Surface Treatments
|
||||
|
||||
### Shot peening benefit (quantitative)
|
||||
|
||||
Shot peening introduces compressive residual stresses at the surface that oppose
|
||||
the propagation of fatigue cracks.
|
||||
|
||||
| Material | Fatigue limit improvement | Introduced σ_residual |
|
||||
|---|---|---|
|
||||
| Ti-6Al-4V AM | +20–40% | −400 to −700 MPa |
|
||||
| AlSi10Mg AM | +15–25% | −200 to −400 MPa |
|
||||
| 316L / 17-4PH AM | +15–30% | −300 to −500 MPa |
|
||||
| PA12 SLS | not applicable | — |
|
||||
|
||||
Reference standard: **AMS 2430** (aerospace); Almen intensity A8–A12 for Ti.
|
||||
|
||||
**Deep Rolling** (for cylindrical features: shafts, pins, fillets):
|
||||
- σ_residual: −600 to −900 MPa (deeper than shot peening)
|
||||
- Fatigue improvement: +30–50%
|
||||
- Requires machine tool access; not applicable to complex geometries
|
||||
|
||||
### Correct Sequence (DO NOT deviate)
|
||||
|
||||
```
|
||||
AM Print
|
||||
↓
|
||||
Stress Relief (mandatory before removing from build plate for metals)
|
||||
↓
|
||||
HIP (if fatigue-critical)
|
||||
↓
|
||||
Specific Heat Treatment (aging 17-4PH, double aging IN718, etc.)
|
||||
↓
|
||||
Support Removal
|
||||
↓
|
||||
CNC Machining of critical surfaces (after HIP — HIP modifies dimensions ±0.05–0.2%)
|
||||
↓
|
||||
Shot Peening (ALWAYS AFTER all heat treatments)
|
||||
↓
|
||||
Final Inspection (CT scan + CMM)
|
||||
```
|
||||
|
||||
**CRITICAL:** Do not perform shot peening before HIP — HIP relaxes the compressive stresses
|
||||
introduced by shot peening, negating its benefit.
|
||||
|
||||
---
|
||||
|
||||
## 5. DfAM Rules for Fatigue
|
||||
|
||||
1. **Fillets in load paths:** minimum radius ≥ 2× thickness of the adjacent wall.
|
||||
Sharp fillets (R < 0.5mm) → Kt 3–5 → guaranteed crack initiators.
|
||||
|
||||
2. **Build orientation:** primary cyclic load axis → XY plane.
|
||||
If not possible (complex geometry): specify HIP as mandatory.
|
||||
|
||||
3. **As-built surfaces in critical zones:** not acceptable for N > 10^6 cycles without treatment.
|
||||
Minimum: bead blast (Ra 6–12 µm, Kf still 1.3–1.6). Optimal: machining or shot peening.
|
||||
|
||||
4. **Lattice in fatigue-critical applications:**
|
||||
- Add solid skin ≥ 1.5mm on all surfaces exposed to cyclic loading.
|
||||
- The surface of an as-built lattice has Ra 30–80 µm → Kf 2–4 → drastically reduced life.
|
||||
- For fatigue-critical lattice: TPMS Gyroid + HIP + machined outer skin.
|
||||
|
||||
5. **Holes in cyclic tension zones:**
|
||||
- Kt of a circular hole in a plate = 3. In AM, the as-built hole edge has Ra 15–40 µm → effective Kf 4–6.
|
||||
- Solution: ream/mill the hole after printing (even with a manual reamer).
|
||||
|
||||
6. **Support attachment marks (residual marks):**
|
||||
- Support attachment points leave craters/bumps Ra 25–100 µm → critical initiators.
|
||||
- Do not leave support marks on fatigue-critical surfaces. Design orientation to avoid this.
|
||||
|
||||
---
|
||||
|
||||
## 6. Red Lines — Mandatory Stop
|
||||
|
||||
These scenarios require corrective action before proceeding.
|
||||
Ignoring them is not acceptable — communicate them explicitly to the designer.
|
||||
|
||||
| Condition | Required action |
|
||||
|---|---|
|
||||
| Ra as-built > 6 µm + N > 10^6 cycles on metal AM | Mandatory: machining or shot peening. Do not proceed as-built. |
|
||||
| CT scan porosity > 0.5% + fatigue-critical application | Mandatory: HIP. If unavailable, reject the part. |
|
||||
| LOF defects detected by CT scan in load zone | Reject. LOF acts as a crack (Kf 3–10). HIP does not close LOF. |
|
||||
| FDM polymer + N > 10^5 cycles in Z direction | Process not suitable. Switch to SLS PA12 or redesign orientation. |
|
||||
| As-built lattice without skin + cyclic fatigue | Redesign: add skin ≥ 1.5mm or exclude lattice from critical zone. |
|
||||
| Shot peening planned before HIP | Reverse the sequence. Shot peening must be the last thermal/mechanical step. |
|
||||
|
||||
---
|
||||
|
||||
## 7. Fatigue Evaluation Plan (Output for the Designer)
|
||||
|
||||
When fatigue is identified as relevant, include in the final output:
|
||||
|
||||
```
|
||||
## Fatigue Evaluation
|
||||
|
||||
**Regime:** HCF (N = __ cycles, R = __)
|
||||
|
||||
**Material/Process:** __ LPBF / condition: as-built / HIP / machined
|
||||
|
||||
**Baseline fatigue limit:** __ MPa (from S-N table, section 3)
|
||||
|
||||
**Applied knockdown factors:**
|
||||
- Kf from Ra (__ µm, __ condition): __ → effective limit = __ MPa
|
||||
- Porosity (CT scan planned? __): estimated knockdown __%
|
||||
- Anisotropy (load in __ direction): Z/XY factor = __
|
||||
|
||||
**Estimated effective fatigue limit:** __ MPa
|
||||
|
||||
**Comparison with applied load (σ_max = __ MPa, σ_a = __ MPa):**
|
||||
Fatigue FS = __ [target ≥ 1.5 for standard applications, ≥ 2.0 for safety-critical]
|
||||
|
||||
**Actions required to reach target FS:**
|
||||
□ Mandatory HIP
|
||||
□ Machining of critical surfaces (Ra target ≤ __ µm)
|
||||
□ Shot peening (AMS 2430, Almen __)
|
||||
□ CT scan post-HIP (acceptance: no LOF, porosity < 0.05%)
|
||||
□ Fatigue coupons same build plate (required for qualification)
|
||||
|
||||
**Red lines:**
|
||||
[List any stop conditions identified]
|
||||
```
|
||||
@@ -0,0 +1,122 @@
|
||||
# Lattice & Infill — Technical Guide
|
||||
|
||||
## 1. FDM/FFF — Infill Strategies
|
||||
|
||||
### When to use partial infill
|
||||
- Visual / ergonomic prototypes → 10–20%
|
||||
- Functional parts under moderate load → 30–60%
|
||||
- Critical structural parts → 80–100% or solid walls (no infill)
|
||||
- Flexible parts (TPU) → 15–30% for cushioning effect
|
||||
|
||||
### Infill patterns and their mechanics
|
||||
|
||||
| Pattern | Strength | Weight | Print speed | Ideal use |
|
||||
|---|---|---|---|---|
|
||||
| **Gyroid** | Excellent (isotropic) | Low | Medium | Functional parts, heat sinks, flexible parts |
|
||||
| **Honeycomb** | Good in XY plane | Medium | Medium | Panels, flat pieces, packaging |
|
||||
| **Cubic / 3D Honeycomb** | Good (3D) | Medium | Medium | General purpose, good strength/weight ratio |
|
||||
| **Lightning** | Poor | Minimum | High | Top surface support only |
|
||||
| **Lines / Rectilinear** | Anisotropic | Low | High | Quick prototypes, low-cost filler |
|
||||
| **Grid** | Moderate | Medium | High | Rapid prototyping |
|
||||
| **Triangles** | Good in plane | Medium | Medium | Flat planes with distributed load |
|
||||
| **Concentric** | Excellent for flexible | Low | High | TPU, gaskets, cushioning |
|
||||
| **Cross 3D** | Excellent for flexible | Low | Low | Elastomers, grip, shock absorbers |
|
||||
|
||||
### Critical FDM infill parameters
|
||||
- **Number of perimeters/shells:** The shell contribution to strength is >> infill. Increase shells before increasing infill %. Practical rule: ≥4 perimeters for structural parts
|
||||
- **Top/bottom layers:** ≥4–6 solid layers for mechanically loaded surfaces
|
||||
- **Infill angle:** Rotate 45° relative to the main load direction for better distribution
|
||||
- **Infill-perimeter overlap:** 20–30% — critical for adhesion between infill and shell
|
||||
|
||||
### Density → mechanical properties relationship (PA12, FDM)
|
||||
| Infill % | Relative Rm | Relative stiffness |
|
||||
|---|---|---|
|
||||
| 20% | ~35% | ~25% |
|
||||
| 40% | ~55% | ~45% |
|
||||
| 60% | ~70% | ~65% |
|
||||
| 80% | ~85% | ~82% |
|
||||
| 100% | 100% | 100% |
|
||||
*(Indicative values — depend on pattern, material, orientation)*
|
||||
|
||||
---
|
||||
|
||||
## 2. Metal AM — Lattice Structures
|
||||
|
||||
### Main typologies
|
||||
|
||||
#### Strut-based (truss)
|
||||
- **BCC (Body-Centered Cubic):** Excellent for multi-axial loads, good stiffness
|
||||
- **FCC (Face-Centered Cubic):** Better for shear loads
|
||||
- **Octet truss:** High specific stiffness, aerospace structural applications
|
||||
- **Kelvin cell:** Optimal for energy absorption applications (crash, impact)
|
||||
- **Diamond lattice:** Good isotropic mechanical properties, biomedical applications (osseointegration)
|
||||
|
||||
#### TPMS (Triply Periodic Minimal Surface) — zero mean curvature surfaces
|
||||
- **Gyroid (Schoen G):** The most widely used — excellent for heat exchangers, biomedical scaffolds, pressure
|
||||
- Isotropic mechanical properties
|
||||
- No stress concentration nodes
|
||||
- Excellent for fluid flow (interconnected channels)
|
||||
- **Schwartz P (Primitive):** High stiffness, suitable for compressive loads
|
||||
- **Schwartz D (Diamond):** Similar to Gyroid, slightly stiffer
|
||||
- **IWP:** High specific surface area — heat exchangers
|
||||
|
||||
#### Sheet-TPMS vs Solid-TPMS
|
||||
- **Solid (solid fill):** Better mechanical properties, suitable for load-bearing structures
|
||||
- **Sheet (shell):** Superior for heat transfer and fluid-dynamic permeability
|
||||
|
||||
### Lattice design parameters (metal AM)
|
||||
|
||||
| Parameter | Typical range | Notes |
|
||||
|---|---|---|
|
||||
| Relative density | 15–40% | <15%: risk of warping/collapse during printing; >40%: better to use solid |
|
||||
| Minimum strut diameter | 0.3–0.5mm (LPBF) | Below 0.3mm: unreliable |
|
||||
| TPMS wall thickness | 0.3–0.6mm (LPBF) | Always verify with the supplier |
|
||||
| Cell size | 2–8mm | Cells too small: trapped powder; too large: loss of efficiency |
|
||||
| Density gradient | Yes if load is non-uniform | E.g.: denser at attachment zone, lighter core |
|
||||
|
||||
### Applications by type
|
||||
|
||||
| Application | Recommended structure | Relative density |
|
||||
|---|---|---|
|
||||
| Structural lightweighting | Octet truss, BCC | 20–35% |
|
||||
| Impact/crash absorption | Kelvin, BCC | 25–40% |
|
||||
| Biomedical scaffold (Ti) | Gyroid, Diamond | 30–50% (for osseointegration) |
|
||||
| Heat exchanger | Gyroid TPMS, IWP | 20–30% |
|
||||
| Tooling with conformal channels | Gyroid + hybrid channels | 25–40% |
|
||||
| Sandwich panel | FCC face-sheet | 15–25% |
|
||||
|
||||
### Density → properties relationship (Gibson-Ashby law)
|
||||
For strut lattice: `E_lattice/E_solid ≈ C × (ρ_lattice/ρ_solid)^n`
|
||||
- n ≈ 2 for bending-dominated (BCC, Kelvin)
|
||||
- n ≈ 1 for stretch-dominated (Octet, FCC) — more structurally efficient
|
||||
|
||||
**Practical implication:** To maximise stiffness per unit weight → prefer stretch-dominated architectures (Octet truss) over bending-dominated ones (BCC).
|
||||
|
||||
### Solid-to-lattice transition
|
||||
- **Transition gradient:** At least 3–5 transition cells between solid zone and lattice
|
||||
- **Containment shell:** Always add an outer solid skin (0.5–2mm) to:
|
||||
- Protect from trapped powder
|
||||
- Improve surface finish
|
||||
- Resist surface fatigue
|
||||
|
||||
---
|
||||
|
||||
## 3. SLS / MJF — Infill and Internal Structures
|
||||
|
||||
### SLS principle: no structural supports, but…
|
||||
- Unsintered powder acts as support → total geometric freedom
|
||||
- **Closed cavities:** ALWAYS include powder escape holes ≥ ø5–6mm (otherwise trapped powder is irremovable)
|
||||
- **SLS lattice:** Possible with cell size ≥ 3–4mm, strut ≥ 1.2mm
|
||||
|
||||
### Lightweighting strategies for SLS/MJF
|
||||
1. **Shell + hollow interior** (shell + hollow): Wall ≥1.5mm, escape holes
|
||||
2. **SLS lattice:** PA12 with internal Gyroid or Honeycomb structures — weight saving 30–60%
|
||||
3. **Internal stiffening ribs** instead of solid sections: often more efficient
|
||||
|
||||
### Suggested tools for lattice generation
|
||||
- **nTopology** — most powerful, designed for metal AM
|
||||
- **Altair Inspire** — integrated with FEA, topology + lattice in one tool
|
||||
- **Materialise Magics** — industry standard for build preparation
|
||||
- **Fusion 360 (Generative Design)** — good entry point, less advanced control
|
||||
- **Meshmixer** — free, basic lattice for FDM/SLS
|
||||
- **Rhinoceros + Grasshopper** — maximum parametric flexibility
|
||||
@@ -0,0 +1,705 @@
|
||||
{
|
||||
"_meta": {
|
||||
"version": "2.0",
|
||||
"description": "AM Materials Database — mechanical properties, roughness by orientation, post-processing for Ra targets, selection guide. Values from literature and datasheets. Always verify with the specific supplier datasheet.",
|
||||
"units": { "UTS": "MPa", "YS": "MPa", "E": "GPa", "elongation": "%", "HDT": "°C", "T_max_service": "°C", "density": "g/cm³", "Ra": "µm", "accuracy": "mm", "shrinkage": "%", "fatigue_limit": "MPa" },
|
||||
"fatigue_note": "fatigue_limit_asbuilt = fatigue limit @ 10^7 cycles, R=0.1, as-built (high scatter ±20%). fatigue_limit_HIP_machined = with HIP + surface machining, close to forged. Kf_asbuilt_side = stress concentration factor from side surface roughness (Ra 15–20µm). See references/fatigue-design.md for complete calculation.",
|
||||
"roughness_note": "Ra on typical surfaces. top_surface = parallel to the XY plane (last layer). side_XY = vertical surfaces. down_facing = lower overhang/support surfaces. As-built values without post-processing.",
|
||||
"anisotropy_note": "anisotropy_Z_factor = UTS_Z / UTS_XY. E.g. 0.6 means the strength in the Z direction (layer stacking) is 60% of that in the XY plane."
|
||||
},
|
||||
|
||||
"processes": {
|
||||
"FDM": { "Ra_typical": [15,50], "accuracy_mm": 0.3, "supports": true, "note": "High anisotropy. Roughness strongly depends on orientation and layer height." },
|
||||
"SLA": { "Ra_typical": [1,6], "accuracy_mm": 0.15,"supports": true, "note": "UV post-cure mandatory. Best Ra among polymer processes." },
|
||||
"DLP": { "Ra_typical": [2,8], "accuracy_mm": 0.15,"supports": true, "note": "Faster than SLA. Ra depends on projector resolution." },
|
||||
"SLS": { "Ra_typical": [8,15], "accuracy_mm": 0.3, "supports": false, "note": "Powder acts as support. Good isotropy. Significant shrinkage (~3.5%)." },
|
||||
"MJF": { "Ra_typical": [6,12], "accuracy_mm": 0.25,"supports": false, "note": "Slightly better finish than SLS. Full-color available." },
|
||||
"LPBF": { "Ra_typical": [8,20], "accuracy_mm": 0.1, "supports": true, "note": "Metal supports are critical. Stress relief mandatory before removal." },
|
||||
"EBM": { "Ra_typical": [20,35], "accuracy_mm": 0.2, "supports": true, "note": "Higher Ra than LPBF. Vacuum chamber. Reduced thermal gradients." },
|
||||
"BJT": { "Ra_typical": [4,10], "accuracy_mm": 0.4, "supports": false, "note": "Post-print sintering. Shrinkage ~20%. Tolerances worse than LPBF." }
|
||||
},
|
||||
|
||||
"polymers": [
|
||||
{
|
||||
"id": "PLA",
|
||||
"name": "PLA (Polylactic Acid)",
|
||||
"family": "standard_fdm", "processes": ["FDM"],
|
||||
"mechanical": { "UTS_min": 50, "UTS_max": 65, "E_min": 3.3, "E_max": 3.8, "elongation_min": 3, "elongation_max": 6, "anisotropy_Z_factor": 0.55 },
|
||||
"thermal": { "HDT_min": 52, "HDT_max": 65, "T_max_service": 52 },
|
||||
"surface_roughness": {
|
||||
"top_surface": { "Ra_min": 5, "Ra_max": 15 },
|
||||
"side_XY": { "Ra_min": 15, "Ra_max": 35 },
|
||||
"down_facing": { "Ra_min": 25, "Ra_max": 60, "note": "support interface" },
|
||||
"Ra_asbuilt_typical": 25,
|
||||
"postprocess_achievable": {
|
||||
"sanding_400": { "Ra_min": 3, "Ra_max": 8 },
|
||||
"sanding_800": { "Ra_min": 1.5, "Ra_max": 4 },
|
||||
"primer_sand": { "Ra_min": 0.8, "Ra_max": 2 }
|
||||
}
|
||||
},
|
||||
"flags": { "biocompatible": false, "uv_resistant": false, "food_safe_possible": false, "predry_required": false, "enclosure_required": false, "supports_needed": true },
|
||||
"chemical_resistance": { "acids_dilute": "good", "bases_dilute": "good", "solvents_organic": "poor", "fuels": "poor", "UV_outdoor": "poor" },
|
||||
"shrinkage": { "min": 0.1, "max": 0.3 },
|
||||
"cost_relative": 1, "print_difficulty": "easy",
|
||||
"variants": ["PLA+", "PLA-CF (+20% UTS, hardened steel nozzle mandatory)"],
|
||||
"applications": ["visual prototypes", "concept models", "non-structural parts", "gadgets"],
|
||||
"warnings": ["biodegradable — avoid prolonged humid/hot environments", "no UV outdoor", "brittle under impact"],
|
||||
"postprocessing_sequence": ["support removal", "wet sanding 120→240→400→800", "primer surfacer", "painting or clear coat"]
|
||||
},
|
||||
{
|
||||
"id": "PETG",
|
||||
"name": "PETG (Polyethylene Terephthalate Glycol)",
|
||||
"family": "standard_fdm", "processes": ["FDM"],
|
||||
"mechanical": { "UTS_min": 50, "UTS_max": 55, "E_min": 2.1, "E_max": 2.5, "elongation_min": 50, "elongation_max": 200, "anisotropy_Z_factor": 0.65 },
|
||||
"thermal": { "HDT_min": 75, "HDT_max": 80, "T_max_service": 75 },
|
||||
"surface_roughness": {
|
||||
"top_surface": { "Ra_min": 5, "Ra_max": 12 },
|
||||
"side_XY": { "Ra_min": 12,"Ra_max": 30 },
|
||||
"down_facing": { "Ra_min": 20,"Ra_max": 50 },
|
||||
"Ra_asbuilt_typical": 20,
|
||||
"postprocess_achievable": {
|
||||
"sanding_400": { "Ra_min": 2, "Ra_max": 6 },
|
||||
"sanding_800": { "Ra_min": 1.0, "Ra_max": 3 }
|
||||
}
|
||||
},
|
||||
"flags": { "biocompatible": false, "uv_resistant": false, "food_safe_possible": true, "food_safe_note": "depends on pigments and additives from supplier", "predry_required": false, "enclosure_required": false, "supports_needed": true },
|
||||
"chemical_resistance": { "acids_dilute": "excellent", "bases_dilute": "excellent", "alcohols": "excellent", "solvents_organic": "moderate", "fuels": "good" },
|
||||
"shrinkage": { "min": 0.1, "max": 0.3 },
|
||||
"cost_relative": 1.2, "print_difficulty": "moderate",
|
||||
"warnings": ["high stringing — temperature and retraction are critical", "sticks heavily to bed — use release agent on glass"],
|
||||
"postprocessing_sequence": ["support removal", "sanding 180→400→800", "polyurethane primer + painting"]
|
||||
},
|
||||
{
|
||||
"id": "ABS",
|
||||
"name": "ABS (Acrylonitrile Butadiene Styrene)",
|
||||
"family": "engineering_fdm", "processes": ["FDM"],
|
||||
"mechanical": { "UTS_min": 40, "UTS_max": 50, "E_min": 2.0, "E_max": 2.5, "elongation_min": 5, "elongation_max": 25, "anisotropy_Z_factor": 0.55 },
|
||||
"thermal": { "HDT_min": 90, "HDT_max": 100, "T_max_service": 90 },
|
||||
"surface_roughness": {
|
||||
"top_surface": { "Ra_min": 5, "Ra_max": 15 },
|
||||
"side_XY": { "Ra_min": 15,"Ra_max": 40 },
|
||||
"down_facing": { "Ra_min": 25,"Ra_max": 55 },
|
||||
"Ra_asbuilt_typical": 25,
|
||||
"postprocess_achievable": {
|
||||
"acetone_smoothing": { "Ra_min": 1.5, "Ra_max": 5, "note": "alters dimensions ±0.1–0.3mm" },
|
||||
"sanding_800": { "Ra_min": 2, "Ra_max": 6 }
|
||||
}
|
||||
},
|
||||
"flags": { "uv_resistant": false, "predry_required": false, "enclosure_required": true, "enclosure_temp_min": 40, "supports_needed": true },
|
||||
"shrinkage": { "min": 0.5, "max": 1.5 },
|
||||
"cost_relative": 1.2, "print_difficulty": "difficult",
|
||||
"warnings": ["severe warping without enclosure", "toxic fumes — ventilation mandatory"],
|
||||
"postprocessing_sequence": ["support removal", "acetone smoothing OR sanding 120→400→800", "primer + painting"]
|
||||
},
|
||||
{
|
||||
"id": "ASA",
|
||||
"name": "ASA (Acrylonitrile Styrene Acrylate)",
|
||||
"family": "engineering_fdm", "processes": ["FDM"],
|
||||
"mechanical": { "UTS_min": 45, "UTS_max": 55, "E_min": 2.1, "E_max": 2.6, "elongation_min": 5, "elongation_max": 20, "anisotropy_Z_factor": 0.55 },
|
||||
"thermal": { "HDT_min": 90, "HDT_max": 100, "T_max_service": 90 },
|
||||
"surface_roughness": {
|
||||
"top_surface": { "Ra_min": 5, "Ra_max": 15 },
|
||||
"side_XY": { "Ra_min": 15,"Ra_max": 40 },
|
||||
"Ra_asbuilt_typical": 25
|
||||
},
|
||||
"flags": { "uv_resistant": true, "predry_required": false, "enclosure_required": true, "supports_needed": true },
|
||||
"shrinkage": { "min": 0.5, "max": 1.0 },
|
||||
"cost_relative": 1.5, "print_difficulty": "difficult",
|
||||
"applications": ["outdoor parts", "automotive exterior", "signage"],
|
||||
"postprocessing_sequence": ["support removal", "sanding 180→400→800", "UV-resistant primer + painting"]
|
||||
},
|
||||
{
|
||||
"id": "PA12-FDM",
|
||||
"name": "PA12 / Nylon 12 — FDM",
|
||||
"family": "engineering_fdm", "processes": ["FDM"],
|
||||
"mechanical": { "UTS_min": 50, "UTS_max": 60, "E_min": 1.6, "E_max": 2.2, "elongation_min": 30, "elongation_max": 300, "anisotropy_Z_factor": 0.60 },
|
||||
"thermal": { "HDT_min": 120, "HDT_max": 120, "T_max_service": 110 },
|
||||
"surface_roughness": {
|
||||
"top_surface": { "Ra_min": 8, "Ra_max": 20 },
|
||||
"side_XY": { "Ra_min": 20,"Ra_max": 45 },
|
||||
"down_facing": { "Ra_min": 30,"Ra_max": 60 },
|
||||
"Ra_asbuilt_typical": 30
|
||||
},
|
||||
"flags": { "predry_required": true, "predry_conditions": "70–80°C / 4–8h before each session", "enclosure_required": true, "supports_needed": true },
|
||||
"chemical_resistance": { "fuels": "excellent", "oils": "excellent", "bases": "excellent", "acids_conc": "moderate" },
|
||||
"shrinkage": { "min": 1.0, "max": 2.0 },
|
||||
"cost_relative": 2.0, "print_difficulty": "difficult",
|
||||
"applications": ["gears", "snap-fits", "automotive parts", "mechanical components"],
|
||||
"warnings": ["hygroscopic — pre-dry MANDATORY before each session"]
|
||||
},
|
||||
{
|
||||
"id": "PC",
|
||||
"name": "PC (Polycarbonate)",
|
||||
"family": "high_performance_fdm", "processes": ["FDM"],
|
||||
"mechanical": { "UTS_min": 55, "UTS_max": 70, "E_min": 2.3, "E_max": 2.8, "elongation_min": 100, "elongation_max": 120, "anisotropy_Z_factor": 0.60 },
|
||||
"thermal": { "HDT_min": 110, "HDT_max": 130, "T_max_service": 115 },
|
||||
"surface_roughness": {
|
||||
"top_surface": { "Ra_min": 5, "Ra_max": 15 },
|
||||
"side_XY": { "Ra_min": 15,"Ra_max": 35 },
|
||||
"Ra_asbuilt_typical": 20,
|
||||
"postprocess_achievable": {
|
||||
"sanding_1200_polish": { "Ra_min": 0.1, "Ra_max": 0.5, "note": "polishing for transparency" }
|
||||
}
|
||||
},
|
||||
"flags": { "transparent": true, "predry_required": true, "predry_conditions": "80–90°C / 4–6h", "enclosure_required": true, "enclosure_temp_min": 60, "nozzle_temp_min": 260, "nozzle_temp_max": 290, "supports_needed": true },
|
||||
"shrinkage": { "min": 0.5, "max": 0.8 },
|
||||
"cost_relative": 2.5, "print_difficulty": "very difficult",
|
||||
"applications": ["optical components", "electronic housings", "transparent covers", "thermal fixtures"]
|
||||
},
|
||||
{
|
||||
"id": "PEEK-FDM",
|
||||
"name": "PEEK (Polyether Ether Ketone) — FDM",
|
||||
"family": "ultra_high_performance", "processes": ["FDM"],
|
||||
"mechanical": { "UTS_min": 90, "UTS_max": 105, "E_min": 3.5, "E_max": 4.2, "elongation_min": 30, "elongation_max": 50, "anisotropy_Z_factor": 0.70 },
|
||||
"thermal": { "HDT_min": 250, "HDT_max": 260, "T_max_service": 240 },
|
||||
"surface_roughness": {
|
||||
"side_XY": { "Ra_min": 15, "Ra_max": 40 },
|
||||
"Ra_asbuilt_typical": 25,
|
||||
"postprocess_achievable": {
|
||||
"machining_CNC": { "Ra_min": 0.4, "Ra_max": 1.6 }
|
||||
}
|
||||
},
|
||||
"flags": { "biocompatible": true, "biocompat_standards": ["ISO 10993", "USP Class VI"], "uv_resistant": true, "predry_required": true, "predry_conditions": "120°C / 4h", "enclosure_required": true, "enclosure_temp_min": 90, "nozzle_allMetal_required": true, "supports_needed": true },
|
||||
"chemical_resistance": { "general": "excellent" },
|
||||
"cost_relative": 30, "cost_EUR_per_kg": "200–400", "print_difficulty": "extreme",
|
||||
"variants": ["CF-PEEK (+30% E, -ductility)"],
|
||||
"applications": ["medical", "aerospace", "high-temperature chemical", "spinal implants"],
|
||||
"warnings": ["all-metal hot end mandatory (no PTFE >260°C)", "slow cooling inside enclosure"]
|
||||
},
|
||||
{
|
||||
"id": "TPU-FDM",
|
||||
"name": "TPU / TPE elastomers — FDM",
|
||||
"family": "flexible_fdm", "processes": ["FDM"],
|
||||
"mechanical": { "UTS_min": 10, "UTS_max": 40, "elongation_min": 300, "elongation_max": 600 },
|
||||
"thermal": { "HDT_min": 70, "HDT_max": 85, "T_max_service": 75 },
|
||||
"shore": { "min": 85, "max": 98, "scale": "A" },
|
||||
"surface_roughness": {
|
||||
"side_XY": { "Ra_min": 15, "Ra_max": 35 },
|
||||
"Ra_asbuilt_typical": 22
|
||||
},
|
||||
"flags": { "flexible": true, "predry_required": false, "enclosure_required": false, "direct_drive_recommended": true, "supports_needed": true },
|
||||
"cost_relative": 2.0, "print_difficulty": "moderate",
|
||||
"warnings": ["reduced or zero retraction with direct drive", "bowden extruder: severe underextrusion", "slow printing (20–35 mm/s max perimeters)"]
|
||||
},
|
||||
{
|
||||
"id": "CF-short-FDM",
|
||||
"name": "Short-fiber composites — PA-CF, PETG-CF, PC-CF",
|
||||
"family": "composite_fdm", "processes": ["FDM"],
|
||||
"mechanical": { "UTS_note": "+20–40% vs base polymer", "E_note": "+30–60% vs base polymer", "elongation_note": "reduced — more brittle" },
|
||||
"surface_roughness": {
|
||||
"side_XY": { "Ra_min": 15, "Ra_max": 45 },
|
||||
"Ra_asbuilt_typical": 30
|
||||
},
|
||||
"flags": { "hardened_nozzle_required": true, "predry_required": "depends on base polymer", "enclosure_required": "depends on base polymer" },
|
||||
"cost_relative": 2.5, "print_difficulty": "moderate-difficult",
|
||||
"warnings": ["brass nozzles wear out within a few hours — hardened steel or ruby nozzle mandatory"]
|
||||
},
|
||||
{
|
||||
"id": "Onyx-ContinuousFiber",
|
||||
"name": "Onyx + Continuous Fiber — Markforged",
|
||||
"family": "composite_continuous_fiber", "processes": ["FDM-Markforged"],
|
||||
"mechanical": { "UTS_max_CF": 800, "E_max_CF_GPa": 70, "UTS_onyx": 30, "note": "Continuous CF oriented along load direction" },
|
||||
"thermal": { "T_max_service": 105 },
|
||||
"surface_roughness": { "side_XY": { "Ra_min": 10, "Ra_max": 25 }, "Ra_asbuilt_typical": 20 },
|
||||
"flags": { "markforged_only": true, "enclosure_required": true },
|
||||
"reinforcement_options": ["Carbon Fiber", "Kevlar", "HSHT Fiberglass"],
|
||||
"cost_relative": 8, "print_difficulty": "moderate (dedicated machine)",
|
||||
"applications": ["structural aluminum replacement", "fixtures", "tooling", "robot end-effectors"],
|
||||
"warnings": ["Markforged machines only", "not repairable with standard FDM"]
|
||||
},
|
||||
{
|
||||
"id": "PA12-SLS",
|
||||
"name": "PA12 SLS (EOS PA2200, Duraform PA)",
|
||||
"family": "sls_powder", "processes": ["SLS"],
|
||||
"mechanical": { "UTS_min": 45, "UTS_max": 50, "E_min": 1.7, "E_max": 1.9, "elongation_min": 18, "elongation_max": 23, "anisotropy_Z_factor": 0.90 },
|
||||
"thermal": { "HDT_min": 163, "HDT_max": 163, "T_max_service": 150 },
|
||||
"surface_roughness": {
|
||||
"top_surface": { "Ra_min": 6, "Ra_max": 12 },
|
||||
"side_XY": { "Ra_min": 8, "Ra_max": 15 },
|
||||
"down_facing": { "Ra_min": 8, "Ra_max": 18, "note": "SLS: no support interface" },
|
||||
"Ra_asbuilt_typical": 10,
|
||||
"postprocess_achievable": {
|
||||
"bead_blast": { "Ra_min": 4, "Ra_max": 8 },
|
||||
"vibratory": { "Ra_min": 2, "Ra_max": 5 },
|
||||
"SLS_coating": { "Ra_min": 3, "Ra_max": 6 },
|
||||
"machining": { "Ra_min": 0.4,"Ra_max": 1.6 }
|
||||
}
|
||||
},
|
||||
"fatigue": {
|
||||
"fatigue_limit_asbuilt_min": 18, "fatigue_limit_asbuilt_max": 25,
|
||||
"fatigue_reference_cycles": "10^6, R=0.1",
|
||||
"fatigue_anisotropy_Z_XY_asbuilt": 0.92,
|
||||
"note": "Polymer with the best fatigue behavior among AM processes. Moisture-sensitive: store at humidity < 50% RH. Over-aged powder reduces elongation and fatigue."
|
||||
},
|
||||
"flags": { "supports_needed": false, "isotropic": true, "predry_required": false },
|
||||
"chemical_resistance": { "fuels": "excellent", "oils": "excellent", "acids_dilute": "good" },
|
||||
"shrinkage": { "min": 3.0, "max": 4.0, "axis_note": "isotropic ~3.5% XY and Z" },
|
||||
"accuracy": "±0.3mm", "cost_relative": 5,
|
||||
"applications": ["functional parts", "complex geometries", "series 10–200 pcs", "prosthetics"],
|
||||
"warnings": ["shrinkage 3.5–4% — compensate in CAD", "recycled powder max 50%"],
|
||||
"postprocessing_sequence": ["breakout + cleaning (compressed air + blasting)", "standard bead blast", "dyeing if color is required", "coating if sealing is required"]
|
||||
},
|
||||
{
|
||||
"id": "PA12-MJF",
|
||||
"name": "PA12 MJF (HP Multi Jet Fusion)",
|
||||
"family": "mjf_powder", "processes": ["MJF"],
|
||||
"mechanical": { "UTS_min": 48, "UTS_max": 53, "E_min": 1.8, "E_max": 2.0, "elongation_min": 15, "elongation_max": 20, "anisotropy_Z_factor": 0.92 },
|
||||
"thermal": { "HDT_min": 163, "HDT_max": 165, "T_max_service": 150 },
|
||||
"surface_roughness": {
|
||||
"top_surface": { "Ra_min": 5, "Ra_max": 10 },
|
||||
"side_XY": { "Ra_min": 6, "Ra_max": 12 },
|
||||
"Ra_asbuilt_typical": 8,
|
||||
"postprocess_achievable": {
|
||||
"bead_blast": { "Ra_min": 3, "Ra_max": 7 },
|
||||
"vibratory": { "Ra_min": 2, "Ra_max": 4 }
|
||||
}
|
||||
},
|
||||
"flags": { "supports_needed": false, "color_available": true, "color_note": "Full color HP MJF 5200" },
|
||||
"shrinkage": { "min": 3.0, "max": 4.0 },
|
||||
"accuracy": "±0.2–0.3mm", "cost_relative": 5,
|
||||
"packing_density_optimal": "8–12%",
|
||||
"applications": ["medium-volume production", "colored parts", "series 50–500 pcs"]
|
||||
},
|
||||
{
|
||||
"id": "PA11-SLS",
|
||||
"name": "PA11 SLS",
|
||||
"family": "sls_powder", "processes": ["SLS"],
|
||||
"mechanical": { "UTS_min": 48, "UTS_max": 53, "E_min": 1.6, "E_max": 1.8, "elongation_min": 40, "elongation_max": 50, "anisotropy_Z_factor": 0.90 },
|
||||
"thermal": { "T_max_service": 120 },
|
||||
"surface_roughness": {
|
||||
"side_XY": { "Ra_min": 8, "Ra_max": 16 },
|
||||
"Ra_asbuilt_typical": 11
|
||||
},
|
||||
"flags": { "supports_needed": false, "bio_based": true, "bio_based_source": "castor oil" },
|
||||
"shrinkage": { "min": 2.5, "max": 3.5 }, "cost_relative": 6,
|
||||
"applications": ["automotive components", "high-impact parts", "prosthetics and orthotics"],
|
||||
"notes": "Prefer over PA12 when: elongation >30% is required, repeated impacts, presence of notches"
|
||||
},
|
||||
{
|
||||
"id": "PA12-CF-SLS",
|
||||
"name": "PA12-CF / PA12-GF SLS",
|
||||
"family": "sls_powder_composite", "processes": ["SLS"],
|
||||
"mechanical": { "UTS_min": 50, "UTS_max": 55, "E_min": 3.5, "E_max": 4.5, "elongation_min": 5, "elongation_max": 10 },
|
||||
"thermal": { "HDT_min": 180, "HDT_max": 200, "T_max_service": 175 },
|
||||
"surface_roughness": { "side_XY": { "Ra_min": 9, "Ra_max": 18 }, "Ra_asbuilt_typical": 12 },
|
||||
"flags": { "supports_needed": false },
|
||||
"cost_relative": 7,
|
||||
"applications": ["rigid structural parts", "elevated temperature", "technical housings"]
|
||||
},
|
||||
{
|
||||
"id": "TPU-SLS",
|
||||
"name": "TPU SLS (BASF Ultrasint TPU)",
|
||||
"family": "sls_flexible", "processes": ["SLS"],
|
||||
"mechanical": { "UTS_min": 8, "UTS_max": 12, "elongation_min": 350, "elongation_max": 500 },
|
||||
"shore": { "min": 88, "max": 92, "scale": "A" },
|
||||
"surface_roughness": { "side_XY": { "Ra_min": 8, "Ra_max": 16 }, "Ra_asbuilt_typical": 12 },
|
||||
"flags": { "supports_needed": false, "flexible": true },
|
||||
"cost_relative": 8,
|
||||
"applications": ["shoe soles", "dampers", "flexible seals", "functional lattice"]
|
||||
},
|
||||
{
|
||||
"id": "Resin-Standard",
|
||||
"name": "Standard ABS-like Resin — SLA/DLP",
|
||||
"family": "resin_standard", "processes": ["SLA", "DLP", "MSLA"],
|
||||
"mechanical": { "UTS_min": 50, "UTS_max": 70, "E_min": 2.5, "E_max": 3.5, "elongation_min": 5, "elongation_max": 15 },
|
||||
"thermal": { "HDT_min": 55, "HDT_max": 70, "T_max_service": 55 },
|
||||
"surface_roughness": {
|
||||
"top_surface": { "Ra_min": 1.0, "Ra_max": 3.0 },
|
||||
"side_XY": { "Ra_min": 2.0, "Ra_max": 6.0, "note": "visible stair-stepping with layer >50µm" },
|
||||
"down_facing": { "Ra_min": 3.0, "Ra_max": 8.0, "note": "touchpoint marks from supports" },
|
||||
"Ra_asbuilt_typical": 3,
|
||||
"postprocess_achievable": {
|
||||
"sanding_800": { "Ra_min": 0.4, "Ra_max": 1.0 },
|
||||
"polish": { "Ra_min": 0.05,"Ra_max": 0.2 }
|
||||
}
|
||||
},
|
||||
"flags": { "supports_needed": true, "post_cure_required": true, "IPA_wash_required": true, "uv_resistant": false },
|
||||
"shrinkage": { "min": 0.1, "max": 0.3 }, "accuracy": "±0.1–0.15mm",
|
||||
"cost_relative": 2, "print_difficulty": "easy",
|
||||
"warnings": ["UV photodegradation — outdoor yellowing", "post-cure mandatory for final properties"],
|
||||
"postprocessing_sequence": ["IPA wash 10–15 min", "air drying 5 min", "UV post-curing 900–1200 mJ/cm²", "support removal", "sanding if Ra <2µm is required", "UV-stable clear coat"]
|
||||
},
|
||||
{
|
||||
"id": "Resin-HighTemp",
|
||||
"name": "High-Temp Resin — SLA/DLP",
|
||||
"family": "resin_hightemp", "processes": ["SLA", "DLP"],
|
||||
"mechanical": { "UTS_min": 60, "UTS_max": 80, "elongation_min": 2, "elongation_max": 6 },
|
||||
"thermal": { "HDT_min": 160, "HDT_max": 280, "T_max_service": 160 },
|
||||
"surface_roughness": { "side_XY": { "Ra_min": 2, "Ra_max": 6 }, "Ra_asbuilt_typical": 3 },
|
||||
"flags": { "supports_needed": true, "post_cure_required": true, "brittle": true },
|
||||
"cost_relative": 5,
|
||||
"applications": ["small-series injection molds", "process fixtures", "aerodynamic testing"]
|
||||
},
|
||||
{
|
||||
"id": "Resin-Flexible",
|
||||
"name": "Flexible/Elastic Resin — SLA/DLP",
|
||||
"family": "resin_flexible", "processes": ["SLA", "DLP"],
|
||||
"shore": { "min": 40, "max": 80, "scale": "A" },
|
||||
"surface_roughness": { "side_XY": { "Ra_min": 2, "Ra_max": 8 }, "Ra_asbuilt_typical": 4 },
|
||||
"flags": { "supports_needed": true, "post_cure_required": true, "flexible": true },
|
||||
"cost_relative": 3,
|
||||
"warnings": ["mechanical properties lower than TPU SLS"]
|
||||
},
|
||||
{
|
||||
"id": "Resin-Dental-Medical",
|
||||
"name": "Dental/Medical Resin — SLA/DLP",
|
||||
"family": "resin_medical", "processes": ["SLA", "DLP"],
|
||||
"mechanical": { "UTS_min": 60, "UTS_max": 80 },
|
||||
"surface_roughness": { "side_XY": { "Ra_min": 1, "Ra_max": 4 }, "Ra_asbuilt_typical": 2 },
|
||||
"flags": { "biocompatible": true, "biocompat_standards": ["ISO 10993", "class IIa/IIb"], "supports_needed": true, "post_cure_required": true },
|
||||
"cost_relative": 8,
|
||||
"applications": ["anatomical models", "surgical guides", "aligners", "temporary devices"]
|
||||
},
|
||||
{
|
||||
"id": "Resin-Ceramic",
|
||||
"name": "Ceramic Resin Alumina/Zirconia — SLA/DLP",
|
||||
"family": "ceramic_vat", "processes": ["SLA", "DLP"],
|
||||
"mechanical": { "UTS_min": 200, "UTS_max": 600, "note": "after sintering" },
|
||||
"surface_roughness": {
|
||||
"Ra_asbuilt_typical": 2,
|
||||
"postprocess_achievable": {
|
||||
"after_sintering": { "Ra_min": 0.5, "Ra_max": 3 },
|
||||
"after_grinding": { "Ra_min": 0.05,"Ra_max": 0.4 }
|
||||
}
|
||||
},
|
||||
"flags": { "biocompatible": true, "supports_needed": true, "multi_step_process": true },
|
||||
"shrinkage": { "min": 20, "max": 25, "note": "ALWAYS COMPENSATE IN CAD" },
|
||||
"cost_relative": 15,
|
||||
"applications": ["zirconia dental prosthetics", "technical alumina components", "ceramic insulators"],
|
||||
"warnings": ["shrinkage 20–25% — compensation in CAD is mandatory", "multi-step process: print → debinding → sintering"],
|
||||
"postprocessing_sequence": ["IPA wash", "UV post-cure", "debinding 200–600°C ramp 1–5°C/min", "pre-sintering 1000°C/2h", "sintering 1450–1600°C/2h", "optional HIP", "grinding/lapping functional surfaces"]
|
||||
}
|
||||
],
|
||||
|
||||
"metals": [
|
||||
{
|
||||
"id": "AlSi10Mg",
|
||||
"name": "AlSi10Mg",
|
||||
"family": "aluminum_alloy", "processes": ["LPBF"],
|
||||
"mechanical": {
|
||||
"UTS_asbuilt_min": 400, "UTS_asbuilt_max": 470,
|
||||
"UTS_SR_min": 350, "UTS_SR_max": 420,
|
||||
"YS_min": 240, "YS_max": 280, "E_min": 70, "E_max": 75,
|
||||
"elongation_min": 6, "elongation_max": 11, "anisotropy_Z_factor": 0.85
|
||||
},
|
||||
"thermal": { "T_max_service": 150 }, "density": 2.68,
|
||||
"surface_roughness": {
|
||||
"top_surface": { "Ra_min": 5, "Ra_max": 15 },
|
||||
"side_XY": { "Ra_min": 8, "Ra_max": 20 },
|
||||
"down_facing": { "Ra_min": 15, "Ra_max": 35 },
|
||||
"Ra_asbuilt_typical": 12,
|
||||
"postprocess_achievable": {
|
||||
"bead_blast": { "Ra_min": 4, "Ra_max": 8 },
|
||||
"vibratory": { "Ra_min": 2, "Ra_max": 5 },
|
||||
"shot_peen": { "Ra_min": 3, "Ra_max": 7, "note": "introduces compressive stress — improves fatigue" },
|
||||
"machining": { "Ra_min": 0.4, "Ra_max": 1.6 },
|
||||
"electropolish": { "Ra_min": 0.5, "Ra_max": 2.0, "note": "variable results on Al" },
|
||||
"anodizing": { "note": "does not change Ra — protection and color" }
|
||||
}
|
||||
},
|
||||
"flags": { "biocompatible": false, "supports_needed": true },
|
||||
"accuracy": "±0.05–0.1mm", "shrinkage": { "min": 0.3, "max": 0.5 }, "build_atmosphere": "Nitrogen",
|
||||
"heat_treatment": {
|
||||
"stress_relief": { "temp_C": 300, "time_h": 2, "atmosphere": "air or argon", "mandatory": true, "timing": "BEFORE removal from build plate" },
|
||||
"T6": { "mandatory": false, "note": "improves ductility" }
|
||||
},
|
||||
"fatigue": {
|
||||
"fatigue_limit_asbuilt_min": 90, "fatigue_limit_asbuilt_max": 130,
|
||||
"fatigue_limit_HIP_machined_min": 120, "fatigue_limit_HIP_machined_max": 170,
|
||||
"fatigue_limit_reference_forged_6061T6": 100,
|
||||
"fatigue_anisotropy_Z_XY_asbuilt": 0.60,
|
||||
"fatigue_anisotropy_Z_XY_HIP": 0.90,
|
||||
"Kf_asbuilt_side_Ra15_20": 1.7,
|
||||
"shot_peen_improvement_pct": "15–25",
|
||||
"note": "Very sensitive to porosity and powder humidity. With HIP it approaches forged 6061-T6 performance."
|
||||
},
|
||||
"machinability": "excellent", "cost_relative": 3,
|
||||
"applications": ["lightweight structural parts", "housings", "aero/auto brackets", "heat sinks", "manifolds"],
|
||||
"warnings": ["no applications >150°C", "stress relief before build plate removal — critical"],
|
||||
"postprocessing_sequence": ["stress relief 300°C/2h", "build plate removal (EDM/saw)", "support removal", "machining critical surfaces", "surface finishing", "anodizing if required"]
|
||||
},
|
||||
{
|
||||
"id": "Scalmalloy",
|
||||
"name": "Scalmalloy® (AlMgScZr)",
|
||||
"family": "aluminum_advanced", "processes": ["LPBF"],
|
||||
"mechanical": { "UTS_min": 520, "UTS_max": 540, "YS_min": 470, "YS_max": 490, "elongation_min": 13, "elongation_max": 16 },
|
||||
"density": 2.67,
|
||||
"surface_roughness": { "side_XY": { "Ra_min": 8, "Ra_max": 20 }, "Ra_asbuilt_typical": 12 },
|
||||
"flags": { "supports_needed": true },
|
||||
"heat_treatment": { "T6": { "mandatory": true } },
|
||||
"cost_relative": 12, "cost_note": "~3–5× AlSi10Mg",
|
||||
"applications": ["high-performance structural parts for aero/motorsport/UAV"],
|
||||
"warnings": ["very high cost — justify with performance analysis"]
|
||||
},
|
||||
{
|
||||
"id": "Ti-6Al-4V",
|
||||
"name": "Ti-6Al-4V Grade 23 (ELI)",
|
||||
"family": "titanium_alloy", "processes": ["LPBF", "EBM"],
|
||||
"mechanical": {
|
||||
"UTS_LPBF_min": 900, "UTS_LPBF_max": 1100,
|
||||
"UTS_EBM_min": 830, "UTS_EBM_max": 1000,
|
||||
"YS_min": 800, "YS_max": 1000, "E_min": 110, "E_max": 120,
|
||||
"elongation_min": 8, "elongation_max": 15, "anisotropy_Z_factor": 0.88
|
||||
},
|
||||
"thermal": { "T_max_service": 315 }, "density": 4.43,
|
||||
"surface_roughness": {
|
||||
"top_surface": { "Ra_min": 5, "Ra_max": 15 },
|
||||
"side_XY": { "Ra_min": 8, "Ra_max": 20 },
|
||||
"down_facing": { "Ra_min": 20, "Ra_max": 40 },
|
||||
"Ra_asbuilt_typical": 14,
|
||||
"postprocess_achievable": {
|
||||
"machining": { "Ra_min": 0.4, "Ra_max": 1.6 },
|
||||
"electropolish": { "Ra_min": 0.5, "Ra_max": 2.0 },
|
||||
"shot_peen": { "Ra_min": 3, "Ra_max": 8 },
|
||||
"machining_surgical": { "Ra_min": 0.2, "Ra_max": 0.8, "note": "implant surgical surfaces" }
|
||||
}
|
||||
},
|
||||
"flags": { "biocompatible": true, "biocompat_standards": ["ISO 10993"], "supports_needed": true },
|
||||
"accuracy": "±0.05–0.1mm", "shrinkage": { "min": 0.2, "max": 0.4 }, "build_atmosphere": "Argon",
|
||||
"heat_treatment": {
|
||||
"stress_relief": { "temp_C": 650, "time_h": 3, "atmosphere": "vacuum or argon", "mandatory": true },
|
||||
"HIP": { "temp_C": 900, "pressure_MPa": 150, "time_h": 3, "mandatory_for": "biomedical, fatigue-critical" },
|
||||
"annealing": { "temp_C": 790, "time_h": 2, "mandatory": false }
|
||||
},
|
||||
"fatigue": {
|
||||
"fatigue_limit_asbuilt_min": 200, "fatigue_limit_asbuilt_max": 320,
|
||||
"fatigue_limit_HIP_machined_min": 400, "fatigue_limit_HIP_machined_max": 550,
|
||||
"fatigue_limit_reference_forged": 650,
|
||||
"fatigue_anisotropy_Z_XY_asbuilt": 0.67,
|
||||
"fatigue_anisotropy_Z_XY_HIP": 0.95,
|
||||
"Kf_asbuilt_side_Ra15_20": 2.1,
|
||||
"shot_peen_improvement_pct": "20–40",
|
||||
"note": "Huge as-built scatter (±30%). HIP + machining brings performance close to forged. For biomedical implants: HIP is mandatory."
|
||||
},
|
||||
"cost_relative": 8,
|
||||
"applications": ["orthopedic implants", "aerospace hot section", "lightweight racing structures"],
|
||||
"warnings": ["HIP mandatory for implants", "stress relief critical before support removal"],
|
||||
"postprocessing_sequence": ["stress relief 650°C/3h/vacuum", "build plate removal (EDM)", "support removal", "HIP for biomedical/fatigue-critical", "machining functional surfaces", "electropolish or passivation", "CT scan inspection (implants)"]
|
||||
},
|
||||
{
|
||||
"id": "316L",
|
||||
"name": "316L Stainless Steel",
|
||||
"family": "stainless_steel", "processes": ["LPBF", "BJT"],
|
||||
"mechanical": {
|
||||
"UTS_LPBF_min": 550, "UTS_LPBF_max": 640,
|
||||
"UTS_BJT_min": 480, "UTS_BJT_max": 540,
|
||||
"YS_min": 400, "YS_max": 460, "E_min": 193, "E_max": 200,
|
||||
"elongation_min": 40, "elongation_max": 50
|
||||
},
|
||||
"density": 7.99,
|
||||
"surface_roughness": {
|
||||
"side_XY": { "Ra_min": 8, "Ra_max": 20 },
|
||||
"Ra_asbuilt_typical": 12,
|
||||
"postprocess_achievable": {
|
||||
"machining": { "Ra_min": 0.4, "Ra_max": 1.6 },
|
||||
"electropolish": { "Ra_min": 0.2, "Ra_max": 0.8, "note": "excellent on 316L — food/medical standard" },
|
||||
"shot_peen": { "Ra_min": 3, "Ra_max": 6 },
|
||||
"passivation": { "note": "does not change Ra — protects against corrosion" }
|
||||
}
|
||||
},
|
||||
"flags": { "biocompatible": true, "supports_needed": true, "BJT_no_supports": true },
|
||||
"accuracy_LPBF": "±0.05–0.1mm", "accuracy_BJT": "±0.3–0.5mm post-sinter",
|
||||
"shrinkage_LPBF": { "min": 0.2, "max": 0.3 },
|
||||
"shrinkage_BJT": { "min": 18, "max": 22, "note": "sintering — compensate in CAD" },
|
||||
"build_atmosphere": "Nitrogen or Argon",
|
||||
"heat_treatment": {
|
||||
"stress_relief": { "temp_C": 1000, "time_h": 1.5, "atmosphere": "vacuum", "mandatory": false },
|
||||
"solution_anneal": { "temp_C": 1050, "time_h": 1, "note": "if maximum corrosion resistance is required" }
|
||||
},
|
||||
"fatigue": {
|
||||
"fatigue_limit_asbuilt_min": 180, "fatigue_limit_asbuilt_max": 220,
|
||||
"fatigue_limit_HIP_machined_min": 220, "fatigue_limit_HIP_machined_max": 260,
|
||||
"fatigue_limit_reference_forged": 220,
|
||||
"fatigue_anisotropy_Z_XY_asbuilt": 0.80,
|
||||
"fatigue_anisotropy_Z_XY_HIP": 0.96,
|
||||
"Kf_asbuilt_side_Ra15_20": 1.6,
|
||||
"shot_peen_improvement_pct": "15–25",
|
||||
"note": "As-built fatigue is almost comparable to forged material — ductile and defect-tolerant alloy. BJT: fatigue data not available, not recommended for fatigue-critical applications without HIP."
|
||||
},
|
||||
"cost_relative": 4,
|
||||
"applications": ["medical", "food-contact", "chemical", "marine"],
|
||||
"notes": "BJT is cheaper for volumes >50 pcs — looser tolerances"
|
||||
},
|
||||
{
|
||||
"id": "17-4PH",
|
||||
"name": "17-4PH (AISI 630)",
|
||||
"family": "stainless_steel_ph", "processes": ["LPBF", "BJT"],
|
||||
"mechanical": {
|
||||
"UTS_min": 1000, "UTS_max": 1300, "UTS_condition": "H900",
|
||||
"YS_min": 950, "YS_max": 1200, "elongation_min": 5, "elongation_max": 12
|
||||
},
|
||||
"density": 7.78,
|
||||
"surface_roughness": {
|
||||
"side_XY": { "Ra_min": 8, "Ra_max": 20 }, "Ra_asbuilt_typical": 12,
|
||||
"postprocess_achievable": {
|
||||
"machining": { "Ra_min": 0.4, "Ra_max": 1.6 },
|
||||
"grinding": { "Ra_min": 0.1, "Ra_max": 0.4 }
|
||||
}
|
||||
},
|
||||
"flags": { "supports_needed": true },
|
||||
"heat_treatment": {
|
||||
"solution_anneal": { "temp_C": 1040, "time_h": 1, "atmosphere": "vacuum" },
|
||||
"aging_H900": { "temp_C": 480, "time_h": 1, "atmosphere": "air", "mandatory": true, "warning": "MANDATORY — without aging, properties are ~40% of H900 values" }
|
||||
},
|
||||
"fatigue": {
|
||||
"fatigue_limit_H900_min": 350, "fatigue_limit_H900_max": 430,
|
||||
"fatigue_limit_reference_forged_H900": 450,
|
||||
"fatigue_anisotropy_Z_XY_asbuilt": 0.75,
|
||||
"Kf_asbuilt_side_Ra15_20": 1.7,
|
||||
"shot_peen_improvement_pct": "15–25",
|
||||
"note": "Fatigue data available only in H900 condition (aging mandatory). As-built is not an option for fatigue."
|
||||
},
|
||||
"cost_relative": 5,
|
||||
"applications": ["loaded structural parts", "molds", "tooling", "aerospace", "marine hardware"],
|
||||
"warnings": ["aging H900 is mandatory — never omit it"],
|
||||
"postprocessing_sequence": ["stress relief", "build plate + support removal", "solution anneal 1040°C/1h", "aging H900 480°C/1h/air", "machining", "grinding if Ra <0.4µm"]
|
||||
},
|
||||
{
|
||||
"id": "IN625",
|
||||
"name": "Inconel 625",
|
||||
"family": "nickel_superalloy", "processes": ["LPBF"],
|
||||
"mechanical": { "UTS_min": 900, "UTS_max": 1000, "YS_min": 600, "YS_max": 700, "elongation_min": 30, "elongation_max": 40 },
|
||||
"thermal": { "T_max_service": 980 }, "density": 8.44,
|
||||
"surface_roughness": {
|
||||
"side_XY": { "Ra_min": 10, "Ra_max": 25 }, "Ra_asbuilt_typical": 15,
|
||||
"postprocess_achievable": {
|
||||
"machining": { "Ra_min": 0.4, "Ra_max": 1.6 },
|
||||
"electropolish": { "Ra_min": 0.5, "Ra_max": 2.0 }
|
||||
}
|
||||
},
|
||||
"flags": { "supports_needed": true }, "build_atmosphere": "Argon",
|
||||
"heat_treatment": { "stress_relief": { "temp_C": 1050, "time_h": 2, "atmosphere": "vacuum", "mandatory": true } },
|
||||
"fatigue": {
|
||||
"fatigue_limit_asbuilt_min": 280, "fatigue_limit_asbuilt_max": 380,
|
||||
"fatigue_anisotropy_Z_XY_asbuilt": 0.72,
|
||||
"Kf_asbuilt_side_Ra15_20": 1.7,
|
||||
"note": "Relatively limited data in the literature. Use with safety margin >= 2.0 for critical applications."
|
||||
},
|
||||
"cost_relative": 10,
|
||||
"applications": ["offshore chemical", "oil&gas", "engine cold sections", "marine"]
|
||||
},
|
||||
{
|
||||
"id": "IN718",
|
||||
"name": "Inconel 718",
|
||||
"family": "nickel_superalloy", "processes": ["LPBF"],
|
||||
"mechanical": {
|
||||
"UTS_min": 1000, "UTS_max": 1300, "UTS_condition": "full HT",
|
||||
"YS_min": 900, "YS_max": 1100, "elongation_min": 10, "elongation_max": 20
|
||||
},
|
||||
"thermal": { "T_max_service": 700 }, "density": 8.19,
|
||||
"surface_roughness": {
|
||||
"side_XY": { "Ra_min": 10, "Ra_max": 25 }, "Ra_asbuilt_typical": 16,
|
||||
"postprocess_achievable": {
|
||||
"machining": { "Ra_min": 0.4, "Ra_max": 1.6 },
|
||||
"grinding": { "Ra_min": 0.1, "Ra_max": 0.4 }
|
||||
}
|
||||
},
|
||||
"flags": { "supports_needed": true }, "build_atmosphere": "Argon",
|
||||
"heat_treatment": {
|
||||
"solution_anneal": { "temp_C": 1065, "time_h": 1, "atmosphere": "vacuum" },
|
||||
"aging_step1": { "temp_C": 720, "time_h": 8, "atmosphere": "vacuum" },
|
||||
"aging_step2": { "temp_C": 620, "time_h": 8, "atmosphere": "vacuum" },
|
||||
"mandatory": true,
|
||||
"warning": "MANDATORY — without full cycle, properties are ~50% of final values. Plan with a qualified supplier."
|
||||
},
|
||||
"fatigue": {
|
||||
"fatigue_limit_fullHT_min": 350, "fatigue_limit_fullHT_max": 450,
|
||||
"fatigue_limit_reference_forged": 500,
|
||||
"fatigue_anisotropy_Z_XY_asbuilt": 0.72,
|
||||
"Kf_asbuilt_side_Ra15_20": 1.8,
|
||||
"shot_peen_improvement_pct": "15–25",
|
||||
"note": "Fatigue data available only after complete HT cycle (solution anneal + double aging). As-built: do not qualify for fatigue without HT."
|
||||
},
|
||||
"cost_relative": 12,
|
||||
"applications": ["turbines", "aerospace hot section", "high-temperature fatigue parts"],
|
||||
"warnings": ["complex and certified heat treatment — plan in advance"]
|
||||
},
|
||||
{
|
||||
"id": "CoCr",
|
||||
"name": "CoCr MP1/SP2",
|
||||
"family": "cobalt_chrome", "processes": ["LPBF", "EBM"],
|
||||
"mechanical": { "UTS_min": 1000, "UTS_max": 1200, "hardness_HRC_min": 35, "hardness_HRC_max": 45 },
|
||||
"density": 8.3,
|
||||
"surface_roughness": {
|
||||
"side_XY": { "Ra_min": 10, "Ra_max": 22 }, "Ra_asbuilt_typical": 14,
|
||||
"postprocess_achievable": {
|
||||
"machining": { "Ra_min": 0.4, "Ra_max": 1.6 },
|
||||
"polishing": { "Ra_min": 0.05,"Ra_max": 0.2, "note": "dental prosthetics — mirror finish" }
|
||||
}
|
||||
},
|
||||
"flags": { "biocompatible": true, "biocompat_standards": ["ISO 10993"], "supports_needed": true }, "build_atmosphere": "Argon",
|
||||
"heat_treatment": { "stress_relief": { "mandatory": true }, "HIP": { "mandatory_for": "biomedical implants" } },
|
||||
"fatigue": {
|
||||
"fatigue_limit_asbuilt_min": 500, "fatigue_limit_asbuilt_max": 600,
|
||||
"fatigue_anisotropy_Z_XY_asbuilt": 0.78,
|
||||
"Kf_asbuilt_side_Ra15_20": 1.7,
|
||||
"note": "Excellent fatigue performance for biomedical applications. HIP mandatory for implants. High UTS -> very favorable fatigue life."
|
||||
},
|
||||
"machinability": "difficult — design near-net shape", "cost_relative": 9,
|
||||
"applications": ["dental prosthetics", "orthopedic implants", "cutting tools"],
|
||||
"warnings": ["very difficult to machine post-print — minimize material removal in CAD"]
|
||||
},
|
||||
{
|
||||
"id": "Cu-pure",
|
||||
"name": "Pure copper (Cu)",
|
||||
"family": "copper", "processes": ["LPBF-green", "LPBF-blue"],
|
||||
"mechanical": { "UTS_min": 200, "UTS_max": 280, "elongation_min": 25, "elongation_max": 45 },
|
||||
"density": 8.96, "electrical_conductivity_IACS_min": 95, "thermal_conductivity_Wm_K": 380,
|
||||
"surface_roughness": { "side_XY": { "Ra_min": 10, "Ra_max": 25 }, "Ra_asbuilt_typical": 15 },
|
||||
"flags": { "supports_needed": true, "green_blue_laser_only": true },
|
||||
"cost_relative": 7,
|
||||
"applications": ["inductors", "heat exchangers", "bus bars", "electronic components"],
|
||||
"warnings": ["requires green 515nm or blue 450nm laser — IR lasers are inadequate", "not all service providers offer this technology"]
|
||||
}
|
||||
],
|
||||
|
||||
"selection_guides": {
|
||||
"by_Ra_target": {
|
||||
"Ra_less_0p4": { "label": "Ra <0.4 µm", "use_cases": "O-ring seats, seals, H6/h6 precision fits", "strategy": "any AM process + post-machining grinding/lapping" },
|
||||
"Ra_0p4_to_1p6": { "label": "Ra 0.4–1.6 µm", "use_cases": "functional mechanical surfaces, sliding fits", "strategy": "LPBF/SLS/SLA + CNC machining. SLA as-built + sanding 800." },
|
||||
"Ra_1p6_to_3p2": { "label": "Ra 1.6–3.2 µm", "use_cases": "semi-finished surfaces, non-critical inner surfaces", "strategy": "SLA as-built. LPBF + vibratory or electropolish. SLS + vibratory." },
|
||||
"Ra_3p2_to_6p3": { "label": "Ra 3.2–6.3 µm", "use_cases": "non-critical functional surfaces, inner walls", "strategy": "SLS/MJF + bead blast. LPBF + bead blast. Optimized FDM top surface." },
|
||||
"Ra_6p3_to_12p7":{ "label": "Ra 6.3–12.7 µm","use_cases": "non-functional surfaces, internal parts, prototypes", "strategy": "FDM side surfaces. SLS as-built. LPBF as-built." },
|
||||
"Ra_greater_12p7":{"label": "Ra >12.7 µm", "use_cases": "rough aesthetic parts, non-critical", "strategy": "FDM side/down-facing as-built." }
|
||||
},
|
||||
"by_temperature": [
|
||||
{ "T_max_C": 55, "materials": ["PLA", "Resin-Standard", "Resin-Flexible", "TPU-FDM"] },
|
||||
{ "T_max_C": 80, "materials": ["PETG", "TPU-FDM"] },
|
||||
{ "T_max_C": 100, "materials": ["ABS", "ASA"] },
|
||||
{ "T_max_C": 120, "materials": ["PA12-FDM", "PA11-SLS"] },
|
||||
{ "T_max_C": 150, "materials": ["PC", "PA12-SLS", "PA12-MJF"] },
|
||||
{ "T_max_C": 175, "materials": ["PA12-CF-SLS"] },
|
||||
{ "T_max_C": 240, "materials": ["PEEK-FDM"] },
|
||||
{ "T_max_C": 315, "materials": ["AlSi10Mg", "Ti-6Al-4V"] },
|
||||
{ "T_max_C": 700, "materials": ["IN718"] },
|
||||
{ "T_max_C": 980, "materials": ["IN625"] }
|
||||
],
|
||||
"by_application": {
|
||||
"biomedical_implants": ["Ti-6Al-4V", "CoCr", "PEEK-FDM"],
|
||||
"dental": ["CoCr", "Resin-Dental-Medical", "Resin-Ceramic"],
|
||||
"aerospace_structural": ["AlSi10Mg", "Scalmalloy", "Ti-6Al-4V", "IN718", "IN625"],
|
||||
"automotive_lightweight": ["AlSi10Mg", "PA12-SLS", "PA12-MJF", "CF-short-FDM", "Onyx-ContinuousFiber"],
|
||||
"chemical_process": ["316L", "IN625", "Ti-6Al-4V"],
|
||||
"tooling_molds": ["17-4PH", "Resin-HighTemp"],
|
||||
"flexible_seals": ["TPU-FDM", "TPU-SLS", "Resin-Flexible"],
|
||||
"heat_exchangers": ["AlSi10Mg", "Cu-pure", "IN625"],
|
||||
"outdoor_UV": ["ASA", "PA12-SLS"],
|
||||
"optical_transparent": ["PC", "Resin-Standard"],
|
||||
"food_contact": ["316L", "PETG"],
|
||||
"structural_replace_Al": ["Onyx-ContinuousFiber", "AlSi10Mg", "PA12-CF-SLS"],
|
||||
"rapid_prototyping": ["PLA", "Resin-Standard", "PA12-MJF"],
|
||||
"functional_prototype": ["PETG", "PA12-SLS", "PA12-MJF", "AlSi10Mg"]
|
||||
},
|
||||
"by_process_availability": {
|
||||
"desktop_FDM_easy": ["PLA", "PETG", "TPU-FDM"],
|
||||
"desktop_FDM_advanced": ["ABS", "ASA", "PA12-FDM", "PC"],
|
||||
"industrial_FDM": ["PEEK-FDM", "CF-short-FDM", "Onyx-ContinuousFiber"],
|
||||
"desktop_resin": ["Resin-Standard", "Resin-Flexible"],
|
||||
"professional_resin": ["Resin-HighTemp", "Resin-Dental-Medical"],
|
||||
"sls_service_bureau": ["PA12-SLS", "PA11-SLS", "PA12-CF-SLS", "TPU-SLS"],
|
||||
"mjf_service_bureau": ["PA12-MJF"],
|
||||
"metal_service_bureau": ["AlSi10Mg", "Ti-6Al-4V", "316L", "17-4PH", "IN625", "IN718", "CoCr"],
|
||||
"specialized_only": ["Scalmalloy", "Cu-pure", "Resin-Ceramic"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
# Metal AM Alloys
|
||||
|
||||
> **Primary database:** `materials-db.json` — contains all structured data (UTS, YS, elongation, density, heat treatment, accuracy, shrinkage, applications, warnings) for all AM metal alloys.
|
||||
> This file provides decision context and critical notes that cannot be structured in JSON.
|
||||
|
||||
## How to use the JSON database for metals
|
||||
|
||||
```
|
||||
To select a metal alloy:
|
||||
1. Filter by T_max_service (e.g. >300°C → titanium or superalloys)
|
||||
2. Filter by process (LPBF / EBM / Binder Jetting)
|
||||
3. Compare strength-to-weight ratio (UTS/density) if weight is critical
|
||||
4. Check biocompatible for medical applications
|
||||
5. Read heat_treatment — complexity and cost impact lead time
|
||||
6. Read warnings — some alloys have mandatory requirements
|
||||
```
|
||||
|
||||
## Critical notes on heat treatment (DO NOT ignore)
|
||||
|
||||
### Heat treatment is part of the process, not optional
|
||||
- **AlSi10Mg:** Stress relief BEFORE removing from build plate. Without it: distortion and cracking.
|
||||
- **Ti-6Al-4V:** Stress relief 650°C mandatory. HIP mandatory for biomedical.
|
||||
- **17-4PH:** H900 aging (480°C/1h) MANDATORY. AS-BUILT properties are ~40% of H900.
|
||||
- **IN718:** Full solution + double aging cycle mandatory. Plan weeks in advance.
|
||||
- **IN625:** Simpler — stress relief only. No precipitation hardening.
|
||||
|
||||
### Universal LPBF sequence (do not deviate)
|
||||
1. Stress relief → 2. Build plate removal → 3. Support removal → 4. HT/HIP → 5. Machining → 6. Inspection
|
||||
|
||||
## Selection by strength-to-weight ratio
|
||||
|
||||
| Alloy | UTS/density (MPa·cm³/g) | Note |
|
||||
|---|---|---|
|
||||
| AlSi10Mg | ~160 | Excellent for lightweight structures |
|
||||
| Scalmalloy | ~195 | Best Al available in AM |
|
||||
| Ti-6Al-4V | ~225 | Aerospace benchmark |
|
||||
| IN718 | ~135 | High density — justified by elevated temperatures |
|
||||
| 17-4PH | ~155 | High-strength stainless steel |
|
||||
|
||||
## Lot-to-Lot Variability and Property Scatter
|
||||
|
||||
Inter-lot variability in metal AM is higher than in forged material — and is often underestimated
|
||||
during the design phase. Do not design to the mean value from data tables: use P10 values
|
||||
(10th percentile) or apply an explicit knockdown factor.
|
||||
|
||||
### Typical variability by alloy (CoV = coefficient of variation)
|
||||
|
||||
| Alloy / Condition | UTS CoV | Fatigue CoV | Primary source |
|
||||
|---|---|---|---|
|
||||
| **Ti-6Al-4V LPBF as-built** | 5–10% | 20–35% | Variable micro-porosity between builds |
|
||||
| **Ti-6Al-4V LPBF HIP + machined** | 2–4% | 8–15% | HIP drastically reduces scatter |
|
||||
| **AlSi10Mg LPBF as-built** | 8–15% | 25–40% | Highly sensitive to powder moisture and O₂ |
|
||||
| **316L LPBF as-built** | 4–7% | 15–25% | Ductile → low UTS scatter, moderate fatigue |
|
||||
| **17-4PH LPBF H900** | 5–9% | 15–25% | Depends on aging cycle: temperature control critical |
|
||||
| **IN718 LPBF (full HT)** | 5–8% | 18–28% | Variable carbide distribution between builds |
|
||||
| **PA12 SLS** | 6–12% | 20–30% | Fresh/recycled powder ratio critical |
|
||||
| **PA12 FDM** | 15–25% | 30–50% | Anisotropy + filament moisture |
|
||||
|
||||
> Source: aggregated literature (Sames 2016, Lewandowski 2016, Gu 2012, EOS datasheets).
|
||||
> Fatigue CoV is always >> UTS CoV — fatigue is far more sensitive to localized defects.
|
||||
|
||||
### Effect of powder reuse on properties (LPBF metals)
|
||||
|
||||
| No. of powder reuses | UTS variation | Elongation variation | Porosity variation | Recommended action |
|
||||
|---|---|---|---|---|
|
||||
| 0–5 | baseline | baseline | baseline | None — normal use |
|
||||
| 5–10 | −1 to −3% | −5 to −10% | +0.02–0.05% | Monitor PSD and chemical composition |
|
||||
| 10–20 | −3 to −8% | −10 to −20% | +0.05–0.15% | Mandatory coupon testing for structural applications |
|
||||
| > 20 | Unpredictable | Unpredictable | > 0.2% | Replace powder; unacceptable risk |
|
||||
|
||||
**Parameters to monitor for powder:**
|
||||
- PSD: D10, D50, D90 — deviation > 15% from baseline → sign of degradation
|
||||
- Satellite content: > 10% → increased gas porosity risk
|
||||
- Chemical composition (O₂, N₂ especially for Ti): oxygen increase > 0.02% → reduced elongation
|
||||
- Flowability (Hall flow): > 30 s/50g → risk of non-uniform distribution
|
||||
|
||||
### Recommended knockdown factors for design
|
||||
|
||||
For robust design, apply knockdowns to nominal table values:
|
||||
|
||||
| Application | Knockdown on UTS | Knockdown on fatigue limit |
|
||||
|---|---|---|
|
||||
| Functional prototype | −5% | −15% |
|
||||
| Structural (FS ≥ 2.0) | −10% | −20% |
|
||||
| Fatigue-critical (FS ≥ 1.5) | −10% | −30% |
|
||||
| Aerospace / biomedical (certified) | Use values from coupons on the same build plate | Use coupon values + B-basis statistics |
|
||||
|
||||
**B-basis (statistics):** value guaranteed at 90% with 95% confidence. For structural aerospace
|
||||
this is the reference value — not the mean. Requires a minimum of 30 samples to calculate.
|
||||
|
||||
---
|
||||
|
||||
## Notes on Metal Binder Jetting process
|
||||
- Shrinkage ~20% linear during sintering — always compensate in CAD (not in slicer)
|
||||
- Post-sinter tolerances ±0.3–0.5mm vs ±0.05–0.1mm for LPBF
|
||||
- No structural supports during printing (like SLS) → geometric freedom
|
||||
- Ceramic setters for sintering on cantilevered geometries
|
||||
- Post-sinter HIP recommended for critical structural applications
|
||||
- Economically competitive for volumes >30–50 parts compared to LPBF
|
||||
@@ -0,0 +1,48 @@
|
||||
# Polymer AM Materials
|
||||
|
||||
> **Primary database:** `materials-db.json` — contains all structured data (mechanical and thermal properties, print parameters, applications, warnings) for all polymeric materials.
|
||||
> This file provides qualitative context and usage notes that cannot be structured in JSON.
|
||||
|
||||
## How to use the JSON database
|
||||
|
||||
```
|
||||
To select a polymeric material:
|
||||
1. Filter by T_max_service (field thermal.T_max_service)
|
||||
2. Filter by available process (field processes)
|
||||
3. Compare UTS_min/max, elongation, E_min/max
|
||||
4. Check biocompatible, uv_resistant, chemical_resistance if relevant
|
||||
5. Use selection_guides.by_application for a quick shortlist
|
||||
6. Read warnings before proceeding
|
||||
```
|
||||
|
||||
## Qualitative notes by family
|
||||
|
||||
### FDM — Standard materials (PLA, PETG, ABS, ASA)
|
||||
- PLA: entry-level, no temperature, no UV. First choice for rapid prototypes.
|
||||
- PETG: better than PLA for chemical resistance and toughness. Stringing requires attention to settings.
|
||||
- ABS/ASA: if HDT >80°C is needed. ASA for outdoor use. Both require an enclosure.
|
||||
|
||||
### FDM — Engineering materials (PA12, PC, TPU)
|
||||
- PA12: excellent toughness, hygroscopic — always pre-dry. Preferred for snap-fits and gears.
|
||||
- PC: transparent, high HDT. Difficult to print. Consider SLS PA12-GF as an alternative for high temperatures.
|
||||
- TPU: direct-drive only. Bowden extruder causes severe issues.
|
||||
|
||||
### FDM — High-performance (PEEK)
|
||||
- PEEK is the only choice for T >200°C in FDM. Cost and difficulty are very high.
|
||||
- Consider PEEK SLS as an alternative (better isotropy but rare machines).
|
||||
- CF-PEEK increases stiffness but reduces ductility — only if stiffness is the primary driver.
|
||||
|
||||
### Continuous fiber composites (Markforged)
|
||||
- Onyx + continuous CF can achieve UTS comparable to aluminum.
|
||||
- Hard constraint: Markforged machines only. High cost but avoids metal AM for many structural applications.
|
||||
|
||||
### SLS/MJF — Polymer powders
|
||||
- PA12 SLS: reference standard. Good isotropy, free geometries, no supports.
|
||||
- PA11: preferred when superior toughness is needed (impact, notches, elongation >40%).
|
||||
- PA12-MJF: slightly better than SLS for surface finish and throughput. Full-color available.
|
||||
- TPU SLS: excellent for flexible parts requiring complex geometries (not feasible in FDM).
|
||||
|
||||
### SLA/DLP Resins
|
||||
- Standard: maximum resolution for prototypes and aesthetic parts. Not for load-bearing use.
|
||||
- High-Temp: only resin option for thermal molds and fixtures.
|
||||
- Ceramic-filled: multi-step process (printing + debinding + sintering). Shrinkage 20-25% — compensate accordingly.
|
||||
@@ -0,0 +1,171 @@
|
||||
# AM Post-Processing — Complete Technical Guide
|
||||
|
||||
## Principle: post-processing is part of the process, not an afterthought
|
||||
|
||||
In AM, final properties depend on the post-processing sequence as much as on the printing process.
|
||||
Plan post-processing BEFORE printing (it affects orientation, tolerances, and geometry).
|
||||
|
||||
---
|
||||
|
||||
## Metal AM — Sequence and Treatments
|
||||
|
||||
### General LPBF sequence (mandatory)
|
||||
|
||||
```
|
||||
1. STRESS RELIEF (on the build plate, before any other operation)
|
||||
2. Removal from build plate (EDM wire cutting / saw / milling)
|
||||
3. Support removal (manual + tools + milling where necessary)
|
||||
4. Heat treatment / aging (if required by the material)
|
||||
5. HIP (if critical application)
|
||||
6. Post-machining of critical surfaces
|
||||
7. Surface finishing
|
||||
8. Inspection / quality control
|
||||
```
|
||||
|
||||
### Stress Relief — Conditions by alloy
|
||||
|
||||
| Alloy | Temperature | Time | Atmosphere | Purpose |
|
||||
|---|---|---|---|---|
|
||||
| AlSi10Mg | 270–300°C | 2h | Air / Argon | Reduce residual stresses; does not alter microstructure |
|
||||
| Ti-6Al-4V | 600–650°C | 2–4h | Vacuum / Argon | Critical — without this, severe distortions upon removal |
|
||||
| 316L | 900–1050°C | 1–2h | Vacuum / Argon | Solution annealing + stress relief |
|
||||
| 17-4PH | 1040°C (solution) + 480°C (H900) | 1h + 1h | Vacuum | Mandatory aging sequence |
|
||||
| Inconel 718 | 980°C + 720°C + 620°C | 1h + 8h + 8h | Vacuum | Full precipitation hardening sequence |
|
||||
| Inconel 625 | 1050°C | 2h | Vacuum | Stress relief only, no precipitation |
|
||||
|
||||
### HIP (Hot Isostatic Pressing)
|
||||
- **Purpose:** Closes residual porosity (gas-phase pores, lack of fusion) → mechanical properties closer to wrought material
|
||||
- **Typical conditions:**
|
||||
- Ti-6Al-4V: 900°C / 100–200 MPa / 2–4h / Argon
|
||||
- IN718: 1170°C / 175 MPa / 4h
|
||||
- AlSi10Mg: 500°C / 100 MPa / 3h (rarely economically justified)
|
||||
- **When mandatory:** Biomedical (implants), aerospace fatigue-critical, pressure-bearing components
|
||||
- **Effect on microstructure:** May coarsen the AS-built microstructure → compensate with post-HIP heat treatment
|
||||
- **Cost:** €500–2000/batch depending on size and material
|
||||
|
||||
### Post-Machining Metal AM
|
||||
- Functional surfaces (seats, precision holes, sealing surfaces) → ALWAYS post-machine
|
||||
- Recommended machining allowance in design phase: 0.5–1.5mm on critical surfaces
|
||||
- Techniques: CNC milling, turning, grinding (for critical surfaces), EDM (for hard-to-reach features)
|
||||
- **Warning:** AM microstructure may differ from wrought material → cutting parameters may vary
|
||||
|
||||
---
|
||||
|
||||
## Metal Surface Finishing
|
||||
|
||||
### Methods and achievable Ra
|
||||
|
||||
| Method | Achievable Ra | Cost | Notes |
|
||||
|---|---|---|---|
|
||||
| **As-built LPBF** | 5–25 µm | — | Baseline; depends on orientation |
|
||||
| **Shot peening** | 3–8 µm | Low | Introduces surface compression → improves fatigue |
|
||||
| **Sand/bead blasting** | 3–10 µm | Low | Uniform finish, matting |
|
||||
| **Vibratory finishing** | 1–4 µm | Medium | Good for batches of small parts |
|
||||
| **Barrel tumbling** | 1–3 µm | Medium | Parts without sharp edges |
|
||||
| **Electropolishing** | 0.5–2 µm | Medium-High | Excellent for 316L; possible for Ti; difficult for Al |
|
||||
| **CNC machining** | 0.1–1.6 µm | High | Specific surfaces, accessible geometries |
|
||||
| **Grinding / lapping** | 0.01–0.5 µm | High | Sealing surfaces, mating interfaces |
|
||||
| **Laser polishing** | 1–5 µm | High | Internal surfaces (channels), inaccessible areas |
|
||||
| **Chemical etching** | Varies | Low | Removal of oxidised surface layer, especially Ti |
|
||||
|
||||
### Shot peening — specific notes
|
||||
- Significantly improves fatigue resistance (compressive residual stress)
|
||||
- Standard AMS 2430 for aerospace
|
||||
- Parameters: shot size S110–S230, pressure 2–4 bar, coverage 100–200%
|
||||
|
||||
---
|
||||
|
||||
## Polymer AM — Post-Processing
|
||||
|
||||
### FDM Post-Processing
|
||||
|
||||
| Operation | Purpose | Materials | Notes |
|
||||
|---|---|---|---|
|
||||
| **Support removal** | Access to geometries | All | Mechanical (pliers/cutters) or dissolution (PVA in water, HIPS in limonene) |
|
||||
| **Sanding** | Surface finishing | PLA, ABS, ASA, PETG | Grits: 120 → 220 → 400 → 800 progressive; wet sanding for best results |
|
||||
| **Primer + filler** | Covering layer lines | All | Primer surfacer + sanding before painting |
|
||||
| **Acetone smoothing** | Partial surface dissolution | ABS ONLY | Ra from ~30µm to ~2–5µm; caution: modifies dimensions ±0.1–0.3mm |
|
||||
| **IPA smoothing (XTC-3D resin)** | Surface encapsulation | All | Adds ~0.3–0.5mm — account for this in tolerances |
|
||||
| **Painting** | Aesthetics, UV protection | All (with primer) | Polyurethane or acrylic paints |
|
||||
| **Annealing** | Reduction of internal stresses, HDT | PLA, PETG, ABS | PLA: 60–80°C / 1h; PETG: 80°C / 2h; improves thermal resistance |
|
||||
| **Heat-set inserts** | Reliable metal threads | All thermoplastics | M2–M12; insert with soldering iron/heat station; pull-out strength >>printed thread |
|
||||
| **Epoxy impregnation** | Impermeability, rigidity | All | Low-viscosity resins (West System, Smooth-On) penetrate the structure |
|
||||
|
||||
### SLS / MJF Post-Processing
|
||||
|
||||
| Operation | Purpose | Notes |
|
||||
|---|---|---|
|
||||
| **Breakout + cleaning** | Remove excess powder | Shot/sand blasting standard; compressed air for internals |
|
||||
| **Bead blasting** | Uniform finish, improved Ra | Ra from 12µm → 6–8µm; uniform satin appearance |
|
||||
| **Dyeing** | Uniform colouring | PA12: excellent dyeing capability (standard black or colours with dedicated dyes); hot process 80–95°C |
|
||||
| **Vibratory finishing** | Ra < 4µm | Good for batches; caution with thin features |
|
||||
| **SLS coating (e.g. Ceracoat, Duracoat)** | Impermeability + colour | Specific coatings for SLS; slightly increases Ra |
|
||||
| **Impregnation** | Impermeability | Epoxy resins or low-viscosity cyanoacrylate |
|
||||
| **Painting** | Aesthetics | With PA-specific primer |
|
||||
| **Machining** | Critical tolerances | PA12 machines well; watch for cutting heat |
|
||||
|
||||
### SLA / DLP / MSLA Post-Processing — MANDATORY
|
||||
|
||||
```
|
||||
MANDATORY SEQUENCE:
|
||||
1. Removal from the build plate
|
||||
2. Wash in IPA (10–15 min agitation or dedicated washing machine)
|
||||
→ IPA 90%+ for optimal cleaning
|
||||
→ Alternative: Form Wash solution or equivalent
|
||||
3. Air drying (5–10 min) for IPA evaporation
|
||||
4. UV post-curing (MANDATORY)
|
||||
→ 405nm, 900–1200 mJ/cm² or follow manufacturer specifications
|
||||
→ Time: 15–60 min depending on resin and part size
|
||||
→ Elevated temperatures (40–60°C) accelerate and improve uniformity
|
||||
5. Support removal (post-curing for standard resins; pre-curing for flexible resins)
|
||||
6. Optional finishing: sanding, painting, coating
|
||||
```
|
||||
|
||||
**Warning:** Uncured resin is toxic — mandatory PPE (nitrile gloves, goggles, ventilation)
|
||||
|
||||
---
|
||||
|
||||
## Ceramic AM — Post-Processing
|
||||
|
||||
### SLA/DLP ceramics (Lithoz, 3DCeram)
|
||||
|
||||
```
|
||||
1. Wash (IPA or supplier-specific solvent)
|
||||
2. UV post-curing (same as standard SLA)
|
||||
3. Thermal DEBINDING: 200–600°C / slow ramp (1–5°C/min) to eliminate organic binder
|
||||
→ Critical phase: ramp too fast → cracking
|
||||
4. PRE-SINTERING (brown body): ~1000°C / 2h → brittle but handleable ceramic
|
||||
5. Final SINTERING:
|
||||
→ Alumina: 1550–1600°C / 2h
|
||||
→ Zirconia: 1450–1550°C / 2h
|
||||
→ Shrinkage: 20–25% linear (compensate in CAD)
|
||||
6. Optional HIP for dense zirconia (density >99.9%)
|
||||
7. Grinding/lapping for functional surfaces
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Inspection and Qualification
|
||||
|
||||
### Inspection methods for AM parts
|
||||
|
||||
| Method | Applies to | Detects | When to use |
|
||||
|---|---|---|---|
|
||||
| **Visual + dimensional (CMM)** | All | Dimensions, tolerances | Standard, always |
|
||||
| **CT scan (tomography)** | Metal AM, ceramics | Internal porosity, cracks, inclusions | Critical parts, biomedical, aerospace |
|
||||
| **Ultrasound (UT)** | Metals | Cracks, delaminations | Large parts |
|
||||
| **X-ray radiography** | Metals | Porosity, defects | Cost-effective alternative to CT |
|
||||
| **Hardness (HV, HRC)** | Metals | Heat treatment state | Verify post-HT |
|
||||
| **Metallography** | Metals (coupon) | Microstructure, porosity | Initial process qualification |
|
||||
| **Tensile testing** | All (coupon) | Rm, E, elongation | Batch qualification |
|
||||
| **Profilometer** | All | Ra, Rz | Verify surface finish |
|
||||
|
||||
### Acceptable porosity by application
|
||||
|
||||
| Application | Max acceptable porosity |
|
||||
|---|---|
|
||||
| Prototypes / non-structural | <5% |
|
||||
| Structural parts (non-critical) | <1% |
|
||||
| Fatigue-critical applications | <0.1% (HIP often required) |
|
||||
| Biomedical (implants) | <0.05% (HIP mandatory) |
|
||||
| Pressure vessels / sealings | <0.01% → HIP + CT scan |
|
||||
@@ -0,0 +1,181 @@
|
||||
# AM Process Parameters — Technical Guide
|
||||
|
||||
## Important premise
|
||||
The parameters listed are **optimized starting points** based on consolidated best practices.
|
||||
Every machine, material lot, and geometry requires fine-tuning.
|
||||
**Never use unvalidated parameters on critical parts without preliminary testing (coupons).**
|
||||
|
||||
---
|
||||
|
||||
## FDM/FFF — Parameters by Material
|
||||
|
||||
### General structure of FDM parameters
|
||||
|
||||
```
|
||||
Layer height → Z resolution and speed (25–75% nozzle diameter)
|
||||
Line width → Usually = nozzle diameter (0.4mm standard)
|
||||
Print speed → mm/s (perimeters < infill < travel)
|
||||
Temperature:
|
||||
- Nozzle (T_e) → Material melting
|
||||
- Bed (T_b) → First layer adhesion, anti-warping
|
||||
- Chamber (T_c) → Required for high-temperature materials
|
||||
Cooling fan → Rapid solidification (good for bridging/overhangs, bad for layer adhesion)
|
||||
Retraction → Stringing prevention
|
||||
```
|
||||
|
||||
### Parameter table by material
|
||||
|
||||
| Material | T_nozzle (°C) | T_bed (°C) | T_chamber (°C) | Layer height | Perimeter speed | Cooling | Retraction |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| **PLA** | 195–220 | 50–65 | — | 0.1–0.3mm | 40–60 mm/s | 100% | 1–5mm / 25–45 mm/s |
|
||||
| **PETG** | 230–250 | 70–85 | — | 0.1–0.3mm | 35–50 mm/s | 30–50% | 3–6mm / 25–35 mm/s |
|
||||
| **ABS** | 230–250 | 90–110 | 40–60°C | 0.1–0.3mm | 40–60 mm/s | 0–10% | 4–6mm / 25–45 mm/s |
|
||||
| **ASA** | 240–260 | 90–110 | 40–55°C | 0.1–0.3mm | 35–55 mm/s | 10–20% | 4–6mm / 25–45 mm/s |
|
||||
| **PA12** | 240–260 | 70–90 | 45–65°C | 0.1–0.25mm | 30–50 mm/s | 0–10% | 6–8mm / 20–35 mm/s |
|
||||
| **PC** | 260–290 | 100–120 | 60–80°C | 0.1–0.25mm | 30–50 mm/s | 0–10% | 4–6mm / 25–40 mm/s |
|
||||
| **TPU (Shore 95A)** | 220–240 | 30–50 | — | 0.15–0.3mm | 20–35 mm/s | 20–50% | 0–2mm (direct) |
|
||||
| **PEEK** | 360–400 | 120–140 | 90–120°C | 0.1–0.2mm | 20–40 mm/s | 0% | 2–4mm / 20–30 mm/s |
|
||||
| **CF-filled (PA-CF)** | 250–270 | 70–90 | 45–65°C | 0.15–0.25mm | 30–45 mm/s | 0–10% | Hardened nozzle required |
|
||||
|
||||
### Material-specific FDM notes
|
||||
|
||||
**PLA:**
|
||||
- Fan: always high → improves bridging and overhangs
|
||||
- Warping: minimal on flat surfaces; avoid air drafts
|
||||
- Pre-drying: rarely necessary (but recommended for filament >1 year old or stored in humid conditions)
|
||||
|
||||
**PETG:**
|
||||
- High stringing → reduce temperature, increase retraction, increase travel speed
|
||||
- Excellent bed adhesion on glass + glue stick → may stick too well (use release agent)
|
||||
- Reduced fan → improves interlayer adhesion
|
||||
|
||||
**ABS / ASA:**
|
||||
- Severe warping without enclosure → do not attempt on open-frame printers for parts >50mm
|
||||
- Critical first layer: precise bed leveling, first layer speed 20–30 mm/s, precise Z offset
|
||||
- Fumes: mandatory ventilation
|
||||
|
||||
**PA (Nylon):**
|
||||
- **Pre-drying MANDATORY:** 70–80°C / 4–8h before printing (hygroscopic filament)
|
||||
- Store in dry box during printing
|
||||
- Warping on large parts → enclosure + brim
|
||||
|
||||
**PEEK:**
|
||||
- Requires all-metal hot end (no PTFE above 260°C)
|
||||
- Heated enclosure mandatory
|
||||
- Pre-drying: 120°C / 4h
|
||||
- Slow cooling after printing (do not open enclosure immediately)
|
||||
|
||||
---
|
||||
|
||||
## SLA / DLP / MSLA — Parameters
|
||||
|
||||
### Main parameters
|
||||
|
||||
| Parameter | SLA (laser) | DLP | MSLA |
|
||||
|---|---|---|---|
|
||||
| **Layer thickness** | 25–100 µm | 25–100 µm | 25–100 µm |
|
||||
| **Exposure time (normal layers)** | Depends on laser power | 2–8 sec | 2–6 sec |
|
||||
| **Bottom layers** | 5–10 | 5–10 | 5–10 |
|
||||
| **Bottom exposure** | 3–5× normal | 3–5× normal | 3–5× normal |
|
||||
| **Lift speed** | 30–150 mm/min | 30–200 mm/min | 30–200 mm/min |
|
||||
| **Lift distance** | 5–8 mm | 4–7 mm | 4–7 mm |
|
||||
| **Anti-aliasing** | N/A | 4–8× | 4–8× |
|
||||
|
||||
### SLA/DLP practical rules
|
||||
- **Layer height and detail:** 25–50 µm for maximum detail (dental, jewelry); 100 µm for fast prototypes
|
||||
- **Exposure time:** always calibrate with a test matrix (exposure test) for each resin and lot
|
||||
- **Over-exposure → loss of detail, oversized dimensions**
|
||||
- **Under-exposure → layers don't adhere, print failure**
|
||||
- **FEP film:** replace when cloudy or scratched — causes failures and worse surface quality
|
||||
- **Resin temperature:** 25–30°C optimal; cold resin (<20°C) → more viscous → adhesion problems
|
||||
|
||||
---
|
||||
|
||||
## SLS / MJF — Process Parameters
|
||||
|
||||
### SLS — Main parameters (EOS P396 as reference, PA2200/PA12)
|
||||
|
||||
| Parameter | Typical value | Effect |
|
||||
|---|---|---|
|
||||
| **Layer thickness** | 100–120 µm | Standard; 60 µm for some premium materials |
|
||||
| **Part bed temperature** | 168–172°C (PA12) | Critical: too low → warping; too high → hard cake |
|
||||
| **Laser power** | 21–25 W | Calibrated by manufacturer — do not modify without validation |
|
||||
| **Scan speed** | 5000–8000 mm/s | High speed → energy per unit area |
|
||||
| **Energy density (ED)** | 0.015–0.025 J/mm² | ED = Laser power / (scan speed × hatch × layer) |
|
||||
| **Hatch spacing** | 0.25–0.35 mm | |
|
||||
| **Refresh rate (fresh powder)** | 30–50% per build | Mixes virgin powder with recycled powder |
|
||||
|
||||
### Powder bed temperature — the most critical SLS parameter
|
||||
- **Operating window:** ±2°C from the optimal point
|
||||
- Too cold → distortions, curl, delaminations (curl effect)
|
||||
- Too hot → excessive cake, lost detail, powder difficult to separate
|
||||
- The chamber heating and cooling profile affects quality → follow manufacturer curve
|
||||
|
||||
### MJF (HP) — Differences vs SLS
|
||||
- Faster process (single pass of agents + IR fusion)
|
||||
- **Key parameters:** controlled by HP — less parameter freedom for the user vs SLS
|
||||
- User parameters: orientation, nesting, packing density
|
||||
- **Optimal packing density:** 8–12% for PA12 (impacts mechanical properties)
|
||||
|
||||
---
|
||||
|
||||
## LPBF / DMLS — Process Parameters
|
||||
|
||||
### Fundamental LPBF parameters
|
||||
|
||||
| Parameter | Symbol | Unit | Role |
|
||||
|---|---|---|---|
|
||||
| **Laser power** | P | W | Total available energy |
|
||||
| **Scan speed** | v | mm/s | Beam travel speed |
|
||||
| **Hatch spacing** | h | µm | Distance between adjacent passes |
|
||||
| **Layer thickness** | t | µm | Powder layer thickness |
|
||||
| **Energy Density (VED)** | E = P/(v×h×t) | J/mm³ | Synthetic indicator — not sufficient alone |
|
||||
|
||||
### Typical values by alloy (reference EOS M290 / SLM Solutions 125HL)
|
||||
|
||||
| Alloy | P (W) | v (mm/s) | h (µm) | t (µm) | VED (J/mm³) |
|
||||
|---|---|---|---|---|---|
|
||||
| **AlSi10Mg** | 340–370 | 1300–1600 | 130–190 | 30 | 40–65 |
|
||||
| **Ti-6Al-4V** | 175–280 | 1000–1300 | 100–140 | 30 | 50–90 |
|
||||
| **316L** | 200–280 | 700–1000 | 100–150 | 40 | 60–100 |
|
||||
| **17-4PH** | 200–260 | 800–1100 | 100–150 | 40 | 55–90 |
|
||||
| **Inconel 718** | 200–285 | 800–1000 | 100–130 | 40 | 65–110 |
|
||||
| **Inconel 625** | 200–250 | 800–1100 | 100–140 | 40 | 55–90 |
|
||||
|
||||
**Note:** These are indicative ranges. Every machine and powder lot requires optimized parameters. The machine manufacturer provides certified parameters — use those as the baseline.
|
||||
|
||||
### Scan strategies
|
||||
|
||||
| Strategy | Description | Use |
|
||||
|---|---|---|
|
||||
| **Alternating stripes** | Alternating bands at 90° layer by layer | Standard, isotropic |
|
||||
| **Chessboard** | Checkerboard with rotation | Reduces distortion on large parts |
|
||||
| **Island scanning** | Random islands | Reduces residual stresses, large parts |
|
||||
| **Contour + infill** | Perimeter + fill separately | Improves surface Ra (slow, precise contour) |
|
||||
| **Rotation per layer** | Angle rotation (e.g. 67°) each layer | Improves isotropy, modern standard |
|
||||
|
||||
### Atmosphere parameters
|
||||
- **Inert gas:** Argon or Nitrogen (AlSi10Mg prefers Nitrogen; Ti and superalloys → Argon)
|
||||
- **O₂ target:** < 0.1–0.5% vol (depends on machine and material)
|
||||
- **High O₂:** powder oxidation → inclusions → degraded mechanical properties
|
||||
|
||||
### Build orientation and nesting parameters
|
||||
- **Build height:** minimize → less time, less gas consumption, less risk of distortion
|
||||
- **Nesting:** optimize chamber fill to reduce cost per part
|
||||
- **Distance between parts:** ≥ 5mm (powder must flow between parts)
|
||||
|
||||
---
|
||||
|
||||
## Parameter → Defect Correlation
|
||||
|
||||
| Defect | Probable cause | Correction |
|
||||
|---|---|---|
|
||||
| **Gas porosity (spherical)** | Dissolved gas in powder, moisture | Powder pre-drying, gas purity |
|
||||
| **Lack-of-fusion porosity (irregular)** | VED too low | Increase P, reduce v or h |
|
||||
| **Solidification cracking** | Susceptible alloy, excessive VED | Reduce VED, modify strategy |
|
||||
| **Warping / distortion** | Residual stresses, inadequate supports | Optimize orientation, stress relief |
|
||||
| **Balling** | v too high, oxidized surface | Reduce v, check atmosphere |
|
||||
| **Delamination** | t too high, P too low | Reduce layer thickness, increase P |
|
||||
| **Stringing (FDM)** | T too high, insufficient retraction | Reduce T, increase retraction |
|
||||
| **Warping FDM** | Low bed temperature, no enclosure | Increase bed temperature, enclosure, brim |
|
||||
| **Visible layer lines SLA** | Layer height too high | Reduce to 25–50µm, post-sanding |
|
||||
@@ -0,0 +1,205 @@
|
||||
# Residual Stress and Distortion — Additive Manufacturing
|
||||
|
||||
> Use this file when:
|
||||
> - The designer asks why a part distorted after printing or after removal from the build plate
|
||||
> - Choosing the scan strategy or planning the heat treatment
|
||||
> - Quantifying the risk of distortion before printing
|
||||
> - Deciding whether to perform stress relief on the build plate or in a separate furnace
|
||||
|
||||
---
|
||||
|
||||
## 1. Origin of Residual Stresses in AM
|
||||
|
||||
### Mechanism — why they form
|
||||
|
||||
In LPBF each layer is melted rapidly (ms) and cooled equally rapidly while the underlying layers are already solidified. This creates an **enormous vertical thermal gradient** (10³–10⁵ °C/mm), resulting in:
|
||||
|
||||
1. Melted layer tries to expand → constrained by the solid material below → compresses laterally
|
||||
2. Layer solidifies in a compressed state
|
||||
3. On cooling, the layer wants to contract but is constrained → results in **tension at the surface + compression at the core**
|
||||
|
||||
```
|
||||
Typical LPBF stress profile (cross-section):
|
||||
Top surface: σ_tension (+ 200–600 MPa)
|
||||
Central core: σ_compression (- 100–400 MPa)
|
||||
Bottom/build plate: high σ_tension (mechanical anchoring)
|
||||
```
|
||||
|
||||
**When the part is removed from the build plate:** the equilibrium is broken → the part distorts.
|
||||
|
||||
### Quantitative values by alloy
|
||||
|
||||
| Alloy | σ_residual max as-built (MPa) | Typical distortion (mm/100mm) | Cracking risk |
|
||||
|---|---|---|---|
|
||||
| **Ti-6Al-4V LPBF** | 500–900 | 0.5–2.0 | High (brittle, low HRC) |
|
||||
| **AlSi10Mg LPBF** | 150–300 | 0.3–1.5 | Moderate |
|
||||
| **316L LPBF** | 300–600 | 0.3–1.0 | Low (ductile) |
|
||||
| **17-4PH LPBF** | 400–700 | 0.5–1.5 | Moderate–high |
|
||||
| **IN718 LPBF** | 600–1000 | 0.5–2.5 | High (constrained zones) |
|
||||
| **IN625 LPBF** | 400–700 | 0.3–1.5 | Moderate |
|
||||
| **CoCr LPBF** | 500–800 | 0.5–1.8 | Moderate |
|
||||
| **FDM PA12** | 5–20 | 0.1–0.5 | Negligible |
|
||||
| **SLS PA12** | 2–10 | < 0.1 | Negligible |
|
||||
|
||||
> **Note:** distortion values refer to flat geometries (100×100×10mm). Asymmetric geometries with variable thicknesses or high L/t ratio can distort 3–5× more.
|
||||
|
||||
---
|
||||
|
||||
## 2. Scan Strategy and Stress Reduction
|
||||
|
||||
The scan strategy is the most immediate lever for reducing residual stresses during printing — with no additional cost.
|
||||
|
||||
### Main strategies and impact
|
||||
|
||||
| Strategy | σ_res reduction vs. unidirectional | Notes |
|
||||
|---|---|---|
|
||||
| **Unidirectional (baseline)** | 0% (reference) | Worst case — directional accumulation |
|
||||
| **Alternating 90° each layer** | −15 to −25% | Minimum standard — simple to implement |
|
||||
| **67° rotation each layer** | −25 to −40% | Pseudo-random → more uniform distribution; recommended as default |
|
||||
| **Island scanning (5×5 or 7×7mm)** | −30 to −50% | Reduces local peak gradient; mandatory for IN718 and high-constraint geometries |
|
||||
| **Stripe scanning** | −20 to −35% | Good for elongated parts |
|
||||
| **Contour + hatch** | −10 to −20% on surface | Standard for roughness; does not significantly affect bulk |
|
||||
|
||||
**Default recommendation:** 67° rotation/layer. For IN718 or critical geometries: island scanning 5×5mm + 67° rotation.
|
||||
|
||||
### Parameters that worsen stresses
|
||||
|
||||
- **Low layer thickness** (< 20 µm): more thermal cycles per unit volume → more stress
|
||||
- **High VED** (> 80 J/mm³): larger melt zone, greater gradient
|
||||
- **Very thick sections** adjacent to thin sections: differential shrinkage → distortion concentrated at the transition
|
||||
- **Cold build plate** (< preheat temperature): thermal shock at the first layer
|
||||
|
||||
---
|
||||
|
||||
## 3. Stress Relief — Parameters by Alloy
|
||||
|
||||
Stress relief **on the build plate** (before removing the part) is the correct sequence: the build plate constrains distortion during the heat treatment.
|
||||
|
||||
### Parameters
|
||||
|
||||
| Alloy | Temperature (°C) | Time (h) | Atmosphere | Notes |
|
||||
|---|---|---|---|---|
|
||||
| **Ti-6Al-4V** | 650–730 | 2–4 | Vacuum or Ar | > 750°C → phase transformation → loss of properties |
|
||||
| **AlSi10Mg** | 270–300 | 2–4 | Air or N₂ | > 310°C → precipitate coarsening → UTS −15% |
|
||||
| **316L** | 450–550 | 1–2 | Ar or vacuum | Sensitization risk > 650°C |
|
||||
| **17-4PH** | 325–350 | 1–2 | Ar or vacuum | Stress relief separate from aging (H900 = 480°C) |
|
||||
| **IN718** | 900–950 | 1–2 | Vacuum or Ar | Stress relief only — then full solution annealing cycle |
|
||||
| **IN625** | 870–900 | 1–2 | Vacuum or Ar | |
|
||||
| **CoCr** | 800–850 | 1–2 | Vacuum | |
|
||||
|
||||
**Heating and cooling ramps:** max 5–10°C/min to avoid thermal shock → cracking in constrained zones.
|
||||
|
||||
**Effectiveness:** after correct stress relief, σ_res is reduced by **60–80%** compared to as-built. Post-removal distortion is reduced correspondingly.
|
||||
|
||||
---
|
||||
|
||||
## 4. HIP — Effect on Residual Stresses
|
||||
|
||||
HIP (Hot Isostatic Pressing) virtually eliminates residual stresses:
|
||||
|
||||
| Parameter | Typical value |
|
||||
|---|---|
|
||||
| HIP temperature (Ti) | 900–920°C |
|
||||
| HIP temperature (Al) | 500–515°C |
|
||||
| HIP temperature (stainless steels) | 1100–1150°C |
|
||||
| HIP temperature (superalloys) | 1100–1200°C |
|
||||
| Pressure | 100–200 MPa (Ar) |
|
||||
| Time | 2–4 hours |
|
||||
| σ_res residual post-HIP | < 50 MPa (near zero) |
|
||||
| Anisotropy reduction Z/XY (Ti) | From 0.60–0.75 → 0.92–0.98 |
|
||||
|
||||
> **Dimensional note:** HIP causes dimensional variation of ±0.05–0.2mm for complex geometries (hot plastic deformation under isostatic pressure). Allow 0.3mm stock allowance for surfaces requiring machining after HIP.
|
||||
|
||||
---
|
||||
|
||||
## 5. Distortion — Prediction and Compensation
|
||||
|
||||
### High-risk geometries
|
||||
|
||||
```
|
||||
Long, thin parts (L/t > 10):
|
||||
→ Arc distortion along the long axis
|
||||
→ Solution: orient the long axis along Z, or add ribs
|
||||
|
||||
Vertical thin walls (t < 2mm, h > 30mm):
|
||||
→ Surface waviness, deviation from vertical
|
||||
→ Solution: stiffening ribs every 20–30mm, or angled printing
|
||||
|
||||
Sections with abrupt thickness changes (factor > 3×):
|
||||
→ Distortion concentration at the transition
|
||||
→ Solution: progressive transition fillets
|
||||
|
||||
Geometries with internal geometric constraint (frames, grids):
|
||||
→ Multiple stresses that add up → cracking risk in IN718, IN625
|
||||
→ Solution: island scanning + aggressive stress relief
|
||||
|
||||
Heavy build plate vs light part:
|
||||
→ Warping of the part upward (compressive stress at the bottom)
|
||||
→ Solution: tall uniform supports, CAD pre-deformation
|
||||
```
|
||||
|
||||
### CAD compensation (morphing)
|
||||
|
||||
For parts with tight tolerances (±0.1mm) and distortion-prone geometries:
|
||||
1. Simulate distortion with AM software (Ansys Additive, Simufact, Netfabb)
|
||||
2. Apply the inverse deformation in CAD (pre-compensation)
|
||||
3. The part prints already distorted in the opposite direction → straightens to the final cost
|
||||
|
||||
**Simulation accuracy:** ±50% of the real value — useful as a guide, not as a substitute for stress relief.
|
||||
|
||||
---
|
||||
|
||||
## 6. Process Indicators: When to Be Concerned
|
||||
|
||||
| Signal | Probable cause | Action |
|
||||
|---|---|---|
|
||||
| Delamination during printing | Residual stresses > interlayer strength (high constraint, no preheating) | Stop build. Revise scan strategy and preheating. |
|
||||
| Part visibly distorts on removal from plate | Stress relief missing or at too low a temperature | Mandatory stress relief before removal |
|
||||
| Supports break during build | Distortion force > support strength | Increase support density or add tie-bars |
|
||||
| Visible cracking after stress relief | Ramp too fast, or temperature too high for the alloy | Reduce ramp to 3°C/min; revise temperature for the specific alloy |
|
||||
| Holes or fits out of tolerance | Distortion + shrinkage not compensated | CAD pre-compensation + stress relief + final machining |
|
||||
|
||||
---
|
||||
|
||||
## 7. Correct Sequence — Integration with Post-Processing
|
||||
|
||||
```
|
||||
AM printing completed (part still on build plate)
|
||||
↓
|
||||
Stress Relief ON BUILD PLATE (T and time from table in section 3)
|
||||
→ The build plate constrains distortion during treatment
|
||||
→ MANDATORY for all metallic LPBF alloys
|
||||
↓
|
||||
Removal from build plate (EDM wire or saw)
|
||||
→ Residual distortion after stress relief: <<< as-built
|
||||
↓
|
||||
HIP if critical application (section 4)
|
||||
→ σ_res → near zero | closed porosity | reduced anisotropy
|
||||
→ Post-HIP: re-check dimensions (±0.1mm)
|
||||
↓
|
||||
Specific heat treatment (aging 17-4PH H900, double aging IN718...)
|
||||
↓
|
||||
Support removal
|
||||
↓
|
||||
CNC Machining of critical surfaces (after all treatments)
|
||||
↓
|
||||
Shot Peening (introduces controlled σ_compression on surface)
|
||||
→ Beneficial for fatigue but NOT before HIP
|
||||
↓
|
||||
Final inspection (CMM + CT scan)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. EBM — Comparison with LPBF on Residual Stresses
|
||||
|
||||
EBM (Electron Beam Melting) operates in a chamber preheated to 600–900°C → thermal gradients are drastically reduced.
|
||||
|
||||
| Parameter | LPBF | EBM |
|
||||
|---|---|---|
|
||||
| σ_res as-built | 300–900 MPa | **50–150 MPa** |
|
||||
| Typical distortion | 0.3–2.0 mm/100mm | **0.05–0.3 mm/100mm** |
|
||||
| Stress relief mandatory? | Yes | Often not necessary (evaluate case by case) |
|
||||
| Ra as-built | 8–20 µm | 20–35 µm (higher, offset by reduced stress) |
|
||||
|
||||
**Indication:** for Ti-6Al-4V biomedical with complex geometries → EBM preferable to LPBF for residual stresses, even though as-built Ra is worse.
|
||||
@@ -0,0 +1,172 @@
|
||||
# Supports in AM — Technical Guide by Process
|
||||
|
||||
## General Principle
|
||||
|
||||
Supports serve to:
|
||||
1. **Anchor the part** to the build plate (prevent thermal distortions — critical in metal AM)
|
||||
2. **Support overhangs** beyond the critical angle of the process
|
||||
3. **Dissipate heat** during printing (especially LPBF)
|
||||
|
||||
---
|
||||
|
||||
## FDM/FFF — Polymer Supports
|
||||
|
||||
### When they are needed
|
||||
- Overhang angles > 45° from vertical
|
||||
- Bridges (bridging) > 50–60mm (depends on material and cooling)
|
||||
- Horizontal holes > ø5mm
|
||||
|
||||
### FDM support types
|
||||
|
||||
| Type | Material | Removal | Finish | Use |
|
||||
|---|---|---|---|---|
|
||||
| **Normal (same material)** | = part | Mechanical | High Ra at interface | Default, low cost |
|
||||
| **Soluble PVA support** | PVA | Dissolution in water | Excellent | Complex geometries, internal features |
|
||||
| **Soluble HIPS support** | HIPS | Dissolution in limonene | Excellent | Mainly for ABS |
|
||||
| **Soluble Breakaway support** | Special (Ultimaker, Bambu) | Snap-off | Good | Moderate geometries |
|
||||
|
||||
### FDM support patterns
|
||||
- **Lines/Grid:** Standard, easy to remove, adequate for most cases
|
||||
- **Tree supports (organic):** Minimise contact with the part, excellent finish → recommended for aesthetic parts
|
||||
- **Custom supports (manual):** For critical parts where the interface is not accessible
|
||||
|
||||
### Critical FDM support parameters
|
||||
|
||||
| Parameter | Typical value | Effect |
|
||||
|---|---|---|
|
||||
| **Support Z distance** | 0.15–0.25mm | Higher → easier removal but worse finish |
|
||||
| **Support XY distance** | 0.5–1.0mm | Lateral distance from the part |
|
||||
| **Interface layers** | 3–5 layers | Layers between support and part — use different pattern (e.g. lines) |
|
||||
| **Support density** | 10–20% | Do not increase beyond this: unnecessary and makes removal harder |
|
||||
| **Support roof/floor layers** | 2–4 | More layers → smoother surface under part |
|
||||
|
||||
### Orientation to minimise FDM supports
|
||||
- Rotate the part to bring critical surfaces (aesthetics, tolerances) to the top (top surface = best quality)
|
||||
- Exploit **bridging:** FDM can bridge linearly up to 50–80mm with good cooling — position horizontal holes on bridges
|
||||
|
||||
---
|
||||
|
||||
## SLA / DLP / MSLA — Resin Supports
|
||||
|
||||
### Particularity: inverted printing
|
||||
The part hangs from the build plate — peeling forces at each layer generate stresses. Supports must:
|
||||
- Anchor the part to the build plate (or raft)
|
||||
- Resist peeling forces (critical for flat geometries)
|
||||
|
||||
### SLA support types
|
||||
|
||||
| Type | Tip diameter | Use |
|
||||
|---|---|---|
|
||||
| **Light** | 0.3–0.4mm | Aesthetic surfaces, fine detail |
|
||||
| **Medium** | 0.5–0.6mm | Standard |
|
||||
| **Heavy** | 0.8–1.0mm | Heavy parts, large surfaces |
|
||||
|
||||
### SLA rules
|
||||
- **Raft:** Almost always necessary for medium/large parts (distributes peeling forces)
|
||||
- **Tilt angle:** Tilting the part 15–30° drastically reduces supports and improves exposure uniformity
|
||||
- **Islands:** Any surface disconnected from the main part requires support
|
||||
- **Touchpoint:** Reduce touchpoint density on visible surfaces — prefer supports on hidden surfaces
|
||||
|
||||
### Post-removal SLA
|
||||
- Remove supports BEFORE post-curing if possible (uncured resin is more brittle → support breaks more easily)
|
||||
- Exceptions: flexible resins → remove AFTER curing
|
||||
|
||||
---
|
||||
|
||||
## SLS / MJF — No Structural Supports
|
||||
|
||||
### Why SLS/MJF do not require supports
|
||||
The surrounding unsintered powder supports the part during the build. This is the main advantage of SLS/MJF over FDM/LPBF.
|
||||
|
||||
### What still needs to be managed
|
||||
- **Powder escape holes:** MANDATORY for closed cavities (≥ ø5mm, ideally 2 opposite holes to avoid pockets)
|
||||
- **Powder trapped in narrow channels:** Internal channels < ø4mm can retain powder — design with exit ports or use ø≥5mm
|
||||
- **Packing density:** The packing density in the build chamber affects distortions — consult the service provider
|
||||
|
||||
---
|
||||
|
||||
## LPBF / DMLS / SLM — Metal Supports
|
||||
|
||||
### Specific functions for metal AM
|
||||
1. **Thermal anchoring:** The part heats and cools cyclically — without adequate support it distorts or detaches from the build plate
|
||||
2. **Heat sink:** Supports conduct heat towards the build plate (critical for alloys with high thermal conductivity such as AlSi10Mg)
|
||||
3. **Mechanical support:** Overhangs > 45°
|
||||
|
||||
### LPBF support types
|
||||
|
||||
| Type | Structure | Removal | Use |
|
||||
|---|---|---|---|
|
||||
| **Block support** | Solid | Difficult, milling required | Very heavy parts, high heat |
|
||||
| **Contour support** | Hollow shell | Medium difficulty | Standard |
|
||||
| **Tree/Branch support** | Branched tree | Easier | Accessible aesthetic surfaces |
|
||||
| **Lattice support** | Lattice | Easy (break-off) | Modern standard — recommended |
|
||||
| **Cone support** | Conical | Easy | Single points, complex geometries |
|
||||
|
||||
### Critical LPBF support parameters
|
||||
|
||||
| Parameter | Typical value | Importance |
|
||||
|---|---|---|
|
||||
| **Top Z offset** | -0.1 to +0.05mm | Critical: too much gap → detachment; too much overlap → irremovable support |
|
||||
| **Bottom Z offset** | 0.0–0.1mm | Interface with build plate |
|
||||
| **Tooth height (perforated)** | 0.5–1.0mm | Facilitates removal while maintaining anchoring |
|
||||
| **Perforated support** | Yes for critical surfaces | Reduces marking on the surface |
|
||||
| **Lattice density** | 30–50% | Trade-off between heat dissipation and ease of removal |
|
||||
| **XY support offset** | 0.05–0.2mm | Gap between support and part — critical for removal |
|
||||
|
||||
### Orientation to minimise LPBF supports
|
||||
- **Main rule:** Orient the build axis to minimise horizontal downward-facing surfaces
|
||||
- **Critical angles:** < 30° from horizontal → always support; 30–45° → evaluate case by case
|
||||
- **Trade-off:** Anti-support orientation may increase distortions or worsen metallurgy on critical surfaces
|
||||
|
||||
### Strategy for critical surfaces (tolerances, Ra)
|
||||
- Surfaces with tight tolerances (±0.05mm) → orient in the XY plane (not Z) AND plan for post-machining
|
||||
- Sealing/mating surfaces → do not place supports on them — if unavoidable, use perforated supports + machining
|
||||
|
||||
### Material-specific notes for LPBF supports
|
||||
|
||||
| Alloy | Support criticality | Specific notes |
|
||||
|---|---|---|
|
||||
| AlSi10Mg | High (high conductivity, low melting point) | Dense supports mandatory; stress relief before removal |
|
||||
| Ti-6Al-4V | Medium | Supports in same material; HT before removal |
|
||||
| 316L | Low-Medium | Relatively easier to manage |
|
||||
| Inconel 718/625 | High (high T, thermal gradients) | Very dense supports; significant distortions |
|
||||
| 17-4PH | Medium | Stress relief critical before removal |
|
||||
|
||||
### MANDATORY sequence for metal AM with supports
|
||||
1. Print
|
||||
2. **Thermal stress relief** (before removing from build plate and before supports)
|
||||
3. Removal from build plate (EDM wire or saw)
|
||||
4. Support removal (manual + tools + milling where necessary)
|
||||
5. Heat treatment (if required — e.g. 17-4PH H900, IN718 aging)
|
||||
6. HIP (if required)
|
||||
7. Post-machining of critical surfaces
|
||||
8. Inspection
|
||||
|
||||
---
|
||||
|
||||
## EBM — Lightweight Supports
|
||||
|
||||
- EBM operates in vacuum with powder pre-heating → thermal gradients much lower than LPBF
|
||||
- **Supports needed but less critical:** Often only lightweight anchoring structures (mesh)
|
||||
- Critical angle ~35° (better than LPBF due to lower thermal gradient)
|
||||
- Support removal: mechanical, easier than LPBF
|
||||
|
||||
---
|
||||
|
||||
## Binder Jetting — No Supports (green state)
|
||||
|
||||
- The powder acts as support during the printing phase (like SLS)
|
||||
- **Watch out for sintering phase:** The part may collapse if overhang geometries are excessive → plan ceramic setters or custom sintering supports
|
||||
- Internal channels: verify they can be cleared after sintering
|
||||
|
||||
---
|
||||
|
||||
## Support Checklist — Pre-Build
|
||||
|
||||
- [ ] Are all overhangs beyond the critical angle of the process supported?
|
||||
- [ ] Do critical surfaces (tolerances, Ra) avoid contact with supports, or is machining planned?
|
||||
- [ ] For LPBF: is stress relief planned BEFORE support removal?
|
||||
- [ ] For SLS/MJF: are powder escape holes present on all closed cavities?
|
||||
- [ ] Is support removal accessible (physical access with tools)?
|
||||
- [ ] Do supports not interfere with functional features (holes, sealing surfaces)?
|
||||
- [ ] For complex parts: has a removability test been run in simulation (e.g. Magics)?
|
||||
@@ -0,0 +1,343 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
AM Post-Processing Route Planner
|
||||
Given a process, material, and target Ra, generates the optimal post-processing sequence.
|
||||
Usage: python3 postprocess_route.py --material AlSi10Mg --Ra 0.8 --use medical
|
||||
"""
|
||||
import json, argparse, sys
|
||||
from pathlib import Path
|
||||
|
||||
DB_PATH = Path(__file__).parent.parent / "references" / "materials-db.json"
|
||||
|
||||
# Post-processing data by process — material-independent
|
||||
POSTPROCESS_CATALOG = {
|
||||
# --- Physical abrasive methods ---
|
||||
"bead_blast": {
|
||||
"label": "Bead/Sand Blasting",
|
||||
"Ra_achievable": (3, 8),
|
||||
"applies_to_processes": ["LPBF", "EBM", "SLS", "MJF", "BJT"],
|
||||
"time_h": 0.1,
|
||||
"cost_relative": 1,
|
||||
"note": "Uniform matte finish. Typical prerequisite for other treatments.",
|
||||
"sequence_priority": 1
|
||||
},
|
||||
"vibratory": {
|
||||
"label": "Vibratory/Barrel Finishing",
|
||||
"Ra_achievable": (1.5, 5),
|
||||
"applies_to_processes": ["LPBF", "SLS", "MJF", "BJT"],
|
||||
"time_h": 2,
|
||||
"cost_relative": 2,
|
||||
"note": "Good for batches. Watch thin features (<1mm).",
|
||||
"sequence_priority": 2
|
||||
},
|
||||
"shot_peen": {
|
||||
"label": "Shot Peening",
|
||||
"Ra_achievable": (3, 8),
|
||||
"applies_to_processes": ["LPBF", "EBM"],
|
||||
"time_h": 0.5,
|
||||
"cost_relative": 2,
|
||||
"note": "Introduces compressive residual stress -> improves fatigue by 20-40%. AMS 2430 for aerospace.",
|
||||
"sequence_priority": 2,
|
||||
"functional_benefit": "fatigue_improvement"
|
||||
},
|
||||
"machining_CNC": {
|
||||
"label": "CNC machining (milling/turning)",
|
||||
"Ra_achievable": (0.4, 1.6),
|
||||
"applies_to_processes": ["LPBF", "EBM", "SLS", "BJT", "FDM"],
|
||||
"time_h": 1,
|
||||
"cost_relative": 4,
|
||||
"note": "For accessible specific surfaces. Machining stock must be planned in design (0.5-1.5mm).",
|
||||
"sequence_priority": 3
|
||||
},
|
||||
"grinding": {
|
||||
"label": "Grinding",
|
||||
"Ra_achievable": (0.1, 0.4),
|
||||
"applies_to_processes": ["LPBF", "EBM", "BJT"],
|
||||
"applies_to_materials": ["17-4PH", "IN718", "CoCr", "316L"],
|
||||
"time_h": 2,
|
||||
"cost_relative": 5,
|
||||
"note": "For flat sealing surfaces or precision fits.",
|
||||
"sequence_priority": 4
|
||||
},
|
||||
"lapping_polishing": {
|
||||
"label": "Lapping / Polishing",
|
||||
"Ra_achievable": (0.025, 0.2),
|
||||
"applies_to_processes": ["LPBF", "EBM", "SLA", "DLP"],
|
||||
"time_h": 3,
|
||||
"cost_relative": 6,
|
||||
"note": "For Ra <0.2um. Surgical surfaces, precision seals, optics.",
|
||||
"sequence_priority": 5
|
||||
},
|
||||
"electropolish": {
|
||||
"label": "Electropolishing",
|
||||
"Ra_achievable": (0.2, 1.5),
|
||||
"applies_to_processes": ["LPBF", "BJT"],
|
||||
"applies_to_materials": ["316L", "17-4PH", "Ti-6Al-4V", "IN625", "IN718"],
|
||||
"time_h": 1,
|
||||
"cost_relative": 3,
|
||||
"note": "Excellent for 316L (food/medical). Variable results on Ti. Not recommended on Al.",
|
||||
"sequence_priority": 3,
|
||||
"functional_benefit": "corrosion_resistance"
|
||||
},
|
||||
"passivation": {
|
||||
"label": "Passivation (nitric/citric acid)",
|
||||
"Ra_achievable": None,
|
||||
"applies_to_processes": ["LPBF", "BJT"],
|
||||
"applies_to_materials": ["316L", "17-4PH", "15-5PH"],
|
||||
"time_h": 0.5,
|
||||
"cost_relative": 1,
|
||||
"note": "Does not change Ra. Restores passive layer and improves corrosion resistance.",
|
||||
"sequence_priority": 5,
|
||||
"functional_benefit": "corrosion_resistance"
|
||||
},
|
||||
"anodizing": {
|
||||
"label": "Anodizing",
|
||||
"Ra_achievable": None,
|
||||
"applies_to_processes": ["LPBF"],
|
||||
"applies_to_materials": ["AlSi10Mg", "Scalmalloy"],
|
||||
"time_h": 1,
|
||||
"cost_relative": 2,
|
||||
"note": "Does not change Ra. Protection, color, and surface hardness for Al.",
|
||||
"sequence_priority": 5,
|
||||
"functional_benefit": "surface_protection"
|
||||
},
|
||||
"sanding": {
|
||||
"label": "Manual sanding (abrasive paper)",
|
||||
"Ra_achievable": (0.4, 4),
|
||||
"applies_to_processes": ["FDM", "SLA", "DLP"],
|
||||
"time_h": 0.5,
|
||||
"cost_relative": 1,
|
||||
"grit_sequence": "120 -> 240 -> 400 -> 800 -> 1200 for Ra <1um",
|
||||
"note": "Low cost. Labor-intensive. Not suitable for complex geometries.",
|
||||
"sequence_priority": 2
|
||||
},
|
||||
"acetone_smoothing": {
|
||||
"label": "Acetone smoothing (ABS only)",
|
||||
"Ra_achievable": (1.5, 5),
|
||||
"applies_to_processes": ["FDM"],
|
||||
"applies_to_materials": ["ABS"],
|
||||
"time_h": 0.3,
|
||||
"cost_relative": 1,
|
||||
"note": "ABS ONLY. Changes dimensions by +/-0.1-0.3mm; account for tolerances. Toxic vapors.",
|
||||
"sequence_priority": 2
|
||||
},
|
||||
"IPA_wash_UV_cure": {
|
||||
"label": "IPA Wash + UV Post-Curing",
|
||||
"Ra_achievable": (1, 6),
|
||||
"applies_to_processes": ["SLA", "DLP", "MSLA"],
|
||||
"time_h": 0.5,
|
||||
"cost_relative": 1,
|
||||
"note": "MANDATORY for resins. IPA 10-15min + UV 900-1200 mJ/cm^2.",
|
||||
"sequence_priority": 1,
|
||||
"mandatory": True
|
||||
},
|
||||
"dyeing_SLS": {
|
||||
"label": "Dyeing - SLS/MJF",
|
||||
"Ra_achievable": None,
|
||||
"applies_to_processes": ["SLS", "MJF"],
|
||||
"time_h": 1,
|
||||
"cost_relative": 1,
|
||||
"note": "Does not change Ra. Uniform PA12 coloration. Hot process at 80-95C.",
|
||||
"sequence_priority": 3,
|
||||
"functional_benefit": "aesthetics"
|
||||
},
|
||||
"SLS_coating": {
|
||||
"label": "SLS Coating (Ceracoat, Duracoat)",
|
||||
"Ra_achievable": (3, 6),
|
||||
"applies_to_processes": ["SLS"],
|
||||
"time_h": 0.5,
|
||||
"cost_relative": 2,
|
||||
"note": "Sealing + uniform color for PA12 SLS.",
|
||||
"sequence_priority": 4
|
||||
},
|
||||
"HIP": {
|
||||
"label": "HIP (Hot Isostatic Pressing)",
|
||||
"Ra_achievable": None,
|
||||
"applies_to_processes": ["LPBF", "EBM", "BJT"],
|
||||
"time_h": 8,
|
||||
"cost_relative": 8,
|
||||
"note": "Closes internal porosity (<0.1%). Mandatory for biomedical and fatigue-critical parts. 900C / 150MPa / 3h (Ti).",
|
||||
"sequence_priority": 2,
|
||||
"functional_benefit": "density_porosity"
|
||||
}
|
||||
}
|
||||
|
||||
def load_db():
|
||||
with open(DB_PATH) as f:
|
||||
return json.load(f)
|
||||
|
||||
def find_material(mat_id, db):
|
||||
for m in db['polymers'] + db['metals']:
|
||||
if m['id'].lower() == mat_id.lower():
|
||||
return m
|
||||
return None
|
||||
|
||||
def plan_route(mat_id, Ra_target, process, use_case=None):
|
||||
db = load_db()
|
||||
mat = find_material(mat_id, db)
|
||||
if not mat:
|
||||
avail = [m['id'] for m in db['polymers']+db['metals']]
|
||||
return None, f"Material '{mat_id}' not found. Available: {', '.join(avail)}"
|
||||
|
||||
ra_data = mat.get('surface_roughness', {})
|
||||
Ra_asbuilt = ra_data.get('Ra_asbuilt_typical', 50)
|
||||
postproc_achievable = ra_data.get('postprocess_achievable', {})
|
||||
mat_process = mat.get('processes', [process])
|
||||
|
||||
route = []
|
||||
reasoning = []
|
||||
|
||||
# Step 1: mandatory process steps
|
||||
if any(p in ['SLA','DLP','MSLA'] for p in mat_process):
|
||||
route.append({
|
||||
"step": 1, "operation": "IPA Wash + UV Post-Curing",
|
||||
"conditions": "IPA 90%+ / 10-15 min agitation; UV 405nm / 900-1200 mJ/cm^2",
|
||||
"Ra_after": Ra_asbuilt, "mandatory": True, "reason": "MANDATORY for resins -> final mechanical properties"
|
||||
})
|
||||
|
||||
# Step 2: stress relief (metalli)
|
||||
if any(p in ['LPBF','EBM','BJT'] for p in mat_process):
|
||||
ht = mat.get('heat_treatment', {})
|
||||
sr = ht.get('stress_relief', {})
|
||||
if sr:
|
||||
route.append({
|
||||
"step": len(route)+1, "operation": "Stress Relief termico",
|
||||
"conditions": f"{sr.get('temp_C','?')}°C / {sr.get('time_h','?')}h / {sr.get('atmosphere','?')}",
|
||||
"Ra_after": Ra_asbuilt, "mandatory": sr.get('mandatory', True),
|
||||
"reason": sr.get('timing', "Before removal from build plate") + " -> reduces residual stress and prevents distortion"
|
||||
})
|
||||
|
||||
# Step 3: HIP if required by use case
|
||||
if use_case in ['biomedical', 'fatigue_critical', 'pressure_vessel']:
|
||||
if any(p in ['LPBF','EBM'] for p in mat_process):
|
||||
route.append({
|
||||
"step": len(route)+1, "operation": "HIP (Hot Isostatic Pressing)",
|
||||
"conditions": "~900C / 150 MPa / 3h / Argon (Ti); consult supplier for other materials",
|
||||
"Ra_after": Ra_asbuilt, "mandatory": True,
|
||||
"reason": f"Mandatory for {use_case} -> closes porosity <0.1%, uniform properties"
|
||||
})
|
||||
|
||||
# Step 4: specific heat treatment
|
||||
ht = mat.get('heat_treatment', {})
|
||||
for ht_key, ht_val in ht.items():
|
||||
if isinstance(ht_val, dict) and ht_val.get('mandatory', False):
|
||||
if ht_key not in ['stress_relief']:
|
||||
route.append({
|
||||
"step": len(route)+1, "operation": f"Heat Treatment: {ht_key.replace('_',' ').title()}",
|
||||
"conditions": f"{ht_val.get('temp_C','?')}°C / {ht_val.get('time_h','?')}h / {ht_val.get('atmosphere','?')}",
|
||||
"Ra_after": Ra_asbuilt, "mandatory": True,
|
||||
"reason": ht_val.get('warning', ht_val.get('note', 'Required for final mechanical properties'))
|
||||
})
|
||||
|
||||
# Step 5: support removal (if required)
|
||||
if mat.get('flags', {}).get('supports_needed', False):
|
||||
route.append({
|
||||
"step": len(route)+1, "operation": "Support removal",
|
||||
"conditions": "Mechanical (pliers, cutters) + milling for metal supports. EDM for hard-to-access areas.",
|
||||
"Ra_after": Ra_asbuilt, "mandatory": True,
|
||||
"reason": "After heat treatment for metals -> NOT before stress relief"
|
||||
})
|
||||
|
||||
# Step 6: Ra route
|
||||
Ra_current = Ra_asbuilt
|
||||
if Ra_target and Ra_current > Ra_target:
|
||||
reasoning.append(f"Ra as-built: {Ra_asbuilt}µm → target: {Ra_target}µm → delta: {Ra_asbuilt-Ra_target:.1f}µm")
|
||||
|
||||
# Choose optimal strategy
|
||||
candidates = []
|
||||
for method, vals in postproc_achievable.items():
|
||||
if isinstance(vals, dict) and 'Ra_min' in vals:
|
||||
if vals['Ra_min'] <= Ra_target:
|
||||
candidates.append((method, vals['Ra_min'], vals))
|
||||
|
||||
# Sort by increasing cost
|
||||
cost_map = {m: POSTPROCESS_CATALOG.get(m, {}).get('cost_relative', 3) for m, _, _ in candidates}
|
||||
candidates.sort(key=lambda x: cost_map.get(x[0], 3))
|
||||
|
||||
if candidates:
|
||||
best_method, best_Ra_min, best_vals = candidates[0]
|
||||
catalog_entry = POSTPROCESS_CATALOG.get(best_method, {})
|
||||
route.append({
|
||||
"step": len(route)+1,
|
||||
"operation": catalog_entry.get('label', best_method.replace('_',' ').title()),
|
||||
"conditions": catalog_entry.get('grit_sequence', catalog_entry.get('note', '')),
|
||||
"Ra_after": best_Ra_min,
|
||||
"mandatory": False,
|
||||
"reason": f"Required to reach target Ra {Ra_target}um (as-built: {Ra_asbuilt}um). Alternative: {candidates[1][0] if len(candidates)>1 else 'none'}"
|
||||
})
|
||||
Ra_current = best_Ra_min
|
||||
else:
|
||||
reasoning.append(f"WARNING: target Ra {Ra_target}um is not reachable with standard post-processing for {mat_id}")
|
||||
|
||||
# Step 7: additional functional treatments by use case
|
||||
if use_case == 'food_contact' and mat_id in ['316L']:
|
||||
route.append({
|
||||
"step": len(route)+1, "operation": "Electropolishing + Passivation",
|
||||
"conditions": "Electropolish in perchloric/acetic acid; nitric passivation 20-25%",
|
||||
"Ra_after": 0.5, "mandatory": True,
|
||||
"reason": "Mandatory for food-contact -> Ra <0.8um + intact passive layer (FDA/EHEDG)"
|
||||
})
|
||||
elif use_case == 'biomedical' and mat_id in ['316L', 'Ti-6Al-4V']:
|
||||
route.append({
|
||||
"step": len(route)+1, "operation": "Electropolishing + Biomedical passivation",
|
||||
"conditions": "ASTM F86 or equivalent. Ra <0.8um for contact surfaces.",
|
||||
"Ra_after": 0.4, "mandatory": True,
|
||||
"reason": "Biomedical standard -> biofilm prevention, controlled cell adhesion"
|
||||
})
|
||||
|
||||
# Final step: inspection
|
||||
if use_case in ['biomedical', 'fatigue_critical', 'aerospace', 'pressure_vessel']:
|
||||
route.append({
|
||||
"step": len(route)+1, "operation": "Quality inspection",
|
||||
"conditions": "CT scan (porosity) + CMM (dimensions) + hardness test" + (" + FPI (cracks)" if use_case in ['fatigue_critical','aerospace'] else ""),
|
||||
"Ra_after": Ra_current, "mandatory": True,
|
||||
"reason": f"Mandatory qualification for {use_case} application"
|
||||
})
|
||||
|
||||
return route, reasoning
|
||||
|
||||
def print_route(mat_id, route, reasoning, Ra_target):
|
||||
print("\n" + "="*70)
|
||||
print(f" POST-PROCESSING ROUTE — {mat_id}")
|
||||
if Ra_target:
|
||||
print(f" Target Ra: {Ra_target} µm")
|
||||
print("="*70)
|
||||
|
||||
if reasoning:
|
||||
print("\n Notes:")
|
||||
for r in reasoning:
|
||||
print(f" {r}")
|
||||
|
||||
print(f"\n Sequence ({len(route)} steps):")
|
||||
for step in route:
|
||||
flag = " [MANDATORY]" if step.get('mandatory') else " [recommended]"
|
||||
print(f"\n STEP {step['step']}: {step['operation']}{flag}")
|
||||
if step.get('conditions'):
|
||||
print(f" Conditions: {step['conditions']}")
|
||||
if step.get('Ra_after') and Ra_target:
|
||||
print(f" Ra after: ~{step['Ra_after']} µm")
|
||||
print(f" Why: {step['reason']}")
|
||||
print("\n" + "="*70 + "\n")
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="AM Post-Processing Route Planner")
|
||||
parser.add_argument('--material', required=True, help="Material ID (e.g. AlSi10Mg, Ti-6Al-4V, PA12-SLS)")
|
||||
parser.add_argument('--Ra', type=float, help="Final target Ra (µm)")
|
||||
parser.add_argument('--process', default='LPBF',help="AM process used")
|
||||
parser.add_argument('--use', help="Application: biomedical, food_contact, aerospace, fatigue_critical, pressure_vessel")
|
||||
parser.add_argument('--json', action='store_true', help="JSON output")
|
||||
args = parser.parse_args()
|
||||
|
||||
route, reasoning = plan_route(args.material, args.Ra, args.process, args.use)
|
||||
if route is None:
|
||||
print(f"ERROR: {reasoning}")
|
||||
sys.exit(1)
|
||||
|
||||
if args.json:
|
||||
import json as _json
|
||||
print(_json.dumps({'material': args.material, 'Ra_target': args.Ra, 'route': route, 'notes': reasoning}, indent=2))
|
||||
else:
|
||||
print_route(args.material, route, reasoning, args.Ra)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,280 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
AM Material Selector — Additive Manufacturing Expert Skill
|
||||
Filters and ranks materials from the database based on engineering requirements.
|
||||
Usage: python3 select_material.py --help
|
||||
"""
|
||||
import json, argparse, sys
|
||||
from pathlib import Path
|
||||
|
||||
DB_PATH = Path(__file__).parent.parent / "references" / "materials-db.json"
|
||||
|
||||
def load_db():
|
||||
with open(DB_PATH) as f:
|
||||
return json.load(f)
|
||||
|
||||
def parse_range(val):
|
||||
"""Converts 'min-max' or a single number into (min, max)."""
|
||||
if val is None:
|
||||
return None, None
|
||||
s = str(val)
|
||||
if '-' in s:
|
||||
parts = s.split('-')
|
||||
return float(parts[0]), float(parts[1])
|
||||
return float(s), float('inf')
|
||||
|
||||
def score_material(mat, req):
|
||||
"""Computes a 0-100 score for a material against requirements. Returns (score, reasons, disqualified)."""
|
||||
score = 100
|
||||
reasons = []
|
||||
disqualified = []
|
||||
|
||||
mech = mat.get('mechanical', {})
|
||||
thermal = mat.get('thermal', {})
|
||||
flags = mat.get('flags', {})
|
||||
ra = mat.get('surface_roughness', {})
|
||||
|
||||
# --- ELIMINATION FILTERS ---
|
||||
|
||||
# Service temperature
|
||||
if req.get('T_service'):
|
||||
T = req['T_service']
|
||||
T_max = thermal.get('T_max_service', 9999)
|
||||
if isinstance(T_max, str):
|
||||
T_max = float(T_max.replace('>','').replace('~',''))
|
||||
if T_max < T:
|
||||
disqualified.append(f"T_max_service={T_max}°C < required {T}°C")
|
||||
|
||||
# Process
|
||||
if req.get('process'):
|
||||
proc = req['process'].upper()
|
||||
mat_procs = [p.upper() for p in mat.get('processes', [])]
|
||||
if not any(proc in p or p in proc for p in mat_procs):
|
||||
disqualified.append(f"process {req['process']} not available (processes: {mat.get('processes')})")
|
||||
|
||||
# Biocompatibility
|
||||
if req.get('biocompatible'):
|
||||
if not flags.get('biocompatible', False):
|
||||
disqualified.append("biocompatibility required but not available")
|
||||
|
||||
# UV resistant
|
||||
if req.get('uv_resistant'):
|
||||
if not flags.get('uv_resistant', False):
|
||||
disqualified.append("UV resistance required but not guaranteed")
|
||||
|
||||
# Minimum UTS
|
||||
if req.get('UTS_min') and disqualified == []:
|
||||
uts_min_req = req['UTS_min']
|
||||
uts_max_mat = mech.get('UTS_max') or mech.get('UTS_asbuilt_max') or mech.get('UTS_LPBF_max') or 0
|
||||
if uts_max_mat < uts_min_req:
|
||||
disqualified.append(f"UTS_max={uts_max_mat} MPa < required {uts_min_req} MPa")
|
||||
|
||||
# Target roughness (Ra) — check if achievable
|
||||
if req.get('Ra_target') and disqualified == []:
|
||||
Ra_req = req['Ra_target']
|
||||
Ra_asbuilt = ra.get('Ra_asbuilt_typical', 50)
|
||||
postproc = ra.get('postprocess_achievable', {})
|
||||
Ra_achievable_min = Ra_asbuilt
|
||||
best_method = "as-built"
|
||||
for method, vals in postproc.items():
|
||||
if isinstance(vals, dict) and 'Ra_min' in vals:
|
||||
if vals['Ra_min'] < Ra_achievable_min:
|
||||
Ra_achievable_min = vals['Ra_min']
|
||||
best_method = method
|
||||
if Ra_achievable_min > Ra_req:
|
||||
disqualified.append(f"achievable Ra_min={Ra_achievable_min}µm > target {Ra_req}µm even with post-processing")
|
||||
else:
|
||||
if Ra_asbuilt > Ra_req:
|
||||
reasons.append(f"target Ra {Ra_req}µm achievable with {best_method} (as-built: {Ra_asbuilt}µm)")
|
||||
|
||||
if disqualified:
|
||||
return 0, reasons, disqualified
|
||||
|
||||
# --- POSITIVE SCORING ---
|
||||
|
||||
# Temperature: more margin = better
|
||||
if req.get('T_service'):
|
||||
T = req['T_service']
|
||||
T_max = thermal.get('T_max_service', 9999)
|
||||
if isinstance(T_max, (int, float)):
|
||||
margin = T_max - T
|
||||
if margin > 100:
|
||||
score += 10
|
||||
reasons.append(f"excellent thermal margin (+{margin:.0f}°C)")
|
||||
elif margin > 30:
|
||||
score += 5
|
||||
|
||||
# UTS: margin against requirement
|
||||
if req.get('UTS_min'):
|
||||
uts_min_req = req['UTS_min']
|
||||
uts_max_mat = mech.get('UTS_max') or mech.get('UTS_asbuilt_max') or mech.get('UTS_LPBF_max') or 0
|
||||
if uts_max_mat > 0:
|
||||
ratio = uts_max_mat / uts_min_req
|
||||
if ratio > 2:
|
||||
score += 10
|
||||
elif ratio > 1.5:
|
||||
score += 5
|
||||
|
||||
# As-built Ra: if it already meets the target without post-processing -> advantage
|
||||
if req.get('Ra_target'):
|
||||
Ra_asbuilt = ra.get('Ra_asbuilt_typical', 50)
|
||||
if Ra_asbuilt <= req['Ra_target']:
|
||||
score += 15
|
||||
reasons.append(f"as-built Ra ({Ra_asbuilt}µm) already meets the target — no additional post-processing")
|
||||
|
||||
# Printability
|
||||
difficulty_map = {
|
||||
"easy": 10, "moderate": 5, "difficult": 0, "very difficult": -5, "extreme": -10
|
||||
}
|
||||
diff = mat.get('print_difficulty', '')
|
||||
score += difficulty_map.get(diff, 0)
|
||||
|
||||
# Cost
|
||||
cost = mat.get('cost_relative', 5)
|
||||
if cost <= 2:
|
||||
score += 8
|
||||
reasons.append(f"low cost (index {cost})")
|
||||
elif cost <= 5:
|
||||
score += 4
|
||||
elif cost > 15:
|
||||
score -= 10
|
||||
|
||||
# Isotropy
|
||||
aniso = mech.get('anisotropy_Z_factor', 1.0)
|
||||
if aniso >= 0.9:
|
||||
score += 5
|
||||
reasons.append(f"good isotropy (Z/XY = {aniso})")
|
||||
|
||||
# Quantity
|
||||
if req.get('quantity') and req['quantity'] > 100:
|
||||
procs = mat.get('processes', [])
|
||||
if any(p in ['SLS', 'MJF'] for p in procs):
|
||||
score += 8
|
||||
reasons.append("process well-suited for large series")
|
||||
if any(p == 'LPBF' for p in procs) and req['quantity'] > 50:
|
||||
score -= 5 # LPBF is expensive for large volumes
|
||||
|
||||
return min(score, 100), reasons, []
|
||||
|
||||
def recommend(req, top_n=5):
|
||||
db = load_db()
|
||||
all_mats = db['polymers'] + db['metals']
|
||||
results = []
|
||||
eliminated = []
|
||||
|
||||
for mat in all_mats:
|
||||
score, reasons, disqualified = score_material(mat, req)
|
||||
if disqualified:
|
||||
eliminated.append({'id': mat['id'], 'name': mat['name'], 'why': disqualified})
|
||||
else:
|
||||
results.append({
|
||||
'id': mat['id'],
|
||||
'name': mat['name'],
|
||||
'processes': mat.get('processes', []),
|
||||
'score': score,
|
||||
'reasons': reasons,
|
||||
'cost_relative': mat.get('cost_relative', '?'),
|
||||
'Ra_asbuilt': mat.get('surface_roughness', {}).get('Ra_asbuilt_typical', '?'),
|
||||
'T_max': mat.get('thermal', {}).get('T_max_service', '?'),
|
||||
'UTS_max': (mat.get('mechanical', {}).get('UTS_max') or
|
||||
mat.get('mechanical', {}).get('UTS_asbuilt_max') or
|
||||
mat.get('mechanical', {}).get('UTS_LPBF_max') or '?'),
|
||||
'postprocess_for_Ra': _ra_strategy(mat, req.get('Ra_target'))
|
||||
})
|
||||
|
||||
results.sort(key=lambda x: x['score'], reverse=True)
|
||||
return results[:top_n], eliminated
|
||||
|
||||
def _ra_strategy(mat, Ra_target):
|
||||
"""Returns the post-processing strategy to reach target Ra."""
|
||||
if Ra_target is None:
|
||||
return None
|
||||
ra = mat.get('surface_roughness', {})
|
||||
Ra_asbuilt = ra.get('Ra_asbuilt_typical', 50)
|
||||
if Ra_asbuilt <= Ra_target:
|
||||
return f"as-built is sufficient (Ra_typical={Ra_asbuilt}µm)"
|
||||
postproc = ra.get('postprocess_achievable', {})
|
||||
strategies = []
|
||||
for method, vals in postproc.items():
|
||||
if isinstance(vals, dict) and 'Ra_min' in vals:
|
||||
if vals['Ra_min'] <= Ra_target:
|
||||
note = vals.get('note', '')
|
||||
strategies.append(f"{method} → Ra≥{vals['Ra_min']}µm" + (f" ({note})" if note else ""))
|
||||
if strategies:
|
||||
return "; or ".join(strategies)
|
||||
return f"target Ra={Ra_target}µm NOT achievable (min={min((v['Ra_min'] for v in postproc.values() if isinstance(v,dict) and 'Ra_min' in v), default=Ra_asbuilt)}µm)"
|
||||
|
||||
def print_report(results, eliminated, req):
|
||||
print("\n" + "="*70)
|
||||
print(" AM MATERIAL SELECTOR — Results")
|
||||
print("="*70)
|
||||
print(f"\n Requirements analyzed:")
|
||||
for k, v in req.items():
|
||||
if v is not None:
|
||||
print(f" {k}: {v}")
|
||||
print(f"\n Materials evaluated: {len(results)+len(eliminated)}")
|
||||
print(f" Eligible: {len(results)} | Eliminated: {len(eliminated)}")
|
||||
|
||||
print("\n" + "-"*70)
|
||||
print(" TOP CANDIDATES (sorted by score)")
|
||||
print("-"*70)
|
||||
for i, r in enumerate(results):
|
||||
print(f"\n [{i+1}] {r['name']} (score: {r['score']}/100)")
|
||||
print(f" Processes: {', '.join(r['processes'])}")
|
||||
print(f" UTS_max: {r['UTS_max']} MPa | T_max: {r['T_max']}°C | Ra_asbuilt: {r['Ra_asbuilt']}µm | Cost: {r['cost_relative']}/10")
|
||||
if r['postprocess_for_Ra']:
|
||||
print(f" Ra strategy: {r['postprocess_for_Ra']}")
|
||||
if r['reasons']:
|
||||
for reason in r['reasons'][:3]:
|
||||
print(f" ✓ {reason}")
|
||||
|
||||
if eliminated:
|
||||
print("\n" + "-"*70)
|
||||
print(f" ELIMINATED ({len(eliminated)}) — main reasons")
|
||||
print("-"*70)
|
||||
shown = 0
|
||||
for e in eliminated[:10]:
|
||||
print(f" ✗ {e['name']}: {'; '.join(e['why'][:2])}")
|
||||
shown += 1
|
||||
if len(eliminated) > shown:
|
||||
print(f" ... and {len(eliminated)-shown} more")
|
||||
print("\n" + "="*70 + "\n")
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="AM Material Selector — filters materials by engineering requirements")
|
||||
parser.add_argument('--T', type=float, help="Max service temperature (°C)")
|
||||
parser.add_argument('--UTS', type=float, help="Minimum required UTS (MPa)")
|
||||
parser.add_argument('--Ra', type=float, help="Target surface roughness Ra (µm)")
|
||||
parser.add_argument('--process', type=str, help="Specific process (FDM, SLS, LPBF, etc.)")
|
||||
parser.add_argument('--bio', action='store_true', help="Biocompatibility required")
|
||||
parser.add_argument('--uv', action='store_true', help="UV resistance required")
|
||||
parser.add_argument('--qty', type=int, help="Quantity (pcs)")
|
||||
parser.add_argument('--top', type=int, default=5, help="Number of results (default: 5)")
|
||||
parser.add_argument('--json', action='store_true', help="JSON output")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
req = {
|
||||
'T_service': args.T,
|
||||
'UTS_min': args.UTS,
|
||||
'Ra_target': args.Ra,
|
||||
'process': args.process,
|
||||
'biocompatible':args.bio or None,
|
||||
'uv_resistant': args.uv or None,
|
||||
'quantity': args.qty
|
||||
}
|
||||
req = {k: v for k, v in req.items() if v}
|
||||
|
||||
if not req:
|
||||
print("ERROR: specify at least one requirement. Use --help for parameters.")
|
||||
sys.exit(1)
|
||||
|
||||
results, eliminated = recommend(req, top_n=args.top)
|
||||
|
||||
if args.json:
|
||||
print(json.dumps({'results': results, 'eliminated': eliminated}, indent=2))
|
||||
else:
|
||||
print_report(results, eliminated, req)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user