STEP/STP CAD Exchange Format
The STEP file format — the ISO standard for exchanging complete CAD product data including 3D geometry, tolerances, materials, and assembly structure across engineering tools.
You are a file format specialist with deep expertise in STEP (ISO 10303), including Part 21 file structure, Application Protocols (AP203, AP214, AP242), B-rep NURBS geometry, OpenCascade/CadQuery programmatic access, and CAD data exchange workflows across SolidWorks, CATIA, NX, and FreeCAD. ## Key Points - **Extensions:** `.step`, `.stp`, `.p21` - **MIME type:** `application/step`, `application/p21` - **Format:** ASCII text (STEP Part 21 physical file format) - **Standard:** ISO 10303 (multi-part standard, 800+ parts) - **Geometry:** Exact B-rep (NURBS, curves, surfaces), not tessellated meshes - **Key Application Protocols:** - **AP203** — Configuration controlled 3D design (most common) - **AP214** — Automotive design - **AP242** — Managed model-based 3D engineering (modern, recommended) - **CAD data exchange:** Moving designs between SolidWorks, CATIA, NX, Creo, and other CAD systems - **Manufacturing:** Sending precise geometry to CNC machines and CMMs - **Aerospace/automotive:** Mandated format for supplier data exchange (e.g., Boeing, Airbus)
skilldb get file-formats-skills/STEP/STP CAD Exchange FormatFull skill: 209 linesYou are a file format specialist with deep expertise in STEP (ISO 10303), including Part 21 file structure, Application Protocols (AP203, AP214, AP242), B-rep NURBS geometry, OpenCascade/CadQuery programmatic access, and CAD data exchange workflows across SolidWorks, CATIA, NX, and FreeCAD.
STEP/STP CAD Exchange Format (.step, .stp)
Overview
STEP (Standard for the Exchange of Product Data) is an ISO standard (ISO 10303) for representing and exchanging 3D CAD data between different engineering software systems. Unlike mesh-based formats (STL, OBJ), STEP preserves exact mathematical geometry (NURBS surfaces, curves, solids) along with product manufacturing information (PMI), tolerances, materials, and assembly hierarchies.
STEP is the backbone of engineering data exchange in aerospace, automotive, industrial equipment, and any field where precise geometric data must move between different CAD platforms.
Core Philosophy
STEP (Standard for the Exchange of Product Model Data, ISO 10303) is the CAD world's universal interchange format. While each CAD application has its own native format (SolidWorks .sldprt, Fusion 360 .f3d, CATIA .catpart), STEP provides a vendor-neutral representation of solid geometry with exact mathematical surfaces (NURBS, B-rep) that preserves the precise dimensional accuracy that engineering and manufacturing require.
STEP's philosophy is precision over performance. Unlike mesh-based formats (STL, OBJ, glTF) that approximate surfaces with triangles, STEP stores exact mathematical surface definitions. A cylinder in a STEP file is a true cylinder with infinite resolution, not a polygon approximation. This mathematical exactness is essential for CNC machining, injection molding, and any manufacturing process where tolerances matter.
Use STEP as the interchange format between CAD systems and for archiving engineering designs. When a design leaves one CAD environment and enters another, STEP preserves the geometric intent better than any other neutral format. For 3D printing, export to 3MF or STL (which tessellate the exact surfaces into triangles). For visualization and web display, convert to glTF or OBJ. STEP is an engineering format, not a rendering format.
Technical Specifications
- Extensions:
.step,.stp,.p21 - MIME type:
application/step,application/p21 - Format: ASCII text (STEP Part 21 physical file format)
- Standard: ISO 10303 (multi-part standard, 800+ parts)
- Geometry: Exact B-rep (NURBS, curves, surfaces), not tessellated meshes
- Key Application Protocols:
- AP203 — Configuration controlled 3D design (most common)
- AP214 — Automotive design
- AP242 — Managed model-based 3D engineering (modern, recommended)
File Structure
ISO-10303-21;
HEADER;
FILE_DESCRIPTION((''), '2;1');
FILE_NAME('part.step', '2024-01-15', ('Author'), ('Organization'), '', '', '');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN'));
ENDSEC;
DATA;
#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', 'automotive_design', 2000, #2);
#2 = APPLICATION_CONTEXT('core data for automotive mechanical design processes');
#10 = PRODUCT('Part1', 'My Part', '', (#11));
#11 = PRODUCT_CONTEXT('', #2, 'mechanical');
...
#100 = CLOSED_SHELL('', (#101, #102, #103, #104, #105, #106));
#101 = ADVANCED_FACE('', (#110), #120, .T.);
#120 = PLANE('', #121);
#121 = AXIS2_PLACEMENT_3D('', #122, #123, #124);
#122 = CARTESIAN_POINT('', (0.0, 0.0, 0.0));
...
ENDSEC;
END-ISO-10303-21;
Each entity is numbered (#N) and references other entities, forming a directed graph of product data.
How to Work With It
Opening and Viewing
# FreeCAD (open-source, full STEP support)
freecad model.step
# CAD Exchanger (commercial viewer/converter)
# Online viewers: 3D Viewer Online, Autodesk Viewer
# OpenCascade-based viewers
# Import in any OCCT-based application
Creating and Exporting
# Python with CadQuery (most accessible programmatic approach)
import cadquery as cq
result = cq.Workplane("XY").box(10, 20, 5).edges("|Z").fillet(1)
cq.exporters.export(result, 'part.step')
# Python with OpenCascade (pythonocc)
from OCP.BRepPrimAPI import BRepPrimAPI_MakeBox
from OCP.STEPControl import STEPControl_Writer, STEPControl_AsIs
box = BRepPrimAPI_MakeBox(10.0, 20.0, 30.0).Shape()
writer = STEPControl_Writer()
writer.Transfer(box, STEPControl_AsIs)
writer.Write('box.step')
# FreeCAD Python
import FreeCAD, Part
box = Part.makeBox(10, 20, 30)
Part.export([box], 'box.step')
Converting
# STEP to STL (for 3D printing)
freecad --console -c "
import FreeCAD, Part, Mesh
shape = Part.Shape()
shape.read('input.step')
mesh = Mesh.Mesh(shape.tessellate(0.1))
mesh.write('output.stl')
"
# STEP to glTF (via FreeCAD or CAD Exchanger)
# No direct CLI tool; use FreeCAD, Blender (with STEP import add-on), or commercial tools
# STEP to IGES
# Most CAD software can do this conversion directly
# Python conversion with cadquery
import cadquery as cq
result = cq.importers.importStep('input.step')
cq.exporters.export(result, 'output.stl')
Inspecting
# Parse STEP file structure
from OCP.STEPControl import STEPControl_Reader
reader = STEPControl_Reader()
status = reader.ReadFile('model.step')
reader.NbRootsForTransfer() # Number of root entities
reader.TransferRoots()
shape = reader.OneShape()
Common Use Cases
- CAD data exchange: Moving designs between SolidWorks, CATIA, NX, Creo, and other CAD systems
- Manufacturing: Sending precise geometry to CNC machines and CMMs
- Aerospace/automotive: Mandated format for supplier data exchange (e.g., Boeing, Airbus)
- Product lifecycle management (PLM): Archiving design data with full fidelity
- Regulatory compliance: Long-term archival in defense and aerospace (AP242)
- 3D printing preparation: Source format before tessellation to STL/3MF
- Engineering simulation: Source geometry for FEA meshing
Pros & Cons
Pros
- ISO standard — vendor-neutral, internationally recognized
- Preserves exact mathematical geometry (NURBS, B-rep), not approximated meshes
- Supports assembly hierarchies, component relationships, and product structure
- AP242 includes PMI (dimensions, tolerances, annotations) in 3D
- Long-term archival format — mandated by aerospace and defense industries
- Human-readable ASCII format (though verbose)
- Supported by every major CAD system
Cons
- Very large file sizes for complex assemblies (100 MB to several GB)
- Slow to read/write due to complex data structures
- Loss of parametric design history (features, sketches, constraints)
- Color and visual appearance support is limited and inconsistent
- No animation or dynamic content
- Requires specialized libraries (OpenCascade) for programmatic access
- Different AP versions have varying feature support, causing compatibility gaps
Compatibility
| CAD Software | Import | Export | Notes |
|---|---|---|---|
| SolidWorks | Yes | Yes | AP203, AP214, AP242 |
| CATIA | Yes | Yes | Native Dassault format, excellent |
| Siemens NX | Yes | Yes | Full support |
| Creo (Pro/E) | Yes | Yes | Full support |
| Fusion 360 | Yes | Yes | Good support |
| FreeCAD | Yes | Yes | Via OpenCascade |
| OnShape | Yes | Yes | Cloud CAD, full support |
| Inventor | Yes | Yes | Full support |
Programming languages: Python (cadquery, pythonocc-core, FreeCAD), C++ (OpenCascade OCCT), Java (JSDAI), C# (various commercial SDKs).
Related Formats
- IGES — Older CAD exchange format, largely replaced by STEP
- Parasolid (.x_t/.x_b) — Siemens kernel format, widely supported
- SAT/SAB (ACIS) — Spatial kernel format
- DWG/DXF — AutoCAD formats (primarily 2D)
- 3MF — 3D printing format (mesh-based, not exact geometry)
- JT — Siemens lightweight visualization format
- QIF — Quality Information Framework (extends STEP for inspection)
Practical Usage
- Use AP242 (the latest Application Protocol) when possible -- it supports PMI (Product Manufacturing Information), 3D annotations, and modern features that AP203 and AP214 lack.
- Use CadQuery (Python) or pythonocc for programmatic STEP creation and manipulation -- they provide the most accessible API for OpenCascade-based geometry operations.
- When converting STEP to mesh formats (STL, OBJ), control the tessellation tolerance parameter to balance file size against geometric fidelity for your use case.
- Use FreeCAD as a free, cross-platform tool for viewing, editing, and converting STEP files when commercial CAD software is unavailable.
- Always validate STEP files after export by importing them into a different CAD system to verify that geometry, assembly structure, and PMI survived the transfer.
- For large assemblies, use STEP with external references to break the model into manageable parts rather than exporting everything as a single monolithic file.
Anti-Patterns
- Using STL when STEP is available for CNC machining -- STEP preserves exact mathematical geometry (NURBS surfaces, curves); STL provides only an approximated triangle mesh, which loses precision critical for manufacturing.
- Expecting STEP to preserve parametric design history -- STEP exports geometry as a static B-rep snapshot; all feature trees, sketches, constraints, and design intent are lost in translation.
- Ignoring Application Protocol differences -- AP203, AP214, and AP242 have different capabilities; sending an AP242 file to a system that only supports AP203 may result in missing PMI or metadata.
- Editing STEP files as text -- While STEP is ASCII-readable, manually editing entity references is extremely error-prone; use a CAD application or OpenCascade library for modifications.
- Assuming color and appearance transfer reliably -- STEP's color and visual style support is limited and inconsistent across CAD systems; do not rely on STEP for visual fidelity.
Install this skill directly: skilldb add file-formats-skills
Related Skills
3MF 3D Manufacturing Format
The 3MF file format — the modern replacement for STL in 3D printing, supporting colors, materials, multi-object assemblies, and precise manufacturing data in a single package.
7-Zip Compressed Archive
The 7z archive format — open-source high-ratio compression using LZMA2, with strong AES-256 encryption, solid archives, and multi-threading support.
AAC (Advanced Audio Coding)
A lossy audio codec standardized as part of MPEG-2 and MPEG-4, designed to supersede MP3 with better quality at equivalent or lower bitrates.
AC3 (Dolby Digital)
Dolby's surround sound audio codec used in cinema, DVD, Blu-ray, and broadcast television for multichannel 5.1 audio delivery.
AI Adobe Illustrator Format
AI is Adobe Illustrator's native vector graphics file format, used for
AIFF (Audio Interchange File Format)
Apple's uncompressed audio format storing raw PCM data, serving as the Mac equivalent of WAV for professional audio production.