🌐 EN | 🇯🇵 JP | Last sync: 2025-11-16

Chapter 1: Fundamentals of Additive Manufacturing

AM Technology Principles and Classification - 3D Printing Technology Framework

📚 3D Printing Introduction Series ⏱️ Reading Time: 35-40 minutes 🎓 Difficulty: Beginner to Intermediate

Learning Objectives

After completing this chapter, you will be able to explain the following:

Basic Understanding (Level 1)

Practical Skills (Level 2)

Applied Ability (Level 3)

1.1 What Is Additive Manufacturing (AM)?

1.1.1 Definition of Additive Manufacturing

Additive Manufacturing (AM) is "a process that builds objects by adding material layer upon layer from 3D CAD data," as defined in the ISO/ASTM 52900:2021 standard. In contrast to conventional machining (subtractive processing), material is added only where needed, giving it the following innovative characteristics:

💡 Industrial importance

The AM market is growing rapidly. According to the Wohlers Report 2023:

1.1.2 History and Development of AM

Additive manufacturing technology has about 40 years of history, reaching its present state through the following milestones:

flowchart LR
    A[1986
SLA invented
Chuck Hull] --> B[1988
SLS introduced
Carl Deckard] B --> C[1992
FDM patent
Stratasys] C --> D[2005
RepRap
open-sourced] D --> E[2012
Metal AM adoption
EBM/SLM] E --> F[2023
Industrialization
larger and faster] style A fill:#e3f2fd style B fill:#fff3e0 style C fill:#e8f5e9 style D fill:#f3e5f5 style E fill:#fce4ec style F fill:#fff9c4
  1. 1986: Stereolithography (SLA) invented - Dr. Chuck Hull (founder of 3D Systems) invented the first AM technology, curing photopolymer resin layer by layer (US Patent 4,575,330). The term "3D printing" was also born around this time.
  2. 1988: Selective Laser Sintering (SLS) introduced - Dr. Carl Deckard (University of Texas) developed a technology to sinter powder material with a laser, opening the possibility of applications to metals and ceramics.
  3. 1992: Fused Deposition Modeling (FDM) patent - Stratasys commercialized FDM technology, establishing the foundation of the most widely used 3D printing method today.
  4. 2005: The RepRap project - Professor Adrian Bowyer released the open-source 3D printer "RepRap." Combined with patent expirations, this drove down cost and democratized the technology.
  5. 2012 onward: Industrial adoption of metal AM - Electron Beam Melting (EBM) and Selective Laser Melting (SLM) reached practical use in aerospace and medical fields. GE Aviation began mass production of fuel injection nozzles.
  6. Present (2023): The era of larger and faster - New technologies such as binder jetting, continuous-fiber composite AM, and multi-material AM are entering the industrial implementation stage.

1.1.3 Major Application Fields of AM

Application 1: Rapid Prototyping

The first major use of AM, rapidly producing prototypes for design verification, functional testing, and market evaluation:

Application 2: Tooling & Fixtures

Applications where jigs, tools, and molds used on the manufacturing floor are produced with AM:

Application 3: End-Use Parts

Applications that produce final products directly with AM have surged in recent years:

⚠️ Constraints and challenges of AM

AM is not a cure-all and has the following constraints:

1.2 The Seven AM Process Categories per ISO/ASTM 52900

1.2.1 Overview of AM Process Classification

The ISO/ASTM 52900:2021 standard classifies all AM technologies into seven process categories based on energy source and material supply method. Each process has its own strengths and weaknesses, and the optimal technology must be selected according to the application.

flowchart TD
    AM[Additive Manufacturing
7 processes] --> MEX[Material Extrusion] AM --> VPP[Vat Photopolymerization] AM --> PBF[Powder Bed Fusion] AM --> MJ[Material Jetting] AM --> BJ[Binder Jetting] AM --> SL[Sheet Lamination] AM --> DED[Directed Energy Deposition] MEX --> MEX_EX[FDM/FFF
low-cost, widespread] VPP --> VPP_EX[SLA/DLP
high precision, fine surface] PBF --> PBF_EX[SLS/SLM/EBM
high strength, metal-capable] style AM fill:#f093fb style MEX fill:#e3f2fd style VPP fill:#fff3e0 style PBF fill:#e8f5e9 style MJ fill:#f3e5f5 style BJ fill:#fce4ec style SL fill:#fff9c4 style DED fill:#fce4ec

1.2.2 Material Extrusion (MEX)

Principle: A thermoplastic filament is heated and melted, then extruded through a nozzle and stacked. The most widespread technology (also called FDM/FFF).

Process: filament → heated nozzle (190–260°C) → melt extrusion → cooling and solidification → next-layer deposition

Characteristics:

Application examples:

💡 Representative FDM machines

1.2.3 Vat Photopolymerization (VPP)

Principle: A liquid photocurable resin (photopolymer) is selectively cured and stacked by irradiating it with a UV laser or projector.

Process: UV irradiation → photopolymerization reaction → solidification → build platform rises → next-layer irradiation

The two main VPP methods:

  1. SLA (Stereolithography): A UV laser (355 nm) is scanned by galvanometer mirrors to cure pointwise. High precision but slow.
  2. DLP (Digital Light Processing): A projector exposes the entire plane at once. Fast, but resolution depends on the projector pixel count (Full HD: 1920×1080).
  3. LCD-MSLA (Masked SLA): Uses an LCD mask; similar to DLP but lower cost (many desktop machines at $200–$1,000).

Characteristics:

Application examples:

1.2.4 Powder Bed Fusion (PBF)

Principle: A thin layer of powder material is spread, selectively melted or sintered by a laser or electron beam, then cooled and solidified and stacked. Compatible with metals, polymers, and ceramics.

Process: spread powder → laser/electron-beam scan → melting/sintering → solidification → spread next powder layer

The three main PBF methods:

  1. SLS (Selective Laser Sintering): Laser-sinters polymer powder (PA12 nylon, etc.). Supports unnecessary (surrounding powder provides support).
  2. SLM (Selective Laser Melting): Fully melts metal powder (Ti-6Al-4V, AlSi10Mg, Inconel 718, etc.). Can produce high-density parts (relative density >99%).
  3. EBM (Electron Beam Melting): Melts metal powder with an electron beam. High-temperature preheating (650–1000°C) gives low residual stress and fast build speed.

Characteristics:

Application examples:

1.2.5 Material Jetting (MJ)

Principle: Similar to an inkjet printer, droplets of material (photocurable resin or wax) are jetted from a head and immediately cured by UV irradiation, then stacked.

Characteristics:

Application examples: Medical anatomical models (soft and hard tissue reproduced with different materials), full-color architectural models, design verification models

1.2.6 Binder Jetting (BJ)

Principle: A liquid binder (adhesive) is jetted inkjet-style onto a powder bed to bond the powder particles. After building, strength is increased by sintering or infiltration.

Characteristics:

Application examples: Sand-casting molds (large castings such as engine blocks), metal parts (Desktop Metal, HP Metal Jet), full-color figures (souvenirs, educational models)

1.2.7 Sheet Lamination (SL)

Principle: Sheet materials (paper, metal foil, plastic film) are stacked and bonded by adhesion or welding. Each layer is contour-cut by laser or blade.

Representative technologies:

Characteristics: Large builds possible, inexpensive material, moderate precision, limited applications (mainly visual models; embedded sensors, etc. for metals)

1.2.8 Directed Energy Deposition (DED)

Principle: Metal powder or wire is fed while being melted by laser, electron beam, or arc and deposited onto a substrate. Used for large parts and repair of existing parts.

Characteristics:

Application examples: Turbine blade repair, large aerospace parts, wear-resistant coatings for tools

⚠️ Guidelines for process selection

The optimal AM process differs by application requirement:

1.3 The STL File Format and Data Processing

1.3.1 Structure of an STL File

STL (STereoLithography) is the most widely used 3D model file format in AM, developed by 3D Systems in 1987. An STL file represents an object's surface as a set of triangle meshes (Triangle Mesh).

Basic structure of an STL file

STL file = normal vector (n) + three vertex coordinates (v1, v2, v3) × number of triangles

Example of the ASCII STL format:

solid cube
  facet normal 0 0 1
    outer loop
      vertex 0 0 10
      vertex 10 0 10
      vertex 10 10 10
    endloop
  endfacet
  facet normal 0 0 1
    outer loop
      vertex 0 0 10
      vertex 10 10 10
      vertex 0 10 10
    endloop
  endfacet
  ...
endsolid cube

The two kinds of STL format:

  1. ASCII STL: Human-readable text format. Large file size (10–20 times Binary for the same model). Useful for debugging and verification.
  2. Binary STL: Binary format, small file size, fast processing. The standard for industrial use. Structure: 80-byte header + 4 bytes (triangle count) + 50 bytes per triangle (normal 12B + vertices 36B + attribute 2B).

1.3.2 Important Concepts of STL Files

1. Normal Vector

Each triangle face has a defined normal vector (outward direction) that distinguishes the "inside" and "outside" of the object. The normal direction is determined by the right-hand rule:

normal n = (v2 - v1) × (v3 - v1) / |(v2 - v1) × (v3 - v1)|

Vertex ordering rule: Vertices v1, v2, v3 are arranged counter-clockwise (CCW: Counter-ClockWise); viewed from outside in counter-clockwise order, the normal points outward.

