(* EXPRESS Source: ISO 10303-105 ed3 Kinematics - Kinematic motion representation schema ISO 10303 TC184/SC4/WG12 N10343 The following permission notice and disclaimer shall be included in all copies of this EXPRESS schema ("the Schema"), and derivations of the Schema: Copyright ISO 2019 All rights reserved Permission is hereby granted, free of charge in perpetuity, to any person obtaining a copy of the Schema, to use, copy, modify, merge and distribute free of charge, copies of the Schema for the purposes of developing, implementing, installing and using software based on the Schema, and to permit persons to whom the Schema is furnished to do so, subject to the following conditions: THE SCHEMA IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SCHEMA OR THE USE OR OTHER DEALINGS IN THE SCHEMA. In addition, any modified copy of the Schema shall include the following notice: THIS SCHEMA HAS BEEN MODIFIED FROM THE SCHEMA DEFINED IN ISO 10303-105 ed2 Kinematics - Kinematic motion representation schema AND SHOULD NOT BE INTERPRETED AS COMPLYING WITH THAT STANDARD *) SCHEMA kinematic_motion_representation_schema '{iso standard 10303 part(105) version(5) object(1) kinematic_motion_representation_schema(5)}'; REFERENCE FROM geometry_schema -- ISO 10303-42 (axis2_placement, b_spline_curve, b_spline_surface, bounded_curve, cartesian_point, curve, geometric_representation_context, geometric_representation_item, placement, transition_code); REFERENCE FROM kinematic_state_schema -- ISO 10303-105 (rotation_about_direction, spatial_rotation, ypr_rotation, mechanism_state_representation); REFERENCE FROM kinematic_structure_schema -- ISO 10303-105 (kinematic_link_representation, mechanism_representation, rigid_placement); REFERENCE FROM measure_schema -- ISO 10303-41 (length_measure, measure_with_unit, parameter_value, plane_angle_measure, unit); REFERENCE FROM product_property_representation_schema -- ISO 10303-41 (shape_representation); REFERENCE FROM representation_schema -- ISO 10303-43 (definitional_representation, founded_item, functionally_defined_transformation, item_defined_transformation, item_in_context, parametric_representation_context, representation, representation_item, representation_relationship, definitional_representation_relationship, representation_relationship_with_transformation, using_representations); TYPE link_or_shape_representation = SELECT( kinematic_link_representation, shape_representation); END_TYPE; TYPE interpolation_type = ENUMERATION OF (undefined_interpolation_type, discontinuous_interpolation_type, synchronous_interpolation_type, linear_interpolation_type); END_TYPE; ENTITY interpolated_configuration_representation SUBTYPE OF (representation); SELF\representation.context_of_items : geometric_representation_context_with_parameter; SELF\representation.items : SET[1:?] OF interpolated_configuration_sequence; END_ENTITY; ENTITY interpolated_configuration_sequence SUBTYPE OF (geometric_representation_item); segments : LIST[2:?] OF interpolated_configuration_segment; DERIVE n_segments : INTEGER := SIZEOF(segments); closed_interpolation : LOGICAL := segments[n_segments].interpolation <> discontinuous_interpolation_type; configured_mechanism : mechanism_representation := segments[1].state.represented_mechanism; WHERE WR1: SIZEOF( QUERY(ics <* segments | ics.state.represented_mechanism :<>: configured_mechanism)) = 0; END_ENTITY; ENTITY interpolated_configuration_segment SUBTYPE OF (founded_item); state : mechanism_state_representation; t_parameter : parameter_value; interpolation : interpolation_type; END_ENTITY; ENTITY link_motion_relationship SUBTYPE OF (definitional_representation_relationship, representation_relationship_with_transformation); SELF\representation_relationship.rep_1 : link_or_shape_representation; SELF\representation_relationship.rep_2 : link_motion_representation_along_path; SELF\representation_relationship_with_transformation.transformation_operator : link_motion_transformation; WHERE WR1: transformation_operator\item_defined_transformation.transform_item_1 IN rep_1.items; WR2: transformation_operator\item_defined_transformation.transform_item_2 IN rep_2.items; END_ENTITY; ENTITY item_link_motion_relationship SUBTYPE OF (link_motion_relationship); SELF\representation_relationship.rep_1 : shape_representation; item : geometric_representation_item; END_ENTITY; ENTITY link_motion_transformation SUBTYPE OF (item_defined_transformation); SELF\item_defined_transformation.transform_item_1 : rigid_placement; SELF\item_defined_transformation.transform_item_2 : kinematic_path; END_ENTITY; ENTITY link_motion_representation_along_path SUBTYPE OF (representation); SELF\representation.items : SET [1:?] OF kinematic_path; SELF\representation.context_of_items : geometric_representation_context_with_parameter; END_ENTITY; ENTITY geometric_representation_context_with_parameter SUBTYPE OF (geometric_representation_context); parameter_unit : OPTIONAL unit; END_ENTITY; ENTITY kinematic_path ABSTRACT SUPERTYPE OF (ONEOF (kinematic_path_defined_by_nodes, kinematic_path_defined_by_curves)) SUBTYPE OF (geometric_representation_item); segments : LIST [1:?] OF kinematic_path_segment; t_start : parameter_value; DERIVE n_segments : INTEGER := SIZEOF(segments); closed_path : LOGICAL := segments[n_segments].transition <> discontinuous; WHERE WR1: SIZEOF(QUERY(using_rep <* using_representations(SELF)| NOT('KINEMATIC_MOTION_REPRESENTATION_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT_WITH_PARAMETER' IN TYPEOF(using_rep.context_of_items))))= 0; -- WR2 - parameters are increasing -- WR3 - different end positions END_ENTITY; ENTITY kinematic_path_defined_by_nodes SUBTYPE OF (kinematic_path); SELF\kinematic_path.segments : LIST [1:?] OF path_node; placement_start : placement; END_ENTITY; ENTITY kinematic_path_defined_by_curves SUBTYPE OF (kinematic_path); SELF\kinematic_path.segments : LIST [1:?] OF curve_based_path_with_orientation; END_ENTITY; ENTITY kinematic_path_segment ABSTRACT SUPERTYPE OF (ONEOF ( path_node, curve_based_path_with_orientation) ) SUBTYPE OF (founded_item); t_end : parameter_value; transition : transition_code; END_ENTITY; ENTITY path_parameter_representation SUBTYPE OF (definitional_representation); SELF\representation.context_of_items : path_parameter_representation_context; SELF\representation.items : SET[1:?] OF bounded_curve; WHERE WR1: SELF\representation.context_of_items\geometric_representation_context.coordinate_space_dimension = 2; END_ENTITY; ENTITY path_parameter_representation_context SUBTYPE OF (geometric_representation_context, parametric_representation_context); END_ENTITY; ENTITY path_node ABSTRACT SUPERTYPE OF (ONEOF ( point_to_point_path, circular_path, linear_path, curve_based_path)) SUBTYPE OF (kinematic_path_segment); placement_end : placement; END_ENTITY; ENTITY point_to_point_path SUBTYPE OF (path_node); DERIVE SELF\kinematic_path_segment.transition : transition_code := discontinuous; END_ENTITY; ENTITY circular_path SUBTYPE OF (path_node); via_point : cartesian_point; END_ENTITY; ENTITY linear_path SUBTYPE OF (path_node); DERIVE SELF\kinematic_path_segment.transition : transition_code := continuous; END_ENTITY; ENTITY curve_based_path SUBTYPE OF (path_node); path_curve : curve; END_ENTITY; -- IP1 : start and end point shall be on the curve ENTITY curve_based_path_with_orientation SUBTYPE OF (kinematic_path_segment); position_curve : bounded_curve; orientation_curve : bounded_curve; WHERE WR1: TYPEOF(position_curve) = TYPEOF(orientation_curve); END_ENTITY; ENTITY curve_based_path_with_orientation_and_parameters SUBTYPE OF (curve_based_path_with_orientation); parameters : path_parameter_representation; END_ENTITY; SUBTYPE_CONSTRAINT kmr_representation_subtypes FOR representation; ONEOF (interpolated_configuration_representation, link_motion_representation_along_path); END_SUBTYPE_CONSTRAINT; SUBTYPE_CONSTRAINT kmr_geometric_representation_item_subtypes FOR geometric_representation_item; ONEOF ( kinematic_path, placement); END_SUBTYPE_CONSTRAINT; SUBTYPE_CONSTRAINT kmr_geometric_representation_context_subtypes FOR geometric_representation_context; ONEOF (geometric_representation_context_with_parameter, path_parameter_representation_context); END_SUBTYPE_CONSTRAINT; END_SCHEMA; -- end kinematic_motion_representation_schema