RULE machining_feature_definition_constraints FOR (feature_definition); LOCAL mfds : SET OF feature_definition := []; END_LOCAL; mfds := QUERY(temp <* feature_definition | 'AIC_MACHINING_FEATURE.MACHINING_FEATURE_DEFINITION' IN TYPEOF (temp) ); WHERE wr1: SIZEOF(QUERY( mfd <* mfds | NOT (SIZEOF(QUERY( pdr <* get_property_definition_representations (mfd) | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF ( pdr.used_representation ) ) ) <=1 ) ) ) = 0; wr2: SIZEOF(QUERY( mfd <* mfds | NOT (SIZEOF (QUERY (pd <* USEDIN (mfd, 'PRODUCT_PROPERTY_DEFINITION_SCHEMA.PROPERTY_DEFINITION.DEFINITION') | NOT (SIZEOF (QUERY (impl_rep <* QUERY (pdr <* USEDIN (pd, 'PRODUCT_PROPERTY_REPRESENTATION_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 'SHAPE_ASPECT_DEFINITION_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation)) | NOT (SIZEOF (QUERY (it <* impl_rep.used_representation.items | ('GEOMETRY_SCHEMA.PLACEMENT' IN TYPEOF (it)) AND (it.name = 'orientation'))) = 1))) = 0))) = 0 ) ) ) = 0; wr3: SIZEOF(QUERY( mfd <* mfds | NOT ((NOT (SIZEOF(['AIC_MACHINING_FEATURE.ROUND_HOLE', 'AIC_MACHINING_FEATURE.BOSS', 'AIC_MACHINING_FEATURE.OUTSIDE_PROFILE', 'AIC_MACHINING_FEATURE.REMOVAL_VOLUME', 'AIC_MACHINING_FEATURE.FLAT_FACE', 'AIC_MACHINING_FEATURE.POCKET', 'AIC_MACHINING_FEATURE.PROTRUSION', 'AIC_MACHINING_FEATURE.RIB_TOP', 'AIC_MACHINING_FEATURE.ROUNDED_END', 'AIC_MACHINING_FEATURE.SLOT', 'AIC_MACHINING_FEATURE.STEP'] * TYPEOF(mfds)) = 1)) OR ((SIZEOF(QUERY(pdr <* get_property_definition_representations (mfd) | ( 'AIC_MACHINING_FEATURE.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF ( pdr.used_representation ) ) AND ( pdr.used_representation.name ='maximum feature limit'))) >=0)) ) ) ) = 0; END_RULE; -- machining_feature_definition_constraints |
public class RMachining_feature_definition_constraints public int rWr3(SdaiContext _context) public int rWr2(SdaiContext _context) public int rWr1(SdaiContext _context) public int run(SdaiContext _context, A_string violations) |