2. Manifold Condition

For an STL mesh to be 3D-printable, it must be manifold (Manifold):

⚠️ Problems with non-manifold meshes

A non-manifold mesh (Non-Manifold Mesh) is not 3D-printable. Typical problems:

These problems cause errors in slicer software and lead to build failures.

1.3.3 Quality Metrics of STL Files

STL mesh quality is evaluated by the following metrics:

  1. Triangle Count: Usually 10,000–500,000. Avoid too few (coarse model) or too many (large file, slow processing).
  2. Edge-length uniformity: A mix of extremely large and small triangles degrades build quality. Ideally in the 0.1–1.0 mm range.
  3. Aspect Ratio: Elongated triangles (high aspect ratio) cause numerical error. Ideally aspect ratio < 10.
  4. Normal consistency: All normals unified outward. A mix of inverted normals causes inside/outside determination errors.
💡 The resolution trade-off of STL files

The resolution (triangle count) of an STL mesh is a trade-off between accuracy and file size:

When exporting STL from CAD software, resolution is controlled by Chordal Tolerance or Angle Tolerance. Recommended values: chordal tolerance 0.01–0.1 mm, angle tolerance 5–15 degrees.

1.3.4 STL Processing with Python Libraries

The main libraries for handling STL files in Python:

  1. numpy-stl: Fast STL reading/writing, volume and surface-area computation, normal-vector operations. Simple and lightweight.
  2. trimesh: A comprehensive 3D mesh processing library. Mesh repair, boolean operations, raycasting, collision detection. Feature-rich but with many dependencies.
  3. PyMesh: Advanced mesh processing (remeshing, subdivision, feature extraction). Installation is somewhat complex.

Basic usage of numpy-stl:

from stl import mesh
import numpy as np

# Load the STL file
your_mesh = mesh.Mesh.from_file('model.stl')

# Basic geometric information
volume, cog, inertia = your_mesh.get_mass_properties()
print(f"Volume: {volume:.2f} mm³")
print(f"Center of Gravity: {cog}")
print(f"Surface Area: {your_mesh.areas.sum():.2f} mm²")

# Number of triangles
print(f"Number of Triangles: {len(your_mesh.vectors)}")

1.4 Slicing and Toolpath Generation

The process of converting an STL file into commands (G-code) that a 3D printer can understand is called slicing (Slicing). In this section we learn the basic principles of slicing, toolpath strategies, and the fundamentals of G-code.

1.4.1 Basic Principles of Slicing

Slicing horizontally cuts a 3D model at a fixed height (layer height) and extracts the contour of each layer:

flowchart TD
    A[3D model
STL file] --> B[Slice into layers
along Z-axis] B --> C[Contour detection
per layer] C --> D[Shell generation
perimeter path] D --> E[Infill generation
infill path] E --> F[Add supports
support structure] F --> G[Toolpath optimization
retraction/travel] G --> H[G-code output] style A fill:#e3f2fd style H fill:#e8f5e9

Choosing the layer height

Layer height is the most important parameter determining the trade-off between build quality and build time:

Layer height Build quality Build time Typical use
0.1 mm (very fine) Very high (layer lines nearly invisible) Very long (×2–3) Figures, medical models, end-use parts
0.2 mm (standard) Good (layer lines visible but acceptable) Standard General prototypes, functional parts
0.3 mm (coarse) Low (clear layer lines) Short (×0.5) Early prototypes, internal structural parts
⚠️ Layer-height constraints

Layer height must be set to 25–80% of the nozzle diameter. For example, with a 0.4 mm nozzle the recommended layer-height range is 0.1–0.32 mm. Exceeding this causes insufficient resin extrusion or the nozzle dragging over the previous layer.

1.4.2 Shell and Infill Strategy

Generating the shell (outer wall)

The shell (Shell/Perimeter) is the path forming the outer perimeter of each layer:

Infill patterns

Infill forms the internal structure and controls strength and material usage:

Pattern Strength Print speed Material usage Characteristics
Grid Medium Fast Medium Simple, isotropic, the standard choice
Honeycomb High Slow Medium High strength, excellent strength-to-weight, aerospace use
Gyroid Very high Medium Medium 3D isotropic, curved, the latest recommendation
Concentric Low Fast Low Flexibility-oriented, follows the shell
Lines Low (anisotropic) Very fast Low Fast printing, directional strength
💡 Guidelines for infill density

1.4.3 Generating Support Structures

Areas where the overhang angle exceeds 45 degrees require a Support Structure:

Types of supports

Key support parameters

