Skip to content
Published on

Complete Guide to 3D Printer Modeling — From Fusion 360 to Slicer to Print

Authors
  • Name
    Twitter
3D Printing Guide

Introduction

A 3D printer is a tool that turns ideas into physical objects. Arduino cases, drone parts, keycaps, figurines — you can make anything you can imagine. This guide covers the entire process from modeling to printing.

Types of 3D Printers

FDM vs SLA vs SLS

CategoryFDMSLA (Resin)SLS
PrincipleMelts filament & stacksCures resin with UV lightSinters powder with laser
Resolution100-400um25-100um80-120um
MaterialsPLA, PETG, ABS, TPUUV resinNylon, PA12
Price (Entry)$150-400$200-500$4,000+
Post-processingSupport removal, sandingWashing + post-curing requiredPowder removal
Use CasesCases, parts, prototypesFigurines, jewelry, dentalIndustrial parts, small batch
RecommendedBambu Lab A1 miniElegoo Saturn 4- (Industrial)

FDM Filament Comparison

FilamentTempBedStrengthFeatures
PLA190-220°C60°CMediumEasiest, eco-friendly, low odor
PETG220-250°C80°CHighChemical resistant, transparent option, practical
ABS230-260°C100°CHighHeat resistant, high shrinkage, ventilation required
TPU210-230°C50°CFlexibleRubber-like flexibility, phone cases
ASA240-260°C100°CHighUV resistant, outdoor use

Part 1: Fusion 360 Modeling

Basic Workflow

1. Sketch (2D Drawing)
   ├── Rectangle, Circle, Line
   ├── Dimension (dimensional constraints)
   └── Constraint (horizontal, vertical, symmetric)

2. 3D Conversion
   ├── Extrude: give 2D a 3D height
   ├── Revolve: rotate 2D around an axis
   ├── Loft: connect between two profiles
   └── Sweep: move profile along a path

3. Modification
   ├── Fillet: round edges
   ├── Chamfer: bevel edges
   ├── Shell: hollow out
   ├── Mirror: duplicate to opposite side
   └── Pattern: circular/linear repetition

4. Export
   └── STL or 3MF (for slicer)

Arduino Case Example

Fusion 360 Steps:
1. New Sketch (XY Plane)
2. Rectangle: 70mm x 55mm (Arduino Uno size + clearance)
3. Extrude: 25mm height
4. Shell: 2mm wall thickness (top open)
5. Sketch (inner wall): USB port hole (12mm x 11mm)
6. Extrude Cut: USB hole through
7. Sketch (bottom): 4 mount holes (M3, dia 3.2mm)
8. Extrude Cut: holes through
9. Fillet: exterior edges 3mm
10. Lid: New Body -> Sketch 72mm x 57mm -> Extrude 2mm
    -> Internal protrusion 1.5mm (snap fit)
11. Export -> STL (High Resolution)

3D Print Design Rules

Design Rules (FDM basis):
├── Minimum wall thickness: 1.2mm (0.4mm nozzle x 3 lines)
├── Minimum hole diameter: 2mm
├── Press-fit tolerance: +0.2~0.3mm (tight fit: +0.1mm)
├── Screw hole: -0.2mm (M3 = model at dia 2.8mm)
├── Overhang: 45 degrees or less (no support needed)
├── Bridge: max 50mm (no support needed)
├── Minimum detail: 0.4mm (nozzle diameter)
├── Text protrusion: minimum 0.6mm
├── Snap fit: hook 1mm + gap 0.3mm
└── 45-degree rule: tilt over 45 degrees -> support needed

Part 2: OpenSCAD (3D Modeling with Code)

// Perfect for developers! Create 3D models with code

// Arduino case (parametric)
board_w = 68.6;  // Arduino Uno dimensions
board_h = 53.3;
board_d = 15;    // component height

wall = 2;        // wall thickness
clearance = 0.5; // press-fit tolerance

// Body
difference() {
    // Outer box
    rounded_box(
        board_w + wall*2 + clearance*2,
        board_h + wall*2 + clearance*2,
        board_d + wall,
        r = 3
    );
    // Inner space
    translate([wall, wall, wall])
        cube([board_w + clearance*2, board_h + clearance*2, board_d + 1]);
    // USB port hole
    translate([-1, wall + 10, wall + 3])
        cube([wall + 2, 12, 11]);
    // Power jack hole
    translate([-1, wall + 30, wall + 2])
        cube([wall + 2, 10, 12]);
}

// M3 mount holes
mount_positions = [[14, 2.5], [15.3, 50.7], [66.1, 7.6], [66.1, 35.6]];
for (pos = mount_positions) {
    translate([pos[0] + wall + clearance, pos[1] + wall + clearance, 0])
        cylinder(d = 3.2, h = wall, $fn = 20);
}

// Module: rounded box
module rounded_box(w, h, d, r) {
    hull() {
        for (x = [r, w-r], y = [r, h-r])
            translate([x, y, 0]) cylinder(r = r, h = d, $fn = 30);
    }
}

