(* $Id: aic_draughting_elements.exp,v 1.7 2017/10/03 17:01:55 brandonus Exp $ ISO 10303 TC184/SC4/WG12 N9568 EXPRESS Source: ISO 10303-506 ed2 Draughting elements - Aic draughting elements The following permission notice and disclaimer shall be included in all copies of this EXPRESS schema ("the Schema"), and derivations of the Schema: Copyright ISO 2014 All rights reserved Permission is hereby granted, free of charge in perpetuity, to any person obtaining a copy of the Schema, to use, copy, modify, merge and distribute free of charge, copies of the Schema for the purposes of developing, implementing, installing and using software based on the Schema, and to permit persons to whom the Schema is furnished to do so, subject to the following conditions: THE SCHEMA IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SCHEMA OR THE USE OR OTHER DEALINGS IN THE SCHEMA. In addition, any modified copy of the Schema shall include the following notice: THIS SCHEMA HAS BEEN MODIFIED FROM THE SCHEMA DEFINED IN ISO 10303-506 ed2 Draughting elements - Aic draughting elements AND SHOULD NOT BE INTERPRETED AS COMPLYING WITH THAT STANDARD *) SCHEMA aic_draughting_elements '{iso standard 10303 part(506) version(2) object(1) aic_draughting_elements(1)}'; USE FROM draughting_element_schema -- ISO 10303-101 (dimension_curve, dimension_curve_directed_callout, dimension_curve_terminator, draughting_callout, draughting_callout_relationship, leader_curve, leader_directed_callout, leader_terminator, projection_curve, projection_directed_callout); USE FROM presentation_definition_schema -- ISO 10303-46 (annotation_text_occurrence); ENTITY angular_dimension SUBTYPE OF (dimension_curve_directed_callout); END_ENTITY; ENTITY curve_dimension SUBTYPE OF (dimension_curve_directed_callout); END_ENTITY; ENTITY datum_feature_callout SUBTYPE OF (draughting_callout); END_ENTITY; ENTITY datum_target_callout SUBTYPE OF (draughting_callout); END_ENTITY; ENTITY diameter_dimension SUBTYPE OF (dimension_curve_directed_callout); END_ENTITY; ENTITY dimension_callout_component_relationship SUBTYPE OF (draughting_callout_relationship); WHERE WR1: SELF.name IN ['prefix', 'suffix']; WR2: 'AIC_DRAUGHTING_ELEMENTS.STRUCTURED_DIMENSION_CALLOUT' IN TYPEOF (SELF.relating_draughting_callout); WR3: SIZEOF (TYPEOF (SELF.related_draughting_callout) * ['AIC_DRAUGHTING_ELEMENTS.LEADER_DIRECTED_CALLOUT', 'AIC_DRAUGHTING_ELEMENTS.PROJECTION_DIRECTED_CALLOUT', 'AIC_DRAUGHTING_ELEMENTS.DIMENSION_CURVE_DIRECTED_CALLOUT', 'AIC_DRAUGHTING_ELEMENTS.STRUCTURED_DIMENSION_CALLOUT']) = 0; WR4: SELF.related_draughting_callout.contents * SELF.relating_draughting_callout.contents = SELF.related_draughting_callout.contents; WR5: ((SELF.name = 'prefix') AND (SIZEOF (QUERY (ato <* QUERY (con <* SELF.related_draughting_callout.contents | ('AIC_DRAUGHTING_ELEMENTS.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con))) | NOT (ato.name = 'prefix text') )) = 0)); WR6: ((SELF.name = 'suffix') AND (SIZEOF (QUERY (ato <* QUERY (con <* SELF.related_draughting_callout.contents | ('AIC_DRAUGHTING_ELEMENTS.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con))) | NOT (ato.name = 'suffix text') )) = 0)); END_ENTITY; ENTITY dimension_callout_relationship SUBTYPE OF (draughting_callout_relationship); WHERE WR1: SELF.name IN ['primary', 'secondary']; WR2: SIZEOF (TYPEOF (SELF.relating_draughting_callout) * ['AIC_DRAUGHTING_ELEMENTS.ANGULAR_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.CURVE_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.DIAMETER_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.LEADER_DIRECTED_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.LINEAR_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.ORDINATE_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.RADIUS_DIMENSION'])>=1; WR3: SIZEOF (TYPEOF (SELF.related_draughting_callout) * ['AIC_DRAUGHTING_ELEMENTS.DIMENSION_CURVE_DIRECTED_CALLOUT', 'AIC_DRAUGHTING_ELEMENTS.PROJECTION_DIRECTED_CALLOUT', 'AIC_DRAUGHTING_ELEMENTS.LEADER_DIRECTED_CALLOUT']) = 0; WR4: SELF.related_draughting_callout.contents * SELF.relating_draughting_callout.contents = SELF.related_draughting_callout.contents; END_ENTITY; ENTITY dimension_pair SUBTYPE OF (draughting_callout_relationship); WHERE WR1: SELF.name IN ['chained', 'parallel']; WR2: SIZEOF (TYPEOF (SELF.relating_draughting_callout) * ['AIC_DRAUGHTING_ELEMENTS.ANGULAR_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.CURVE_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.DIAMETER_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.LINEAR_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.ORDINATE_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.RADIUS_DIMENSION'])=1; WR3: SIZEOF (TYPEOF (SELF.related_draughting_callout) * ['AIC_DRAUGHTING_ELEMENTS.ANGULAR_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.CURVE_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.DIAMETER_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.LINEAR_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.ORDINATE_DIMENSION', 'AIC_DRAUGHTING_ELEMENTS.RADIUS_DIMENSION'])=1; END_ENTITY; ENTITY draughting_elements SUBTYPE OF (draughting_callout); WHERE WR1: SIZEOF (QUERY (l_c <* QUERY (con <* SELF.contents | ('AIC_DRAUGHTING_ELEMENTS.LEADER_CURVE' IN TYPEOF(con))) | NOT (SIZEOF (QUERY (ldc <* USEDIN (l_c, 'DRAUGHTING_ELEMENT_SCHEMA.' + 'DRAUGHTING_CALLOUT.CONTENTS') | ('AIC_DRAUGHTING_ELEMENTS.LEADER_DIRECTED_CALLOUT' IN TYPEOF (ldc)))) <= 1)))=0; WR2: NOT ('DRAUGHTING_ELEMENT_SCHEMA.DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(SELF)) OR (SIZEOF (QUERY (con <* SELF.contents | ('AIC_DRAUGHTING_ELEMENTS.PROJECTION_CURVE' IN TYPEOF (con)))) <= 2); WR3: SIZEOF (QUERY (rc <* USEDIN (SELF, 'DRAUGHTING_ELEMENT_SCHEMA.DRAUGHTING_CALLOUT_' + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | ('AIC_DRAUGHTING_ELEMENTS.' + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND (rc.name = 'primary') )) <= 1; WR4: SIZEOF (QUERY (rc <* USEDIN (SELF, 'DRAUGHTING_ELEMENT_SCHEMA.DRAUGHTING_CALLOUT_' + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | ('AIC_DRAUGHTING_ELEMENTS.' + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND (rc.name = 'secondary') )) <= 1; WR5: SIZEOF (QUERY (sec <* QUERY (rc <* USEDIN (SELF, 'DRAUGHTING_ELEMENT_SCHEMA.DRAUGHTING_CALLOUT_' + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | ('AIC_DRAUGHTING_ELEMENTS.' + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND (rc.name = 'secondary') ) | NOT (SIZEOF (QUERY (prim <* USEDIN (SELF, 'DRAUGHTING_ELEMENT_SCHEMA.DRAUGHTING_CALLOUT_' + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | ('AIC_DRAUGHTING_ELEMENTS.' + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (prim)) AND (prim.name = 'primary') )) = 1))) = 0; END_ENTITY; ENTITY geometrical_tolerance_callout SUBTYPE OF (draughting_callout); END_ENTITY; ENTITY leader_directed_dimension SUBTYPE OF (leader_directed_callout); WHERE WR1: SIZEOF (QUERY (con <* SELF.contents | 'AIC_DRAUGHTING_ELEMENTS.LEADER_CURVE' IN TYPEOF (con)))=1; END_ENTITY; ENTITY linear_dimension SUBTYPE OF (dimension_curve_directed_callout); END_ENTITY; ENTITY ordinate_dimension SUBTYPE OF (projection_directed_callout); END_ENTITY; ENTITY radius_dimension SUBTYPE OF (dimension_curve_directed_callout); WHERE WR1: SIZEOF (QUERY (con <* SELF.contents | 'AIC_DRAUGHTING_ELEMENTS.PROJECTION_CURVE' IN TYPEOF (con)))<=1; END_ENTITY; ENTITY structured_dimension_callout SUBTYPE OF (draughting_callout); WHERE WR1: SIZEOF (TYPEOF (SELF) * ['AIC_DRAUGHTING_ELEMENTS.DATUM_FEATURE_CALLOUT', 'AIC_DRAUGHTING_ELEMENTS.DATUM_TARGET_CALLOUT', 'AIC_DRAUGHTING_ELEMENTS.GEOMETRICAL_TOLERANCE_CALLOUT', 'AIC_DRAUGHTING_ELEMENTS.LEADER_DIRECTED_CALLOUT', 'AIC_DRAUGHTING_ELEMENTS.PROJECTION_DIRECTED_CALLOUT', 'AIC_DRAUGHTING_ELEMENTS.DIMENSION_CURVE_DIRECTED_CALLOUT']) = 0; WR2: SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | ('AIC_DRAUGHTING_ELEMENTS.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF (con))) | NOT (ato.name IN ['dimension value', 'tolerance value', 'unit text', 'prefix text', 'suffix text']))) = 0; WR3: SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | ('AIC_DRAUGHTING_ELEMENTS.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF (con))) | (ato.name = 'dimension value') )) >= 1; WR4: SIZEOF (QUERY (dcr <* USEDIN (SELF, 'DRAUGHTING_ELEMENT_SCHEMA.' + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + 'RELATING_DRAUGHTING_CALLOUT') | ('AIC_DRAUGHTING_ELEMENTS.' + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND (dcr.name = 'prefix') )) <= 1; WR5: SIZEOF (QUERY (dcr <* USEDIN (SELF, 'DRAUGHTING_ELEMENT_SCHEMA.' + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + 'RELATING_DRAUGHTING_CALLOUT') | ('AIC_DRAUGHTING_ELEMENTS.' + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND (dcr.name = 'suffix') )) <= 1; WR6: NOT((SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | ('AIC_DRAUGHTING_ELEMENTS.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con)) ) | (ato.name = 'prefix text') )) > 0)) OR (SIZEOF (QUERY (dcr <* USEDIN (SELF, 'DRAUGHTING_ELEMENT_SCHEMA.' + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + 'RELATING_DRAUGHTING_CALLOUT') | ('AIC_DRAUGHTING_ELEMENTS.' + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND (dcr.name = 'prefix') )) = 1); WR7: NOT(SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | ('AIC_DRAUGHTING_ELEMENTS.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF(con))) | (ato.name = 'suffix text') )) > 0) OR (SIZEOF (QUERY (dcr <* USEDIN (SELF, 'DRAUGHTING_ELEMENT_SCHEMA.' + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + 'RELATING_DRAUGHTING_CALLOUT') | ('AIC_DRAUGHTING_ELEMENTS.' + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND (dcr.name = 'suffix') )) = 1); END_ENTITY; END_SCHEMA;