Source : ISO 10303-105
SCHEMA kinematic_motion_representation_schema;
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 interpolation_type =
ENUMERATION
OF
(undefined_interpolation_type,
discontinuous_interpolation_type,
synchronous_interpolation_type,
linear_interpolation_type);
END_TYPE;
TYPE link_or_shape_representation =
SELECT
(kinematic_link_representation,
shape_representation);
END_TYPE;
ENTITY circular_path
SUBTYPE OF (path_node);
via_point : cartesian_point;
END_ENTITY;
ENTITY curve_based_path
SUBTYPE OF (path_node);
path_curve : curve;
END_ENTITY;
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;
ENTITY geometric_representation_context_with_parameter
SUBTYPE OF (geometric_representation_context);
parameter_unit :
OPTIONAL
unit;
END_ENTITY;
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_segment
SUBTYPE OF (founded_item);
state : mechanism_state_representation;
t_parameter : parameter_value;
interpolation : interpolation_type;
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 item_link_motion_relationship
SUBTYPE OF (link_motion_relationship);
SELF\representation_relationship.rep_1 : shape_representation;
item : geometric_representation_item;
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;
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_defined_by_nodes
SUBTYPE OF (kinematic_path);
SELF\kinematic_path.segments : LIST[1:?] OF path_node;
placement_start : placement;
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 linear_path
SUBTYPE OF (path_node);
DERIVE
SELF\kinematic_path_segment.transition : transition_code := continuous;
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 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 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 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 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 point_to_point_path
SUBTYPE OF (path_node);
DERIVE
SELF\kinematic_path_segment.transition : transition_code := discontinuous;
END_ENTITY;
SUBTYPE_CONSTRAINT kmr_geometric_representation_context_subtypes FOR geometric_representation_context;
ONEOF (geometric_representation_context_with_parameter,
path_parameter_representation_context);
END_SUBTYPE_CONSTRAINT;
SUBTYPE_CONSTRAINT kmr_geometric_representation_item_subtypes FOR geometric_representation_item;
ONEOF (kinematic_path,
placement);
END_SUBTYPE_CONSTRAINT;
SUBTYPE_CONSTRAINT kmr_representation_subtypes FOR representation;
ONEOF (interpolated_configuration_representation,
link_motion_representation_along_path);
END_SUBTYPE_CONSTRAINT;
END_SCHEMA; -- kinematic_motion_representation_schema