Parameter Recommended value Effect
Overhang Angle 45–60° Supports generated at or above this angle
Support Density 10–20% Higher density is more stable but harder to remove
Support Z Distance 0.2–0.3 mm Gap between support and part (ease of removal)
Interface Layers 2–4 layers Number of interface layers (balance of surface quality and removability)

1.4.4 Fundamentals of G-code

G-code is the standard numerical control language for controlling 3D printers and CNC machines. Each line represents one command:

Major G-code commands

Command Category Function Example
G0 Motion Rapid move (no extrusion) G0 X100 Y50 Z10 F6000
G1 Motion Linear move (with extrusion) G1 X120 Y60 E0.5 F1200
G28 Init Return to home position G28 (all axes), G28 Z (Z only)
M104 Temperature Set nozzle temperature (no wait) M104 S200
M109 Temperature Set nozzle temperature (wait) M109 S210
M140 Temperature Set bed temperature (no wait) M140 S60
M190 Temperature Set bed temperature (wait) M190 S60

G-code example (build start section)

; === Start G-code ===
M140 S60       ; Start heating bed to 60°C (no wait)
M104 S210      ; Start heating nozzle to 210°C (no wait)
G28            ; Home all axes
G29            ; Auto bed leveling (bed mesh measurement)
M190 S60       ; Wait for bed temperature
M109 S210      ; Wait for nozzle temperature
G92 E0         ; Reset extrusion amount to zero
G1 Z2.0 F3000  ; Raise Z-axis by 2 mm (safety)
G1 X10 Y10 F5000  ; Move to prime position
G1 Z0.3 F3000  ; Lower Z-axis to 0.3 mm (first-layer height)
G1 X100 E10 F1500 ; Draw prime line (clear nozzle clog)
G92 E0         ; Reset extrusion amount to zero again
; === Build start ===

1.4.5 Major Slicing Software

Software License Characteristics Recommended use
Cura Open source Easy to use, rich presets, Tree Support built in Beginner to intermediate, general FDM
PrusaSlicer Open source Advanced settings, variable layer height, custom supports Intermediate to advanced, optimization-focused
Slic3r Open source The origin of PrusaSlicer, lightweight Legacy systems, research use
Simplify3D Commercial ($150) Fast slicing, multi-process, detailed control Professional, industrial use
IdeaMaker Free Raise3D-oriented but versatile, intuitive UI Raise3D users, beginners

1.4.6 Toolpath Optimization Strategies

Efficient toolpaths improve build time, quality, and material usage:

Example 1: Loading an STL File and Obtaining Basic Information

# ===================================
# Example 1: Loading an STL file and obtaining basic information
# ===================================

import numpy as np
from stl import mesh

# Load the STL file
your_mesh = mesh.Mesh.from_file('model.stl')

# Obtain basic geometric information
volume, cog, inertia = your_mesh.get_mass_properties()

print("=== STL File Basic Information ===")
print(f"Volume: {volume:.2f} mm³")
print(f"Surface Area: {your_mesh.areas.sum():.2f} mm²")
print(f"Center of Gravity: [{cog[0]:.2f}, {cog[1]:.2f}, {cog[2]:.2f}] mm")
print(f"Number of Triangles: {len(your_mesh.vectors)}")

# Compute the bounding box (minimum enclosing box)
min_coords = your_mesh.vectors.min(axis=(0, 1))
max_coords = your_mesh.vectors.max(axis=(0, 1))
dimensions = max_coords - min_coords

print(f"\n=== Bounding Box ===")
print(f"X: {min_coords[0]:.2f} to {max_coords[0]:.2f} mm (width: {dimensions[0]:.2f} mm)")
print(f"Y: {min_coords[1]:.2f} to {max_coords[1]:.2f} mm (depth: {dimensions[1]:.2f} mm)")
print(f"Z: {min_coords[2]:.2f} to {max_coords[2]:.2f} mm (height: {dimensions[2]:.2f} mm)")

# Rough estimate of build time (assuming 0.2 mm layer height, 50 mm/s speed)
layer_height = 0.2  # mm
print_speed = 50    # mm/s
num_layers = int(dimensions[2] / layer_height)
# Simple calculation: estimate based on surface area
estimated_path_length = your_mesh.areas.sum() / layer_height  # mm
estimated_time_seconds = estimated_path_length / print_speed
estimated_time_minutes = estimated_time_seconds / 60

print(f"\n=== Build Estimate ===")
print(f"Number of layers (0.2 mm/layer): {num_layers} layers")
print(f"Estimated build time: {estimated_time_minutes:.1f} min ({estimated_time_minutes/60:.2f} hours)")

