(* LPM/6 Express Schema (Long Form) Formal Release Dated July 21st 2003 This schema incorporates the changes made to STEP Parts 41, 42, 43 and 45 The EXPRESS constructs contained in LPM/5 taken from those parts have been amended to be accordance with the following documents: - ISO 10303-41 2nd Edition (ISO TC 184/SC4/WG12 N525 2000-05-30) - ISO 10303-42 2nd Edition (ISO TC 184/SC4/WG12 N617 2000-09-23 as modified by TC1 WG12 N616) - ISO 10303-43 2nd Edition - ISO 10303-45 Technical Corrigendum 1 (ISO TC 184/SC4/WG12 N256) *) (* Schema Declaration *) SCHEMA STRUCTURAL_FRAME_SCHEMA; (* Object identifier *) (* {cimsteel logical product model version (6) object (1) structural-frame-schema(1)} *) (* Constant Declarations - new for LPM/6 *) CONSTANT dummy_gri : geometric_representation_item := representation_item('')|| geometric_representation_item(); dummy_tri : topological_representation_item := representation_item('')|| topological_representation_item(); END_CONSTANT; (* STEP Part 42 2nd Edition *) (* Type Declarations *) TYPE action_source_accidential = ENUMERATION OF (fire, impulse, impact, undefined); END_TYPE; TYPE action_source_permanent = ENUMERATION OF (dead, self_weight, prestress, lack_of_fit, undefined); END_TYPE; TYPE action_source_variable_long_term = ENUMERATION OF (live, system_imperfection, settlement, temperature_effect, undefined); END_TYPE; TYPE action_source_variable_short_term = ENUMERATION OF (buoyancy, wind, snow, ice, current, wave, rain, undefined); END_TYPE; TYPE action_source_variable_transient = ENUMERATION OF (transport, erection, propping, undefined); END_TYPE; (* Modified for LPM/6 *) TYPE ahead_or_behind = ENUMERATION OF (ahead, exact, behind); END_TYPE; (* STEP Part 41 (Modified in 2nd edition) *) TYPE area_measure = REAL; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) (* Modified for LPM/6 *) TYPE assembly_component_select = SELECT (located_assembly, located_part, located_feature, located_joint_system); END_TYPE; TYPE axis2_placement = SELECT (axis2_placement_2d, axis2_placement_3d); END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE b_spline_curve_form = ENUMERATION OF (polyline_form, circular_arc, elliptic_arc, parabolic_arc, hyperbolic_arc, unspecified); END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE b_spline_surface_form = ENUMERATION OF (plane_surf, cylindrical_surf, conical_surf, spherical_surf, toroidal_surf, surf_of_revolution, ruled_surf, generalised_cone, quadric_surf, surf_of_linear_extrusion, unspecified); END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE bending_method = ENUMERATION OF (hot_bend, cold_bend, undefined); END_TYPE; (* Modified for LPM/6 *) TYPE boolean_operand = SELECT (solid_model, half_space_solid, csg_primitive, boolean_result, half_space_2d); END_TYPE; (* STEP Part 42 (Modified in 2nd edition) *) TYPE boolean_operator = ENUMERATION OF (union, intersection, difference); END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) (* New for LPM/6 - see Issue 81 *) TYPE boolean_value = BOOLEAN; END_TYPE; (* New for LPM/6 *) TYPE brazing_type = ENUMERATION OF (diffusion_brazing, dip_brazing, furnace_brazing, induction_brazing, infrared_brazing, resistance_brazing, torch_brazing); END_TYPE; TYPE buckling_direction = ENUMERATION OF (x_dir, y_dir, z_dir); END_TYPE; (* Modified for LPM/6 - see Issue 83 *) TYPE cardinal_point_ref = INTEGER; WHERE WRTC1 : {0 < SELF < 100}; END_TYPE; TYPE castellation_type = ENUMERATION OF (circular, hexagonal, octagonal, undefined); END_TYPE; TYPE chemical_mechanism_type = ENUMERATION OF (adhesive, grout, filler, sealant, undefined); END_TYPE; TYPE cleaning_method = ENUMERATION OF (chemical_wash, blast_clean, undefined); END_TYPE; TYPE coating_method = ENUMERATION OF (sprayed, brushed, dipped, electroplated, undefined); END_TYPE; TYPE coating_purpose = ENUMERATION OF (corrosion_protection, fire_protection, aesthetic, undefined); END_TYPE; TYPE complexity_level = ENUMERATION OF (low, medium, high); END_TYPE; TYPE connection_type = ENUMERATION OF (pinned, semi_rigid_full_str, semi_rigid_partial_str, rigid_full_str, rigid_partial_str); END_TYPE; TYPE context_dependent_measure = REAL; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE count_measure = NUMBER; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) (* Modified for LPM/6 *) TYPE csg_primitive = SELECT (sphere, ellipsoid, block, right_angular_wedge, faceted_primitive, rectangular_pyramid, torus, right_circular_cone, eccentric_cone, right_circular_cylinder, cyclide_segment_solid, primitive_2d); END_TYPE; (* STEP Part 42 (modified in 2nd edition) *) TYPE csg_select = SELECT (boolean_result, csg_primitive); END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE curve_on_surface = SELECT (pcurve, surface_curve, composite_curve_on_surface); END_TYPE; (* STEP Part 42 (Unchanged in 2nd edition) *) TYPE cutting_type = ENUMERATION OF (sawn, flame_cut, sheared, punched, drilled, laser, abrasion, undefined); END_TYPE; TYPE data_status_type = ENUMERATION OF (deleted, superseded, archived, erroneous, undefined); END_TYPE; TYPE day_in_month_number = INTEGER; WHERE WRTD1 : { 1 <= SELF <= 31 }; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE degrees_rotation = INTEGER; WHERE WRTD2 : {-180 < SELF <= 180}; END_TYPE; TYPE derived_measure = SELECT (force_per_length_measure, inertia_measure, linear_acceleration_measure, linear_stiffness_measure, linear_velocity_measure, mass_per_length_measure, modulus_measure, moment_measure, rotational_acceleration_measure, rotational_stiffness_measure, rotational_velocity_measure); END_TYPE; (* New for LPM/6 *) TYPE description_attribute_select = SELECT (person_and_organization_role, person_and_organization, representation); END_TYPE; (* STEP Part 41 2nd edition (reduced) *) TYPE descriptive_measure = STRING; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE dimension_count = INTEGER; WHERE WRTD3 : SELF > 0; END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE direct_or_indirect_action = ENUMERATION OF (direct_action, indirect_action); END_TYPE; (* New for LPM/6 - see Issue 97 *) TYPE drawing_class = ENUMERATION OF (assembly_drawing, part_drawing, placement_drawing, undefined); END_TYPE; TYPE dynamic_analysis_type = ENUMERATION OF (free_vibration, stressed_free_vibration, damped_vibration, linear_dynamic, response_spectrum, undefined); END_TYPE; TYPE elastic_or_plastic_resistance = ENUMERATION OF (elastic_resistance, plastic_resistance); END_TYPE; TYPE element_surface_shape = ENUMERATION OF (quadrilateral, triangle); END_TYPE; (* Modified for LPM/6 *) TYPE element_volume_shape = ENUMERATION OF (hexahedron_element, wedge_element, tetrahedron_element, pyramid_element); END_TYPE; TYPE fabrication_type = ENUMERATION OF (rolled, welded, cold_formed, cast, forged, extruded, undefined); END_TYPE; TYPE force_measure = REAL; END_TYPE; TYPE force_per_length_measure = REAL; END_TYPE; (* New for LPM/6 *) TYPE founded_item_select = SELECT (founded_item, representation_item); END_TYPE; (* STEP Part 43 2nd Edition *) TYPE frame_continuity = ENUMERATION OF (simple, continuous, semi_continuous); END_TYPE; TYPE frame_type = ENUMERATION OF (space_frame, space_truss, plane_frame, plane_truss, grillage, undefined); END_TYPE; TYPE frequency_measure = REAL; END_TYPE; TYPE geometric_set_select = SELECT (point, curve, surface); END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE global_or_local_load = ENUMERATION OF (global_load, local_load); END_TYPE; TYPE global_or_local_resistance = ENUMERATION OF (global_resistance, local_resistance); END_TYPE; (* New for LPM/6 - See Issues 80 and 103 *) TYPE globally_unique_id = STRING; WHERE WRTG1 : LENGTH(SELF) > 0; END_TYPE; TYPE hour_in_day = INTEGER; WHERE WRTH1 : { 0 <= SELF < 24 }; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) (* New for LPM/6 *) TYPE id_attribute_select = SELECT (action, address, group, representation); END_TYPE; (* STEP Part 41 2nd edition (reduced) *) TYPE identifier = STRING; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE inertia_measure = REAL; WHERE WRTI1 : (SELF > 0.0); END_TYPE; TYPE knot_type = ENUMERATION OF (UNIFORM_KNOTS, UNSPECIFIED, QUASI_UNIFORM_KNOTS, PIECEWISE_BEZIER_KNOTS); END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE label = STRING; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE left_or_right = ENUMERATION OF (left_hand, right_hand); END_TYPE; TYPE length_measure = REAL; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE linear_acceleration_measure = REAL; END_TYPE; TYPE linear_stiffness_measure = REAL; WHERE WRTL1 : (SELF >= 0.0); END_TYPE; TYPE linear_velocity_measure = REAL; END_TYPE; TYPE list_of_reversible_topology_item = LIST [0:?] OF reversible_topology_item; END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE loading_status = ENUMERATION OF (load_increasing, load_decreasing, load_constant, unloaded); END_TYPE; TYPE mass_measure = REAL; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE mass_per_length_measure = REAL; WHERE WRTM1 : (SELF > 0.0); END_TYPE; TYPE maximum_or_minimum = ENUMERATION OF (maximum, minimum); END_TYPE; (* New for LPM/6 - see Issue 81 *) TYPE measure_select = SELECT (measure_with_unit, measure_value, boolean_value); END_TYPE; TYPE measure_value = SELECT (length_measure, mass_measure, time_measure, thermodynamic_temperature_measure, plane_angle_measure, solid_angle_measure, area_measure, volume_measure, ratio_measure, parameter_value, numeric_measure, force_measure, frequency_measure, pressure_measure, context_dependent_measure, descriptive_measure, positive_length_measure, positive_plane_angle_measure, positive_ratio_measure, count_measure, derived_measure); END_TYPE; (* STEP Part 41 expanded (2nd Edition unchanged) *) (* New for LPM/6 *) TYPE member_beam_role = ENUMERATION OF (edge_beam, eaves_beam, gantry_girder, joist, lintel, portal_rafter, purlin, rafter, ring_beam, side_rail, waling_beam); END_TYPE; TYPE member_beam_type = ENUMERATION OF (box_girder, fish_bellied_beam, haunched_beam, plate_girder, stub_girder, tapered_beam); END_TYPE; (* New for LPM/6 *) TYPE member_brace_type = ENUMERATION OF (cross_brace, diagonal_brace, horizontal_brace, knee_brace, lateral_brace, longitudinal_brace, plan_brace, raker, sway_brace, vertical_brace); END_TYPE; (* New for LPM/6 *) TYPE member_cable_type = ENUMERATION OF (stay, suspension_cable, suspension_chain); END_TYPE; TYPE member_class = ENUMERATION OF (primary_member, secondary_member, tertiary_member, undefined_class); END_TYPE; (* New for LPM/6 *) TYPE member_column_type = ENUMERATION OF (battened_column, box_column, compound_strut, portal_column); END_TYPE; TYPE member_cubic_type = ENUMERATION OF (floor, stair, ramp, structural_core, structural_shell, undefined); END_TYPE; (* Modified for LPM/6 *) TYPE member_linear_type = ENUMERATION OF (beam, column, truss_element, brace, spring_element, cable, pipe, wire, tie, undefined, arch, beam_column); END_TYPE; TYPE member_planar_type = ENUMERATION OF (wall, slab, stair_element, ramp_element, undefined, plate); END_TYPE; (* New for LPM/6 *) TYPE member_plate_type = ENUMERATION OF (bearing_plate, diaphragm, flange, web); END_TYPE; TYPE member_role = ENUMERATION OF (compression_member, tension_member, bending_member, combined_member, undefined_role); END_TYPE; (* New for LPM/6 *) TYPE member_slab_type = ENUMERATION OF (flat_slab, ribbed_slab, solid_slab, trough_slab, voided_slab, waffle_slab); END_TYPE; (* New for LPM/6 *) TYPE member_wall_type = ENUMERATION OF (load_bearing_wall, retaining_wall, shear_wall); END_TYPE; TYPE minute_in_hour = INTEGER; WHERE WRTM2 : { 0 <= SELF <= 59 }; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE minutes_rotation = INTEGER; WHERE WRTM3 : {0 <= SELF < 60}; END_TYPE; TYPE modulus_measure = REAL; WHERE WRTM4 : (SELF > 0.0); END_TYPE; TYPE moment_measure = REAL; END_TYPE; TYPE month_in_year_number = INTEGER; WHERE WRTM5 : { 1 <= SELF <= 12 }; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) (* New for LPM/6 *) TYPE name_attribute_select = SELECT (address, derived_unit, person_and_organization); END_TYPE; (* STEP Part 41 2nd edition (Reduced) *) TYPE numeric_measure = NUMBER; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE orientation_select = SELECT (plane_angle_measure_with_unit, direction); END_TYPE; TYPE parameter_value = REAL; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE part_select = SELECT (part, design_part, located_part); END_TYPE; TYPE pcurve_or_surface = SELECT (pcurve, surface); END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE plane_angle_measure = REAL; END_TYPE; TYPE plane_stress_or_strain = ENUMERATION OF (plane_stress, plane_strain, undefined); END_TYPE; TYPE positive_length_measure = length_measure; WHERE WRTP1 : SELF > 0.0; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE positive_plane_angle_measure = plane_angle_measure; WHERE WRTP2 : SELF > 0.0; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE positive_ratio_measure = ratio_measure; WHERE WRTP3 : SELF > 0.0; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE preferred_surface_curve_representation = ENUMERATION OF (curve_3d, pcurve_s1, pcurve_s2); END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE pressure_measure = REAL; END_TYPE; (* New for LPM/6 - See Issue 15 *) TYPE product_item_select = SELECT (structural_frame_product, assembly_component_select); END_TYPE; TYPE project_select = SELECT (project, zone_of_project); END_TYPE; (* Modified for LPM/6 *) TYPE projected_or_true_length = ENUMERATION OF (projected_length, true_length); END_TYPE; TYPE ratio_measure = REAL; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE reversible_topology = SELECT (reversible_topology_item, list_of_reversible_topology_item, set_of_reversible_topology_item); END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE reversible_topology_item = SELECT (edge, path, face, face_bound, closed_shell, open_shell); END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) (* New for LPM/6 *) TYPE role_select = SELECT (group_assignment); END_TYPE; (* STEP Part 41 2nd edition (reduced) *) TYPE rotational_acceleration_measure = REAL; END_TYPE; TYPE rotational_stiffness_measure = REAL; WHERE WRTR1 : (SELF >= 0.0); END_TYPE; TYPE rotational_velocity_measure = REAL; END_TYPE; TYPE second_in_minute = REAL; WHERE WRTS1 : { 0 <= SELF < 60 }; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE seconds_rotation = REAL; WHERE WRTS2 : {0.0 <= SELF < 60.0}; END_TYPE; TYPE select_analysis_item = SELECT (select_analysis_model_item, select_loading_item, select_response_item); END_TYPE; TYPE select_analysis_model_item = SELECT (analysis_method, boundary_condition, element_eccentricity, element_node_connectivity, analysis_model, analysis_model_mapping, analysis_model_relationship, element, element_mapping, node, node_dependency, release); END_TYPE; TYPE select_data_item = SELECT (managed_data_deleted, select_generic_item, select_analysis_item, select_design_item, select_physical_item, select_project_definition_item, select_structural_item); END_TYPE; TYPE select_data_source = SELECT (managed_application_installation, step_file); END_TYPE; TYPE select_design_item = SELECT (assembly_design, assembly_map, assembly_relationship, design_criterion, design_joint_system, design_part, design_result, effective_buckling_length, functional_role, resistance, restraint); END_TYPE; (* Modified for LPM/6 *) TYPE select_generic_item = SELECT (action, action_directive, action_method, address, approval, approval_status, box_domain, certification, certification_type, contract, contract_type, coordinated_universal_time_offset, date, date_and_time, derived_unit, derived_unit_element, description_attribute, dimensional_exponents, document, document_type, document_relationship, document_representation_type, document_usage_constraint, founded_item, functionally_defined_transformation, group, group_assignment, group_relationship, id_attribute, item_defined_transformation, local_time, measure_qualification, measure_with_unit, name_attribute, named_unit, object_role, organization, organization_relationship, person, person_and_organization, person_and_organization_role, representation, representation_context, representation_item, representation_map, representation_relationship, role_association, surface_patch, value_qualifier, versioned_action_request); END_TYPE; TYPE select_loading_item = SELECT ( applied_load, load_case, load, loaded_product, loading_combination, load_combination_occurrence, physical_action); END_TYPE; TYPE select_physical_item = SELECT (located_item, located_part_joint); END_TYPE; TYPE select_project_definition_item = SELECT (assembly, building, building_complex, currency_measure_with_unit, project, project_plan, project_plan_item, project_plan_item_relationship, project_organization, site, structure); END_TYPE; TYPE select_response_item = SELECT ( analysis_result, analysis_results_set, design_result, reaction); END_TYPE; (* modified for LPM/6 *) TYPE select_structural_item = SELECT (coord_system, grid, grid_intersection, grid_offset, geographical_location, item_cost_code, item_cost_code_assigned, item_property, item_property_assigned, item_reference, item_reference_assigned, item_ref_source, item_ref_source_documented, section_properties, setting_out_point, structural_frame_item, structural_frame_item_approved, structural_frame_item_certified, structural_frame_item_documented, structural_frame_item_priced, structural_frame_item_relationship, zone); END_TYPE; TYPE set_of_reversible_topology_item = SET [1:?] OF reversible_topology_item; END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE shell = SELECT (vertex_shell, wire_shell, open_shell, closed_shell); END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE shop_or_site = ENUMERATION OF (shop_process, site_process, undefined); END_TYPE; TYPE si_prefix = ENUMERATION OF (EXA, PETA, TERA, GIGA, MEGA, KILO, HECTO, DECA, DECI, CENTI, MILLI, MICRO, NANO, PICO, FEMTO, ATTO); END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE si_unit_name = ENUMERATION OF (METRE, GRAM, SECOND, AMPERE, KELVIN, MOLE, CANDELA, RADIAN, STERADIAN, HERTZ, NEWTON, PASCAL, JOULE, WATT, COULOMB, VOLT, FARAD, OHM, SIEMENS, WEBER, TESLA, HENRY, DEGREE_CELSIUS, LUMEN, LUX, BECQUEREL, GRAY, SIEVERT); END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE site_select = SELECT (site, located_site, zone_of_site, zone_of_building, building_complex); END_TYPE; (* New for LPM/6 *) TYPE soldering_type = ENUMERATION OF (dip_soldering, furnace_soldering, induction_soldering, infrared_soldering, iron_soldering, resistance_soldering, torch_soldering, wave_soldering); END_TYPE; TYPE solid_angle_measure = REAL; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE spatial_variation = ENUMERATION OF (free_action, fixed_action); END_TYPE; TYPE start_or_end_face = ENUMERATION OF (start_face, end_face); END_TYPE; TYPE static_analysis_type = ENUMERATION OF (elastic_1st_order, elastic_2nd_order, rigid_plastic, elasto_plastic, elastic_perfectly_plastic, undefined); END_TYPE; TYPE static_or_dynamic = ENUMERATION OF (static, dynamic, quasi_dynamic); END_TYPE; TYPE structure_select = SELECT (structure, located_structure, zone_of_structure, zone_of_building, located_assembly); END_TYPE; TYPE surface_model = SELECT (shell_based_surface_model, face_based_surface_model); END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE text = STRING; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE thermodynamic_temperature_measure = REAL; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE time_measure = REAL; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE top_or_bottom = ENUMERATION OF (top_edge, bottom_edge); END_TYPE; TYPE transformation = SELECT (item_defined_transformation, functionally_defined_transformation); END_TYPE; (* STEP Part 43 (unchanged in the 2nd edition) *) TYPE transition_code = ENUMERATION OF (discontinuous, continuous, cont_same_gradient, cont_same_gradient_same_curvature); END_TYPE; (* STEP Part 42 (unchanged in the 2nd edition) *) TYPE trimming_preference = ENUMERATION OF (cartesian, parameter, unspecified); END_TYPE; (* STEP Part 42 (unchanged in the 2nd edition) *) TYPE trimming_select = SELECT (cartesian_point, parameter_value); END_TYPE; (* STEP Part 42 (unchanged in the 2nd edition) *) TYPE unit = SELECT (named_unit, derived_unit); END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) TYPE value_qualifier = SELECT (precision_qualifier, type_qualifier, uncertainty_qualifier); END_TYPE; (* STEP Part 45 (unchanged in TC1) *) TYPE vector_or_direction = SELECT (direction, vector); END_TYPE; (* STEP Part 42 (unchanged in the 2nd edition) *) TYPE volume_measure = REAL; END_TYPE; (* STEP Part 41 (unchanged in 2nd edition) *) (* new for LPM/6 - see Issues 87 and 88 *) TYPE weld_alignment = ENUMERATION OF(staggered, chained); END_TYPE; (* new for LPM/6 - see Issues 87 and 88 *) TYPE weld_backing_type = ENUMERATION OF (none, permanent, copper_backing_bar, ceramic_tape, flare_backing_ring, permanent_backing_ring, removable_backing_ring, user_defined); END_TYPE; (* New for LPM/6 - see Issues 87 and 88 *) TYPE weld_configuration = ENUMERATION OF (butt_joint, tee_joint, corner_joint, lap_joint, edge_joint, cruciform_joint, undefined); END_TYPE; (* new for LPM/6 - see Issues 87 and 88 *) TYPE weld_intermittent_rule = ENUMERATION OF (none, fixed_rule, member_depth, percent_length); END_TYPE; TYPE weld_penetration = ENUMERATION OF (full_penetration, deep_penetration, partial_penetration, undefined); END_TYPE; (* new for LPM/6 - see Issues 87 and 88 *) TYPE weld_shape_bevel = ENUMERATION OF (flare_single_V, flare_double_V, flare_single_bevel, flare_double_bevel, single_bevel, double_bevel, single_V, double_V, single_J, double_J, single_U, double_U, user_defined); END_TYPE; (* new for LPM/6 - see Issues 87 and 88 *) TYPE weld_shape_butt = ENUMERATION OF (square, scarf, user_defined); END_TYPE; (* new for LPM/6 - see Issues 87 and 88 *) TYPE weld_sidedness = ENUMERATION OF (one_side, both_sides); END_TYPE; (* new for LPM/6 - see Issues 87 and 88 *) TYPE weld_surface_shape = ENUMERATION OF (flush, convex, concave, undefined); END_TYPE; (* new for LPM/6 - see Issues 87 and 88 *) TYPE weld_taper_type = ENUMERATION OF (non_taper, one_side_taper, both_sides_taper); END_TYPE; (* Modified for LPM/6 - see Issues 87 and 88 *) TYPE weld_type = ENUMERATION OF (butt_weld, fillet_weld, spot_weld, plug_weld, seam_weld, slot_weld, stud_weld, surfacing_weld, undefined); END_TYPE; TYPE welding_type = ENUMERATION OF (fusion_weld, friction_weld, flash_weld, laser_weld, forge_weld, undefined); END_TYPE; (* New for LPM/6 *) TYPE welding_type_arc = ENUMERATION OF (generic_arc_welding, metal_arc_welding, manual_metal_arc_welding, gravity_arc_welding, self_shielded_arc_welding, submerged_arc_welding, gas_shielded_metal_arc_welding, metal_inert_gas_welding, metal_active_gas_welding, tubular_inert_gas_welding, tubular_active_gas_welding, tungsten_inert_gas_welding, atomic_hydrogen_welding, plasma_arc_welding, carbon_arc_welding, magnetically_impelled_arc_butt_welding); END_TYPE; (* New for LPM/6 *) TYPE welding_type_beam = ENUMERATION OF (electron_beam_welding, laser_beam_welding, gas_laser_welding); END_TYPE; (* New for LPM/6 *) TYPE welding_type_gas = ENUMERATION OF (generic_gas_welding, oxyacetylene_welding, oxyhydrogen_welding, oxypropane_welding); END_TYPE; (* New for LPM/6 *) TYPE welding_type_other = ENUMERATION OF (aluminothermic_welding, electroslag_welding, electrogas_welding, induction_welding, induction_butt_welding, induction_seam_welding, infrared_welding, percussion_welding); END_TYPE; (* New for LPM/6 *) TYPE welding_type_pressure = ENUMERATION OF (generic_pressure_welding, ultrasonic_welding, friction_welding, forge_welding, explosive_welding, diffusion_welding, oxyfuel_gas_pressure_welding, cold_pressure_welding, hot_pressure_welding, roll_welding, high_frequency_pressure_welding); END_TYPE; (* New for LPM/6 *) TYPE welding_type_resistance = ENUMERATION OF (generic_resistance_welding, spot_welding, seam_welding, projection_welding, flash_welding, resistance_butt_welding, high_frequency_resistance_welding); END_TYPE; (* New for LPM/6 *) TYPE welding_type_stud = ENUMERATION OF (generic_stud_welding, resistance_stud_welding, drawn_arc_stud_welding, friction_stud_welding); END_TYPE; TYPE wireframe_model = SELECT (shell_based_wireframe_model, edge_based_wireframe_model); END_TYPE; (* STEP Part 42 (unchanged in 2nd edition) *) TYPE year_number = INTEGER; WHERE WRTY1 : SELF > 1000; END_TYPE; (* based on STEP Part 41 *) (* Entity Declarations *) (* Modified for LPM/6 *) ENTITY action SUPERTYPE OF (executed_action); name : label; description : OPTIONAL text; chosen_method : action_method; DERIVE id : identifier := get_id_value (SELF); WHERE WRA34 : SIZEOF (USEDIN (SELF, 'STRUCTURAL_FRAME_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; END_ENTITY; (* STEP Part 41 (modified in 2nd edition) *) (* Modified for LPM/6 *) ENTITY action_directive; name : label; description : OPTIONAL text; analysis: text; comment : text; requests: SET [1:?] OF versioned_action_request; END_ENTITY; (* STEP Part 41 2nd edition *) (* Modified for LPM/6 *) ENTITY action_method; name : label; description : OPTIONAL text; consequence : text; purpose : text; END_ENTITY; (* STEP Part 41 2nd edition *) (* Modified for LPM/6 *) ENTITY address SUPERTYPE OF (personal_address ANDOR organizational_address); internal_location : OPTIONAL label; street_number : OPTIONAL label; street : OPTIONAL label; postal_box : OPTIONAL label; town : OPTIONAL label; region : OPTIONAL label; postal_code : OPTIONAL label; country : OPTIONAL label; facsimile_number : OPTIONAL label; telephone_number : OPTIONAL label; electronic_mail_address : OPTIONAL label; telex_number : OPTIONAL label; DERIVE name : label := get_name_value (SELF); url : identifier := get_id_value (SELF); WHERE WRA1 : EXISTS (internal_location) OR EXISTS (street_number) OR EXISTS (postal_box) OR EXISTS (town) OR EXISTS (region) OR EXISTS (postal_code) OR EXISTS (country) OR EXISTS (facsimile_number) OR EXISTS (telephone_number) OR EXISTS (electronic_mail_address) OR EXISTS (telex_number); END_ENTITY; (* STEP Part 41 2nd edition *) ENTITY analysis_method SUPERTYPE OF (ONEOF (analysis_method_dynamic, analysis_method_pseudo_dynamic, analysis_method_static) ANDOR analysis_method_documented); analysis_name : label; analysis_assumptions : OPTIONAL text; END_ENTITY; ENTITY analysis_method_documented SUBTYPE OF (analysis_method); documented_constraints : SET [1:?] OF document_usage_constraint; END_ENTITY; ENTITY analysis_method_dynamic SUBTYPE OF (analysis_method); analysis_type : dynamic_analysis_type; END_ENTITY; ENTITY analysis_method_pseudo_dynamic SUBTYPE OF (analysis_method); analysis_type : label; END_ENTITY; ENTITY analysis_method_static SUBTYPE OF (analysis_method); analysis_type : static_analysis_type; END_ENTITY; ENTITY analysis_model SUPERTYPE OF (ONEOF (analysis_model_2D, analysis_model_3D) ANDOR analysis_model_located ANDOR analysis_model_child); model_name : label; model_description : OPTIONAL text; model_type : frame_type; method_of_analysis : OPTIONAL analysis_method; coordinate_space_dimension : dimension_count; INVERSE component_elements : SET [1:?] OF element FOR parent_model; component_nodes : SET [2:?] OF node FOR parent_model; END_ENTITY; ENTITY analysis_model_2D SUBTYPE OF (analysis_model); WHERE WRA2 : SELF\analysis_model.coordinate_space_dimension = 2; WRA3 : (SELF\analysis_model.model_type = PLANE_FRAME) OR (SELF\analysis_model.model_type = PLANE_TRUSS) OR (SELF\analysis_model.model_type = GRILLAGE); END_ENTITY; ENTITY analysis_model_3D SUBTYPE OF (analysis_model); WHERE WRA4 : SELF\analysis_model.coordinate_space_dimension = 3; WRA5 : (SELF\analysis_model.model_type = SPACE_FRAME) OR (SELF\analysis_model.model_type = SPACE_TRUSS); END_ENTITY; ENTITY analysis_model_child SUBTYPE OF (analysis_model); parent_model : analysis_model; WHERE WRA6 : parent_model :<>: (SELF); WRA7 : SELF\analysis_model.coordinate_space_dimension <= parent_model.coordinate_space_dimension; END_ENTITY; ENTITY analysis_model_located SUBTYPE OF (analysis_model); model_coord_sys : coord_system; WHERE WRA8 : SELF\analysis_model.coordinate_space_dimension <= model_coord_sys.coord_system_dimensionality; END_ENTITY; ENTITY analysis_model_mapping; mapped_analysis_model : analysis_model; represented_assemblies : SET [1:?] OF assembly; END_ENTITY; ENTITY analysis_model_relationship; relationship_name : label; relationship_description : OPTIONAL text; relating_model : analysis_model; related_model : analysis_model; WHERE WRA9 : relating_model :<>: related_model; END_ENTITY; ENTITY analysis_result ABSTRACT SUPERTYPE OF (ONEOF (analysis_result_node, analysis_result_element_node, analysis_result_element)); analysis_result_name : label; sign_convention : OPTIONAL text; results_for_analysis : analysis_method; UNIQUE URA1 : analysis_result_name; END_ENTITY; ENTITY analysis_result_element ABSTRACT SUPERTYPE OF (ONEOF (analysis_result_element_curve, analysis_result_element_surface, analysis_result_element_point, analysis_result_element_volume)) SUBTYPE OF (analysis_result); END_ENTITY; ENTITY analysis_result_element_curve SUBTYPE OF (analysis_result_element); result_for_element_curve : element_curve; x_increasing : BOOLEAN; result_values : reaction; result_position : length_measure_with_unit; position_label : OPTIONAL label; END_ENTITY; ENTITY analysis_result_element_node SUBTYPE OF (analysis_result); result_for_element_node : element_node_connectivity; result_values : reaction; END_ENTITY; ENTITY analysis_result_element_point SUBTYPE OF (analysis_result_element); result_for_element_point : element_point; result_values : reaction; END_ENTITY; ENTITY analysis_result_element_surface ABSTRACT SUPERTYPE OF (ONEOF (analysis_result_element_surface_stresses, analysis_result_element_surface_tractions)) SUBTYPE OF (analysis_result_element); result_for_element_surface : element_surface; result_position : point; position_label : OPTIONAL label; END_ENTITY; ENTITY analysis_result_element_surface_stresses SUBTYPE OF (analysis_result_element_surface); direct_stress_sigma_y : pressure_measure_with_unit; membrane_stress_tau_yz : pressure_measure_with_unit; direct_stress_sigma_z : pressure_measure_with_unit; END_ENTITY; ENTITY analysis_result_element_surface_tractions SUBTYPE OF (analysis_result_element_surface); thrust_tz : OPTIONAL force_per_length_measure_with_unit; bending_traction_my : force_measure_with_unit; thrust_ty : OPTIONAL force_per_length_measure_with_unit; torsional_traction_mzy : force_measure_with_unit; torsional_traction_myz : force_measure_with_unit; shear_traction_qz : force_per_length_measure_with_unit; shear_traction_qy : force_per_length_measure_with_unit; bending_traction_mz : force_measure_with_unit; END_ENTITY; ENTITY analysis_result_element_volume ABSTRACT SUPERTYPE OF (analysis_result_element_volume_stress_tensor) SUBTYPE OF (analysis_result_element); result_for_element_volume : element_volume; result_position : point; position_label : OPTIONAL label; END_ENTITY; ENTITY analysis_result_element_volume_stress_tensor SUBTYPE OF (analysis_result_element_volume); shear_stress_tau_zy : pressure_measure_with_unit; shear_stress_tau_xz : pressure_measure_with_unit; normal_stress_sigma_z : pressure_measure_with_unit; normal_stress_sigma_y : pressure_measure_with_unit; normal_stress_sigma_x : pressure_measure_with_unit; shear_stress_tau_zx : pressure_measure_with_unit; shear_stress_tau_yz : pressure_measure_with_unit; shear_stress_tau_yx : pressure_measure_with_unit; shear_stress_tau_xy : pressure_measure_with_unit; END_ENTITY; ENTITY analysis_result_node SUBTYPE OF (analysis_result); result_for_node : node; result_values : reaction; END_ENTITY; ENTITY analysis_results_set SUPERTYPE OF (ONEOF (analysis_results_set_basic, analysis_results_set_combined, analysis_results_set_envelope, analysis_results_set_redistributed)); results_set_name : label; component_results : SET [1:?] OF analysis_result; END_ENTITY; ENTITY analysis_results_set_basic SUBTYPE OF (analysis_results_set); basic_load_case : load_case; END_ENTITY; ENTITY analysis_results_set_combined SUBTYPE OF (analysis_results_set); loading_combination_ref : loading_combination; END_ENTITY; ENTITY analysis_results_set_envelope SUBTYPE OF (analysis_results_set); max_or_min : maximum_or_minimum; component_combinations : SET [1:?] OF analysis_results_set_combined; END_ENTITY; ENTITY analysis_results_set_redistributed SUBTYPE OF (analysis_results_set); redistribution_factors : LIST [1:?] OF ratio_measure_with_unit; END_ENTITY; ENTITY applied_load ABSTRACT SUPERTYPE OF (ONEOF(applied_load_static, applied_load_dynamic)); applied_load_name : label; END_ENTITY; ENTITY applied_load_dynamic SUPERTYPE OF (ONEOF (applied_load_dynamic_acceleration, applied_load_dynamic_velocity)) SUBTYPE OF (applied_load); initial_value : OPTIONAL applied_load_static; final_value : OPTIONAL applied_load_static; maximum_value : OPTIONAL applied_load_static; minimum_value : OPTIONAL applied_load_static; number_of_cycles : OPTIONAL count_measure; load_duration : OPTIONAL time_measure_with_unit; load_frequency : OPTIONAL frequency_measure_with_unit; WHERE WRA10 : EXISTS (initial_value) OR EXISTS (final_value) OR EXISTS (maximum_value) OR EXISTS (minimum_value) OR EXISTS (number_of_cycles) OR EXISTS (load_duration) OR EXISTS (load_frequency) OR ('STRUCTURAL_FRAME_SCHEMA.APPLIED_LOAD_DYNAMIC_ACCELERATION' IN TYPEOF (SELF)) OR ('STRUCTURAL_FRAME_SCHEMA.APPLIED_LOAD_DYNAMIC_VELOCITY' IN TYPEOF (SELF)); END_ENTITY; ENTITY applied_load_dynamic_acceleration SUBTYPE OF (applied_load_dynamic); preset_acceleration_ax : OPTIONAL linear_acceleration_measure_with_unit; preset_acceleration_ay : OPTIONAL linear_acceleration_measure_with_unit; preset_acceleration_az : OPTIONAL linear_acceleration_measure_with_unit; preset_acceleration_arx : OPTIONAL rotational_acceleration_measure_with_unit; preset_acceleration_ary : OPTIONAL rotational_acceleration_measure_with_unit; preset_acceleration_arz : OPTIONAL rotational_acceleration_measure_with_unit; WHERE WRA11 : EXISTS (preset_acceleration_ax) OR EXISTS (preset_acceleration_ay) OR EXISTS (preset_acceleration_az) OR EXISTS (preset_acceleration_arx) OR EXISTS (preset_acceleration_ary) OR EXISTS (preset_acceleration_arz); END_ENTITY; ENTITY applied_load_dynamic_velocity SUBTYPE OF (applied_load_dynamic); preset_velocity_vx : OPTIONAL linear_velocity_measure_with_unit; preset_velocity_vy : OPTIONAL linear_velocity_measure_with_unit; preset_velocity_vz : OPTIONAL linear_velocity_measure_with_unit; preset_velocity_vrx : OPTIONAL rotational_velocity_measure_with_unit; preset_velocity_vry : OPTIONAL rotational_velocity_measure_with_unit; preset_velocity_vrz : OPTIONAL rotational_velocity_measure_with_unit; WHERE WRA12 : EXISTS (preset_velocity_vx) OR EXISTS (preset_velocity_vy) OR EXISTS (preset_velocity_vz) OR EXISTS (preset_velocity_vrx) OR EXISTS (preset_velocity_vry) OR EXISTS (preset_velocity_vrz); END_ENTITY; ENTITY applied_load_static ABSTRACT SUPERTYPE OF (ONEOF (applied_load_static_displacement, applied_load_static_force, applied_load_static_pressure)) SUBTYPE OF (applied_load); END_ENTITY; ENTITY applied_load_static_displacement SUBTYPE OF (applied_load_static); preset_displacement_dx : OPTIONAL length_measure_with_unit; preset_displacement_dy : OPTIONAL length_measure_with_unit; preset_displacement_dz : OPTIONAL length_measure_with_unit; preset_displacement_rx : OPTIONAL plane_angle_measure_with_unit; preset_displacement_ry : OPTIONAL plane_angle_measure_with_unit; preset_displacement_rz : OPTIONAL plane_angle_measure_with_unit; WHERE WRA13 : EXISTS (preset_displacement_dx) OR EXISTS (preset_displacement_dy) OR EXISTS (preset_displacement_dz) OR EXISTS (preset_displacement_rx) OR EXISTS (preset_displacement_ry) OR EXISTS (preset_displacement_rz); END_ENTITY; ENTITY applied_load_static_force SUBTYPE OF (applied_load_static); applied_force_fx : OPTIONAL force_measure_with_unit; applied_force_fy : OPTIONAL force_measure_with_unit; applied_force_fz : OPTIONAL force_measure_with_unit; applied_moment_mx : OPTIONAL moment_measure_with_unit; applied_moment_my : OPTIONAL moment_measure_with_unit; applied_moment_mz : OPTIONAL moment_measure_with_unit; WHERE WRA14 : EXISTS (applied_force_fx) OR EXISTS (applied_force_fy) OR EXISTS (applied_force_fz) OR EXISTS (applied_moment_mx) OR EXISTS (applied_moment_my) OR EXISTS (applied_moment_mz); END_ENTITY; ENTITY applied_load_static_pressure SUBTYPE OF (applied_load_static); applied_pressure_px : OPTIONAL pressure_measure_with_unit; applied_pressure_py : OPTIONAL pressure_measure_with_unit; applied_pressure_pz : OPTIONAL pressure_measure_with_unit; WHERE WRA15 : EXISTS (applied_pressure_px) OR EXISTS (applied_pressure_py) OR EXISTS (applied_pressure_pz); END_ENTITY; ENTITY approval; status : approval_status; level : label; END_ENTITY; (* STEP Part 41 (unchanged in 2nd edition) *) ENTITY approval_status; name : label; END_ENTITY; (* STEP Part 41 (unchanged in 2nd edition) *) ENTITY area_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE WRA16 : 'STRUCTURAL_FRAME_SCHEMA.AREA_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component); WRA17 : 'STRUCTURAL_FRAME_SCHEMA.AREA_MEASURE' IN TYPEOF (SELF\measure_with_unit.value_component); END_ENTITY; (* based STEP Part 41 *) ENTITY area_unit SUBTYPE OF (named_unit); WHERE WRA18 : (SELF\named_unit.dimensions.length_exponent = 2.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); END_ENTITY; (* STEP Part 41 (unchanged in 2nd edition) *) ENTITY assemble SUBTYPE OF (structural_frame_process); resulting_assembly : located_assembly; components : SET [1:?] OF assembly_component_select; required_processes : SET [1:?] OF structural_frame_process; WHERE WRA29 : 'STRUCTURAL_FRAME_SCHEMA.ASSEMBLY_MANUFACTURING' IN TYPEOF (resulting_assembly.descriptive_assembly); WRA30 : SIZEOF(QUERY(component <* components | component :=: resulting_assembly)) = 0; WRA31 : SIZEOF(QUERY(process <* required_processes | process :=: (SELF))) = 0; END_ENTITY; (* Modified for LPM/6 *) ENTITY assembly ABSTRACT SUPERTYPE OF (ONEOF (assembly_design, assembly_manufacturing) ANDOR assembly_with_shape) SUBTYPE OF (structural_frame_product); assembly_sequence_number : OPTIONAL INTEGER; complexity : OPTIONAL complexity_level; DERIVE uses : SET [0:?] OF located_assembly := bag_to_set (USEDIN(SELF,'STRUCTURAL_FRAME_SCHEMA.LOCATED_ASSEMBLY.DESCRIPTIVE_ASSEMBLY')); END_ENTITY; ENTITY assembly_design SUPERTYPE OF (ONEOF (assembly_design_structural_frame, assembly_design_structural_member, assembly_design_structural_connection) ANDOR assembly_design_child) SUBTYPE OF (assembly); designed : BOOLEAN; checked : BOOLEAN; roles : SET [0:?] OF functional_role; governing_criteria : SET [0:?] OF design_criterion; END_ENTITY; ENTITY assembly_design_child SUBTYPE OF (assembly_design); parent_assemblies : SET [1:?] OF assembly_design; WHERE WRA27 : SIZEOF(QUERY(assembly <* parent_assemblies | assembly :=: (SELF)) ) = 0; END_ENTITY; ENTITY assembly_design_structural_connection SUPERTYPE OF (ONEOF (assembly_design_structural_connection_internal, assembly_design_structural_connection_external)) SUBTYPE OF (assembly_design); struc_connection_type : OPTIONAL connection_type; END_ENTITY; ENTITY assembly_design_structural_connection_external SUBTYPE OF (assembly_design_structural_connection); connected_member : assembly_design_structural_member; END_ENTITY; ENTITY assembly_design_structural_connection_internal SUBTYPE OF (assembly_design_structural_connection); connected_members : SET [2:?] OF assembly_design_structural_member; END_ENTITY; ENTITY assembly_design_structural_frame SUBTYPE OF (assembly_design); type_of_frame : frame_type; continuity : OPTIONAL frame_continuity; sway_frame : OPTIONAL BOOLEAN; braced_frame : OPTIONAL BOOLEAN; bracing_frame : OPTIONAL BOOLEAN; frame_members : SET [0:?] OF assembly_design_structural_member; frame_connections : SET [0:?] OF assembly_design_structural_connection; END_ENTITY; (* Modified for LPM/6 - DERIVE added *) ENTITY assembly_design_structural_member SUPERTYPE OF (ONEOF (assembly_design_structural_member_cubic, assembly_design_structural_member_linear, assembly_design_structural_member_planar)) SUBTYPE OF (assembly_design); key_member : OPTIONAL BOOLEAN; structural_member_use : member_role; structural_member_class : member_class; DERIVE restraints : SET [0:?] OF restraint := bag_to_set (USEDIN(SELF,'STRUCTURAL_FRAME_SCHEMA.RESTRAINT.RESTRAINED_MBR')); effective_lengths : SET [0:?] OF effective_buckling_length := bag_to_set (USEDIN(SELF,'STRUCTURAL_FRAME_SCHEMA.EFFECTIVE_BUCKLING_LENGTH.APPLICABLE_MEMBER')); END_ENTITY; ENTITY assembly_design_structural_member_cubic SUBTYPE OF (assembly_design_structural_member); cubic_member_type : member_cubic_type; cubic_member_components : SET [0:?] OF assembly_design_structural_member; WHERE WRA28 : SIZEOF(QUERY(member <* cubic_member_components | member :=: (SELF)) ) = 0; END_ENTITY; (* Modified for LPM/6 - subtypes added *) ENTITY assembly_design_structural_member_linear SUPERTYPE OF (ONEOF ( assembly_design_structural_member_linear_beam, assembly_design_structural_member_linear_brace, assembly_design_structural_member_linear_cable, assembly_design_structural_member_linear_column) ANDOR assembly_design_structural_member_linear_cambered) SUBTYPE OF (assembly_design_structural_member); linear_member_type : member_linear_type; END_ENTITY; (* New for LPM/6 *) ENTITY assembly_design_structural_member_linear_beam SUBTYPE OF (assembly_design_structural_member_linear); beam_type : SET [0:?] OF member_beam_type; beam_role : SET [0:?] OF member_beam_role; unrestrained_beam : LOGICAL; deep_beam : LOGICAL; WHERE WRA35 : SELF\assembly_design_structural_member_linear.linear_member_type = BEAM; WRA42 : SIZEOF(SELF\assembly_design_structural_member.restraints) > 1; WRA43 : SIZEOF(SELF\assembly_design_structural_member.effective_lengths) > 0; END_ENTITY; (* New for LPM/6 *) ENTITY assembly_design_structural_member_linear_brace SUBTYPE OF (assembly_design_structural_member_linear); brace_type : member_brace_type; WHERE WRA36 : SELF\assembly_design_structural_member_linear.linear_member_type = BRACE; END_ENTITY; (* New for LPM/6 *) ENTITY assembly_design_structural_member_linear_cable SUBTYPE OF (assembly_design_structural_member_linear); cable_type : member_cable_type; WHERE WRA37 : SELF\assembly_design_structural_member_linear.linear_member_type = CABLE; END_ENTITY; (* New for LPM/6 - see Issue 92 *) ENTITY assembly_design_structural_member_linear_cambered SUPERTYPE OF (assembly_design_structural_member_linear_cambered_absolute ANDOR assembly_design_structural_member_linear_cambered_relative) SUBTYPE OF (assembly_design_structural_member_linear); camber_description : OPTIONAL text; END_ENTITY; (* New for LPM/6 - see Issue 92 *) ENTITY assembly_design_structural_member_linear_cambered_absolute SUBTYPE OF (assembly_design_structural_member_linear_cambered); absolute_offset_position : positive_length_measure_with_unit; absolute_offset_y : length_measure_with_unit; absolute_offset_z : length_measure_with_unit; END_ENTITY; (* New for LPM/6 - see Issue 92 *) ENTITY assembly_design_structural_member_linear_cambered_relative SUBTYPE OF (assembly_design_structural_member_linear_cambered); relative_offset_position : ratio_measure_with_unit; relative_offset_y : ratio_measure_with_unit; relative_offset_z : ratio_measure_with_unit; END_ENTITY; (* New for LPM/6 *) ENTITY assembly_design_structural_member_linear_column SUBTYPE OF (assembly_design_structural_member_linear); column_type : SET [1:?] OF member_column_type; slender_column : LOGICAL; WHERE WRA38 : SELF\assembly_design_structural_member_linear.linear_member_type = COLUMN; WRA44 : SIZEOF(SELF\assembly_design_structural_member.restraints) > 1; WRA45 : SIZEOF(SELF\assembly_design_structural_member.effective_lengths) > 0; END_ENTITY; (* Modified for LPM/6 - subtypes added *) ENTITY assembly_design_structural_member_planar SUPERTYPE OF (ONEOF ( assembly_design_structural_member_planar_plate, assembly_design_structural_member_planar_slab, assembly_design_structural_member_planar_wall)) SUBTYPE OF (assembly_design_structural_member); planar_member_type : member_planar_type; planar_member_components : SET [0:?] OF assembly_design_structural_member_linear; END_ENTITY; (* New for LPM/6 *) ENTITY assembly_design_structural_member_planar_plate SUBTYPE OF (assembly_design_structural_member_planar); plate_type : member_plate_type; stiffened_plate : LOGICAL; thick_plate : LOGICAL; WHERE WRA39 : SELF\assembly_design_structural_member_planar.planar_member_type = PLATE; END_ENTITY; (* New for LPM/6 *) ENTITY assembly_design_structural_member_planar_slab SUBTYPE OF (assembly_design_structural_member_planar); slab_type : member_slab_type; WHERE WRA40 : SELF\assembly_design_structural_member_planar.planar_member_type = SLAB; END_ENTITY; (* New for LPM/6 *) ENTITY assembly_design_structural_member_planar_wall SUBTYPE OF (assembly_design_structural_member_planar); wall_type : member_wall_type; WHERE WRA41 : SELF\assembly_design_structural_member_planar.planar_member_type = WALL; END_ENTITY; ENTITY assembly_manufacturing SUPERTYPE OF (assembly_manufacturing_child) SUBTYPE OF (assembly); surface_treatment : OPTIONAL text; assembly_sequence : OPTIONAL text; assembly_use : OPTIONAL text; place_of_assembly : OPTIONAL shop_or_site; END_ENTITY; ENTITY assembly_manufacturing_child SUBTYPE OF (assembly_manufacturing); parent_assembly : assembly_manufacturing; WHERE WRA19 : parent_assembly :<>: (SELF); END_ENTITY; ENTITY assembly_map; represented_assembly : assembly; representing_elements : SET [1:?] OF element; END_ENTITY; ENTITY assembly_relationship; relationship_name : label; relationship_description : OPTIONAL text; related_assembly : assembly; relating_assembly : assembly; WHERE WRA20 : related_assembly :<>: relating_assembly; END_ENTITY; ENTITY assembly_with_shape SUBTYPE OF (assembly); shape : shape_representation_with_units; END_ENTITY; (* New for LPM/6 - see Issue 22 *) ENTITY assembly_with_bounding_box SUBTYPE OF (assembly_with_shape); DERIVE bounding_box : SET [1:?] OF representation_item := (SELF\assembly_with_shape.shape\representation.items); WHERE WRA32 : SIZEOF(bounding_box) = 1; (* the assembly will have only 1 representation item *) WRA33 : SIZEOF(QUERY(tmp <* bounding_box | ('STRUCTURAL_FRAME_SCHEMA.BLOCK') IN TYPEOF(tmp))) = 1; (* the bounding box is made up of only 1 representation item which will be of the type block *) END_ENTITY; (* Modified for LPM/6 *) ENTITY axis1_placement SUBTYPE OF (placement); axis : OPTIONAL direction; DERIVE z : direction := NVL(normalise(axis), dummy_gri || direction([0.0,0.0,1.0])); WHERE WRA21 : SELF\geometric_representation_item.dim = 3; END_ENTITY; (* STEP Part 42 (modified in 2nd edition) *) ENTITY axis2_placement_2d SUBTYPE OF (placement); ref_direction : OPTIONAL direction; DERIVE p : LIST [2:2] OF direction := build_2axes(ref_direction); WHERE WRA22 : SELF\geometric_representation_item.dim = 2; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* Modified for LPM/6 *) ENTITY axis2_placement_3d SUBTYPE OF (placement); axis : OPTIONAL direction; ref_direction : OPTIONAL direction; DERIVE p : LIST [3:3] OF direction := build_axes(axis,ref_direction); WHERE WRA23 : SELF\placement.location.dim = 3; WRA24 : (NOT (EXISTS (axis))) OR (axis.dim = 3); WRA25 : (NOT (EXISTS (ref_direction))) OR (ref_direction.dim = 3); WRA26 : (NOT (EXISTS (axis))) OR (NOT (EXISTS (ref_direction))) OR (cross_product(axis,ref_direction).magnitude > 0.0); END_ENTITY; (* STEP Part 42 (modified in 2nd edition) *) ENTITY b_spline_curve SUPERTYPE OF ((ONEOF (b_spline_curve_with_knots, uniform_curve, quasi_uniform_curve, bezier_curve)) ANDOR rational_b_spline_curve) SUBTYPE OF (bounded_curve); degree : INTEGER; control_points_list : LIST [2:?] OF cartesian_point; curve_form : b_spline_curve_form; closed_curve : LOGICAL; self_intersect : LOGICAL; DERIVE upper_index_on_control_points : INTEGER := (SIZEOF(control_points_list) - 1); control_points : ARRAY [0:upper_index_on_control_points] OF cartesian_point := list_to_array(control_points_list, 0, upper_index_on_control_points); WHERE WRB1 : ('STRUCTURAL_FRAME_SCHEMA.UNIFORM_CURVE' IN TYPEOF(self)) OR ('STRUCTURAL_FRAME_SCHEMA.QUASI_UNIFORM_CURVE' IN TYPEOF(self)) OR ('STRUCTURAL_FRAME_SCHEMA.BEZIER_CURVE' IN TYPEOF(self)) OR ('STRUCTURAL_FRAME_SCHEMA.B_SPLINE_CURVE_WITH_KNOTS' IN TYPEOF(self)); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY b_spline_curve_with_knots SUBTYPE OF (b_spline_curve); knot_multiplicities : LIST [2:?] OF INTEGER; knots : LIST [2:?] OF parameter_value; knot_spec : knot_type; DERIVE upper_index_on_knots : INTEGER := SIZEOF(knots); WHERE WRB2 : constraints_param_b_spline(degree, upper_index_on_knots, upper_index_on_control_points, knot_multiplicities, knots); WRB3 : SIZEOF(knot_multiplicities) = upper_index_on_knots; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY b_spline_surface SUPERTYPE OF ((ONEOF (b_spline_surface_with_knots, uniform_surface, quasi_uniform_surface, bezier_surface)) ANDOR rational_b_spline_surface) SUBTYPE OF (bounded_surface); u_degree : INTEGER; v_degree : INTEGER; control_points_list : LIST [2:?] OF LIST [2:?] OF cartesian_point; surface_form : b_spline_surface_form; u_closed : LOGICAL; v_closed : LOGICAL; self_intersect : LOGICAL; DERIVE u_upper : INTEGER := SIZEOF(control_points_list) - 1; v_upper : INTEGER := SIZEOF(control_points_list[1]) - 1; control_points : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF cartesian_point := make_array_of_array (control_points_list, 0, u_upper, 0, v_upper); WHERE WRB4 : ('STRUCTURAL_FRAME_SCHEMA.UNIFORM_SURFACE' IN TYPEOF(SELF)) OR ('STRUCTURAL_FRAME_SCHEMA.QUASI_UNIFORM_SURFACE' IN TYPEOF(SELF)) OR ('STRUCTURAL_FRAME_SCHEMA.BEZIER_SURFACE' IN TYPEOF(SELF)) OR ('STRUCTURAL_FRAME_SCHEMA.B_SPLINE_SURFACE_WITH_KNOTS' IN TYPEOF(SELF)); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY b_spline_surface_with_knots SUBTYPE OF (b_spline_surface); u_multiplicities : LIST [2:?] OF INTEGER; v_multiplicities : LIST [2:?] OF INTEGER; u_knots : LIST [2:?] OF parameter_value; v_knots : LIST [2:?] OF parameter_value; knot_spec : knot_type; DERIVE knot_u_upper : INTEGER := SIZEOF(u_knots); knot_v_upper : INTEGER := SIZEOF(v_knots); WHERE WRB5 : constraints_param_b_spline(SELF\b_spline_surface.u_degree, knot_u_upper, SELF\b_spline_surface.u_upper, u_multiplicities, u_knots); WRB6 : constraints_param_b_spline(SELF\b_spline_surface.v_degree, knot_v_upper, SELF\b_spline_surface.v_upper, v_multiplicities, v_knots); WRB7 : SIZEOF(u_multiplicities) = knot_u_upper; WRB8 : SIZEOF(v_multiplicities) = knot_v_upper; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* New for LPM/6 *) ENTITY b_spline_volume SUPERTYPE OF (ONEOF( b_spline_volume_with_knots, uniform_volume, quasi_uniform_volume, bezier_volume) ANDOR rational_b_spline_volume) SUBTYPE OF (volume); u_degree : INTEGER; v_degree : INTEGER; w_degree : INTEGER; control_points_list : LIST [2:?] OF LIST [2:?] OF LIST [2:?] OF cartesian_point; DERIVE u_upper : INTEGER := SIZEOF(control_points_list) - 1; v_upper : INTEGER := SIZEOF(control_points_list[1]) - 1; w_upper : INTEGER := SIZEOF(control_points_list[1][1]) - 1; control_points : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF ARRAY [0:w_upper] OF cartesian_point := make_array_of_array_of_array (control_points_list,0,u_upper,0,v_upper,0,w_upper ); WHERE WRB17 : ('STRUCTURAL_FRAME_SCHEMA.BEZIER_VOLUME' IN TYPEOF(SELF)) OR ('STRUCTURAL_FRAME_SCHEMA.UNIFORM_VOLUME' IN TYPEOF(SELF)) OR ('STRUCTURAL_FRAME_SCHEMA.QUASI_UNIFORM_VOLUME' IN TYPEOF(SELF)) OR ('STRUCTURAL_FRAME_SCHEMA.B_SPLINE_VOLUME_WITH_KNOTS' IN TYPEOF(SELF)) ; END_ENTITY; (* STEP Part 42 (new in 2nd edition) *) (* New for LPM/6 *) ENTITY b_spline_volume_with_knots SUBTYPE OF (b_spline_volume); u_multiplicities : LIST [2:?] OF INTEGER; v_multiplicities : LIST [2:?] OF INTEGER; w_multiplicities : LIST [2:?] OF INTEGER; u_knots : LIST [2:?] OF parameter_value; v_knots : LIST [2:?] OF parameter_value; w_knots : LIST [2:?] OF parameter_value; DERIVE knot_u_upper : INTEGER := SIZEOF(u_knots); knot_v_upper : INTEGER := SIZEOF(v_knots); knot_w_upper : INTEGER := SIZEOF(w_knots); WHERE WRB18 : constraints_param_b_spline(SELF\b_spline_volume.u_degree, knot_u_upper, SELF\b_spline_volume.u_upper, u_multiplicities, u_knots); WRB19 : constraints_param_b_spline(SELF\b_spline_volume.v_degree, knot_v_upper, SELF\b_spline_volume.v_upper, v_multiplicities, v_knots); WRB20 : constraints_param_b_spline(SELF\b_spline_volume.w_degree, knot_w_upper, SELF\b_spline_volume.w_upper, w_multiplicities, w_knots); WRB21 : SIZEOF(u_multiplicities) = knot_u_upper; WRB22 : SIZEOF(v_multiplicities) = knot_v_upper; WRB23 : SIZEOF(w_multiplicities) = knot_w_upper; END_ENTITY; (* STEP Part 42 (new in 2nd edition) *) ENTITY bend SUBTYPE OF (structural_frame_process); method : bending_method; END_ENTITY; ENTITY bezier_curve SUBTYPE OF (b_spline_curve); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY bezier_surface SUBTYPE OF (b_spline_surface); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* New for LPM/6 *) ENTITY bezier_volume SUBTYPE OF (b_spline_volume); END_ENTITY; (* STEP Part 42 (new in 2nd edition) *) ENTITY block SUBTYPE OF (geometric_representation_item); position : axis2_placement_3d; x : positive_length_measure; y : positive_length_measure; z : positive_length_measure; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* New for LPM/6 *) ENTITY block_volume SUBTYPE OF (volume); position : axis2_placement_3d; x : positive_length_measure; y : positive_length_measure; z : positive_length_measure; END_ENTITY; (* STEP Part 42 (new in 2nd edition) *) ENTITY boolean_result SUBTYPE OF (geometric_representation_item); operator : boolean_operator; first_operand : boolean_operand; second_operand : boolean_operand; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY boundary_condition ABSTRACT SUPERTYPE OF (ONEOF (boundary_condition_logical, boundary_condition_spring_linear, boundary_condition_spring_non_linear) ANDOR boundary_condition_skewed); boundary_condition_name : label; boundary_condition_description : OPTIONAL text; INVERSE restrained_nodes : SET [1:?] OF node FOR restraints; END_ENTITY; ENTITY boundary_condition_logical SUBTYPE OF (boundary_condition); bc_x_displacement_free : LOGICAL; bc_y_displacement_free : LOGICAL; bc_z_displacement_free : LOGICAL; bc_x_rotation_free : LOGICAL; bc_y_rotation_free : LOGICAL; bc_z_rotation_free : LOGICAL; END_ENTITY; ENTITY boundary_condition_skewed SUBTYPE OF (boundary_condition); x_skew_angle : OPTIONAL plane_angle_measure_with_unit; y_skew_angle : OPTIONAL plane_angle_measure_with_unit; z_skew_angle : OPTIONAL plane_angle_measure_with_unit; WHERE WRB9 : EXISTS (x_skew_angle) OR EXISTS (y_skew_angle) OR EXISTS (z_skew_angle); END_ENTITY; ENTITY boundary_condition_spring_linear SUPERTYPE OF (boundary_condition_warping) SUBTYPE OF (boundary_condition); bc_x_displacement : OPTIONAL linear_stiffness_measure_with_unit; bc_y_displacement : OPTIONAL linear_stiffness_measure_with_unit; bc_z_displacement : OPTIONAL linear_stiffness_measure_with_unit; bc_x_rotation : OPTIONAL rotational_stiffness_measure_with_unit; bc_y_rotation : OPTIONAL rotational_stiffness_measure_with_unit; bc_z_rotation : OPTIONAL rotational_stiffness_measure_with_unit; WHERE WRB10 : EXISTS (bc_x_displacement) OR EXISTS (bc_y_displacement) OR EXISTS (bc_z_displacement) OR EXISTS (bc_x_rotation) OR EXISTS (bc_y_rotation) OR EXISTS (bc_z_rotation); END_ENTITY; ENTITY boundary_condition_spring_non_linear SUBTYPE OF (boundary_condition); change_values : LIST [2:?] OF measure_with_unit; values : LIST [2:?] OF boundary_condition_spring_linear; DERIVE number_of_values : INTEGER := SIZEOF(change_values); WHERE WRB12 : SIZEOF(values) = SIZEOF(change_values); END_ENTITY; ENTITY boundary_condition_warping SUBTYPE OF (boundary_condition_spring_linear); bc_warping : rotational_stiffness_measure_with_unit; END_ENTITY; ENTITY boundary_curve SUBTYPE OF (composite_curve_on_surface); WHERE WRB13 : SELF\composite_curve.closed_curve; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY bounded_curve SUPERTYPE OF (ONEOF (composite_curve, polyline, b_spline_curve, trimmed_curve, bounded_pcurve, bounded_surface_curve)) SUBTYPE OF (curve); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY bounded_pcurve SUBTYPE OF (pcurve, bounded_curve); WHERE WRB14 : ('STRUCTURAL_FRAME_SCHEMA.BOUNDED_CURVE' IN TYPEOF(SELF\pcurve.reference_to_curve.items[1])); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY bounded_surface SUPERTYPE OF (ONEOF (b_spline_surface, rectangular_trimmed_surface, curve_bounded_surface, rectangular_composite_surface)) SUBTYPE OF (surface); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY bounded_surface_curve SUBTYPE OF (surface_curve, bounded_curve); WHERE WRB15 : ('STRUCTURAL_FRAME_SCHEMA.BOUNDED_CURVE' IN TYPEOF(SELF\surface_curve.curve_3d)); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY box_domain; corner : cartesian_point; xlength : positive_length_measure; ylength : positive_length_measure; zlength : positive_length_measure; WHERE WRB16 : SIZEOF(QUERY(item <* USEDIN(SELF,'')| NOT ('STRUCTURAL_FRAME_SCHEMA.BOXED_HALF_SPACE' IN TYPEOF(item)))) = 0; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY boxed_half_space SUBTYPE OF (half_space_solid); enclosure : box_domain; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* New for LPM/6 *) ENTITY braze SUBTYPE OF (structural_frame_process); braze_type : brazing_type; END_ENTITY; (* New for LPM/6 *) ENTITY brep_2d SUBTYPE OF (solid_model); extent : face; WHERE WRB25 : SIZEOF (['STRUCTURAL_FRAME_SCHEMA.FACE_SURFACE', 'STRUCTURAL_FRAME_SCHEMA.SUBFACE', 'STRUCTURAL_FRAME_SCHEMA.ORIENTED_FACE'] * TYPEOF (SELF.extent)) = 0; WRB26 : SIZEOF (QUERY (bnds <* extent.bounds | NOT ('STRUCTURAL_FRAME_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound))) ) = 0; WRB27 : SIZEOF (QUERY (bnds <* extent.bounds | 'STRUCTURAL_FRAME_SCHEMA.FACE_OUTER_BOUND' IN TYPEOF(bnds))) = 1; WRB28 : SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* extent.bounds | 'STRUCTURAL_FRAME_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | NOT (('STRUCTURAL_FRAME_SCHEMA.EDGE_CURVE' IN TYPEOF(oe.edge_element)) AND (oe.edge_element\geometric_representation_item.dim = 2)))) = 0))) = 0; END_ENTITY; (* STEP Part 42 (new in 2nd edition) *) ENTITY brep_with_voids SUBTYPE OF (manifold_solid_brep); voids : SET [1:?] OF oriented_closed_shell; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* Modified for LPM/6 *) ENTITY building SUPERTYPE OF (building_with_shape) SUBTYPE OF (structural_frame_item); building_class : OPTIONAL label; owner : OPTIONAL person_and_organization; building_structures : OPTIONAL LIST [1:?] OF structure; UNIQUE URB1 : SELF\structural_frame_item.item_number, SELF\structural_frame_item.item_name; END_ENTITY; ENTITY building_complex SUBTYPE OF (structural_frame_item); building_site : site; buildings : LIST [1:?] OF building; UNIQUE URB2 : SELF\structural_frame_item.item_number, SELF\structural_frame_item.item_name; END_ENTITY; ENTITY building_with_shape SUBTYPE OF (building); shape : shape_representation_with_units; END_ENTITY; ENTITY calendar_date SUBTYPE OF (date); day_component : day_in_month_number; month_component : month_in_year_number; WHERE WRC1: valid_calendar_date (SELF); END_ENTITY; (* STEP Part 41 (unchanged in 2nd edition) *) (* Modified for LPM/6 *) ENTITY cartesian_point SUPERTYPE OF (ONEOF(cylindrical_point, polar_point, spherical_point)) SUBTYPE OF (point); coordinates : LIST [1:3] OF length_measure; END_ENTITY; (* STEP Part 42 (modified in 2nd edition) *) ENTITY cartesian_transformation_operator SUPERTYPE OF (ONEOF (cartesian_transformation_operator_3d, cartesian_transformation_operator_2d)) SUBTYPE OF (geometric_representation_item, functionally_defined_transformation); axis1 : OPTIONAL direction; axis2 : OPTIONAL direction; local_origin : cartesian_point; scale : OPTIONAL REAL; DERIVE scl : REAL := NVL(scale, 1.0); WHERE WRC2 : scl > 0.0; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY cartesian_transformation_operator_2d SUBTYPE OF (cartesian_transformation_operator); DERIVE u : LIST [2:2] OF direction := base_axis(2,SELF\cartesian_transformation_operator.axis1, SELF\cartesian_transformation_operator.axis2,?); WHERE WRC3 : SELF\geometric_representation_item.dim = 2; END_ENTITY; (* STEP Part 42 (modified in 2nd edition) *) ENTITY cartesian_transformation_operator_3d SUBTYPE OF (cartesian_transformation_operator); axis3 : OPTIONAL direction; DERIVE u : LIST [3:3] OF direction := base_axis(3,SELF\cartesian_transformation_operator.axis1, SELF\cartesian_transformation_operator.axis2,axis3); WHERE WRC4 : SELF\geometric_representation_item.dim = 3; END_ENTITY; (* STEP Part 42 (modified in 2nd edition) *) ENTITY certification; name : label; purpose : label; kind : certification_type; END_ENTITY; (* STEP Part 41 (unchanged in 2nd edition) *) ENTITY certification_type; description : text; END_ENTITY; (* STEP Part 41 (unchanged in 2nd edition) *) ENTITY chemical_mechanism SUBTYPE OF (structural_frame_product); layer_thickness : positive_length_measure_with_unit; layer_design_strength : OPTIONAL pressure_measure_with_unit; layer_type : chemical_mechanism_type; END_ENTITY; ENTITY circle SUBTYPE OF (conic); radius : positive_length_measure; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* New for LPM/6 *) ENTITY circular_area SUBTYPE OF (primitive_2d); centre: cartesian_point; radius: positive_length_measure; END_ENTITY; (* STEP Part 42 (new in 2nd edition) *) (* New for LPM/6 *) ENTITY clothoid SUBTYPE OF (curve); position : axis2_placement; clothoid_constant : length_measure; END_ENTITY; (* STEP Part 42 (new for 2nd edition) *) ENTITY closed_shell SUBTYPE OF (connected_face_set); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY coating SUBTYPE OF (structural_frame_product); primary_purpose : coating_purpose; END_ENTITY; ENTITY composite_curve SUPERTYPE OF (composite_curve_on_surface) SUBTYPE OF (bounded_curve); segments : LIST [1:?] OF composite_curve_segment; self_intersect : LOGICAL; DERIVE n_segments : INTEGER := SIZEOF(segments); closed_curve : LOGICAL := segments[n_segments].transition <> discontinuous; WHERE WRC5 : ((NOT closed_curve) AND (SIZEOF(QUERY(temp <* segments | temp.transition = discontinuous)) = 1)) OR ((closed_curve) AND (SIZEOF(QUERY(temp <* segments | temp.transition = discontinuous)) = 0)); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY composite_curve_on_surface SUBTYPE OF (composite_curve); DERIVE basis_surface : SET [0:2] OF surface := get_basis_surface(SELF); WHERE WRC6 : SIZEOF(basis_surface) > 0; WRC7 : constraints_composite_curve_on_surface(SELF); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* Modified for LPM/6 *) ENTITY composite_curve_segment SUBTYPE OF (founded_item); transition : transition_code; same_sense : BOOLEAN; parent_curve : curve; INVERSE using_curves : BAG [1:?] OF composite_curve FOR segments; WHERE WRC8 : ('STRUCTURAL_FRAME_SCHEMA.BOUNDED_CURVE' IN TYPEOF(parent_curve)); END_ENTITY; (* STEP Part 42 (modified in 2nd edition) *) ENTITY conic SUPERTYPE OF (ONEOF(circle, ellipse, hyperbola, parabola)) SUBTYPE OF (curve); position : axis2_placement; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY conical_surface SUBTYPE OF (elementary_surface); radius : length_measure; semi_angle : plane_angle_measure; WHERE WRC9 : radius >= 0.0; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY connected_edge_set SUBTYPE OF (topological_representation_item); ces_edges : SET [1:?] OF edge; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY connected_face_set SUPERTYPE OF (ONEOF(open_shell, closed_shell)) SUBTYPE OF (topological_representation_item); cfs_faces : SET [1:?] OF face; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY context_dependent_unit SUBTYPE OF (named_unit); name : label; END_ENTITY; (* STEP Part 41 (unchanged in 2nd edition) *) ENTITY contract; name : label; purpose : label; kind : contract_type; END_ENTITY; (* STEP Part 41 (unchanged in 2nd edition) *) ENTITY contract_type; description : text; END_ENTITY; (* STEP Part 41 (unchanged in 2nd edition) *) ENTITY conversion_based_unit SUBTYPE OF (named_unit); name : label; conversion_factor : measure_with_unit; END_ENTITY; (* STEP Part 41 (unchanged in 2nd edition) *) (* New for LPM/6 *) ENTITY convex_hexahedron SUBTYPE OF (faceted_primitive); WHERE WRC27 : SIZEOF(points) = 8 ; WRC28 : above_plane(points[1], points[2], points[3], points[4]) = 0.0; WRC29 : above_plane(points[5], points[8], points[7], points[6]) = 0.0; WRC30 : above_plane(points[1], points[4], points[8], points[5]) = 0.0; WRC31 : above_plane(points[4], points[3], points[7], points[8]) = 0.0; WRC32 : above_plane(points[3], points[2], points[6], points[7]) = 0.0; WRC33 : above_plane(points[1], points[5], points[6], points[2]) = 0.0; WRC34 : same_side([points[1], points[2], points[3]], [points[5], points[6], points[7], points[8]]); WRC35 : same_side([points[1], points[4], points[8]], [points[3], points[7], points[6], points[2]]); WRC36 : same_side([points[1], points[2], points[5]], [points[3], points[7], points[8], points[4]]); WRC37 : same_side([points[5], points[6], points[7]], [points[1], points[2], points[3], points[4]]); WRC38 : same_side([points[3], points[7], points[6]], [points[1], points[4], points[8], points[5]]); WRC39 : same_side([points[3], points[7], points[8]], [points[1], points[5], points[6], points[2]]); END_ENTITY; (* STEP Part 41 (new in 2nd edition) *) ENTITY coord_system ABSTRACT SUPERTYPE OF (ONEOF (coord_system_cartesian_2d, coord_system_cartesian_3d, coord_system_spherical, coord_system_cylindrical) ANDOR coord_system_child); coord_system_name : label; coord_system_use : label; sign_convention : OPTIONAL text; coord_system_dimensionality : dimension_count; END_ENTITY; ENTITY coord_system_cartesian_2d SUBTYPE OF (coord_system); axes_definition : axis2_placement_2d; DERIVE origin_1 : REAL := axes_definition.location\cartesian_point.coordinates[1]; origin_2 : REAL := NVL(axes_definition.location\cartesian_point.coordinates[2], 0.0); WHERE WRC10 : SELF\coord_system.coord_system_dimensionality = 2; WRC11 : SIZEOF (axes_definition.location\cartesian_point.coordinates) = 2; END_ENTITY; ENTITY coord_system_cartesian_3d SUBTYPE OF (coord_system); axes_definition : axis2_placement_3d; DERIVE origin_x : REAL := axes_definition.location\cartesian_point.coordinates[1]; origin_y : REAL := NVL(axes_definition.location\cartesian_point.coordinates[2], 0.0); origin_z : REAL := NVL(axes_definition.location\cartesian_point.coordinates[3], 0.0); WHERE WRC12 : SELF\coord_system.coord_system_dimensionality = 3; WRC13 : SIZEOF (axes_definition.location\cartesian_point.coordinates) = 3; END_ENTITY; ENTITY coord_system_child SUBTYPE OF (coord_system); parent_coord_system : coord_system; WHERE WRC14 : parent_coord_system :<>: (SELF); WRC15 : SELF\coord_system.coord_system_dimensionality <= parent_coord_system.coord_system_dimensionality; END_ENTITY; ENTITY coord_system_cylindrical SUBTYPE OF (coord_system); origin : cylindrical_point; axes_definition : LIST [2:3] OF direction; END_ENTITY; ENTITY coord_system_spherical SUBTYPE OF (coord_system); origin : spherical_point; axes_definition : LIST [3:3] OF direction; END_ENTITY; (* Modified for LPM/6 *) ENTITY coordinated_universal_time_offset; hour_offset : hour_in_day; minute_offset : OPTIONAL minute_in_hour; sense : ahead_or_behind; DERIVE actual_minute_offset: INTEGER := NVL(minute_offset,0); WHERE WRC23: { 0 <= hour_offset < 24 }; WRC24: { 0 <= actual_minute_offset <= 59 }; WRC25: NOT (((hour_offset <> 0) OR (actual_minute_offset <>0)) AND (sense = exact)); END_ENTITY; (* STEP Part 41 2nd edition *) ENTITY csg_solid SUBTYPE OF (solid_model); tree_root_expression : csg_select; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY currency_measure_with_unit SUPERTYPE OF (ONEOF(currency_rate_with_unit)); amount : REAL; unit : currency_unit; END_ENTITY; ENTITY currency_rate_with_unit SUBTYPE OF (currency_measure_with_unit); per_quantity : measure_with_unit; END_ENTITY; ENTITY currency_unit; name : label; description : OPTIONAL text; END_ENTITY; (* Modified for LPM/6 *) ENTITY curve SUPERTYPE OF (ONEOF (line, clothoid, conic, pcurve, surface_curve, offset_curve_2d, offset_curve_3d, curve_replica) ANDOR bounded_curve) SUBTYPE OF (geometric_representation_item); END_ENTITY; (* STEP Part 42 (expanded in 2nd edition) *) (* Modified for LPM/6 *) ENTITY curve_bounded_surface SUBTYPE OF (bounded_surface); basis_surface : surface; boundaries : SET [1:?] OF boundary_curve; implicit_outer : BOOLEAN; WHERE WR16: (NOT implicit_outer) OR (SIZEOF (QUERY (temp <* boundaries | 'STRUCTURAL_FRAME_SCHEMA.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))) = 0); WR17: (NOT(implicit_outer)) OR ('STRUCTURAL_FRAME_SCHEMA.BOUNDED_SURFACE' IN TYPEOF(basis_surface)); WR18: SIZEOF(QUERY(temp <* boundaries | 'STRUCTURAL_FRAME_SCHEMA.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))) <= 1; WR19: SIZEOF(QUERY(temp <* boundaries | (temp\composite_curve_on_surface.basis_surface [1] <> SELF.basis_surface))) = 0; END_ENTITY; (* STEP Part 42 (modified in 2nd edition) *) ENTITY curve_replica SUBTYPE OF (curve); parent_curve : curve; transformation : cartesian_transformation_operator; WHERE WRC20 : transformation.dim = parent_curve.dim; WRC21 : acyclic_curve_replica (SELF, parent_curve); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY cut SUBTYPE OF (structural_frame_process); cutting_method : cutting_type; END_ENTITY; (* New for LPM/6 *) ENTITY cyclide_segment_solid SUBTYPE OF (geometric_representation_item); position : axis2_placement_3d; radius1 : positive_length_measure; radius2 : positive_length_measure; cone_angle1 : plane_angle_measure; cone_angle2 : plane_angle_measure; turn_angle : plane_angle_measure; END_ENTITY; (* STEP Part 42 (new in 2nd edition) *) (* Modified for LPM/6 - CIS entity replaced by STEP entity *) ENTITY cylindrical_point SUBTYPE OF (cartesian_point); r : length_measure; theta : plane_angle_measure; z : length_measure; DERIVE SELF\cartesian_point.coordinates : LIST [1:3] OF length_measure := [r*cos(theta), r*sin(theta), z]; WHERE WRC26: r >= 0.0; END_ENTITY; (* STEP Part 42 (new in 2nd edition) *) ENTITY cylindrical_surface SUBTYPE OF (elementary_surface); radius : positive_length_measure; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* New for LPM/6 *) ENTITY cylindrical_volume SUBTYPE OF (volume); position : axis2_placement_3d; radius : positive_length_measure; height : positive_length_measure; END_ENTITY; (* STEP Part 42 (new in 2nd edition) *) ENTITY date SUPERTYPE OF (ONEOF(calendar_date)); year_component : year_number; END_ENTITY; (* STEP Part 41 trimmed (2nd edition unchanged) *) ENTITY date_and_time; date_component : calendar_date; time_component : local_time; END_ENTITY; (* STEP Part 41 (2nd edition unchanged) *) ENTITY definitional_representation SUBTYPE OF (representation); WHERE WRD1 : 'STRUCTURAL_FRAME_SCHEMA.PARAMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF( SELF\representation.context_of_items ); END_ENTITY; (* STEP Part 43 (unchanged in 2nd edition) *) ENTITY degenerate_pcurve SUBTYPE OF (point); basis_surface : surface; reference_to_curve : definitional_representation; WHERE WRD2 : SIZEOF(reference_to_curve\representation.items) = 1; WRD3 : 'STRUCTURAL_FRAME_SCHEMA.CURVE' IN TYPEOF (reference_to_curve\representation.items[1]); WRD4 : reference_to_curve\representation. items[1]\geometric_representation_item.dim =2; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY degenerate_toroidal_surface SUBTYPE OF (toroidal_surface); select_outer : BOOLEAN; WHERE WRD5 : major_radius < minor_radius; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY derived_measure_with_unit SUPERTYPE OF (ONEOF (force_per_length_measure_with_unit, inertia_measure_with_unit, linear_acceleration_measure_with_unit, linear_stiffness_measure_with_unit, linear_velocity_measure_with_unit, mass_per_length_measure_with_unit, modulus_measure_with_unit, moment_measure_with_unit, rotational_acceleration_measure_with_unit, rotational_stiffness_measure_with_unit, rotational_velocity_measure_with_unit)) SUBTYPE OF (measure_with_unit); WHERE WRD6 : 'STRUCTURAL_FRAME_SCHEMA.DERIVED_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component); END_ENTITY; (* Modified for LPM/6 *) ENTITY derived_unit SUPERTYPE OF (ONEOF (force_per_length_unit, inertia_unit, linear_acceleration_unit, linear_stiffness_unit, linear_velocity_unit, mass_per_length_unit, modulus_unit, moment_unit, rotational_acceleration_unit, rotational_stiffness_unit, rotational_velocity_unit)); elements : SET [1:?] OF derived_unit_element; DERIVE name : label := get_name_value (SELF); WHERE WRD7 : ( SIZEOF ( elements ) > 1 ) OR (( SIZEOF ( elements ) = 1 ) AND ( elements[1].exponent <> 1.0 )); WRD13 : SIZEOF (USEDIN (SELF, 'STRUCTURAL_FRAME_SCHEMA.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; END_ENTITY; (* expanded STEP Part 41 (modified in 2nd edition) *) ENTITY derived_unit_element; unit : named_unit; exponent : REAL; END_ENTITY; (* STEP Part 41 (2nd edition unchanged) *) (* New for LPM/6 *) ENTITY description_attribute; attribute_value : text; described_item : description_attribute_select; END_ENTITY; (* STEP Part 41 2nd edition *) ENTITY design_criterion SUPERTYPE OF (design_criterion_documented); criterion_name : label; criterion_description : text; design_assumptions : OPTIONAL text; INVERSE governed_assemblies : SET [1:?] OF assembly_design FOR governing_criteria; END_ENTITY; ENTITY design_criterion_documented SUBTYPE OF (design_criterion); documented_reference : document_usage_constraint; END_ENTITY; ENTITY design_joint_system; design_joint_system_name : label; design_joint_system_spec : joint_system; parent_assemblies : LIST [1:?] OF assembly_design; locations : OPTIONAL LIST [1:?] OF coord_system; connected_parts : SET [0:?] OF design_part; WHERE WRD8 : NOT(EXISTS(locations) AND (SIZEOF(locations) <> SIZEOF(parent_assemblies))); END_ENTITY; ENTITY design_part; design_part_name : label; design_part_spec : part; parent_assemblies : LIST [1:?] OF assembly_design; locations : OPTIONAL LIST [1:?] OF coord_system; WHERE WRD9 : NOT(EXISTS(locations) AND (SIZEOF(locations) <> SIZEOF(parent_assemblies))); END_ENTITY; ENTITY design_result ABSTRACT SUPERTYPE OF (ONEOF (design_result_connection, design_result_joint_system, design_result_member, design_result_part) ANDOR design_result_mapped ANDOR design_result_resolved); design_result_name : label; design_resistance : resistance; END_ENTITY; ENTITY design_result_connection SUBTYPE OF (design_result); result_for_connection : assembly_design_structural_connection; result_position : OPTIONAL point; position_label : OPTIONAL label; END_ENTITY; ENTITY design_result_joint_system SUBTYPE OF (design_result); result_for_joint_system : design_joint_system; END_ENTITY; ENTITY design_result_mapped SUBTYPE OF (design_result); origin_of_forces : analysis_results_set; END_ENTITY; ENTITY design_result_member SUBTYPE OF (design_result); result_for_member : assembly_design_structural_member; result_position : point; position_label : label; END_ENTITY; ENTITY design_result_part SUBTYPE OF (design_result); result_for_part : design_part; END_ENTITY; ENTITY design_result_resolved SUBTYPE OF (design_result); design_forces : reaction_force; design_factor : REAL; END_ENTITY; ENTITY dimensional_exponents; length_exponent : REAL; mass_exponent : REAL; time_exponent : REAL; electric_current_exponent : REAL; thermodynamic_temperature_exponent : REAL; amount_of_substance_exponent : REAL; luminous_intensity_exponent : REAL; END_ENTITY; (* STEP Part 41 (2nd edition unchanged) *) ENTITY directed_action SUBTYPE OF (executed_action); directive : action_directive; END_ENTITY; (* STEP Part 41 (2nd edition unchanged) *) ENTITY direction SUBTYPE OF (geometric_representation_item); direction_ratios : LIST [2:3] OF REAL; WHERE WRD10 : SIZEOF(QUERY(tmp <* direction_ratios | tmp <> 0.0)) > 0; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* Modified for LPM/6 - See Issue 15 *) ENTITY dispatch SUBTYPE OF (structural_frame_process); transported_products : LIST [1:?] OF product_item_select; dispatch_address : organizational_address; delivery_address : organizational_address; dispatch_date : calendar_date; delivery_date : calendar_date; END_ENTITY; (* Modified for LPM/6 *) ENTITY document SUPERTYPE OF (document_with_class); id : identifier; name : label; description : text; kind : document_type; INVERSE representation_types : SET[0:?] OF document_representation_type FOR represented_document; END_ENTITY; (* STEP Part 41 2nd edition *) (* Modified for LPM/6 *) ENTITY document_relationship SUPERTYPE OF (document_usage); name : label; description : OPTIONAL text; relating_document : document; related_document : document; END_ENTITY; (* STEP Part 41 2nd edition *) (* New for LPM/6 *) ENTITY document_representation_type; name : label; represented_document : document; END_ENTITY; (* STEP Part 41 (added in 2nd edition) *) ENTITY document_standard SUBTYPE OF (document_with_class); DERIVE clauses : SET [1:?] OF document_usage_constraint := bag_to_set (USEDIN(SELF, 'STRUCTURAL_FRAME_SCHEMA.DOCUMENT_USAGE_CONSTRAINT.SOURCE')); INVERSE relevant_clauses : SET [1:?] OF document_usage_constraint FOR source; WHERE WRD11 : ((SELF\document.kind.product_data_type = 'Standard Specification') OR (SELF\document.kind.product_data_type = 'Code of Practice')); END_ENTITY; ENTITY document_type; product_data_type : label; END_ENTITY; (* STEP Part 41 (2nd edition unchanged) *) ENTITY document_usage SUBTYPE OF (document_relationship); UNIQUE URD2 : SELF\document_relationship.name, SELF\document_relationship.relating_document, SELF\document_relationship.related_document; WHERE WRD12 : acyclic_document_relationship(SELF, [SELF\document_relationship.related_document], 'STRUCTURAL_FRAME_SCHEMA.DOCUMENT_RELATIONSHIP.RELATED_DOCUMENT'); END_ENTITY; ENTITY document_usage_constraint; source : document; subject_element : label; subject_element_value : text; END_ENTITY; (* STEP Part 41 (2nd edition unchanged) *) ENTITY document_with_class SUPERTYPE OF (document_standard) SUBTYPE OF (document); class : identifier; END_ENTITY; (* STEP Part 41 (2nd edition unchanged) *) (* New for LPM/6 *) ENTITY eccentric_cone SUBTYPE OF (geometric_representation_item); position : axis2_placement_3d; semi_axis_1 : positive_length_measure; semi_axis_2 : positive_length_measure; height : positive_length_measure; x_offset : length_measure; y_offset : length_measure; ratio : REAL; WHERE WRE23 : ratio >= 0.0; END_ENTITY; (* STEP Part 42 (New for 2nd edition) *) (* New for LPM/6 *) ENTITY eccentric_conical_volume SUBTYPE OF (volume); position : axis2_placement_3d; semi_axis_1 : positive_length_measure; semi_axis_2 : positive_length_measure; height : positive_length_measure; x_offset : length_measure; y_offset : length_measure; ratio : REAL; WHERE WRE22 : ratio >= 0.0; END_ENTITY; (* STEP Part 42 (New for 2nd edition) *) (* Modified for LPM/6 *) ENTITY edge SUPERTYPE OF (ONEOF(oriented_edge, edge_curve, subedge)) SUBTYPE OF (topological_representation_item); edge_start : vertex; edge_end : vertex; END_ENTITY; (* STEP Part 42 (modified for 2nd edition) *) ENTITY edge_based_wireframe_model SUBTYPE OF (geometric_representation_item); ebwm_boundary : SET [1:?] OF connected_edge_set; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY edge_curve SUBTYPE OF (edge, geometric_representation_item); edge_geometry : curve; same_sense: BOOLEAN; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY edge_loop SUBTYPE OF (loop, path); DERIVE ne : INTEGER := SIZEOF(SELF\path.edge_list); WHERE WRE1 : (SELF\path.edge_list[1].edge_start) :=: (SELF\path.edge_list[ne].edge_end); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY effective_buckling_length; effective_length_name : label; effective_length_factor : OPTIONAL REAL; effective_length_use : OPTIONAL text; effective_length_direction : OPTIONAL buckling_direction; applicable_member : assembly_design_structural_member; END_ENTITY; ENTITY element SUPERTYPE OF (ONEOF (element_volume, element_surface, element_curve, element_point) ANDOR element_with_material); element_name : label; element_description : OPTIONAL text; parent_model : analysis_model; element_dimensionality : INTEGER; INVERSE connectivity : SET [1:?] OF element_node_connectivity FOR connecting_element; UNIQUE URE1 : element_name, parent_model; WHERE WRE2 : element_dimensionality <= parent_model.coordinate_space_dimension; WRE21 : (element_dimensionality >= 0) AND (element_dimensionality <= 3); END_ENTITY; ENTITY element_curve ABSTRACT SUPERTYPE OF (ONEOF(element_curve_simple, element_curve_complex)) SUBTYPE OF (element); element_subdivision : OPTIONAL INTEGER; DERIVE connectivities : SET [2:2] OF element_node_connectivity := bag_to_set (USEDIN(SELF, 'STRUCTURAL_FRAME_SCHEMA.ELEMENT_NODE_CONNECTIVITY.CONNECTING_ELEMENT')); WHERE WRE3 : SELF\element.element_dimensionality = 1; WRE4 : connectivities[1] :<>: connectivities[2]; WRE5 : connectivities[1].connecting_node :<>: connectivities[2].connecting_node; END_ENTITY; ENTITY element_curve_complex SUBTYPE OF (element_curve); cross_sections : LIST [2:?] OF section_profile; points_defining_element_axis : LIST [2:?] OF point_on_curve; element_orientations : LIST [2:?] OF orientation_select; DERIVE number_of_sections : INTEGER := SIZEOF (cross_sections); curve_defining_element : curve := points_defining_element_axis[1]\point_on_curve.basis_curve; WHERE WRE6 : ( (SIZEOF (points_defining_element_axis) = number_of_sections) AND (SIZEOF (element_orientations) = number_of_sections) ); WRE7 : SIZEOF(QUERY(temp <* points_defining_element_axis | (temp\point_on_curve.basis_curve) :<>: curve_defining_element)) = 0; END_ENTITY; ENTITY element_curve_simple SUBTYPE OF (element_curve); cross_section : section_profile; element_orientation : orientation_select; END_ENTITY; ENTITY element_eccentricity; element_eccentricity_name : label; x_eccentricity : OPTIONAL length_measure_with_unit; y_eccentricity : OPTIONAL length_measure_with_unit; z_eccentricity : OPTIONAL length_measure_with_unit; INVERSE eccentric_connectivities: SET [1:?] OF element_node_connectivity FOR eccentricity; WHERE WRE8 : EXISTS (x_eccentricity) OR EXISTS (y_eccentricity) OR EXISTS (z_eccentricity); END_ENTITY; ENTITY element_mapping; mapped_element : element; represented_part : part_select; END_ENTITY; ENTITY element_node_connectivity; connectivity_number : INTEGER; connectivity_name : label; connecting_node : node; connecting_element : element; eccentricity : OPTIONAL element_eccentricity; fixity : OPTIONAL release; UNIQUE URE2 : connecting_node, connecting_element; WHERE WRE9 : NOT( (connectivity_number > 2) AND (connecting_element.element_dimensionality < 2) ); WRE10 : NOT( (connectivity_name <> 'Start Node') AND (connectivity_number = 1) ); WRE11 : NOT( (connectivity_name <> 'End Node') AND (connectivity_number = 2) AND (connecting_element.element_dimensionality = 1) ); WRE12 : connecting_node.parent_model :=: connecting_element.parent_model; END_ENTITY; ENTITY element_point ABSTRACT SUPERTYPE OF (ONEOF (element_point_grounded_damper, element_point_stationary_mass, element_point_grounded_spring)) SUBTYPE OF (element); DERIVE connectivities : BAG [1:1] OF element_node_connectivity := USEDIN(SELF,'STRUCTURAL_FRAME_SCHEMA.ELEMENT_NODE_CONNECTIVITY.CONNECTING_ELEMENT'); WHERE WRE13 : SELF\element.element_dimensionality = 0; END_ENTITY; ENTITY element_point_grounded_damper SUBTYPE OF (element_point); damping_coefficients : ARRAY [1:6] OF REAL; END_ENTITY; ENTITY element_point_grounded_spring SUBTYPE OF (element_point); stiffness_coefficients : ARRAY [1:6] OF REAL; END_ENTITY; ENTITY element_point_stationary_mass SUBTYPE OF (element_point); masses : ARRAY [1:3] OF REAL; moments_of_inertia : ARRAY [1:3] OF ARRAY [1:3] OF REAL; END_ENTITY; ENTITY element_surface SUPERTYPE OF (ONEOF(element_surface_simple, element_surface_complex)) SUBTYPE OF (element); thickness : positive_length_measure_with_unit; DERIVE connectivities : SET [3:?] OF element_node_connectivity := bag_to_set (USEDIN(SELF,'STRUCTURAL_FRAME_SCHEMA.ELEMENT_NODE_CONNECTIVITY.CONNECTING_ELEMENT')); WHERE WRE14 : SELF\element.element_dimensionality = 2; WRE15 : SELF\element.parent_model.coordinate_space_dimension > 1; END_ENTITY; ENTITY element_surface_complex SUPERTYPE OF (ONEOF(element_surface_plane, element_surface_profiled)) SUBTYPE OF (element_surface); surface_definition : surface; END_ENTITY; ENTITY element_surface_plane SUBTYPE OF (element_surface_complex); WHERE WRE16 : 'STRUCTURAL_FRAME_SCHEMA.PLANE' IN TYPEOF (SELF\element_surface_complex.surface_definition); END_ENTITY; ENTITY element_surface_profiled SUBTYPE OF (element_surface_complex); profile : curve; END_ENTITY; ENTITY element_surface_simple SUBTYPE OF (element_surface); shape : element_surface_shape; assumption : plane_stress_or_strain; END_ENTITY; ENTITY element_volume ABSTRACT SUPERTYPE OF (ONEOF(element_volume_simple, element_volume_complex)) SUBTYPE OF (element); DERIVE connectivities : SET [4:?] OF element_node_connectivity := bag_to_set (USEDIN(SELF, 'STRUCTURAL_FRAME_SCHEMA.ELEMENT_NODE_CONNECTIVITY.CONNECTING_ELEMENT')); WHERE WRE17 : SELF\element.element_dimensionality = 3; WRE18 : SELF\element.parent_model.coordinate_space_dimension = 3; END_ENTITY; ENTITY element_volume_complex SUBTYPE OF (element_volume); shape : shape_representation_with_units; END_ENTITY; ENTITY element_volume_simple SUBTYPE OF (element_volume); shape : element_volume_shape; END_ENTITY; ENTITY element_with_material SUBTYPE OF (element); material_definition : material; END_ENTITY; ENTITY elementary_surface SUPERTYPE OF (ONEOF (plane, cylindrical_surface, conical_surface, spherical_surface, toroidal_surface)) SUBTYPE OF (surface); position : axis2_placement_3d; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY ellipse SUBTYPE OF (conic); semi_axis_1 : positive_length_measure; semi_axis_2 : positive_length_measure; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* New for LPM/6 *) ENTITY ellipsoid SUBTYPE OF (geometric_representation_item); position : axis2_placement_3d; semi_axis_1 : positive_length_measure; semi_axis_2 : positive_length_measure; semi_axis_3 : positive_length_measure; END_ENTITY; (* STEP Part 42 (new in 2nd edition) *) (* New for LPM/6 *) ENTITY ellipsoid_volume SUBTYPE OF (volume); position : axis2_placement_3d; semi_axis_1 : positive_length_measure; semi_axis_2 : positive_length_measure; semi_axis_3 : positive_length_measure; END_ENTITY; (* New for LPM/6 *) ENTITY elliptic_area SUBTYPE OF (primitive_2d); position : axis2_placement_2d; semi_axis_1 : positive_length_measure; semi_axis_2 : positive_length_measure; END_ENTITY; (* STEP Part 42 (new in 2nd edition) *) ENTITY evaluated_degenerate_pcurve SUBTYPE OF (degenerate_pcurve); equivalent_point : cartesian_point; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY executed_action SUBTYPE OF (action); END_ENTITY; (* STEP Part 41 (2nd edition unchanged) *) ENTITY extruded_area_solid SUBTYPE OF (swept_area_solid); extruded_direction : direction; depth : positive_length_measure; WHERE WRE19 : dot_product( (SELF\swept_area_solid.swept_area.basis_surface\ elementary_surface.position.p[3]), extruded_direction) <> 0.0; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY extruded_face_solid SUBTYPE OF (swept_face_solid); extruded_direction : direction; depth : positive_length_measure; WHERE WRE20 : dot_product( (SELF\swept_face_solid.swept_face.face_geometry\ elementary_surface.position.p[3]), extruded_direction) <> 0.0; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY face SUPERTYPE OF (ONEOF(face_surface, oriented_face, subface)) SUBTYPE OF (topological_representation_item); bounds : SET [1:?] OF face_bound; WHERE WRF1 : NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF)))); WRF2 : SIZEOF(QUERY(temp <* bounds | 'STRUCTURAL_FRAME_SCHEMA.FACE_OUTER_BOUND' IN TYPEOF(temp))) <= 1; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY face_based_surface_model SUBTYPE OF (geometric_representation_item); fbsm_faces : SET [1:?] OF connected_face_set; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY face_bound SUBTYPE OF (topological_representation_item); bound : loop; orientation : BOOLEAN; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY face_outer_bound SUBTYPE OF (face_bound); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* modified for LPM/6 *) ENTITY face_surface SUBTYPE OF (face, geometric_representation_item); face_geometry : surface; same_sense: BOOLEAN; WHERE WRF30 : NOT ('STRUCTURAL_FRAME_SCHEMA.ORIENTED_SURFACE' IN TYPEOF(face_geometry)); END_ENTITY; (* STEP Part 42 (modified in 2nd edition) *) ENTITY faceted_brep SUBTYPE OF (manifold_solid_brep); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* new for LPM/6 *) ENTITY faceted_primitive SUPERTYPE OF (ONEOF(tetrahedron, convex_hexahedron)) SUBTYPE OF (geometric_representation_item) ; points : LIST[4:?] OF UNIQUE cartesian_point ; WHERE WRF31 : points[1].dim = 3 ; END_ENTITY; (* STEP Part 42 (new in 2nd edition) *) ENTITY fastener SUPERTYPE OF (ONEOF(fastener_simple, fastener_complex)) SUBTYPE OF (structural_frame_product); fastener_grade : OPTIONAL label; END_ENTITY; ENTITY fastener_complex SUBTYPE OF (fastener); fastener_shape : shape_representation_with_units; END_ENTITY; ENTITY fastener_mechanism SUBTYPE OF (structural_frame_product); sequence : OPTIONAL text; fasteners : LIST [1:?] OF fastener; END_ENTITY; (* new for LPM/6 - see Issue 85 *) ENTITY fastener_mechanism_with_position SUBTYPE OF (fastener_mechanism); fastener_positions : LIST [1:?] OF length_measure_with_unit; WHERE WRF32 : SIZEOF(fastener_positions) = SIZEOF(SELF\fastener_mechanism.fasteners); (* the number of fasteners must equal the number of positions *) END_ENTITY; ENTITY fastener_simple SUPERTYPE OF (ONEOF (fastener_simple_bolt, fastener_simple_nut, fastener_simple_washer, fastener_simple_stud, fastener_simple_nail, fastener_simple_pin, fastener_simple_screw, fastener_simple_shear_connector) ANDOR fastener_simple_countersunk ANDOR fastener_simple_curved) SUBTYPE OF (fastener); nominal_diameter : positive_length_measure_with_unit; nominal_length : OPTIONAL positive_length_measure_with_unit; END_ENTITY; (* Modified for LPM/6 *) ENTITY fastener_simple_bolt SUPERTYPE OF (ONEOF (fastener_simple_bolt_circular_head, fastener_simple_bolt_hexagonal_head, fastener_simple_bolt_square_head)) SUBTYPE OF (fastener_simple); length_of_shank : OPTIONAL positive_length_measure_with_unit; bolt_preload : OPTIONAL force_measure_with_unit; full_section_area : OPTIONAL area_measure_with_unit; reduced_section_area : OPTIONAL area_measure_with_unit; DERIVE bolt_ref : BAG OF identifier := SELF\structural_frame_item.item_ref; END_ENTITY; ENTITY fastener_simple_bolt_circular_head SUBTYPE OF (fastener_simple_bolt); bolt_head_height : positive_length_measure_with_unit; head_diameter : positive_length_measure_with_unit; END_ENTITY; ENTITY fastener_simple_bolt_hexagonal_head SUBTYPE OF (fastener_simple_bolt); bolt_head_height : positive_length_measure_with_unit; distance_across_vertices : OPTIONAL positive_length_measure_with_unit; distance_across_flats : OPTIONAL positive_length_measure_with_unit; WHERE WRF3 : EXISTS (distance_across_vertices) OR EXISTS (distance_across_flats); WRF4 : NOT( (distance_across_flats.value_component > distance_across_vertices.value_component) AND (EXISTS (distance_across_vertices) AND EXISTS (distance_across_flats)) ); END_ENTITY; ENTITY fastener_simple_bolt_square_head SUBTYPE OF (fastener_simple_bolt); bolt_head_height : positive_length_measure_with_unit; distance_across_flats : positive_length_measure_with_unit; END_ENTITY; ENTITY fastener_simple_countersunk SUBTYPE OF (fastener_simple); countersink_angle : plane_angle_measure_with_unit; countersink_depth : OPTIONAL positive_length_measure_with_unit; END_ENTITY; ENTITY fastener_simple_curved SUBTYPE OF (fastener_simple); curve_definition : curve; END_ENTITY; ENTITY fastener_simple_nail SUBTYPE OF (fastener_simple); nail_type : OPTIONAL text; nail_drive_type : OPTIONAL text; nail_head_shape : OPTIONAL text; nail_point_type : OPTIONAL text; END_ENTITY; (* Modified for LPM/6 *) ENTITY fastener_simple_nut SUPERTYPE OF (ONEOF (fastener_simple_nut_circular, fastener_simple_nut_hexagonal, fastener_simple_nut_square) ANDOR fastener_simple_nut_closed) SUBTYPE OF (fastener_simple); DERIVE nut_ref : BAG OF identifier := SELF\structural_frame_item.item_ref; WHERE WRF28 : NOT('STRUCTURAL_FRAME_SCHEMA.FASTENER_SIMPLE_CURVED' IN TYPEOF(SELF)); END_ENTITY; ENTITY fastener_simple_nut_circular SUBTYPE OF (fastener_simple_nut); outside_diameter : positive_length_measure_with_unit; END_ENTITY; ENTITY fastener_simple_nut_closed SUBTYPE OF (fastener_simple_nut); nut_depth : positive_length_measure_with_unit; WHERE WRF5 : SELF\fastener_simple.nominal_length.value_component > nut_depth.value_component; END_ENTITY; ENTITY fastener_simple_nut_hexagonal SUBTYPE OF (fastener_simple_nut); distance_across_vertices : OPTIONAL positive_length_measure_with_unit; distance_across_flats : OPTIONAL positive_length_measure_with_unit; WHERE WRF6 : EXISTS (distance_across_vertices) OR EXISTS (distance_across_flats); WRF7 : NOT( (distance_across_flats.value_component > distance_across_vertices.value_component) AND (EXISTS (distance_across_vertices) AND EXISTS (distance_across_flats)) ); END_ENTITY; ENTITY fastener_simple_nut_square SUBTYPE OF (fastener_simple_nut); distance_across_flats : positive_length_measure_with_unit; END_ENTITY; ENTITY fastener_simple_pin SUBTYPE OF (fastener_simple); pin_type : OPTIONAL text; END_ENTITY; ENTITY fastener_simple_screw SUPERTYPE OF (ONEOF (fastener_simple_screw_machine, fastener_simple_screw_tapered) ANDOR fastener_simple_screw_self_drilling ANDOR fastener_simple_screw_self_tapping) SUBTYPE OF (fastener_simple); screw_type : OPTIONAL text; screw_drive_type : OPTIONAL text; screw_point_type : OPTIONAL text; screw_head_height : OPTIONAL positive_length_measure_with_unit; full_section_area : OPTIONAL area_measure_with_unit; reduced_section_area : OPTIONAL area_measure_with_unit; END_ENTITY; ENTITY fastener_simple_screw_machine SUBTYPE OF (fastener_simple_screw); WHERE WRF29 : NOT ('STRUCTURAL_FRAME_SCHEMA.FASTENER_SIMPLE_CURVED' IN TYPEOF(SELF)); END_ENTITY; ENTITY fastener_simple_screw_self_drilling SUBTYPE OF (fastener_simple_screw); hole_cutting_method : cutting_type; pilot_hole_diameter : OPTIONAL positive_length_measure_with_unit; drill_diameter : OPTIONAL positive_length_measure_with_unit; WHERE WRF8 : NOT( (pilot_hole_diameter.value_component > drill_diameter.value_component) AND (EXISTS (pilot_hole_diameter) AND EXISTS (drill_diameter)) ); END_ENTITY; ENTITY fastener_simple_screw_self_tapping SUBTYPE OF (fastener_simple_screw); thread_cutting_method : cutting_type; pilot_hole_diameter : OPTIONAL positive_length_measure_with_unit; END_ENTITY; ENTITY fastener_simple_screw_tapered SUBTYPE OF (fastener_simple_screw); absolute_taper : OPTIONAL length_measure_with_unit; relative_taper : OPTIONAL ratio_measure_with_unit; WHERE WRF9 : EXISTS (absolute_taper) OR EXISTS (relative_taper); END_ENTITY; ENTITY fastener_simple_shear_connector SUBTYPE OF (fastener_simple); head_shape : OPTIONAL text; connector_type : OPTIONAL text; connection_method : OPTIONAL text; END_ENTITY; (* Modified for LPM/6 - see Issue 14 *) ENTITY fastener_simple_stud SUBTYPE OF (fastener_simple); thread_length_1 : positive_length_measure_with_unit; thread_length_2 : OPTIONAL positive_length_measure_with_unit; length_of_shank : OPTIONAL positive_length_measure_with_unit; full_section_area : OPTIONAL area_measure_with_unit; reduced_section_area : OPTIONAL area_measure_with_unit; DERIVE thread_length_value_1 : REAL := thread_length_1.value_component; thread_length_value_2 : REAL := NVL(thread_length_2.value_component, 0.0); length_of_shank_value : REAL := NVL(length_of_shank.value_component, 0.0); WHERE WRF33 : NOT (EXISTS(SELF\fastener_simple.nominal_length) AND ( (thread_length_value_1 + thread_length_value_2 + length_of_shank_value) > (SELF\fastener_simple.nominal_length.value_component) ) ); (* if a nominal length is specified its value shall be greater than the sum of the 2 thread lengths and the shank *) END_ENTITY; (* Modified for LPM/6 *) ENTITY fastener_simple_washer SUPERTYPE OF (ONEOF (fastener_simple_washer_tapered, fastener_simple_washer_load_indicating)) SUBTYPE OF (fastener_simple); washer_shape : OPTIONAL text; inside_diameter : OPTIONAL positive_length_measure_with_unit; external_dimension : OPTIONAL positive_length_measure_with_unit; DERIVE washer_ref : BAG OF identifier := SELF\structural_frame_item.item_ref; WHERE WRF10 : NOT( (EXISTS (inside_diameter) AND EXISTS (external_dimension)) AND (inside_diameter.value_component > external_dimension.value_component) ); WRF11 : NOT( (EXISTS (inside_diameter)) AND (inside_diameter.value_component < (SELF\fastener_simple.nominal_diameter.value_component)) ); END_ENTITY; ENTITY fastener_simple_washer_load_indicating SUBTYPE OF (fastener_simple_washer); final_gap : positive_length_measure_with_unit; END_ENTITY; ENTITY fastener_simple_washer_tapered SUBTYPE OF (fastener_simple_washer); taper : ratio_measure_with_unit; END_ENTITY; (* Modified for LPM/6 *) ENTITY feature SUPERTYPE OF (ONEOF (feature_cutting_plane, feature_edge_chamfer, feature_surface, feature_thread, feature_volume)) SUBTYPE OF (structural_frame_item); DERIVE uses : SET [0:?] OF located_feature := bag_to_set (USEDIN(SELF,'STRUCTURAL_FRAME_SCHEMA.LOCATED_FEATURE.DESCRIPTIVE_FEATURE')); END_ENTITY; ENTITY feature_cutting_plane SUBTYPE OF (feature); plane_definition : plane; END_ENTITY; ENTITY feature_edge_chamfer ABSTRACT SUPERTYPE OF (ONEOF (feature_edge_chamfer_straight, feature_edge_chamfer_fillet, feature_edge_chamfer_rounding) ) SUBTYPE OF (feature); follow_round : BOOLEAN; END_ENTITY; ENTITY feature_edge_chamfer_fillet SUBTYPE OF (feature_edge_chamfer); edge_fillet_radius : positive_length_measure_with_unit; END_ENTITY; ENTITY feature_edge_chamfer_rounding SUBTYPE OF (feature_edge_chamfer); edge_rounding_radius : positive_length_measure_with_unit; END_ENTITY; ENTITY feature_edge_chamfer_straight SUBTYPE OF (feature_edge_chamfer); edge_chamfer_width : positive_length_measure_with_unit; edge_chamfer_depth : positive_length_measure_with_unit; END_ENTITY; (* Modified for LPM/6 *) ENTITY feature_surface ABSTRACT SUPERTYPE OF (ONEOF (feature_surface_complex, feature_surface_point, feature_surface_simple) ANDOR feature_surface_name_tag ANDOR feature_surface_treatment ANDOR feature_surface_with_layout) SUBTYPE OF (feature); END_ENTITY; ENTITY feature_surface_complex SUBTYPE OF (feature_surface); feature_boundary : bounded_surface; END_ENTITY; ENTITY feature_surface_name_tag SUBTYPE OF (feature_surface); name_tag_items : LIST [1:?] OF text; END_ENTITY; (* New for LPM/6 *) ENTITY feature_surface_point SUBTYPE OF (feature_surface); feature_point : point; END_ENTITY; (* New for LPM/6 *) ENTITY feature_surface_point_mark SUBTYPE OF (feature_surface); marking_process : surface_treatment_hard_stamp; END_ENTITY; ENTITY feature_surface_simple SUBTYPE OF (feature_surface); feature_boundary : LIST [3:?] OF point; END_ENTITY; ENTITY feature_surface_treatment SUBTYPE OF (feature_surface); treatment_definition : surface_treatment; END_ENTITY; ENTITY feature_surface_with_layout SUBTYPE OF (feature_surface); layout : SET [2:?] OF point; END_ENTITY; ENTITY feature_thread SUBTYPE OF (feature); thread_pitch : positive_length_measure_with_unit; thread_length : positive_length_measure_with_unit; thread_profile : OPTIONAL shape_representation_with_units; right_handed : BOOLEAN; number_of_threads : INTEGER; WHERE WRF12 : number_of_threads > 0; END_ENTITY; (* Modified for LPM/6 - see Issue 84 *) ENTITY feature_volume ABSTRACT SUPERTYPE OF (ONEOF (feature_volume_complex, feature_volume_hole, feature_volume_prismatic) ANDOR feature_volume_curved ANDOR feature_volume_with_depth ANDOR feature_volume_with_limit ANDOR feature_volume_with_layout ANDOR feature_volume_with_process) SUBTYPE OF (feature); END_ENTITY; ENTITY feature_volume_complex SUBTYPE OF (feature_volume); feature_shape : shape_representation_with_units; END_ENTITY; ENTITY feature_volume_curved SUBTYPE OF (feature_volume); feature_trace : curve; END_ENTITY; ENTITY feature_volume_curved_line SUBTYPE OF (feature_volume_curved); WHERE WRF13 : 'STRUCTURAL_FRAME_SCHEMA.LINE' IN TYPEOF (SELF\feature_volume_curved.feature_trace); END_ENTITY; ENTITY feature_volume_hole ABSTRACT SUPERTYPE OF ( ONEOF (feature_volume_hole_circular, feature_volume_hole_rectangular, feature_volume_hole_slotted)) SUBTYPE OF (feature_volume); END_ENTITY; ENTITY feature_volume_hole_circular SUPERTYPE OF (feature_volume_hole_circular_threaded) SUBTYPE OF (feature_volume_hole); hole_radius : positive_length_measure_with_unit; END_ENTITY; ENTITY feature_volume_hole_circular_threaded SUBTYPE OF (feature_volume_hole_circular); thread_definition : feature_thread; END_ENTITY; ENTITY feature_volume_hole_rectangular SUBTYPE OF (feature_volume_hole); hole_length : positive_length_measure_with_unit; hole_height : positive_length_measure_with_unit; fillet_radius : OPTIONAL positive_length_measure_with_unit; DERIVE fillet_radius_value : REAL := NVL(fillet_radius.value_component, 0.0); hole_length_value : REAL := hole_length.value_component; hole_height_value : REAL := hole_height.value_component; WHERE WRF14 : fillet_radius_value < (hole_length_value/2); WRF15 : fillet_radius_value < (hole_height_value/2); END_ENTITY; ENTITY feature_volume_hole_slotted SUPERTYPE OF (feature_volume_hole_slotted_curved) SUBTYPE OF (feature_volume_hole); slot_height : positive_length_measure_with_unit; slot_length : positive_length_measure_with_unit; WHERE WRF16 : slot_length.value_component > slot_height.value_component; END_ENTITY; ENTITY feature_volume_hole_slotted_curved SUBTYPE OF (feature_volume_hole_slotted); curve_radius : positive_length_measure_with_unit; sector_angle : plane_angle_measure_with_unit; DERIVE slot_radius : REAL := (SELF\feature_volume_hole_slotted.slot_height.value_component)/2.0; END_ENTITY; ENTITY feature_volume_prismatic ABSTRACT SUPERTYPE OF ( ONEOF (feature_volume_prismatic_chamfer, feature_volume_prismatic_flange_notch, feature_volume_prismatic_flange_chamfer, feature_volume_prismatic_notch, feature_volume_prismatic_skewed_end)) SUBTYPE OF (feature_volume); top_or_bottom_edge : top_or_bottom; start_or_end : start_or_end_face; original_face : BOOLEAN; END_ENTITY; ENTITY feature_volume_prismatic_chamfer SUBTYPE OF (feature_volume_prismatic); chamfer_length : positive_length_measure_with_unit; chamfer_depth : positive_length_measure_with_unit; END_ENTITY; ENTITY feature_volume_prismatic_flange_chamfer SUBTYPE OF (feature_volume_prismatic); left_or_right_hand : left_or_right; flange_chamfer_length : positive_length_measure_with_unit; flange_chamfer_width : positive_length_measure_with_unit; END_ENTITY; ENTITY feature_volume_prismatic_flange_notch SUBTYPE OF (feature_volume_prismatic); left_or_right_hand : left_or_right; flange_notch_length : positive_length_measure_with_unit; flange_notch_width : positive_length_measure_with_unit; flange_notch_radius : OPTIONAL positive_length_measure_with_unit; END_ENTITY; ENTITY feature_volume_prismatic_notch SUBTYPE OF (feature_volume_prismatic); notch_length : positive_length_measure_with_unit; notch_depth : positive_length_measure_with_unit; notch_radius : OPTIONAL positive_length_measure_with_unit; END_ENTITY; ENTITY feature_volume_prismatic_skewed_end SUBTYPE OF (feature_volume_prismatic); skew_angle_1 : plane_angle_measure_with_unit; skew_angle_2 : plane_angle_measure_with_unit; END_ENTITY; (* New for LPM/6 - see Issue 84 *) ENTITY feature_volume_with_depth SUBTYPE OF (feature_volume); penetration_depth : positive_length_measure_with_unit; WHERE WRF34 : NOT('STRUCTURAL_FRAME_SCHEMA.FEATURE_VOLUME_COMPLEX' IN TYPEOF(SELF)); (* the feature must be simple to be assigned a depth *) END_ENTITY; ENTITY feature_volume_with_layout SUBTYPE OF (feature_volume); layout : SET [2:?] OF point; END_ENTITY; (* New for LPM/6 - see Issue 84 *) ENTITY feature_volume_with_limit SUBTYPE OF (feature_volume); penetration_limit : INTEGER; WHERE WRF35 : NOT('STRUCTURAL_FRAME_SCHEMA.FEATURE_VOLUME_COMPLEX' IN TYPEOF(SELF)); (* the feature must be simple to be assigned a penetration limit *) WRF36 : penetration_limit > 0; (* the feature must penetrate at least one surface *) END_ENTITY; ENTITY feature_volume_with_process SUBTYPE OF (feature_volume); process_definition : cut; END_ENTITY; (* New for LPM/6 *) ENTITY fixed_reference_swept_surface SUBTYPE OF (swept_surface); directrix : curve; fixed_reference : direction; END_ENTITY; (* STEP Part 42 (new in 2nd edition) *) ENTITY flavour SUBTYPE OF (group_assignment); items : SET [2:?] OF item_reference; END_ENTITY; ENTITY force_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE WRF17 : 'STRUCTURAL_FRAME_SCHEMA.FORCE_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component); WRF18 : 'STRUCTURAL_FRAME_SCHEMA.FORCE_MEASURE' IN TYPEOF (SELF\measure_with_unit.value_component); END_ENTITY; ENTITY force_per_length_measure_with_unit SUBTYPE OF (derived_measure_with_unit); WHERE WRF19 : 'STRUCTURAL_FRAME_SCHEMA.FORCE_PER_LENGTH_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component); WRF20 : 'STRUCTURAL_FRAME_SCHEMA.FORCE_PER_LENGTH_MEASURE' IN TYPEOF (SELF\measure_with_unit.value_component); END_ENTITY; ENTITY force_per_length_unit SUBTYPE OF (derived_unit); WHERE WRF21 : SIZEOF(SELF\derived_unit.elements) = 2; WRF22 : ('STRUCTURAL_FRAME_SCHEMA.FORCE_UNIT' IN TYPEOF (SELF\derived_unit.elements[1]\derived_unit_element.unit)) AND (SELF\derived_unit.elements[1]\derived_unit_element.exponent = 1.0); WRF23 : ('STRUCTURAL_FRAME_SCHEMA.LENGTH_UNIT' IN TYPEOF (SELF\derived_unit.elements[2]\derived_unit_element.unit)) AND (SELF\derived_unit.elements[2]\derived_unit_element.exponent = -1.0); END_ENTITY; ENTITY force_unit SUBTYPE OF (named_unit); WHERE WRF24 : (SELF\named_unit.dimensions.length_exponent = 1.0) AND (SELF\named_unit.dimensions.mass_exponent = 1.0) AND (SELF\named_unit.dimensions.time_exponent = -2.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); END_ENTITY; (* New for LPM/6 *) ENTITY founded_item; END_ENTITY; (* STEP Part 43 2nd Edition *) ENTITY frequency_measure_with_unit SUBTYPE OF (measure_with_unit); WHERE WRF25 : 'STRUCTURAL_FRAME_SCHEMA.FREQUENCY_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component); WRF26 : 'STRUCTURAL_FRAME_SCHEMA.FREQUENCY_MEASURE' IN TYPEOF (SELF\measure_with_unit.value_component); END_ENTITY; ENTITY frequency_unit SUBTYPE OF (named_unit); WHERE WRF27 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = -1.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); END_ENTITY; ENTITY functional_role SUPERTYPE OF (functional_role_documented); functional_role_name : label; functional_role_description : text; INVERSE role_for_assemblies : SET [1:?] OF assembly_design FOR roles; END_ENTITY; ENTITY functional_role_documented SUBTYPE OF (functional_role); document_reference : document_usage_constraint; END_ENTITY; ENTITY functionally_defined_transformation; name : label; description : text; END_ENTITY; (* STEP Part 43 (unchanged in 2nd edition) *) ENTITY geographical_location ABSTRACT SUPERTYPE OF (ONEOF(global_location, map_location)); height_above_datum : length_measure_with_unit; datum_name : label; END_ENTITY; ENTITY geometric_curve_set SUBTYPE OF (geometric_set); WHERE WRG1 : SIZEOF(QUERY(temp <* SELF\geometric_set.elements | 'STRUCTURAL_FRAME_SCHEMA.SURFACE' IN TYPEOF(temp))) = 0; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY geometric_representation_context SUBTYPE OF (representation_context); coordinate_space_dimension : dimension_count; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* Modified for LPM/6 *) ENTITY geometric_representation_item SUPERTYPE OF (ONEOF (point, direction, vector, placement, cartesian_transformation_operator, curve, surface, edge_curve, face_surface, poly_loop, vertex_point, solid_model, boolean_result, sphere, right_circular_cone, right_circular_cylinder, torus, block, primitive_2d, right_angular_wedge, eccentric_cone, ellipsoid, faceted_primitive, rectangular_pyramid, cyclide_segment_solid, volume, half_space_solid, half_space_2d, shell_based_surface_model, face_based_surface_model, shell_based_wireframe_model, edge_based_wireframe_model, geometric_set)) SUBTYPE OF (representation_item); DERIVE dim : dimension_count := dimension_of(SELF); WHERE WRG2 : SIZEOF (QUERY (using_rep <* using_representations (SELF) | NOT ('STRUCTURAL_FRAME_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF (using_rep.context_of_items)))) = 0; END_ENTITY; (* STEP Part 42 (Modified in 2nd edition) *) ENTITY geometric_set SUPERTYPE OF (ONEOF(geometric_curve_set, geometric_set_replica)) SUBTYPE OF (geometric_representation_item); elements : SET [1:?] OF geometric_set_select; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY geometric_set_replica SUBTYPE OF (geometric_set); parent_set : geometric_set; transformation : cartesian_transformation_operator; DERIVE SELF\geometric_set.elements : SET [1:?] OF geometric_set_select := build_transformed_set(transformation, parent_set); WHERE WRG3 : acyclic_set_replica(SELF, parent_set); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) ENTITY global_location SUBTYPE OF (geographical_location); latitude_degrees : degrees_rotation; latitude_minutes : minutes_rotation; latitude_seconds : OPTIONAL seconds_rotation; longitude_degrees : degrees_rotation; longitude_minutes : minutes_rotation; longitude_seconds : OPTIONAL seconds_rotation; END_ENTITY; ENTITY global_uncertainty_assigned_context SUBTYPE OF (representation_context); uncertainty : SET [1:?] OF uncertainty_measure_with_unit; END_ENTITY; (* STEP Part 43 (unchanged in 2nd edition) *) ENTITY global_unit_assigned_context SUBTYPE OF (representation_context); units : SET [1:?] OF unit; END_ENTITY; (* STEP Part 41 (2nd edition unchanged) *) ENTITY grid SUPERTYPE OF (ONEOF (grid_of_building, grid_of_site, grid_of_structure) ANDOR ONEOF (grid_orthogonal, grid_skewed, grid_radial)); grid_name : label; grid_description : OPTIONAL text; grid_use : OPTIONAL text; DERIVE gridlines : SET [1:?] OF gridline := bag_to_set (USEDIN(SELF,'STRUCTURAL_FRAME_SCHEMA.GRIDLINE.PARENT_GRID')); grid_levels : SET [0:?] OF grid_level := bag_to_set (USEDIN(SELF,'STRUCTURAL_FRAME_SCHEMA.GRID_LEVEL.PARENT_GRID')); INVERSE constituent_lines : SET [1:?] OF gridline FOR parent_grid; END_ENTITY; ENTITY grid_intersection SUPERTYPE OF (grid_intersection_resolved); grid_intersection_name : label; gridlines : SET [2:2] OF gridline; level : OPTIONAL grid_level; WHERE WRG4 : gridlines[1].parent_grid :=: gridlines[2].parent_grid; WRG5 : NOT (EXISTS(level) AND (level.parent_grid :<>: gridlines[1].parent_grid)); END_ENTITY; ENTITY grid_intersection_resolved SUBTYPE OF (grid_intersection); resolution_point : geographical_location; END_ENTITY; ENTITY grid_level SUBTYPE OF (plane); parent_grid : grid; UNIQUE URG1 : SELF\elementary_surface.position; END_ENTITY; ENTITY grid_of_building SUBTYPE OF (grid); grid_for_building : building; END_ENTITY; ENTITY grid_of_site SUBTYPE OF (grid); grid_for_site : site; END_ENTITY; ENTITY grid_of_structure SUBTYPE OF (grid); grid_for_structure : structure; END_ENTITY; ENTITY grid_offset; intersection : grid_intersection; offset : LIST [2:3] OF length_measure_with_unit; END_ENTITY; ENTITY grid_orthogonal SUBTYPE OF (grid); spacing_1 : LIST [0:?] OF positive_length_measure_with_unit; spacing_2 : LIST [0:?] OF positive_length_measure_with_unit; END_ENTITY; ENTITY grid_radial SUBTYPE OF (grid); spacing_1 : LIST [0:?] OF plane_angle_measure_with_unit; END_ENTITY; ENTITY grid_skewed SUBTYPE OF (grid); skew_angle : plane_angle_measure_with_unit; spacing_1 : LIST [0:?] OF positive_length_measure_with_unit; spacing_2 : LIST [0:?] OF positive_length_measure_with_unit; END_ENTITY; ENTITY gridline SUBTYPE OF (plane); parent_grid : grid; preceding_line : OPTIONAL gridline; INVERSE succeeding_line : SET [0:1] OF gridline FOR preceding_line; UNIQUE URG2 : SELF\elementary_surface.position; WHERE WRG7 : NOT( EXISTS(preceding_line) AND (preceding_line :=: (SELF)) ); END_ENTITY; (* Modified for LPM/6 *) ENTITY group SUPERTYPE OF (media_file); group_name : label; group_description : text; DERIVE id : identifier := get_id_value (SELF); WHERE WRG8 : SIZEOF (USEDIN (SELF, 'STRUCTURAL_FRAME_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; END_ENTITY; (* STEP Part 41 2nd edition *) (* Modified for LPM/6 - see Issue 90 and 94 *) ENTITY group_assignment ABSTRACT SUPERTYPE OF (ONEOF (flavour, group_of_analysis_data, group_of_design_data, group_of_physical_data, group_of_project_definition_data, group_of_structural_data, group_of_generic_data, managed_data_group) ANDOR group_assignment_actioned ANDOR group_assignment_approved ANDOR media_content ANDOR project_data_group); assigned_group : group; DERIVE role : object_role := get_role (SELF); WHERE WRG9 : SIZEOF (USEDIN (SELF, 'STRUCTURAL_FRAME_SCHEMA.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; END_ENTITY; (* STEP Part 41 2nd edition *) ENTITY group_assignment_actioned SUBTYPE OF (group_assignment); assigned_action : action; UNIQUE URG3 : SELF\group_assignment.assigned_group, assigned_action; END_ENTITY; ENTITY group_assignment_approved SUBTYPE OF (group_assignment); assigned_approval : approval; UNIQUE URG4 : SELF\group_assignment.assigned_group, assigned_approval; END_ENTITY; ENTITY group_of_analysis_data SUBTYPE OF (group_assignment); items : SET [2:?] OF select_analysis_item; END_ENTITY; ENTITY group_of_design_data SUBTYPE OF (group_assignment); items : SET [2:?] OF select_design_item; END_ENTITY; ENTITY group_of_generic_data SUBTYPE OF (group_assignment); items : SET [1:?] OF select_generic_item; END_ENTITY; ENTITY group_of_physical_data SUBTYPE OF (group_assignment); items : SET [2:?] OF select_physical_item; END_ENTITY; ENTITY group_of_project_definition_data SUBTYPE OF (group_assignment); items : SET [2:?] OF select_project_definition_item; END_ENTITY; ENTITY group_of_structural_data SUBTYPE OF (group_assignment); items : SET [1:?] OF select_structural_item; END_ENTITY; (* Modified for LPM/6 *) ENTITY group_relationship SUPERTYPE OF (group_usage); name : label; description : OPTIONAL text; relating_group : group; related_group : group; END_ENTITY; (* STEP Part 41 (modified in 2nd edition) expanded *) ENTITY group_usage SUBTYPE OF (group_relationship); UNIQUE URG5 : SELF\group_relationship.name, SELF\group_relationship.relating_group, SELF\group_relationship.related_group; WHERE WRG6 : acyclic_group_relationship(SELF, [SELF\group_relationship.related_group], 'STRUCTURAL_FRAME_SCHEMA.GROUP_RELATIONSHIP.RELATED_GROUP'); END_ENTITY; (* New for LPM/6 *) ENTITY half_space_2d SUBTYPE OF (geometric_representation_item); base_curve: curve; agreement_flag: BOOLEAN; END_ENTITY; (* STEP Part 42 (New in 2nd edition) *) ENTITY half_space_solid SUPERTYPE OF (boxed_half_space) SUBTYPE OF (geometric_representation_item); base_surface : surface; agreement_flag : BOOLEAN; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* New for LPM/6 *) ENTITY hexahedron_volume SUBTYPE OF (volume); points : LIST[8:8] OF cartesian_point; WHERE WRH1: above_plane(points[1], points[2], points[3], points[4]) = 0.0; WRH2: above_plane(points[5], points[8], points[7], points[6]) = 0.0; WRH3: above_plane(points[1], points[4], points[8], points[5]) = 0.0; WRH4: above_plane(points[4], points[3], points[7], points[8]) = 0.0; WRH5: above_plane(points[3], points[2], points[6], points[7]) = 0.0; WRH6: above_plane(points[1], points[5], points[6], points[2]) = 0.0; WRH7: same_side([points[1], points[2], points[3]], [points[5], points[6], points[7], points[8]]); WRH8: same_side([points[1], points[4], points[8]], [points[3], points[7], points[6], points[2]]); WRH9: same_side([points[1], points[2], points[5]], [points[3], points[7], points[8], points[4]]); WRH10: same_side([points[5], points[6], points[7]], [points[1], points[2], points[3], points[4]]); WRH11: same_side([points[3], points[7], points[6]], [points[1], points[4], points[8], points[5]]); WRH12: same_side([points[3], points[7], points[8]], [points[1], points[5], points[6], points[2]]); WRH13: points[1].dim = 3; END_ENTITY; (* STEP part 42 (new for 2nd edition) *) ENTITY hyperbola SUBTYPE OF (conic); semi_axis : positive_length_measure; semi_imag_axis : positive_length_measure; END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* New for LPM/6 *) ENTITY id_attribute; attribute_value : identifier; identified_item : id_attribute_select; END_ENTITY; (* STEP Part 41 2nd edition *) ENTITY inertia_measure_with_unit SUBTYPE OF (derived_measure_with_unit); WHERE WRI1 : 'STRUCTURAL_FRAME_SCHEMA.INERTIA_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component); WRI2 : 'STRUCTURAL_FRAME_SCHEMA.INERTIA_MEASURE' IN TYPEOF (SELF\measure_with_unit.value_component); END_ENTITY; ENTITY inertia_unit SUBTYPE OF (derived_unit); WHERE WRI3 : SIZEOF(SELF\derived_unit.elements) = 1; WRI4 : ('STRUCTURAL_FRAME_SCHEMA.LENGTH_UNIT' IN TYPEOF (SELF\derived_unit.elements[1]\derived_unit_element.unit)) AND (SELF\derived_unit.elements[1]\derived_unit_element.exponent = 4.0); END_ENTITY; ENTITY intersection_curve SUBTYPE OF (surface_curve); WHERE WRI5 : SIZEOF(SELF\surface_curve.associated_geometry) = 2; WRI6 : associated_surface(SELF\surface_curve.associated_geometry[1]) <> associated_surface(SELF\surface_curve.associated_geometry[2]); END_ENTITY; (* STEP Part 42 (unchanged in 2nd edition) *) (* New for LPM/6 - See Issue 96 *) ENTITY item_cost_code SUPERTYPE OF (item_cost_code_with_source); cost_code : label; description : OPTIONAL text; END_ENTITY; (* New for LPM/6 - See Issue 96 *) ENTITY item_cost_code_assigned; code : item_cost_code; costed_item : structural_frame_item; UNIQUE URI8 : code, costed_item; (* the combination of cost code and item shall not be repeated *) END_ENTITY; (* New for LPM/6 - See Issue 96 *) ENTITY item_cost_code_with_source SUBTYPE OF (item_cost_code); source : item_ref_source; UNIQUE URI9 : SELF\item_cost_code.cost_code, source; (* the cost code shall be unique within the source *) END_ENTITY; ENTITY item_defined_transformation; name : label; description : text; transform_item_1 : representation_item; transform