Schema: kinematic_motion_representation_schema

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