# Example output:
# === STL File Basic Information ===
# Volume: 12450.75 mm³
# Surface Area: 5832.42 mm²
# Center of Gravity: [25.34, 18.92, 15.67] mm
# Number of Triangles: 2456
#
# === Bounding Box ===
# X: 0.00 to 50.00 mm (width: 50.00 mm)
# Y: 0.00 to 40.00 mm (depth: 40.00 mm)
# Z: 0.00 to 30.00 mm (height: 30.00 mm)
#
# === Build Estimate ===
# Number of layers (0.2 mm/layer): 150 layers
# Estimated build time: 97.2 min (1.62 hours)

Example 2: Verifying Mesh Normal Vectors

# ===================================
# Example 2: Verifying mesh normal vectors
# ===================================

import numpy as np
from stl import mesh

def check_normals(mesh_data):
    """Check the consistency of an STL mesh's normal vectors

    Args:
        mesh_data: numpy-stl Mesh object

    Returns:
        tuple: (flipped_count, total_count, percentage)
    """
    # Check normal direction with the right-hand rule
    flipped_count = 0
    total_count = len(mesh_data.vectors)

    for i, facet in enumerate(mesh_data.vectors):
        v0, v1, v2 = facet

        # Compute edge vectors
        edge1 = v1 - v0
        edge2 = v2 - v0

        # Compute the normal via cross product (right-handed)
        calculated_normal = np.cross(edge1, edge2)

        # Normalize
        norm = np.linalg.norm(calculated_normal)
        if norm > 1e-10:  # Confirm it is not the zero vector
            calculated_normal = calculated_normal / norm
        else:
            continue  # Skip degenerate triangles

        # Compare with the normal stored in the file
        stored_normal = mesh_data.normals[i]
        stored_norm = np.linalg.norm(stored_normal)

        if stored_norm > 1e-10:
            stored_normal = stored_normal / stored_norm

        # Check direction agreement via dot product
        dot_product = np.dot(calculated_normal, stored_normal)

        # A negative dot product means the direction is reversed
        if dot_product < 0:
            flipped_count += 1

    percentage = (flipped_count / total_count) * 100 if total_count > 0 else 0

    return flipped_count, total_count, percentage

# Load the STL file
your_mesh = mesh.Mesh.from_file('model.stl')

# Run the normal check
flipped, total, percent = check_normals(your_mesh)

print("=== Normal Vector Verification Result ===")
print(f"Total triangles: {total}")
print(f"Flipped normals: {flipped}")
print(f"Flip rate: {percent:.2f}%")

if flipped == 0:
    print("\n✅ All normals point in the correct direction")
    print("   This mesh is 3D-printable")
elif percent < 5:
    print("\n⚠️ Some normals are flipped (minor)")
    print("   The slicer is likely to correct them automatically")
else:
    print("\n❌ Many normals are flipped (serious)")
    print("   Repair with a mesh tool (Meshmixer, netfabb) is recommended")

# Example output:
# === Normal Vector Verification Result ===
# Total triangles: 2456
# Flipped normals: 0
# Flip rate: 0.00%
#
# ✅ All normals point in the correct direction
#    This mesh is 3D-printable

Example 3: Checking Manifoldness

# ===================================
# Example 3: Checking manifoldness (Watertight)
# ===================================

import trimesh

# Load the STL file (trimesh attempts automatic repair)
mesh = trimesh.load('model.stl')

print("=== Mesh Quality Diagnosis ===")

# Basic information
print(f"Vertex count: {len(mesh.vertices)}")
print(f"Face count: {len(mesh.faces)}")
print(f"Volume: {mesh.volume:.2f} mm³")

# Check manifoldness
print(f"\n=== 3D Print Suitability Check ===")
print(f"Is watertight: {mesh.is_watertight}")
print(f"Is winding consistent: {mesh.is_winding_consistent}")
print(f"Is valid (geometric validity): {mesh.is_valid}")

# Diagnose problems in detail
if not mesh.is_watertight:
    # Detect the number of holes
    try:
        edges = mesh.edges_unique
        edges_sorted = mesh.edges_sorted
        duplicate_edges = len(edges_sorted) - len(edges)
        print(f"\n⚠️ Problem detected:")
        print(f"   - The mesh has holes")
        print(f"   - Duplicate edge count: {duplicate_edges}")
    except:
        print(f"\n⚠️ There is a problem with the mesh structure")