// Generate STL from CLI:
// openscad -o case.stl case.scad
OpenSCAD Core Syntax:
├── cube([x,y,z])         — rectangular prism
├── cylinder(d, h)        — cylinder
├── sphere(r)             — sphere
├── translate([x,y,z])    — move
├── rotate([x,y,z])       — rotate
├── scale([x,y,z])        — scale
├── difference()A - B (subtract)
├── union()A + B (combine)
├── intersection()AB (intersect)
├── hull()                — convex hull
├── linear_extrude(h)     — 2D -> 3D extrusion
└── rotate_extrude()      — 2D -> 3D revolution

Part 3: Slicer Settings

Key Parameters

Cura / PrusaSlicer Common Settings:

Layer Height:
├── 0.12mm: High quality (slow, for figurines)
├── 0.20mm: Standard (general parts)
├── 0.28mm: Ultra fast (prototypes, testing)
└── Rule: 25-75% of nozzle diameter (0.4mm nozzle -> 0.1-0.3mm)

Walls / Top-Bottom Thickness:
├── Wall line count: 3-4 (1.2-1.6mm)
├── Top/bottom layers: 4-5 (0.8-1.0mm)
└── Increase walls for more strength

Infill:
├── 10-15%: Decorative (weak)
├── 20-30%: General parts (standard)
├── 40-60%: Mechanical parts (strong)
├── 100%: Solid (strongest, slow)
└── Patterns: Grid (standard), Gyroid (strength/flexibility), Lightning (fast)

Support:
├── Overhang angle: 45 degrees (default)
├── Support density: 10-15% (default)
├── Support Z distance: 0.2mm (easy removal)
└── Tree support: recommended for complex models

Speed:
├── Outer wall: 30-50mm/s (quality)
├── Inner wall: 60-80mm/s
├── Infill: 80-150mm/s (speed)
├── Travel: 150-250mm/s
└── Bambu Lab: 300mm/s+ (acceleration 20000mm/)

Temperature:
├── PLA: Nozzle 200°C, Bed 60°C
├── PETG: Nozzle 235°C, Bed 80°C
├── ABS: Nozzle 245°C, Bed 100°C (enclosure required!)
└── First layer: +5°C, speed 50% (for adhesion)

G-code Basics

; 3D printer commands = G-code
G28           ; Home position (origin)
G29           ; Auto leveling
M104 S200     ; Set nozzle temperature to 200°C
M140 S60      ; Set bed temperature to 60°C
M109 S200     ; Wait until nozzle reaches temperature
M190 S60      ; Wait until bed reaches temperature

G1 X50 Y50 F3000  ; Move to X50 Y50 (3000mm/min)
G1 Z0.2 F300      ; Z 0.2mm (first layer height)
G1 X100 E10 F1500 ; Move to X100 while extruding 10mm
G1 Y100 E20       ; Move to Y100 while extruding more

M106 S128     ; Fan 50% (0-255)
M84           ; Disable motors
M104 S0       ; Turn off nozzle heater

Troubleshooting

Problem -> Cause -> Solution:

First layer not sticking:
  -> Bed leveling / nozzle too high
  -> Lower Z offset, increase bed temp, use adhesive

Stringing:
  -> Insufficient retraction
  -> Increase retraction distance to 6mm+, speed to 40mm/s+, lower temp

Layer separation:
  -> Poor layer adhesion
  -> Increase temp, lower fan speed, use enclosure

Elephant foot:
  -> First layer over-squished
  -> Raise Z offset, first layer flow 90%

Clogging:
  -> Heat creep / contaminants
  -> Cold pull, replace nozzle, check PTFE tube

Quiz — 3D Printer Modeling (Click to check!)

Q1. What is the key difference between FDM and SLA? ||FDM: melts filament and stacks layers (100-400um), affordable, large prints possible. SLA: cures resin with UV (25-100um), high resolution, for figurines/dental. FDM is for functional parts, SLA for precision models||

Q2. What is the tradeoff between 0.12mm and 0.28mm layer height? ||0.12mm: high quality, layer lines invisible, 2.3x print time. 0.28mm: fast, visible layer lines, similar strength. Within 25-75% of nozzle diameter (0.4mm)||

Q3. What is the 45-degree overhang rule? ||Surfaces tilted beyond 45 degrees print in mid-air without support below, causing sagging. Below 45 degrees, the previous layer provides adequate support. Beyond 45 degrees, support is needed||

Q4. What is the difference between OpenSCAD's difference, union, and intersection? ||difference: subtracts B from A (holes). union: combines A and B. intersection: keeps only the overlapping part of A and B. This is the CSG (Constructive Solid Geometry) approach||

Q5. Why is the Gyroid infill pattern good? ||Uniform strength in all directions, flexibility, allows resin/water drainage (non-solid). Superior isotropic strength compared to Grid, and less vibration during printing||