FUNCTION valid_datum_target_parameters
(pdf : placed_datum_target_feature) : BOOLEAN;
LOCAL rep_set : SET OF representation := [] ; parameter_representations: SET OF representation; END_LOCAL;
REPEAT i := 1 TO HIINDEX(pdf.representation_associations); rep_set := rep_set + pdf.representation_associations[i].used_representation; END_REPEAT; parameter_representations := QUERY(rep <* rep_set | ('GEOMETRIC_TOLERANCE_MIM.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(rep)));
IF (SIZEOF( QUERY( srwp <* parameter_representations | (SIZEOF( QUERY( i <* srwp.items | (i.name='orientation') AND ('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF(i)))) = 1))) <> 1) THEN RETURN(FALSE); END_IF; CASE pdf\shape_aspect.description OF 'point': RETURN(SIZEOF(QUERY( srwp <* parameter_representations | (SIZEOF(srwp.items) = 1))) = 1); 'circle', 'circular curve': RETURN((SIZEOF( QUERY( srwp <* parameter_representations | (SIZEOF(srwp.items) = 2))) = 1) AND (SIZEOF( QUERY( srwp <* parameter_representations | (SIZEOF( QUERY( i <* srwp.items | (i.name='target diameter') AND (SIZEOF(['GEOMETRIC_TOLERANCE_MIM.MEASURE_REPRESENTATION_ITEM', 'GEOMETRIC_TOLERANCE_MIM.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) ) = 2) )) = 1))) = 1)); 'line': RETURN(SIZEOF( QUERY( srwp <* parameter_representations | (SIZEOF( QUERY( i <* srwp.items | (i.name='target length') AND (SIZEOF(['GEOMETRIC_TOLERANCE_MIM.MEASURE_REPRESENTATION_ITEM', 'GEOMETRIC_TOLERANCE_MIM.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) ) = 2) )) = 1))) = 1); 'rectangle': RETURN((SIZEOF( QUERY( srwp <* parameter_representations | (SIZEOF(srwp.items)= 3))) = 1) AND (SIZEOF( QUERY( srwp <* parameter_representations | (SIZEOF( QUERY( i <* srwp.items | (i.name='target length') AND (SIZEOF(['GEOMETRIC_TOLERANCE_MIM.MEASURE_REPRESENTATION_ITEM', 'GEOMETRIC_TOLERANCE_MIM.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) ) = 2))) = 1))) = 1) AND (SIZEOF( QUERY( srwp <* parameter_representations | (SIZEOF( QUERY( i <* srwp.items | (i.name='target width') AND (SIZEOF(['GEOMETRIC_TOLERANCE_MIM.MEASURE_REPRESENTATION_ITEM', 'GEOMETRIC_TOLERANCE_MIM.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) ) = 2))) = 1) )) = 1)); OTHERWISE : RETURN(FALSE); END_CASE; END_FUNCTION; -- valid_datum_target_parameters
|