A STEP file’s FILE_SCHEMA names an EXPRESS schema, and every entity keyword in
the data section is an entity of that schema (see Part 21
syntax for how an instance is written). The schemas of the application protocols are
large. This page reads two of them from the public
STEPcode repository (3-clause BSD) and
lists the entities a CAD solid model needs, with their attributes in file order. “Inherited”
attributes of a supertype come first, in the order of the supertype chain.
Schemas read
| Application protocol | Schema name in FILE_SCHEMA | What the repository file is |
|---|---|---|
| AP203, configuration controlled design | CONFIG_CONTROL_DESIGN | data/ap203/ap203.exp: the AIM long form of ISO 10303-203 amendment 1 (ISO TC184/SC4/WG3 N916, Larry McKee, 2000-05-04), with one change by the STEPcode authors, who removed an if statement that always evaluates the same way. It has 254 entity declarations and 69 types |
| AP214, core data for automotive mechanical design processes | AUTOMOTIVE_DESIGN | data/ap214e3/AP214E3_2010.exp: the AIM long form of ISO/DIS 10303-214:2007, generated 2009-06-30 with PDTec’s LongformGenerator. It has 915 entity declarations and 192 types. Its information object identifier is { iso standard 10303 part(214) version(3) object(1) automotive-design-schema(1) } |
Counts are of lines beginning with ENTITY and TYPE in the files,
without parsing EXPRESS. The Part 21 standard’s own example writes an AP214 schema with
an identifier as 'AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 }', an earlier
version of the same schema.
AP203 has no colour or style entities (it declares no styled_item); AP214
adds them (below). Schemas of other protocols, such as AP242, were not read; see the
overview’s “Not described” list.
Product structure
All names are AP203 and AP214 unless noted.
| Entity | Supertype | Attributes (inherited first) |
|---|---|---|
APPLICATION_CONTEXT | – | application : text |
APPLICATION_PROTOCOL_DEFINITION | – | status : label; application_interpreted_model_schema_name : label; application_protocol_year : year_number; application : application_context |
PRODUCT_CONTEXT | application_context_element | name : label; frame_of_reference : application_context; discipline_type : label |
PRODUCT_DEFINITION_CONTEXT | application_context_element | name : label; frame_of_reference : application_context; life_cycle_stage : label |
PRODUCT | – | id : identifier; name : label; description : text; frame_of_reference : SET [1:?] OF product_context |
PRODUCT_DEFINITION_FORMATION | – | id : identifier; description : text; of_product : product |
PRODUCT_DEFINITION | – | id : identifier; description : text; formation : product_definition_formation; frame_of_reference : product_definition_context |
PRODUCT_RELATED_PRODUCT_CATEGORY | product_category | name : label; description : OPTIONAL text; products : SET [1:?] OF product |
PRODUCT_DEFINITION_RELATIONSHIP | – | id : identifier; name : label; description : text; relating_product_definition; related_product_definition (both product_definition) |
NEXT_ASSEMBLY_USAGE_OCCURRENCE | assembly_component_usage, a subtype of product_definition_usage, itself a subtype of product_definition_relationship | the five relationship attributes, then reference_designator : OPTIONAL identifier. The parent is the relating definition and the component the related one |
PROPERTY_DEFINITION | – | name : label; description : text; definition : characterized_definition |
PRODUCT_DEFINITION_SHAPE | property_definition | the three attributes above; the shape of a product definition |
PROPERTY_DEFINITION_REPRESENTATION | – | definition : property_definition; used_representation : representation |
SHAPE_DEFINITION_REPRESENTATION | property_definition_representation | the two attributes above. Ties a PRODUCT_DEFINITION_SHAPE to a SHAPE_REPRESENTATION |
REPRESENTATION_RELATIONSHIP, SHAPE_REPRESENTATION_RELATIONSHIP | –; the second is a subtype of the first | name : label; description : text; rep_1 : representation; rep_2 : representation |
CONTEXT_DEPENDENT_SHAPE_REPRESENTATION | – | representation_relation : shape_representation_relationship; represented_product_relation : product_definition_shape. Places a component’s shape in its parent’s |
REPRESENTATION_MAP, MAPPED_ITEM | –; representation_item | mapping_origin : representation_item; mapped_representation : representation. MAPPED_ITEM adds name, then mapping_source : representation_map; mapping_target : representation_item |
ITEM_DEFINED_TRANSFORMATION | – | name : label; description : text; transform_item_1; transform_item_2 (representation items, usually axis placements) |
Representations, contexts and units
| Entity | Supertype | Attributes |
|---|---|---|
REPRESENTATION, SHAPE_REPRESENTATION | –; representation | name : label; items : SET [1:?] OF representation_item; context_of_items : representation_context |
REPRESENTATION_ITEM | – | name : label. The supertype of every geometric and topological item |
GEOMETRIC_REPRESENTATION_CONTEXT | representation_context | context_identifier : identifier; context_type : text (from representation_context), then coordinate_space_dimension : dimension_count |
GLOBAL_UNIT_ASSIGNED_CONTEXT | representation_context | units : SET [1:?] OF unit |
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT | representation_context | uncertainty : SET [1:?] OF uncertainty_measure_with_unit |
UNCERTAINTY_MEASURE_WITH_UNIT | measure_with_unit | value_component : measure_value; unit_component : unit; name : label; description : text |
NAMED_UNIT | – | dimensions : dimensional_exponents. Subtypes: SI_UNIT, CONVERSION_BASED_UNIT, CONTEXT_DEPENDENT_UNIT, combined with LENGTH_UNIT, MASS_UNIT, PLANE_ANGLE_UNIT, SOLID_ANGLE_UNIT, AREA_UNIT or VOLUME_UNIT |
SI_UNIT | named_unit | prefix : OPTIONAL si_prefix; name : si_unit_name. Its dimensions are derived from the name, so a combined instance writes NAMED_UNIT(*) (see the complex instance example on the Part 21 page) |
CONVERSION_BASED_UNIT | named_unit | name : label; conversion_factor : measure_with_unit |
DIMENSIONAL_EXPONENTS | – | length_exponent, mass_exponent, time_exponent, electric_current_exponent, thermodynamic_temperature_exponent, amount_of_substance_exponent, luminous_intensity_exponent (all REAL) |
MEASURE_WITH_UNIT | – | value_component : measure_value; unit_component : unit. Subtypes by kind of measure (length, mass, plane angle, solid angle, area, volume) |
Geometry
| Entity | Supertype | Own attributes (after the supertype’s) |
|---|---|---|
CARTESIAN_POINT | point | name; coordinates : LIST [1:3] OF length_measure |
DIRECTION | geometric_representation_item | name; direction_ratios : LIST [2:3] OF REAL |
VECTOR | geometric_representation_item | name; orientation : direction; magnitude : length_measure |
AXIS2_PLACEMENT_3D | placement | name; location : cartesian_point; axis : OPTIONAL direction; ref_direction : OPTIONAL direction |
AXIS1_PLACEMENT, AXIS2_PLACEMENT_2D | placement | name; location; axis : OPTIONAL direction (axis 1); ref_direction : OPTIONAL direction (axis 2, 2D) |
LINE | curve | name; pnt : cartesian_point; dir : vector |
CIRCLE | conic | name; position : axis2_placement; radius : positive_length_measure |
ELLIPSE | conic | name; position : axis2_placement; semi_axis_1; semi_axis_2 : positive_length_measure |
TRIMMED_CURVE | bounded_curve | name; basis_curve : curve; trim_1; trim_2 : SET [1:2] OF trimming_select; sense_agreement : BOOLEAN; master_representation : trimming_preference |
COMPOSITE_CURVE | bounded_curve | name; segments : LIST [1:?] OF composite_curve_segment; self_intersect : LOGICAL |
B_SPLINE_CURVE | bounded_curve | name; degree : INTEGER; control_points_list : LIST [2:?] OF cartesian_point; curve_form : b_spline_curve_form; closed_curve : LOGICAL; self_intersect : LOGICAL. Combined, in a complex instance, with B_SPLINE_CURVE_WITH_KNOTS (knot_multiplicities : LIST [2:?] OF INTEGER; knots : LIST [2:?] OF parameter_value; knot_spec : knot_type) and RATIONAL_B_SPLINE_CURVE (weights_data : LIST [2:?] OF REAL) |
PLANE | elementary_surface | name; position : axis2_placement_3d |
CYLINDRICAL_SURFACE | elementary_surface | name; position; radius : positive_length_measure |
CONICAL_SURFACE | elementary_surface | name; position; radius : length_measure; semi_angle : plane_angle_measure |
SPHERICAL_SURFACE | elementary_surface | name; position; radius : positive_length_measure |
TOROIDAL_SURFACE | elementary_surface | name; position; major_radius; minor_radius : positive_length_measure |
SURFACE_OF_REVOLUTION | swept_surface | name; swept_curve : curve (declared by swept_surface); axis_position : axis1_placement |
SURFACE_OF_LINEAR_EXTRUSION | swept_surface | name; swept_curve : curve (declared by swept_surface); extrusion_axis : vector |
B_SPLINE_SURFACE | bounded_surface | name; u_degree; v_degree : INTEGER; control_points_list : LIST [2:?] OF LIST [2:?] OF cartesian_point; surface_form : b_spline_surface_form; u_closed; v_closed; self_intersect : LOGICAL. With B_SPLINE_SURFACE_WITH_KNOTS (u_multiplicities; v_multiplicities : LIST [2:?] OF INTEGER; u_knots; v_knots : LIST [2:?] OF parameter_value; knot_spec) and the rational subtype (weights as a list of lists, not read here) |
Topology and solids
| Entity | Supertype | Own attributes (after name) |
|---|---|---|
VERTEX_POINT | vertex, geometric_representation_item | vertex_geometry : point |
EDGE_CURVE | edge, geometric_representation_item | after the edge’s edge_start and edge_end (vertices): edge_geometry : curve; same_sense : BOOLEAN |
ORIENTED_EDGE | edge | edge_start and edge_end (derived, so written * in files); edge_element : edge; orientation : BOOLEAN |
EDGE_LOOP | loop, path | edge_list : LIST [1:?] OF UNIQUE oriented_edge (inherited from path) |
VERTEX_LOOP | loop | loop_vertex : vertex |
POLY_LOOP | loop, geometric_representation_item | polygon : LIST [3:?] OF UNIQUE cartesian_point |
FACE_BOUND | topological_representation_item | bound : loop; orientation : BOOLEAN |
FACE_SURFACE, ADVANCED_FACE | face, geometric_representation_item; face_surface | bounds : SET [1:?] OF face_bound (from face); face_geometry : surface; same_sense : BOOLEAN |
ORIENTED_FACE | face | bounds (derived); face_element : face; orientation : BOOLEAN |
CLOSED_SHELL, OPEN_SHELL | connected_face_set | cfs_faces : SET [1:?] OF face |
ORIENTED_CLOSED_SHELL | closed_shell | cfs_faces (derived); closed_shell_element : closed_shell; orientation : BOOLEAN |
MANIFOLD_SOLID_BREP | solid_model | outer : closed_shell |
BREP_WITH_VOIDS | manifold_solid_brep | voids : SET [1:?] OF oriented_closed_shell |
SHELL_BASED_SURFACE_MODEL | geometric_representation_item | sbsm_boundary : SET [1:?] OF shell |
The attribute lists above are as AP203 declares them. ORIENTED_EDGE, ORIENTED_FACE and
ORIENTED_CLOSED_SHELL redeclare their inherited attributes as DERIVE, which is why those
positions are written * in a file.
The typical chain for a solid is: a MANIFOLD_SOLID_BREP whose closed shell has ADVANCED_FACEs; each face has FACE_BOUNDs whose loops are EDGE_LOOPs of ORIENTED_EDGEs; each oriented edge refers to an EDGE_CURVE with two VERTEX_POINTs and a curve; the faces carry surfaces. The solid is an item of a SHAPE_REPRESENTATION, which a SHAPE_DEFINITION_REPRESENTATION attaches to a PRODUCT_DEFINITION_SHAPE of the product’s definition.
Colour and style (AP214)
| Entity | Supertype | Attributes |
|---|---|---|
COLOUR_RGB | colour_specification | (name, inherited) red; green; blue : REAL, each from 0.0 to 1.0 |
FILL_AREA_STYLE_COLOUR | – | name : label; fill_colour : colour |
SURFACE_STYLE_USAGE | founded_item | side : surface_side; style : surface_side_style_select |
PRESENTATION_STYLE_ASSIGNMENT | founded_item | styles : SET [1:?] OF presentation_style_select |
STYLED_ITEM | representation_item | name; styles : SET [1:?] OF presentation_style_assignment; item : representation_item |
Sources
- stepcode/data/ap203/ap203.exp – AP203 amendment 1 AIM long form, as modified by STEPcode (BSD licence)
- stepcode/data/ap214e3/AP214E3_2010.exp – AP214 AIM long form (ISO/DIS 10303-214:2007)
- ISO 10303-21, third edition – for the file schema identifier example