# Attempt repair
if not mesh.is_watertight or not mesh.is_winding_consistent:
    print(f"\n🔧 Running automatic repair...")

    # Fix normals
    trimesh.repair.fix_normals(mesh)
    print("   ✓ Fixed normal vectors")

    # Fill holes
    trimesh.repair.fill_holes(mesh)
    print("   ✓ Filled holes")

    # Remove degenerate triangles
    mesh.remove_degenerate_faces()
    print("   ✓ Removed degenerate faces")

    # Merge duplicate vertices
    mesh.merge_vertices()
    print("   ✓ Merged duplicate vertices")

    # Check the state after repair
    print(f"\n=== State After Repair ===")
    print(f"Is watertight: {mesh.is_watertight}")
    print(f"Is winding consistent: {mesh.is_winding_consistent}")

    # Save the repaired mesh
    if mesh.is_watertight:
        mesh.export('model_repaired.stl')
        print(f"\n✅ Repair complete! Saved as model_repaired.stl")
    else:
        print(f"\n❌ Automatic repair failed. A dedicated tool such as Meshmixer is recommended")
else:
    print(f"\n✅ This mesh is 3D-printable")

# Example output:
# === Mesh Quality Diagnosis ===
# Vertex count: 1534
# Face count: 2456
# Volume: 12450.75 mm³
#
# === 3D Print Suitability Check ===
# Is watertight: True
# Is winding consistent: True
# Is valid (geometric validity): True
#
# ✅ This mesh is 3D-printable

Confirming the Learning Objectives

Confirm through this chapter that you can now explain the following.

Basic Understanding

Practical Skills

Applied Ability

Exercises

Easy (Basic Check)

Q1: Understanding the STL file format

Which is the correct statement about the ASCII and Binary forms of the STL file?

a) The ASCII form has a smaller file size
b) The Binary form is a human-readable text format
c) The Binary form is typically 5–10 times smaller in file size than the ASCII form
d) The Binary form has lower precision than the ASCII form

Show answer

Correct: c) The Binary form is typically 5–10 times smaller in file size than the ASCII form

Explanation:

  • ASCII STL: A human-readable text format. Each triangle is described in seven lines (facet, normal, three vertices, endfacet). Large file size (tens to hundreds of MB).
  • Binary STL: A compact binary format. 80-byte header + 4-byte triangle count + 50 bytes per triangle. For the same shape, 1/5 to 1/10 the size of ASCII.
  • Precision is the same for both forms (32-bit floating point)
  • Modern 3D printer software supports both forms; Binary is recommended

Concrete example: A 10,000-triangle model → ASCII: about 7 MB, Binary: about 0.5 MB

Q2: Rough calculation of build time

You build a part of volume 12,000 mm³ and height 30 mm with a layer height of 0.2 mm and a print speed of 50 mm/s. Approximately what is the build time? (Assume 20% infill and 2 wall layers.)

a) 30 minutes
b) 60 minutes
c) 90 minutes
d) 120 minutes

Show answer

Correct: c) 90 minutes (about 1.5 hours)

Calculation steps:

  1. Number of layers: height 30 mm ÷ layer height 0.2 mm = 150 layers
  2. Estimating the path length per layer:
    • Volume 12,000 mm³ → average 80 mm³ per layer
    • Walls (shell): about 200 mm/layer (assuming 0.4 mm nozzle diameter)
    • 20% infill: about 100 mm/layer
    • Total: about 300 mm/layer
  3. Total path length: 300 mm/layer × 150 layers = 45,000 mm = 45 m
  4. Print time: 45,000 mm ÷ 50 mm/s = 900 s = 15 minutes
  5. Actual time: accounting for travel, retraction, and acceleration/deceleration, about 5–6× → 75–90 minutes

Key point: The estimate provided by slicer software includes acceleration/deceleration, travel, and temperature stabilization, so it is roughly 4–6× the simple calculation.

Q3: AM process selection

Choose the optimal AM process for the following application: "A titanium-alloy fuel injection nozzle for an aircraft engine, with complex internal flow channels and requirements for high strength and high heat resistance."

a) FDM (Fused Deposition Modeling)
b) SLA (Stereolithography)
c) SLM (Selective Laser Melting)
d) Binder Jetting

Show answer

Correct: c) SLM (Selective Laser Melting / Powder Bed Fusion for Metal)

Reason:

  • Characteristics of SLM: Fully melts metal powder (titanium, Inconel, stainless) with a laser. High density (99.9%), high strength, high heat resistance.
  • Suitability for the application:
    • ✓ Titanium alloy (Ti-6Al-4V) capable
    • ✓ Complex internal flow channels can be produced (after support removal)
    • ✓ Aerospace-grade mechanical properties
    • ✓ GE Aviation actually mass-produces fuel injection nozzles with SLM
  • Why the other options are unsuitable:
    • FDM: plastic only, insufficient strength and heat resistance
    • SLA: resin only, unsuitable for functional parts
    • Binder Jetting: metal is possible, but post-sintering density of 90–95% falls short of aerospace standards

Concrete example: GE Aviation's LEAP fuel nozzle (made by SLM) consolidated 20 previously welded parts into one, achieving a 25% weight reduction and 5× durability improvement.

Medium (Applied)

Q4: Verifying an STL mesh in Python

Complete the following Python code to verify the manifoldness (watertight) of an STL file.

import trimesh

mesh = trimesh.load('model.stl')

# Add code here: check manifoldness, perform automatic
# repair if there are problems, and save the repaired mesh
# as 'model_fixed.stl'
Show answer

Example answer:

import trimesh

mesh = trimesh.load('model.stl')

# Check manifoldness
print(f"Is watertight: {mesh.is_watertight}")
print(f"Is winding consistent: {mesh.is_winding_consistent}")

# Repair if there are problems
if not mesh.is_watertight or not mesh.is_winding_consistent:
    print("Running mesh repair...")

    # Fix normals
    trimesh.repair.fix_normals(mesh)

    # Fill holes
    trimesh.repair.fill_holes(mesh)

    # Remove degenerate triangles
    mesh.remove_degenerate_faces()

    # Merge duplicate vertices
    mesh.merge_vertices()

    # Check the repair result
    print(f"After repair, watertight: {mesh.is_watertight}")

    # Save the repaired mesh
    if mesh.is_watertight:
        mesh.export('model_fixed.stl')
        print("Repair complete: saved as model_fixed.stl")
    else:
        print("⚠️ Automatic repair failed. Please use a tool such as Meshmixer")
else:
    print("✓ The mesh is 3D-printable")

Explanation:

  • trimesh.repair.fix_normals(): Unify the direction of normal vectors
  • trimesh.repair.fill_holes(): Fill holes in the mesh
  • remove_degenerate_faces(): Remove degenerate triangles with zero area
  • merge_vertices(): Merge duplicate vertices

Practical point: Complex problems that even trimesh cannot repair require dedicated tools such as Meshmixer, Netfabb, or MeshLab.

Q5: Calculating support material volume

A cylinder of diameter 40 mm and height 30 mm is built tilted at 45 degrees from the base. Assuming a support density of 15% and a layer height of 0.2 mm, estimate the approximate support material volume.

Show answer

Solution process:

  1. Identifying the region needing support:
    • 45-degree tilt → about half of the cylinder's base is overhang (tilt of 45 degrees or more)
    • Tilting the cylinder 45 degrees leaves one side floating
  2. Geometric calculation of the support region:
    • Projected area of the cylinder: π × (20 mm)² ≈ 1,257 mm²
    • Support area needed at 45-degree tilt: about 1,257 mm² × 0.5 = 629 mm²
    • Support height: at most about 30 mm × sin(45°) ≈ 21 mm
    • Support volume (assuming 100% density): 629 mm² × 21 mm ÷ 2 (triangular shape) ≈ 6,600 mm³
  3. Accounting for 15% support density:
    • Actual support material: 6,600 mm³ × 0.15 = about 990 mm³
  4. Verification:
    • Volume of the cylinder body: π × 20² × 30 ≈ 37,700 mm³
    • Support-to-body ratio: 990 / 37,700 ≈ 2.6% (a reasonable range)

Answer: about 1,000 mm³ (990 mm³)

Practical considerations:

  • Optimizing the build orientation can greatly reduce supports (in this example, building the cylinder upright requires no supports)
  • Using Tree Support can reduce material by a further 30–50%
  • Using water-soluble support material (PVA, HIPS) makes removal easy
Q6: Optimizing layer height

You build a part of height 60 mm, balancing quality and time. Given the three choices of layer height 0.1 mm, 0.2 mm, and 0.3 mm, explain the build-time ratio and recommended use of each.

Show answer

Answer:

Layer height Number of layers Time ratio Quality Recommended use
0.1 mm 600 layers ×3.0 Very high Display figures, medical models, end-use parts
0.2 mm 300 layers ×1.0 (baseline) Good General prototypes, functional parts
0.3 mm 200 layers ×0.67 Low Early prototypes, strength-priority internal parts

Basis for the time ratio:

  • Halving the number of layers halves the number of Z-axis moves
  • BUT: the print time per layer increases slightly (because the volume per layer increases)
  • Overall, it is "roughly inversely proportional" to layer height (strictly, with a factor of 0.9–1.1)

Practical selection criteria:

  1. Cases recommending 0.1 mm:
    • Surface quality is the top priority (customer presentations, exhibitions)
    • Smoothness of curved surfaces matters (faces, curved shapes)
    • You want to nearly eliminate layer lines
  2. Cases recommending 0.2 mm:
    • Balance of quality and time (the most common)
    • Prototypes for functional testing
    • A moderate surface finish is sufficient
  3. Cases recommending 0.3 mm:
    • Speed priority (shape check only)
    • Internal structural parts (appearance irrelevant)
    • Large builds (large time-saving effect)

