IGES: The Universal CAD Interchange Format
What Is IGES?
IGES — Initial Graphics Exchange Specification — is one of the oldest and most widely supported neutral CAD (Computer-Aided Design) file formats in existence. First published in 1980 as ANSI Y14.26M and later maintained through version 5.3 (1996), IGES was developed to solve a fundamental problem in engineering: different CAD systems stored geometry in proprietary, incompatible formats, making it impossible to share designs between, say, a Boeing engineer using one CAD package and a supplier using another.
Files carry the .igs or .iges extension and are plain ASCII text (though a binary variant exists), making them human-readable in a text editor — a rare property for a 3D geometry format.
The Five IGES Sections
Every IGES file is divided into exactly five sections, each identified by a letter in column 73 of each 80-character line (a direct relic of punched-card era computing):
| Section | Code | Purpose |
|---|---|---|
| Start | S | Free-text human description; first line identifies the file |
| Global | G | File-wide parameters: units, CAD system, author, tolerances, scale |
| Directory Entry | D | Index of all entities — two lines per entity with type code and attribute fields |
| Parameter Data | P | Actual geometric data for each entity, referenced from D section |
| Terminate | T | Record counts for each section (integrity check) |
The fixed 80-column ASCII line format with section codes in column 73 is entirely a product of the 1970s computing environment. It makes IGES files bulky (10–50× larger than equivalent binary formats) but universally readable.
Entity Types: What IGES Can Store
IGES defines hundreds of entity types covering geometry, topology, annotations, and structure:
Geometric Entities
- Type 100 — Circular Arc
- Type 102 — Composite Curve (polyline / spline chain)
- Type 104 — Conic Arc (ellipse, parabola, hyperbola)
- Type 106 — Copious Data (point sets, polylines)
- Type 110 — Line
- Type 112 — Parametric Spline Curve (cubic B-spline)
- Type 114 — Parametric Spline Surface
- Type 116 — Point
- Type 118 — Ruled Surface
- Type 120 — Surface of Revolution
- Type 122 — Tabulated Cylinder
- Type 126 — Rational B-Spline Curve (NURBS curve)
- Type 128 — Rational B-Spline Surface (NURBS surface)
- Type 142 — Curve on Parametric Surface (trimming curve)
- Type 144 — Trimmed Parametric Surface
Topology and Solids (BREP)
- Type 186 — Manifold Solid B-Rep Object (full solid)
- Type 502 — Vertex List
- Type 504 — Edge List
- Type 508 — Loop
- Type 510 — Face
- Type 514 — Shell
Annotation and Drawing
- Type 202 — Angular Dimension
- Type 206 — Diameter Dimension
- Type 212 — General Note (text)
- Type 214 — Leader (arrow)
- Type 218 — Ordinate Dimension
- Type 220 — Point Dimension
- Type 222 — Radius Dimension
Structure and Grouping
- Type 402 — Associativity Instance (groups)
- Type 404 — Drawing (2D sheet with views)
- Type 406 — Property (attributes, materials)
- Type 408 — Singular Subfigure Instance
- Type 410 — View
- Type 412 — Rectangular Array Subfigure Instance
- Type 414 — Circular Array Subfigure Instance
- Type 416 — External Reference
- Type 420 — Network Subfigure Definition
- Type 430 — Product Definition
- Type 502 — Vertex List (BREP)
Coordinate System and Units
The Global section specifies:
- Model space units: mm, cm, inches, feet, miles, meters, km, mils, microns
- Model space scale: the ratio between model units and IGES file units
- Maximum coordinate value: used for numerical precision assessment
- Author, company, preprocessor version — traceability fields
IGES uses a right-handed Cartesian coordinate system. Transformation matrices (Entity Type 124) move entities between coordinate systems without copying geometry.
Practical IGES Workflow
Reading IGES in Python: pythonOCC / Open CASCADE
from OCC.Core.IGESControl import IGESControl_Reader
from OCC.Core.IFSelect import IFSelect_RetDone
reader = IGESControl_Reader()
status = reader.ReadFile('part.igs')
if status == IFSelect_RetDone:
reader.TransferRoots()
shape = reader.OneShape() # TopoDS_Shape
print(f"Loaded successfully: {shape.ShapeType()}")
else:
print("IGES read error")
Writing IGES from Open CASCADE
from OCC.Core.IGESControl import IGESControl_Writer
writer = IGESControl_Writer()
writer.AddShape(shape)
writer.Write('output.igs')
Command-line with FreeCAD
# Convert STEP to IGES via FreeCAD CLI
freecadcmd -c "
import Part
shape = Part.read('model.step')
Part.export([shape], 'model.igs')
"
IGES vs. STEP: Which to Use?
| Feature | IGES | STEP (AP203/AP214) |
|---|---|---|
| Year established | 1980 | 1994 |
| Format | ASCII text | ASCII text |
| NURBS surfaces | Yes (Types 126/128) | Yes |
| BREP solids | Partial (Type 186) | Full, robust |
| Product structure (assemblies) | Limited | Full BOM support |
| Tolerances / GD&T | Basic | AP242 full GD&T |
| PMI (annotations) | Limited | AP242 full PMI |
| Validation properties | No | Yes |
| Reliability | Variable | More robust |
| File size | Larger (verbose) | Smaller |
Recommendation: prefer STEP for new workflows wherever possible. IGES remains essential for:
- Legacy data from CAD systems predating STEP support (1980–early 2000s)
- Receiving files from older suppliers still locked to IGES
- Some surface modeling scenarios where IGES's NURBS representation is better preserved
- Certain CAM (Computer-Aided Manufacturing) systems that specifically require IGES input
Common IGES Problems and Fixes
Gaps in surfaces: IGES does not enforce watertight geometry — trimming curves may not perfectly close. Use your CAD system's "Heal" or "Repair" function (FreeCAD: Part → Check Geometry; SolidWorks: Import Diagnostics; CATIA: Join).
Missing faces: Some CAD systems export only wireframe (curves) instead of surfaces. Check Entity Type counts in the D section; if you only see Types 100–122 and no Type 128, the file is wireframe-only.
Unit mismatches: If imported geometry is 25.4× too large or too small, the sender likely exported in inches but the receiver interpreted in mm (or vice versa). Check Global section field 14 (units flag).
Attribute loss: colors, layers, materials, and product structure are poorly preserved in IGES. Switch to STEP or request native format if these matter.
Practical Tips
- Always request STEP as well when receiving IGES files — having both gives you a fallback
- Healing is almost always required — no IGES file is perfectly clean; budget time for geometry repair
- Audit entity counts first (
grep "^.\{72\}D" file.igs | wc -lcounts D-section lines; divide by 2 for entity count) - Tolerance matters: Global section fields 11 (minimum resolution) and 12 (approximate maximum coordinate) affect how accurately the receiver should interpret gaps
- IGES 5.3 is the final version — no further development has occurred; STEP (ISO 10303) is the active successor standard
Despite being four decades old, IGES files remain a daily reality in aerospace, automotive, and heavy manufacturing — knowing how to handle them is a core skill for any mechanical engineering or CAD workflow.
Related conversions
Frequent conversions across the catalogue: