(* SCHEMA Ap242_managed_model_based_3d_engineering_mim_LF; *)
FUNCTION validate_accuracy_types
(ei:shape_data_quality_criterion;
type_list:BAG OF STRING):LOGICAL;
LOCAL
sdqca: BAG OF
SHAPE_DATA_QUALITY_CRITERION_AND_ACCURACY_ASSOCIATION:=[];
sma: BAG OF SHAPE_MEASUREMENT_ACCURACY:=[];
sdqir: SET OF
SHAPE_DATA_QUALITY_INSPECTION_RESULT:=[];
scraa: BAG OF
SHAPE_INSPECTION_RESULT_ACCURACY_ASSOCIATION:=[];
t_logic:BOOLEAN;
END_LOCAL;
-- STEP-1
-- collect types of range attribute of shape_measurement_accuracy
-- referred from shape_data_quality_criterion_and_accuracy_association
-- that refers to given shape_data_quality_criterion.
sdqca := USEDIN(ei,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+
'SHAPE_DATA_QUALITY_CRITERION_AND_ACCURACY_ASSOCIATION.'+
'SHAPE_DATA_QUALITY_CRITERION');
IF(SIZEOF(sdqca) <> 0) THEN
REPEAT i:= 1 TO SIZEOF(sdqca);
sma := sma + sdqca[i].required_specific_accuracy;
END_REPEAT;
-- STEP-2
-- check whether the collected types include all the type names
-- in the type list given as an input argument of this function
-- and they do not include any other type names.
IF(SIZEOF(type_list) < SIZEOF(sma)) THEN
RETURN(FALSE);
END_IF;
REPEAT i:= 1 TO SIZEOF(sma);
t_logic := FALSE;
REPEAT j:= 1 TO SIZEOF(type_list);
IF(type_list[j] IN value_limit_type(sma[i].range)) THEN
t_logic := TRUE;
ESCAPE;
END_IF;
END_REPEAT;
IF(NOT(t_logic)) THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
-- STEP-3
-- collect types of range attribute of shape_measurement_accuracy
-- referred from shape_inspection_result_accuracy_association
-- that refers to shape_data_quality_inspection_result
-- for the given shape_data_quality_criterion.
sdqir := QUERY(q <* bag_to_set(USEDIN(ei,
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+
'DATA_QUALITY_INSPECTION_RESULT.'+
'CRITERION_INSPECTED'))|
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+
'SHAPE_DATA_QUALITY_INSPECTION_RESULT'
IN TYPEOF(q));
IF(SIZEOF(sdqir) = 0) THEN
RETURN(TRUE);
END_IF;
REPEAT i:= 1 TO SIZEOF(sdqir);
scraa := USEDIN(sdqir[i],
'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'+
'SHAPE_INSPECTION_RESULT_ACCURACY_ASSOCIATION.'+
'SHAPE_DATA_QUALITY_RESULT');
IF(SIZEOF(scraa) <> 0) THEN
sma := [];
REPEAT j:= 1 TO SIZEOF(scraa);
sma := sma + scraa[j].applied_specific_accuracy;
END_REPEAT;
-- STEP-4
-- check whether the collected types include all the type
-- names in the type list given as an input argument of
-- this function and they do not include any other type names.
IF(SIZEOF(type_list) < SIZEOF(sma)) THEN
RETURN(FALSE);
END_IF;
REPEAT j:= 1 TO SIZEOF(sma);
t_logic := FALSE;
REPEAT k:= 1 TO SIZEOF(type_list);
IF(type_list[k] IN value_limit_type(sma[j].range)) THEN
t_logic := TRUE;
ESCAPE;
END_IF;
END_REPEAT;
IF(NOT(t_logic)) THEN
RETURN(FALSE);
END_IF;
END_REPEAT;
END_IF;
END_REPEAT;
RETURN(TRUE);
END_FUNCTION;
Generated by STEP Tools® EXPRESS to HTML Converter
2012-03-27T17:20:10-04:00