Variable layer height (Advanced):
Using the variable layer-height feature of PrusaSlicer or Cura, you can mix 0.3 mm on flat areas and 0.1 mm on curved areas to achieve both quality and time.

Q7: Comprehensive problem on AM process selection

Select the optimal AM process for manufacturing an aerospace lightweight bracket (aluminum alloy, topology-optimized complex shape, requirements for high strength and light weight), and give three reasons. Also, list two post-processes to consider.

Show answer

Optimal process: LPBF (Laser Powder Bed Fusion) - SLM for Aluminum

Reasons for selection (three):

  1. High density and high strength:
    • Full laser melting achieves relative density of 99.5% or more
    • Mechanical properties comparable to forged material (tensile strength, fatigue properties)
    • Aerospace certification (AS9100, Nadcap) attainable
  2. Capability to produce topology-optimized shapes:
    • Builds complex lattice structures (thickness 0.5 mm or less) with high precision
    • Handles hollow structures, bionic shapes, and other geometries impossible with conventional machining
    • After support removal, internal structures are also accessible
  3. Material efficiency and weight reduction:
    • Buy-to-fly ratio (material input/final part weight) is 1/10 to 1/20 that of machining
    • Topology optimization reduces weight by 40–60% versus conventional design
    • Aluminum alloys (AlSi10Mg, Scalmalloy) maximize specific strength

Required post-processes (two):

  1. Heat Treatment:
    • Stress Relief Annealing: 300°C, 2–4 hours
    • Purpose: remove residual stress from building, improve dimensional stability
    • Effect: fatigue life improved by 30–50%, prevents warping
  2. Surface Finishing:
    • Machining (CNC): high-precision machining of mounting faces and bolt holes (Ra < 3.2 μm)
    • Electropolishing: reduces surface roughness (Ra 10 μm → 2 μm)
    • Shot Peening: imparts compressive residual stress to the surface layer, improving fatigue properties
    • Anodizing: improves corrosion resistance, imparts insulation (aerospace standard)

Additional considerations:

  • Build orientation: Consider the load direction and build direction (Z-direction strength is 10–15% lower)
  • Support design: Easy-to-remove Tree Support, minimized contact area
  • Quality control: Inspect internal defects by CT scan, X-ray inspection
  • Traceability: Powder lot management, recording of build parameters

Concrete example: Airbus A350 titanium bracket
A bracket previously assembled from 32 parts was consolidated into one, achieving a 55% weight reduction, 65% lead-time reduction, and 35% cost reduction.

Next Steps

In Chapter 1, as the fundamentals of additive manufacturing (AM), we learned the seven process categories per ISO/ASTM 52900, the structure of the STL file format, and the basics of slicing and G-code. In the next Chapter 2, we will learn the detailed build process, material properties, and process-parameter optimization of Material Extrusion (FDM/FFF).

References

  1. Gibson, I., Rosen, D., & Stucker, B. (2015). Additive Manufacturing Technologies: 3D Printing, Rapid Prototyping, and Direct Digital Manufacturing (2nd ed.). Springer. pp. 1-35, 89-145, 287-334. - A comprehensive textbook on AM technology, with detailed coverage of the seven process categories and STL data processing
  2. ISO/ASTM 52900:2021. Additive manufacturing — General principles — Fundamentals and vocabulary. International Organization for Standardization. - The international standard for AM terminology and process classification, widely referenced in industry
  3. Kruth, J.P., Leu, M.C., & Nakagawa, T. (1998). "Progress in Additive Manufacturing and Rapid Prototyping." CIRP Annals - Manufacturing Technology, 47(2), 525-540. - The theoretical basis of selective laser sintering and binding mechanisms
  4. Hull, C.W. (1986). Apparatus for production of three-dimensional objects by stereolithography. US Patent 4,575,330. - The patent for the world's first AM technology (SLA), a key document marking the origin of the AM industry
  5. Wohlers, T. (2023). Wohlers Report 2023: 3D Printing and Additive Manufacturing Global State of the Industry. Wohlers Associates, Inc. pp. 15-89, 156-234. - The latest statistical report on AM market trends and industrial applications, an annually updated industry-standard resource
  6. 3D Systems, Inc. (1988). StereoLithography Interface Specification. - The official specification of the STL file format, defining the ASCII/Binary STL structure
  7. numpy-stl Documentation. (2024). Python library for working with STL files. https://numpy-stl.readthedocs.io/ - A Python library for reading STL files and computing volume
  8. trimesh Documentation. (2024). Python library for loading and using triangular meshes. https://trimsh.org/ - A comprehensive library for mesh repair, boolean operations, and quality evaluation

Tools and Libraries Used

Disclaimer