(* SCHEMA ship_structures_schema; *)
RULE hull_cross_section_contains_specified_classes FOR (
applied_group_assignment, group,
applied_classification_assignment);
LOCAL
violation : LOGICAL := FALSE;
cl_ass : SET OF applied_classification_assignment := [];
gr_ass : SET OF applied_group_assignment := [];
pd : SET OF product_definition := [];
groups : SET OF group := [];
END_LOCAL;
cl_ass := QUERY ( i <* applied_classification_assignment | ((i.role.
name = 'class membership') AND (i.assigned_class.name =
'hull cross section')) );
REPEAT i := 1 TO HIINDEX(cl_ass) BY 1;
REPEAT j := 1 TO HIINDEX(cl_ass[i].items) BY 1;
pd := pd + cl_ass[i].items[j];
END_REPEAT;
END_REPEAT;
gr_ass := QUERY ( i <* applied_group_assignment | (i.role.name =
'equivalence') );
REPEAT i := 1 TO HIINDEX(gr_ass) BY 1;
REPEAT j := 1 TO HIINDEX(gr_ass[i].items) BY 1;
IF gr_ass[i].items[j] IN pd THEN
groups := groups + gr_ass[i].assigned_group;
END_IF;
END_REPEAT;
END_REPEAT;
gr_ass := QUERY ( i <* applied_group_assignment | (((SIZEOF(i.items)
<> 0) AND (i.role.name = 'item structure')) AND (i.assigned_group
IN groups)) );
REPEAT i := 1 TO HIINDEX(gr_ass) BY 1 WHILE NOT violation;
violation := SIZEOF(QUERY ( inst <* gr_ass[i].items | ((
'compartment' IN which_class(inst)) AND ('structural system' IN
which_class(inst))) )) > 0;
END_REPEAT;
WHERE
wr1: NOT violation;
END_RULE; -- hull_cross_section_contains_specified_classes
Generated by STEP Tools® EXPRESS to HTML Converter
2012-03-27T17:17:03-04:00