FUNCTION convert_plane_angle_for_pair_from_radian

(* SCHEMA step_merged_ap_schema; *)
-- IN AP214
FUNCTION convert_plane_angle_for_pair_from_radian
      (pair : kinematic_pair;
       angle_expr : REAL ) : plane_angle_measure;
   LOCAL
      link_rep : kinematic_link_representation := representation_of_link(pair.joint.first_link);
      link_cntxt : representation_context;
      pa_units : SET OF unit := [];
      pau : unit;
      conv_factor : REAL := 1.0;
      result : plane_angle_measure;
   END_LOCAL;
      link_cntxt := link_rep\representation.context_of_items;
      IF NOT ('STEP_MERGED_AP_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(link_cntxt)) THEN
         RETURN (?);
      END_IF;
      pa_units := QUERY (unit <* link_cntxt\global_unit_assigned_context.units| 'STEP_MERGED_AP_SCHEMA.PLANE_ANGLE_UNIT' IN TYPEOF(unit));
      IF SIZEOF(pa_units) <> 1 THEN
         RETURN (?);
      END_IF;
      pau := pa_units[1];
      IF NOT ('STEP_MERGED_AP_SCHEMA.SI_UNIT' IN TYPEOF(pau)) AND NOT ('STEP_MERGED_AP_SCHEMA.CONVERSION_BASED_UNIT' IN TYPEOF(pau)) THEN
         RETURN (?);
      END_IF;
      REPEAT WHILE 'STEP_MERGED_AP_SCHEMA.CONVERSION_BASED_UNIT' IN TYPEOF(pau);
         conv_factor := conv_factor * pau\conversion_based_unit.conversion_factor.value_component;
         pau := pau\conversion_based_unit.conversion_factor.unit_component;
         IF NOT ('STEP_MERGED_AP_SCHEMA.SI_UNIT' IN TYPEOF(pau)) AND NOT ('STEP_MERGED_AP_SCHEMA.CONVERSION_BASED_UNIT' IN TYPEOF(pau)) OR NOT ('STEP_MERGED_AP_SCHEMA.PLANE_ANGLE_UNIT' IN TYPEOF(pau)) THEN
            RETURN (?);
         END_IF;
      END_REPEAT;
      IF pau\si_unit.name <> si_unit_name.radian THEN
         RETURN (?);
      END_IF;
      CASE pau\si_unit.prefix OF
         si_prefix.exa :
               conv_factor := 1.0E+018 * conv_factor;
         si_prefix.peta :
               conv_factor := 1.0E+015 * conv_factor;
         si_prefix.tera :
               conv_factor := 1.0E+012 * conv_factor;
         si_prefix.giga :
               conv_factor := 1.0E+009 * conv_factor;
         si_prefix.mega :
               conv_factor := 1.0E+006 * conv_factor;
         si_prefix.kilo :
               conv_factor := 1000.00 * conv_factor;
         si_prefix.hecto :
               conv_factor := 100.000 * conv_factor;
         si_prefix.deca :
               conv_factor := 10.0 * conv_factor;
         si_prefix.deci :
               conv_factor := 0.100000 * conv_factor;
         si_prefix.centi :
               conv_factor := 0.0100000 * conv_factor;
         si_prefix.milli :
               conv_factor := 0.00100000 * conv_factor;
         si_prefix.micro :
               conv_factor := 1.0E-006 * conv_factor;
         si_prefix.nano :
               conv_factor := 1.0E-009 * conv_factor;
         si_prefix.pico :
               conv_factor := 1.0E-012 * conv_factor;
         si_prefix.femto :
               conv_factor := 1.0E-015 * conv_factor;
         si_prefix.atto :
               conv_factor := 1.0E-018 * conv_factor;
      END_CASE;
      result := angle_expr / conv_factor;
      RETURN (result);
END_FUNCTION;

Referenced By

    Not referenced by any other definition


[Top Level Definitions] [Exit]

Generated by STEP Tools® EXPRESS to HTML Converter
2020-07-28T17:02:20-04:00