STEP-file-parser icon indicating copy to clipboard operation
STEP-file-parser copied to clipboard

Basic parser for reading ISO 10303-21 STEP files. Can be extended to other formats by swapping the EXPRESS schema

Parser for reading ISO 10303-21 STEP files.

I needed to extract certain geometric elements from STEP files, so I put together this very basic module to handle the parsing phase of the process. This can be easily extended to other ISO 10303 formats by swapping the EXPRESS schema

Various express schemas are avaliable here: https://github.com/stepcode/stepcode/tree/develop/data

Sample output of tree after parsing:

1 APPLICATION_PROTOCOL_DEFINITION
└──2 APPLICATION_CONTEXT
3 SHAPE_DEFINITION_REPRESENTATION
├──4 PRODUCT_DEFINITION_SHAPE
│  └──5 PRODUCT_DEFINITION
│     ├──6 PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE
│     │  └──7 PRODUCT
│     │     └──8 MECHANICAL_CONTEXT
│     │        └──2 APPLICATION_CONTEXT
│     └──9 DESIGN_CONTEXT
│        └──2 APPLICATION_CONTEXT
└──10 ADVANCED_BREP_SHAPE_REPRESENTATION
   ├──11 AXIS2_PLACEMENT_3D
   │  ├──12 CARTESIAN_POINT
   │  ├──13 DIRECTION
   │  └──14 DIRECTION
   ├──15 MANIFOLD_SOLID_BREP
   │  └──16 CLOSED_SHELL
   │     ├──17 ADVANCED_FACE
   │     │  ├──18 FACE_BOUND
   │     │  │  └──19 EDGE_LOOP
   │     │  │     ├──20 ORIENTED_EDGE
   │     │  │     │  └──21 EDGE_CURVE
   │     │  │     │     ├──22 VERTEX_POINT
   │     │  │     │     │  └──23 CARTESIAN_POINT
   │     │  │     │     ├──24 VERTEX_POINT
   │     │  │     │     │  └──25 CARTESIAN_POINT
   │     │  │     │     └──26 SURFACE_CURVE
   │     │  │     │        ├──27 LINE
   │     │  │     │        │  ├──28 CARTESIAN_POINT
   │     │  │     │        │  └──29 VECTOR
   │     │  │     │        │     └──30 DIRECTION
   │     │  │     │        ├──31 PCURVE
   │     │  │     │        │  ├──32 PLANE
   │     │  │     │        │  │  └──33 AXIS2_PLACEMENT_3D
   │     │  │     │        │  │     ├──34 CARTESIAN_POINT
   │     │  │     │        │  │     ├──35 DIRECTION
   │     │  │     │        │  │     └──36 DIRECTION
   │     │  │     │        │  └──37 DEFINITIONAL_REPRESENTATION
   │     │  │     │        │     ├──38 LINE
   │     │  │     │        │     │  ├──39 CARTESIAN_POINT
   │     │  │     │        │     │  └──40 VECTOR
   │     │  │     │        │     │     └──41 DIRECTION
   │     │  │     │        │     └──42 COMPLEX