stepcode/data/ap238/ap238-aim-long.exp
2012-04-06 16:28:40 -04:00

13343 lines
602 KiB
Text

SCHEMA integrated_cnc_schema;
(* AIM long form for ISO/DIS 10303-238
ISO TC184/SC4/WG3 N1541
Supercedes: WG3 N1112
Author: David Loffredo (loffredo@steptools.com)
2002-10-29 -- wg3n1540 (shortform), wg3n1541 (longform) schema
distributed with DIS ballot.
2004-10-22 -- Fixed some EXPRESS warnings for DIS ballot.
2004-10-12 -- Added GD&T definitions harmonized across AP-214,
AP-224, and Module 1050. All mappings should now
be complete and ready for DIS ballot.
2004-09-09 -- Finished adding subtypes for the action method
relationships as discussed in Bath. Rebuilding
with the latest IRs and AICs, particularly the
AIC 522e2 definitions.
2004-06-09 -- Short and longform to accompany the draft of the DIS
(wg3n1360) circulated for discussion at the Bath ISO
meeting.
2003-12-16 -- Finalized turning definitions and functions.
2003-11-20 -- Adding new AIM types and updating where rules
on existing types to support the turning model.
See changelog in AP document for details.
2003-09-03 -- Updating with comment resolutions from NWI/CD.
See changelog in AP document for details.
2002-04-24 -- wg3n1111 (shortform), wg3n1112 (longform) schema
distributed with NWI/CD ballot.
2002-03-07 -- Added temporary rule restricing use of turning
features. Fixed EXPRESS problems in rules (entity
value compares changed to instance compares, added
group qualifier and guard to nc_variable rule).
2002-02-24 -- Changed return type of verify_* functions to logical,
removed three extraneous numeric_expression subtypes
brought in by SHTOLO, corrected warnings in a couple
local rules.
2002-02-24 -- wg3n1090 (shortform), wg3n1091 (longform) schema
distributed with NWI/CD documents for review at Myrtle
Beach.
All prior dates were distributed with AIM versions prior to v2.8
Prior to this, the longform was hand-edited rather than generated
from the shortform. They are now synchronized and the longform is
produced using the short-to-long tools.
2001-10-18 -- Added material_designation_characterization
2001-09-25 -- Added machining_operator_instruction and made
machining_adaptive_control_strategy a subtype
of machining_strategy.
2001-09-24 -- Added machining_offset_vector_representation
representation subtype, an action resource subtype
machining_cutting_component, and the representation
item relationship type from Part 43.
2001-09-17 -- Added the AP-214 value_range entity and the
surface_texture_representation.
2001-08-23 -- Added classification assignment and new
machining_feature_process subtype
2001-07-25 -- Added machining_strategies subtypes and the freeform
milling tolerance representation.
2001-07-13 -- Added machining_tool_dimension_representation
2001-07-05 -- Updated measure_value to add numeric_measure
2001-07-05 -- Updated with new Part 11 subtypes, DTL
2001-06-22 -- Original, DTL
*)
CONSTANT
dummy_gri : geometric_representation_item := representation_item('') ||
geometric_representation_item();
dummy_tri : topological_representation_item := representation_item('')
|| topological_representation_item();
END_CONSTANT;
TYPE ahead_or_behind = ENUMERATION OF
(ahead,
exact,
behind);
END_TYPE; -- 10303-41: date_time_schema
TYPE angle_relator = ENUMERATION OF
(equal,
large,
small);
END_TYPE; -- 10303-47: shape_dimension_schema
TYPE approval_item = SELECT
(product_definition_formation);
END_TYPE; -- 10303-238: integrated_cnc_schema
TYPE attribute_type = SELECT
(label,
text);
END_TYPE; -- 10303-41: management_resources_schema
TYPE axis2_placement = SELECT
(axis2_placement_2d,
axis2_placement_3d);
END_TYPE; -- 10303-42: geometry_schema
TYPE b_spline_curve_form = ENUMERATION OF
(polyline_form,
circular_arc,
elliptic_arc,
parabolic_arc,
hyperbolic_arc,
unspecified);
END_TYPE; -- 10303-42: geometry_schema
TYPE b_spline_surface_form = ENUMERATION OF
(plane_surf,
cylindrical_surf,
conical_surf,
spherical_surf,
toroidal_surf,
surf_of_revolution,
ruled_surf,
generalised_cone,
quadric_surf,
surf_of_linear_extrusion,
unspecified);
END_TYPE; -- 10303-42: geometry_schema
TYPE boolean_operand = SELECT
(solid_model,
csg_primitive);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE characterized_action_definition = SELECT
(action,
action_method,
action_method_relationship,
action_relationship);
END_TYPE; -- 10303-49: process_property_schema
TYPE characterized_definition = SELECT
(characterized_object,
characterized_product_definition,
shape_definition);
END_TYPE; -- 10303-41: product_property_definition_schema
TYPE characterized_material_property = SELECT
(material_property_representation);
END_TYPE; -- 10303-45: material_property_definition_schema
TYPE characterized_product_definition = SELECT
(product_definition,
product_definition_relationship);
END_TYPE; -- 10303-41: product_property_definition_schema
TYPE characterized_resource_definition = SELECT
(action_resource,
action_resource_relationship,
action_resource_requirement,
action_resource_requirement_relationship);
END_TYPE; -- 10303-49: process_property_schema
TYPE compound_item_definition = SELECT
(list_representation_item,
set_representation_item);
END_TYPE; -- 10303-43: representation_schema
TYPE configuration_design_item = SELECT
(product_definition,
product_definition_formation);
END_TYPE; -- 10303-44: configuration_management_schema
TYPE context_dependent_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE count_measure = NUMBER;
END_TYPE; -- 10303-41: measure_schema
TYPE csg_primitive = SELECT
(block,
right_circular_cylinder);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE csg_select = SELECT
(csg_primitive);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE curve_on_surface = SELECT
(pcurve,
surface_curve,
composite_curve_on_surface);
END_TYPE; -- 10303-42: geometry_schema
TYPE date_and_time_item = SELECT
(approval_person_organization,
machining_operation,
machining_process_executable,
machining_toolpath,
product_definition,
product_definition_formation);
END_TYPE; -- 10303-238: integrated_cnc_schema
TYPE date_time_or_event_occurrence = SELECT
(date_time_select);
END_TYPE; -- 10303-41: date_time_schema
TYPE date_time_select = SELECT
(date,
local_time,
date_and_time);
END_TYPE; -- 10303-41: date_time_schema
TYPE day_in_month_number = INTEGER;
WHERE
WR1: (1 <= SELF) AND (SELF <= 31);
END_TYPE; -- 10303-41: date_time_schema
TYPE day_in_week_number = INTEGER;
WHERE
WR1: (1 <= SELF) AND (SELF <= 7);
END_TYPE; -- 10303-41: date_time_schema
TYPE day_in_year_number = INTEGER;
WHERE
WR1: (1 <= SELF) AND (SELF <= 366);
END_TYPE; -- 10303-41: date_time_schema
TYPE derived_property_select = SELECT
(property_definition,
action_property,
resource_property);
END_TYPE; -- 10303-41: product_property_definition_schema
TYPE description_attribute_select = SELECT
(application_context,
approval_role,
date_time_role,
context_dependent_shape_representation,
external_source,
person_and_organization_role,
person_and_organization,
property_definition_representation,
representation);
END_TYPE; -- 10303-41: basic_attribute_schema
TYPE descriptive_measure = STRING;
END_TYPE; -- 10303-41: measure_schema
TYPE dimension_count = INTEGER;
WHERE
WR1: SELF > 0;
END_TYPE; -- 10303-42: geometry_schema
TYPE dimensional_characteristic = SELECT
(dimensional_location,
dimensional_size);
END_TYPE; -- 10303-47: shape_dimension_schema
TYPE document_reference_item = SELECT
(externally_defined_dimension_definition,
externally_defined_feature_definition,
material_designation,
property_definition);
END_TYPE; -- 10303-238: integrated_cnc_schema
TYPE founded_item_select = SELECT
(founded_item,
representation_item);
END_TYPE; -- 10303-43: representation_schema
TYPE geometric_set_select = SELECT
(point,
curve,
surface);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE hour_in_day = INTEGER;
WHERE
WR1: (0 <= SELF) AND (SELF < 24);
END_TYPE; -- 10303-41: date_time_schema
TYPE id_attribute_select = SELECT
(action,
address,
product_category,
property_definition,
shape_aspect,
shape_aspect_relationship,
application_context,
representation);
END_TYPE; -- 10303-41: basic_attribute_schema
TYPE identification_item = SELECT
(dimensional_size);
END_TYPE; -- 10303-238: integrated_cnc_schema
TYPE identifier = STRING;
END_TYPE; -- 10303-41: support_resource_schema
TYPE knot_type = ENUMERATION OF
(uniform_knots,
quasi_uniform_knots,
piecewise_bezier_knots,
unspecified);
END_TYPE; -- 10303-42: geometry_schema
TYPE label = STRING;
END_TYPE; -- 10303-41: support_resource_schema
TYPE length_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE limit_condition = ENUMERATION OF
(maximum_material_condition,
least_material_condition,
regardless_of_feature_size);
END_TYPE; -- 10303-47: shape_aspect_definition_schema
TYPE list_of_reversible_topology_item = LIST [0:?] OF reversible_topology_item;
END_TYPE; -- 10303-42: topology_schema
TYPE list_representation_item = LIST [1:?] OF representation_item;
END_TYPE; -- 10303-43: representation_schema
TYPE measure_value = SELECT
(length_measure,
time_measure,
plane_angle_measure,
solid_angle_measure,
ratio_measure,
parameter_value,
numeric_measure,
context_dependent_measure,
descriptive_measure,
positive_length_measure,
positive_plane_angle_measure,
count_measure);
END_TYPE; -- 10303-41: measure_schema
TYPE minute_in_hour = INTEGER;
WHERE
WR1: (0 <= SELF) AND (SELF <= 59);
END_TYPE; -- 10303-41: date_time_schema
TYPE month_in_year_number = INTEGER;
WHERE
WR1: (1 <= SELF) AND (SELF <= 12);
END_TYPE; -- 10303-41: date_time_schema
TYPE name_attribute_select = SELECT
(address,
context_dependent_shape_representation,
derived_unit,
person_and_organization,
product_definition,
property_definition_representation);
END_TYPE; -- 10303-41: basic_attribute_schema
TYPE numeric_measure = NUMBER;
END_TYPE; -- 10303-41: measure_schema
TYPE parameter_value = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE pcurve_or_surface = SELECT
(pcurve,
surface);
END_TYPE; -- 10303-42: geometry_schema
TYPE person_and_organization_item = SELECT
(product_definition_formation);
END_TYPE; -- 10303-238: integrated_cnc_schema
TYPE person_organization_select = SELECT
(person,
organization,
person_and_organization);
END_TYPE; -- 10303-41: person_organization_schema
TYPE plane_angle_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE positive_length_measure = length_measure;
WHERE
WR1: SELF > 0.0;
END_TYPE; -- 10303-41: measure_schema
TYPE positive_plane_angle_measure = plane_angle_measure;
WHERE
WR1: SELF > 0.0;
END_TYPE; -- 10303-41: measure_schema
TYPE preferred_surface_curve_representation = ENUMERATION OF
(curve_3d,
pcurve_s1,
pcurve_s2);
END_TYPE; -- 10303-42: geometry_schema
TYPE process_or_process_relationship = SELECT
(product_definition_process,
property_process,
relationship_with_condition);
END_TYPE; -- 10303-49: method_definition_schema
TYPE product_or_formation_or_definition = SELECT
(product,
product_definition_formation,
product_definition);
END_TYPE; -- 10303-41: document_schema
TYPE property_or_shape_select = SELECT
(property_definition,
shape_definition);
END_TYPE; -- 10303-49: process_property_schema
TYPE ratio_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE relationship_with_condition = SELECT
(action_method_relationship,
action_relationship);
END_TYPE; -- 10303-49: method_definition_schema
TYPE represented_definition = SELECT
(property_definition,
shape_aspect,
shape_aspect_relationship);
END_TYPE; -- 10303-41: product_property_representation_schema
TYPE reversible_topology = SELECT
(reversible_topology_item,
list_of_reversible_topology_item,
set_of_reversible_topology_item);
END_TYPE; -- 10303-42: topology_schema
TYPE reversible_topology_item = SELECT
(edge,
path,
face,
face_bound,
closed_shell,
open_shell);
END_TYPE; -- 10303-42: topology_schema
TYPE role_select = SELECT
(approval_assignment,
approval_date_time,
document_reference,
security_classification_assignment);
END_TYPE; -- 10303-41: basic_attribute_schema
TYPE second_in_minute = REAL;
WHERE
WR1: (0 <= SELF) AND (SELF <= 60.0);
END_TYPE; -- 10303-41: date_time_schema
TYPE security_classification_item = SELECT
(machining_operation,
machining_process_executable,
machining_toolpath,
product_definition,
product_definition_formation);
END_TYPE; -- 10303-238: integrated_cnc_schema
TYPE set_of_reversible_topology_item = SET [0:?] OF reversible_topology_item;
END_TYPE; -- 10303-42: topology_schema
TYPE set_representation_item = SET [1:?] OF representation_item;
END_TYPE; -- 10303-43: representation_schema
TYPE shape_definition = SELECT
(product_definition_shape,
shape_aspect,
shape_aspect_relationship);
END_TYPE; -- 10303-41: product_property_definition_schema
TYPE shape_tolerance_select = SELECT
(geometric_tolerance,
plus_minus_tolerance);
END_TYPE; -- 10303-47: shape_tolerance_schema
TYPE shell = SELECT
(open_shell,
closed_shell);
END_TYPE; -- 10303-42: topology_schema
TYPE si_prefix = ENUMERATION OF
(exa,
peta,
tera,
giga,
mega,
kilo,
hecto,
deca,
deci,
centi,
milli,
micro,
nano,
pico,
femto,
atto);
END_TYPE; -- 10303-41: measure_schema
TYPE si_unit_name = ENUMERATION OF
(metre,
gram,
second,
ampere,
kelvin,
mole,
candela,
radian,
steradian,
hertz,
newton,
pascal,
joule,
watt,
coulomb,
volt,
farad,
ohm,
siemens,
weber,
tesla,
henry,
degree_Celsius,
lumen,
lux,
becquerel,
gray,
sievert);
END_TYPE; -- 10303-41: measure_schema
TYPE solid_angle_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE source_item = SELECT
(identifier);
END_TYPE; -- 10303-41: external_reference_schema
TYPE supported_item = SELECT
(action,
action_method);
END_TYPE; -- 10303-41: action_schema
TYPE surface_boundary = SELECT
(boundary_curve,
degenerate_pcurve);
END_TYPE; -- 10303-42: geometry_schema
TYPE surface_model = SELECT
(shell_based_surface_model);
END_TYPE; -- 10303-42: geometric_model_schema
TYPE text = STRING;
END_TYPE; -- 10303-41: support_resource_schema
TYPE time_measure = REAL;
END_TYPE; -- 10303-41: measure_schema
TYPE tolerance_method_definition = SELECT
(tolerance_value,
limits_and_fits);
END_TYPE; -- 10303-47: shape_tolerance_schema
TYPE transformation = SELECT
(item_defined_transformation,
functionally_defined_transformation);
END_TYPE; -- 10303-43: representation_schema
TYPE transition_code = ENUMERATION OF
(discontinuous,
continuous,
cont_same_gradient,
cont_same_gradient_same_curvature);
END_TYPE; -- 10303-42: geometry_schema
TYPE trimming_preference = ENUMERATION OF
(cartesian,
parameter,
unspecified);
END_TYPE; -- 10303-42: geometry_schema
TYPE trimming_select = SELECT
(cartesian_point,
parameter_value);
END_TYPE; -- 10303-42: geometry_schema
TYPE unit = SELECT
(named_unit,
derived_unit);
END_TYPE; -- 10303-41: measure_schema
TYPE value_qualifier = SELECT
(precision_qualifier,
type_qualifier,
uncertainty_qualifier);
END_TYPE; -- 10303-45: qualified_measure_schema
TYPE vector_or_direction = SELECT
(vector,
direction);
END_TYPE; -- 10303-42: geometry_schema
TYPE week_in_year_number = INTEGER;
WHERE
WR1: (1 <= SELF) AND (SELF <= 53);
END_TYPE; -- 10303-41: date_time_schema
TYPE year_number = INTEGER;
END_TYPE; -- 10303-41: date_time_schema
ENTITY action;
name : label;
description : OPTIONAL text;
chosen_method : action_method;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_method;
name : label;
description : OPTIONAL text;
consequence : text;
purpose : text;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_method_relationship;
name : label;
description : OPTIONAL text;
relating_method : action_method;
related_method : action_method;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_method_with_associated_documents
SUBTYPE OF (action_method);
documents : SET [1:?] OF document;
END_ENTITY; -- 10303-49: method_definition_schema
ENTITY action_property;
name : label;
description : text;
definition : characterized_action_definition;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY action_property_representation;
name : label;
description : text;
property : action_property;
representation : representation;
END_ENTITY; -- 10303-49: process_property_representation_schema
ENTITY action_relationship;
name : label;
description : OPTIONAL text;
relating_action : action;
related_action : action;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_resource;
name : label;
description : OPTIONAL text;
usage : SET [1:?] OF supported_item;
kind : action_resource_type;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_resource_relationship;
name : label;
description : OPTIONAL text;
relating_resource : action_resource;
related_resource : action_resource;
END_ENTITY; -- 10303-41: action_schema
ENTITY action_resource_requirement;
name : label;
description : text;
kind : resource_requirement_type;
operations : SET [1:?] OF characterized_action_definition;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY action_resource_requirement_relationship;
name : label;
description : text;
relating_action_resource_requirement : action_resource_requirement;
related_action_resource_requirement : action_resource_requirement;
WHERE
WR1: relating_action_resource_requirement :<>:
related_action_resource_requirement;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY action_resource_type;
name : label;
END_ENTITY; -- 10303-41: action_schema
ENTITY address;
internal_location : OPTIONAL label;
street_number : OPTIONAL label;
street : OPTIONAL label;
postal_box : OPTIONAL label;
town : OPTIONAL label;
region : OPTIONAL label;
postal_code : OPTIONAL label;
country : OPTIONAL label;
facsimile_number : OPTIONAL label;
telephone_number : OPTIONAL label;
electronic_mail_address : OPTIONAL label;
telex_number : OPTIONAL label;
DERIVE
name : label := get_name_value(SELF);
url : identifier := get_id_value(SELF);
WHERE
WR1: ((((((((((EXISTS(internal_location) OR EXISTS(street_number)) OR
EXISTS(street)) OR EXISTS(postal_box)) OR EXISTS(town)) OR
EXISTS(region)) OR EXISTS(postal_code)) OR EXISTS(country))
OR EXISTS(facsimile_number)) OR EXISTS(telephone_number)) OR
EXISTS(electronic_mail_address)) OR EXISTS(telex_number);
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY advanced_brep_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MANIFOLD_SOLID_BREP',
-- 'INTEGRATED_CNC_SCHEMA.FACETED_BREP',
'INTEGRATED_CNC_SCHEMA.MAPPED_ITEM',
'INTEGRATED_CNC_SCHEMA.AXIS2_PLACEMENT_3D' ] * TYPEOF(it)) =
1))) = 0;
WR2: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MANIFOLD_SOLID_BREP',
'INTEGRATED_CNC_SCHEMA.MAPPED_ITEM' ] * TYPEOF(it)) = 1))) >
0;
WR3: SIZEOF(QUERY (msb <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))|
NOT (SIZEOF(QUERY (csh <* msb_shells(msb)| NOT (SIZEOF(QUERY
(fcs <* csh\connected_face_set.cfs_faces| NOT (
'INTEGRATED_CNC_SCHEMA.ADVANCED_FACE' IN TYPEOF(fcs)))) = 0))
) = 0))) = 0;
WR4: SIZEOF(QUERY (msb <* QUERY (it <* items| (
'INTEGRATED_CNC_SCHEMA.MANIFOLD_SOLID_BREP' IN TYPEOF(it)))|
('INTEGRATED_CNC_SCHEMA.ORIENTED_CLOSED_SHELL' IN TYPEOF(msb\
manifold_solid_brep.outer)))) = 0;
WR5: SIZEOF(QUERY (brv <* QUERY (it <* items| (
'INTEGRATED_CNC_SCHEMA.BREP_WITH_VOIDS' IN TYPEOF(it)))| NOT
(SIZEOF(QUERY (csh <* brv\brep_with_voids.voids| csh\
oriented_closed_shell.orientation)) = 0))) = 0;
WR6: SIZEOF(QUERY (mi <* QUERY (it <* items| (
'INTEGRATED_CNC_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT (
'INTEGRATED_CNC_SCHEMA.ADVANCED_BREP_SHAPE_REPRESENTATION' IN
TYPEOF(mi\mapped_item.mapping_source.mapped_representation))
)) = 0;
END_ENTITY; -- 10303-514: aic_advanced_brep
ENTITY advanced_face
SUBTYPE OF (face_surface);
WHERE
WR1: SIZEOF([ 'INTEGRATED_CNC_SCHEMA.ELEMENTARY_SURFACE',
'INTEGRATED_CNC_SCHEMA.B_SPLINE_SURFACE',
'INTEGRATED_CNC_SCHEMA.SWEPT_SURFACE' ] * TYPEOF(
face_geometry)) = 1;
WR2: SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| (
'INTEGRATED_CNC_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))|
NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| NOT
('INTEGRATED_CNC_SCHEMA.EDGE_CURVE' IN TYPEOF(oe\
oriented_edge.edge_element)))) = 0))) = 0;
WR3: SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| (
'INTEGRATED_CNC_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))|
NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| NOT
(SIZEOF([ 'INTEGRATED_CNC_SCHEMA.LINE',
'INTEGRATED_CNC_SCHEMA.CONIC',
'INTEGRATED_CNC_SCHEMA.POLYLINE',
'INTEGRATED_CNC_SCHEMA.SURFACE_CURVE',
'INTEGRATED_CNC_SCHEMA.B_SPLINE_CURVE' ] * TYPEOF(oe.
edge_element\edge_curve.edge_geometry)) = 1))) = 0))) = 0;
WR4: SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| (
'INTEGRATED_CNC_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))|
NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| NOT
((('INTEGRATED_CNC_SCHEMA.VERTEX_POINT' IN TYPEOF(oe\edge.
edge_start)) AND ('INTEGRATED_CNC_SCHEMA.CARTESIAN_POINT' IN
TYPEOF(oe\edge.edge_start\vertex_point.vertex_geometry))) AND
(('INTEGRATED_CNC_SCHEMA.VERTEX_POINT' IN TYPEOF(oe\edge.
edge_end)) AND ('INTEGRATED_CNC_SCHEMA.CARTESIAN_POINT' IN
TYPEOF(oe\edge.edge_end\vertex_point.vertex_geometry)))))) =
0))) = 0;
WR5: SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| (
'INTEGRATED_CNC_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))| (
'INTEGRATED_CNC_SCHEMA.ORIENTED_PATH' IN TYPEOF(elp_fbnds.
bound)))) = 0;
WR6: NOT ('INTEGRATED_CNC_SCHEMA.SWEPT_SURFACE' IN TYPEOF(face_geometry
)) OR (SIZEOF([ 'INTEGRATED_CNC_SCHEMA.LINE',
'INTEGRATED_CNC_SCHEMA.CONIC',
'INTEGRATED_CNC_SCHEMA.POLYLINE',
'INTEGRATED_CNC_SCHEMA.B_SPLINE_CURVE' ] * TYPEOF(
face_geometry\swept_surface.swept_curve)) = 1);
WR7: SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* bounds| (
'INTEGRATED_CNC_SCHEMA.VERTEX_LOOP' IN TYPEOF(bnds.bound)))|
NOT (('INTEGRATED_CNC_SCHEMA.VERTEX_POINT' IN TYPEOF(
vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND (
'INTEGRATED_CNC_SCHEMA.CARTESIAN_POINT' IN TYPEOF(vlp_fbnds\
face_bound.bound\vertex_loop.loop_vertex\vertex_point.
vertex_geometry))))) = 0;
WR8: SIZEOF(QUERY (bnd <* bounds| NOT (SIZEOF([
'INTEGRATED_CNC_SCHEMA.EDGE_LOOP',
'INTEGRATED_CNC_SCHEMA.VERTEX_LOOP' ] * TYPEOF(bnd.bound)) =
1))) = 0;
WR9: SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| (
'INTEGRATED_CNC_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))|
NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| (
'INTEGRATED_CNC_SCHEMA.SURFACE_CURVE' IN TYPEOF(oe\
oriented_edge.edge_element\edge_curve.edge_geometry)) AND NOT
(SIZEOF(QUERY (sc_ag <* oe.edge_element\edge_curve.
edge_geometry\surface_curve.associated_geometry| NOT (
'INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(sc_ag)))) = 0))) = 0
))) = 0;
WR10: (NOT ('INTEGRATED_CNC_SCHEMA.SWEPT_SURFACE' IN TYPEOF(
face_geometry)) OR (NOT ('INTEGRATED_CNC_SCHEMA.POLYLINE' IN
TYPEOF(face_geometry\swept_surface.swept_curve)) OR (SIZEOF(
face_geometry\swept_surface.swept_curve\polyline.points) >= 3
))) AND (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds| (
'INTEGRATED_CNC_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))|
NOT (SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list| (
'INTEGRATED_CNC_SCHEMA.POLYLINE' IN TYPEOF(oe\oriented_edge.
edge_element\edge_curve.edge_geometry)) AND NOT (SIZEOF(oe\
oriented_edge.edge_element\edge_curve.edge_geometry\polyline.
points) >= 3))) = 0))) = 0);
END_ENTITY; -- 10303-511: aic_topologically_bounded_surface
ENTITY and_expression
SUBTYPE OF (multiple_arity_Boolean_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY angular_location
SUBTYPE OF (dimensional_location);
angle_selection : angle_relator;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY angular_size
SUBTYPE OF (dimensional_size);
angle_selection : angle_relator;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY angularity_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
WR1: SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system)
< 3;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY apex
SUBTYPE OF (derived_shape_aspect);
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY application_context;
application : label;
DERIVE
description : text := get_description_value(SELF);
id : identifier := get_id_value(SELF);
INVERSE
context_elements : SET [1:?] OF application_context_element FOR
frame_of_reference;
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: application_context_schema
ENTITY application_context_element
SUPERTYPE OF (ONEOF(product_context, product_definition_context));
name : label;
frame_of_reference : application_context;
END_ENTITY; -- 10303-41: application_context_schema
ENTITY application_protocol_definition;
status : label;
application_interpreted_model_schema_name : label;
application_protocol_year : year_number;
application : application_context;
END_ENTITY; -- 10303-41: application_context_schema
ENTITY applied_approval_assignment
SUBTYPE OF (approval_assignment);
items : SET [1:?] OF approval_item;
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY applied_area
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.
of_shape);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT ((2 <= SIZEOF(impl_rep.
used_representation.items)) AND (SIZEOF(impl_rep.
used_representation.items) <= 3)))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.
used_representation.items| NOT (srwp_i.name IN [
'orientation', 'effective length', 'maximum length' ]))) > 0)
)) = 0))) = 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'effective length'))) = 1))) = 0)))
<= 1;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'maximum length'))) <= 1))) = 0))) =
0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY applied_date_and_time_assignment
SUBTYPE OF (date_and_time_assignment);
items : SET [1:?] OF date_and_time_item;
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY applied_document_reference
SUBTYPE OF (document_reference);
items : SET [1:?] OF document_reference_item;
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY applied_document_usage_constraint_assignment
SUBTYPE OF (document_usage_constraint_assignment);
items : SET [1:?] OF document_reference_item;
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY applied_identification_assignment
SUBTYPE OF (identification_assignment);
items : SET [1:?] OF identification_item;
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY applied_person_and_organization_assignment
SUBTYPE OF (person_and_organization_assignment);
items : SET [1:?] OF person_and_organization_item;
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY applied_security_classification_assignment
SUBTYPE OF (security_classification_assignment);
items : SET [1:?] OF security_classification_item;
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY approval;
status : approval_status;
level : label;
END_ENTITY; -- 10303-41: approval_schema
ENTITY approval_assignment
ABSTRACT SUPERTYPE;
assigned_approval : approval;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY approval_date_time;
date_time : date_time_select;
dated_approval : approval;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: approval_schema
ENTITY approval_person_organization;
person_organization : person_organization_select;
authorized_approval : approval;
role : approval_role;
END_ENTITY; -- 10303-41: approval_schema
ENTITY approval_relationship;
name : label;
description : OPTIONAL text;
relating_approval : approval;
related_approval : approval;
END_ENTITY; -- 10303-41: approval_schema
ENTITY approval_role;
role : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: approval_schema
ENTITY approval_status;
name : label;
END_ENTITY; -- 10303-41: approval_schema
ENTITY axis1_placement
SUBTYPE OF (placement);
axis : OPTIONAL direction;
DERIVE
z : direction := NVL(normalise(axis), dummy_gri || direction([ 0.0, 0.0
, 1.0 ]));
WHERE
WR1: SELF\geometric_representation_item.dim = 3;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY axis2_placement_2d
SUBTYPE OF (placement);
ref_direction : OPTIONAL direction;
DERIVE
p : LIST [2:2] OF direction := build_2axes(ref_direction);
WHERE
WR1: SELF\geometric_representation_item.dim = 2;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY axis2_placement_3d
SUBTYPE OF (placement);
axis : OPTIONAL direction;
ref_direction : OPTIONAL direction;
DERIVE
p : LIST [3:3] OF direction := build_axes(axis, ref_direction);
WHERE
WR1: SELF\placement.location.dim = 3;
WR2: NOT EXISTS(axis) OR (axis.dim = 3);
WR3: NOT EXISTS(ref_direction) OR (ref_direction.dim = 3);
WR4: (NOT EXISTS(axis) OR NOT EXISTS(ref_direction)) OR (cross_product(
axis, ref_direction).magnitude > 0.0);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY b_spline_curve
SUPERTYPE OF (ONEOF(uniform_curve, b_spline_curve_with_knots,
quasi_uniform_curve, bezier_curve) ANDOR rational_b_spline_curve)
SUBTYPE OF (bounded_curve);
degree : INTEGER;
control_points_list : LIST [2:?] OF cartesian_point;
curve_form : b_spline_curve_form;
closed_curve : LOGICAL;
self_intersect : LOGICAL;
DERIVE
upper_index_on_control_points : INTEGER := SIZEOF(control_points_list)
- 1;
control_points : ARRAY [0:upper_index_on_control_points]
OF cartesian_point := list_to_array
(control_points_list, 0,
upper_index_on_control_points);
WHERE
WR1: ((('INTEGRATED_CNC_SCHEMA.UNIFORM_CURVE' IN TYPEOF(SELF)) OR (
'INTEGRATED_CNC_SCHEMA.QUASI_UNIFORM_CURVE' IN TYPEOF(SELF)))
OR ('INTEGRATED_CNC_SCHEMA.BEZIER_CURVE' IN TYPEOF(SELF)))
OR ('INTEGRATED_CNC_SCHEMA.B_SPLINE_CURVE_WITH_KNOTS' IN
TYPEOF(SELF));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY b_spline_curve_with_knots
SUBTYPE OF (b_spline_curve);
knot_multiplicities : LIST [2:?] OF INTEGER;
knots : LIST [2:?] OF parameter_value;
knot_spec : knot_type;
DERIVE
upper_index_on_knots : INTEGER := SIZEOF(knots);
WHERE
WR1: constraints_param_b_spline(degree, upper_index_on_knots,
upper_index_on_control_points, knot_multiplicities, knots);
WR2: SIZEOF(knot_multiplicities) = upper_index_on_knots;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY b_spline_surface
SUPERTYPE OF (ONEOF(b_spline_surface_with_knots, uniform_surface,
quasi_uniform_surface, bezier_surface) ANDOR
rational_b_spline_surface)
SUBTYPE OF (bounded_surface);
u_degree : INTEGER;
v_degree : INTEGER;
control_points_list : LIST [2:?] OF LIST [2:?] OF cartesian_point;
surface_form : b_spline_surface_form;
u_closed : LOGICAL;
v_closed : LOGICAL;
self_intersect : LOGICAL;
DERIVE
u_upper : INTEGER := SIZEOF(control_points_list) - 1;
v_upper : INTEGER := SIZEOF(control_points_list[1]) - 1;
control_points : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF
cartesian_point := make_array_of_array(
control_points_list, 0, u_upper, 0, v_upper);
WHERE
WR1: ((('INTEGRATED_CNC_SCHEMA.UNIFORM_SURFACE' IN TYPEOF(SELF)) OR (
'INTEGRATED_CNC_SCHEMA.QUASI_UNIFORM_SURFACE' IN TYPEOF(SELF)
)) OR ('INTEGRATED_CNC_SCHEMA.BEZIER_SURFACE' IN TYPEOF(SELF)
)) OR ('INTEGRATED_CNC_SCHEMA.B_SPLINE_SURFACE_WITH_KNOTS' IN
TYPEOF(SELF));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY b_spline_surface_with_knots
SUBTYPE OF (b_spline_surface);
u_multiplicities : LIST [2:?] OF INTEGER;
v_multiplicities : LIST [2:?] OF INTEGER;
u_knots : LIST [2:?] OF parameter_value;
v_knots : LIST [2:?] OF parameter_value;
knot_spec : knot_type;
DERIVE
knot_u_upper : INTEGER := SIZEOF(u_knots);
knot_v_upper : INTEGER := SIZEOF(v_knots);
WHERE
WR1: constraints_param_b_spline(SELF\b_spline_surface.u_degree,
knot_u_upper, SELF\b_spline_surface.u_upper, u_multiplicities
, u_knots);
WR2: constraints_param_b_spline(SELF\b_spline_surface.v_degree,
knot_v_upper, SELF\b_spline_surface.v_upper, v_multiplicities
, v_knots);
WR3: SIZEOF(u_multiplicities) = knot_u_upper;
WR4: SIZEOF(v_multiplicities) = knot_v_upper;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY back_boring_operation
SUBTYPE OF (drilling_type_operation);
WHERE
WR1: (0 = SIZEOF (QUERY (amr <* get_relating_amr (SELF) |
('INTEGRATED_CNC_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'
IN TYPEOF (amr)) AND NOT
(verify_required_action_property
(amr.related_method, 'oriented spindle stop')))));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY bezier_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY bezier_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY binary_boolean_expression
ABSTRACT SUPERTYPE OF (xor_expression)
SUBTYPE OF (boolean_expression, binary_generic_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY binary_generic_expression
ABSTRACT SUPERTYPE
SUBTYPE OF (generic_expression);
operands : LIST [2:2] OF generic_expression;
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY block
SUBTYPE OF (geometric_representation_item);
position : axis2_placement_3d;
x : positive_length_measure;
y : positive_length_measure;
z : positive_length_measure;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY block_shape_representation
SUBTYPE OF (shape_representation_with_parameters);
WHERE
WR1: SIZEOF(SELF.items) = 4;
WR2: SIZEOF(QUERY (it <* SELF.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1;
WR3: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'length'))) = 1;
WR4: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'width'))) = 1;
WR5: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'height'))) = 1;
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY boolean_expression
ABSTRACT SUPERTYPE OF (ONEOF (unary_boolean_expression,
binary_boolean_expression,multiple_arity_boolean_expression,
comparison_expression))
SUBTYPE OF (expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY boring_operation
SUBTYPE OF (drilling_type_operation);
WHERE
WR1: (SELF.description IN ['boring','reaming']);
WR2: (verify_required_action_property (SELF, 'spindle stop')) AND
(verify_enumeration_action_property (SELF, 'spindle stop',
['spindle stop at bottom', 'spindle nonstop']));
WR3: (verify_optional_action_property (SELF, 'testcut depth')) AND
(verify_length_measure_action_property (SELF, 'testcut depth'));
WR4: (verify_optional_action_property (SELF, 'waiting position')) AND
(verify_rep_item_for_action_property (SELF, 'waiting position',
['INTEGRATED_CNC_SCHEMA.CARTESIAN_POINT']));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY boss
SUBTYPE OF (feature_definition);
WHERE
WR1: SELF\characterized_object.description IN [ 'circular', 'complex',
'rectangular' ];
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'boss height occurrence') AND (SIZEOF(QUERY (
sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'path feature component usage') AND ('INTEGRATED_CNC_SCHEMA.'
+ 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ((
'INTEGRATED_CNC_SCHEMA.PATH_FEATURE_COMPONENT' IN TYPEOF(sdr.
relating_shape_aspect)) AND (sdr.relating_shape_aspect.
description = 'linear')) AND (sdr.name = 'boss height'))) = 1
))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND ((1 <= SIZEOF(pdr.
used_representation.items)) AND (SIZEOF(pdr.
used_representation.items) <= 2)))) = 1))) = 1;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.
used_representation.items| (srwp_i.name = 'orientation') OR (
srwp_i.name = 'fillet radius'))) = SIZEOF(pdr.
used_representation.items)))) = 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'fillet radius'))) <= 1))) = 0))) =
0;
WR6: NOT (SELF\characterized_object.description = 'circular') OR (
SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'circular profile occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (
'INTEGRATED_CNC_SCHEMA.CIRCULAR_CLOSED_PROFILE' IN TYPEOF(sdr
.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR7: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'top condition occurrence') AND (SIZEOF(QUERY (
fcr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'boss top usage') AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.BOSS_TOP' IN TYPEOF(
fcr.relating_shape_aspect)))) = 1))) = 1))) = 0;
WR8: NOT (SELF\characterized_object.description = 'circular') OR (
SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'change in diameter occurrence') AND (SIZEOF(
QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'taper usage')
AND ('INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.TAPER' IN TYPEOF(
fcr.related_shape_aspect)) AND ('INTEGRATED_CNC_SCHEMA.BOSS'
IN TYPEOF(fcr.relating_shape_aspect)))) = 1))) <= 1))) = 0);
WR9: NOT (SELF\characterized_object.description = 'complex') OR (SIZEOF
(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'enclosed boundary occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.NGON_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.CLOSED_PATH_PROFILE' ] * TYPEOF(sdr.
relating_shape_aspect)) = 1))) = 1))) = 1))) = 0);
WR10: NOT (SELF\characterized_object.description IN [ 'complex',
'rectangular' ]) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN
(SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| ('INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN
TYPEOF(pd)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'change in boundary occurrence') AND (SIZEOF(
QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (sar.description = 'taper usage')
AND ('INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (('INTEGRATED_CNC_SCHEMA.TAPER' IN TYPEOF(
fcr.related_shape_aspect)) AND ('INTEGRATED_CNC_SCHEMA.BOSS'
IN TYPEOF(fcr.relating_shape_aspect))) AND (fcr.
related_shape_aspect.description IN [ 'angle taper',
'directed taper' ]))) = 1))) <= 1))) = 0);
WR11: NOT (SELF\characterized_object.description = 'rectangular') OR (
SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'rectangular profile occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_CLOSED_PROFILE' IN TYPEOF(
sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR12: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF
)| ('INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'maximum feature limit'))) >= 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY boss_top
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SELF.description IN [ 'planar', 'complex' ];
WR3: NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR4: NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.LOCATION_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR5: NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)))) = 1))) = 0);
WR6: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| ((sar.description =
'boss top usage') AND (sar.name IN [ 'boss height start',
'boss height end' ])) AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| ((fcr.related_shape_aspect.description =
'top condition occurrence') AND ('INTEGRATED_CNC_SCHEMA.BOSS'
IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)))
AND ('INTEGRATED_CNC_SCHEMA.BOSS_TOP' IN TYPEOF(fcr.
relating_shape_aspect)))) >= 1;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) <= 1))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR9: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'top radius'))) <= 1))) = 0))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY bottom_and_side_milling_operation
SUBTYPE OF (milling_type_operation);
WHERE
WR1: (SELF.description IN ['roughing','finishing']);
WR2: (verify_optional_action_property (SELF, 'axial cutting depth')) AND
(verify_length_measure_action_property (SELF, 'axial cutting depth'));
WR3: (verify_optional_action_property (SELF, 'radial cutting depth')) AND
(verify_length_measure_action_property (SELF, 'radial cutting depth'));
WR4: (verify_optional_action_property (SELF, 'allowance side')) AND
(verify_length_measure_action_property (SELF, 'allowance side'));
WR5: (verify_optional_action_property (SELF, 'allowance bottom')) AND
(verify_length_measure_action_property (SELF, 'allowance bottom'));
WR6: NOT (SELF.description = 'roughing') OR
((verify_required_action_property (SELF, 'allowance side')) AND
(verify_required_action_property (SELF, 'allowance bottom')));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY boundary_curve
SUBTYPE OF (composite_curve_on_surface);
WHERE
WR1: SELF\composite_curve.closed_curve;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY bounded_curve
SUPERTYPE OF (ONEOF(polyline, b_spline_curve, trimmed_curve,
bounded_pcurve, bounded_surface_curve, composite_curve))
SUBTYPE OF (curve);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY bounded_pcurve
SUBTYPE OF (pcurve, bounded_curve);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE' IN TYPEOF(SELF\pcurve.
reference_to_curve.items[1]);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY bounded_surface
SUPERTYPE OF (ONEOF(b_spline_surface, rectangular_trimmed_surface,
curve_bounded_surface, rectangular_composite_surface))
SUBTYPE OF (surface);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY bounded_surface_curve
SUBTYPE OF (surface_curve, bounded_curve);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE' IN TYPEOF(SELF\surface_curve
.curve_3d);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY brep_with_voids
SUBTYPE OF (manifold_solid_brep);
voids : SET [1:?] OF oriented_closed_shell;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY calendar_date
SUBTYPE OF (date);
day_component : day_in_month_number;
month_component : month_in_year_number;
WHERE
WR1: valid_calendar_date(SELF);
END_ENTITY; -- 10303-41: date_time_schema
ENTITY cartesian_point
SUBTYPE OF (point);
coordinates : LIST [1:3] OF length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY cartesian_transformation_operator
SUPERTYPE OF (cartesian_transformation_operator_3d)
SUBTYPE OF (geometric_representation_item,
functionally_defined_transformation);
axis1 : OPTIONAL direction;
axis2 : OPTIONAL direction;
local_origin : cartesian_point;
scale : OPTIONAL REAL;
DERIVE
scl : REAL := NVL(scale, 1.0);
WHERE
WR1: scl > 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY cartesian_transformation_operator_3d
SUBTYPE OF (cartesian_transformation_operator);
axis3 : OPTIONAL direction;
DERIVE
u : LIST [3:3] OF direction := base_axis(3, SELF\
cartesian_transformation_operator.axis1, SELF\
cartesian_transformation_operator.axis2, axis3);
WHERE
WR1: SELF\geometric_representation_item.dim = 3;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY centre_of_symmetry
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF(QUERY (sadr <* SELF\derived_shape_aspect.
deriving_relationships| NOT (
'INTEGRATED_CNC_SCHEMA.SYMMETRIC_SHAPE_ASPECT' IN TYPEOF(sadr
\shape_aspect_relationship.related_shape_aspect)))) = 0;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY chamfer
SUBTYPE OF (transition_feature);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)) AND (pdr.used_representation.name =
'chamfer face'))) <= 1))) = 0;
WR2: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| (('INTEGRATED_CNC_SCHEMA.CHAMFER_OFFSET' IN
TYPEOF(fcr.related_shape_aspect)) AND (
'INTEGRATED_CNC_SCHEMA.CHAMFER' IN TYPEOF(fcr.
relating_shape_aspect))) AND (fcr.related_shape_aspect.
description = 'first offset'))) = 1;
WR3: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| (('INTEGRATED_CNC_SCHEMA.CHAMFER_OFFSET' IN
TYPEOF(fcr.related_shape_aspect)) AND (
'INTEGRATED_CNC_SCHEMA.CHAMFER' IN TYPEOF(fcr.
relating_shape_aspect))) AND (fcr.related_shape_aspect.
description = 'second offset'))) = 1;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY chamfer_offset
SUBTYPE OF (shape_aspect);
WHERE
WR1: SELF.description IN [ 'first offset', 'second offset' ];
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR4: NOT (SELF.description = 'first offset') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'offset amount'))) = 1))) = 0))) = 0
);
WR5: NOT (SELF.description = 'first offset') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)) AND (pdr.used_representation.name =
'first face shape'))) <= 1))) = 0);
WR6: NOT (SELF.description = 'second offset') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'offset amount') OR (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'offset angle'))) = 1))) = 0)
)) = 0);
WR7: NOT (SELF.description = 'second offset') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)) AND (pdr.used_representation.name =
'second face shape'))) <= 1))) = 0);
WR8: SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| ('INTEGRATED_CNC_SCHEMA.' +
'FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF(sar)))| (
'INTEGRATED_CNC_SCHEMA.CHAMFER' IN TYPEOF(sdr.
relating_shape_aspect)) AND (
'INTEGRATED_CNC_SCHEMA.CHAMFER_OFFSET' IN TYPEOF(sdr.
related_shape_aspect)))) = 1;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY characterized_object;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY circle
SUBTYPE OF (conic);
radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY circular_closed_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 2))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'diameter'))) = 1))) = 0))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY circular_pattern
SUBTYPE OF (replicate_feature);
WHERE
WR1: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT' IN
TYPEOF(sdr.related_shape_aspect)))) = 1))) <= 3))) = 0;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT ((SIZEOF(impl_rep.
used_representation.items) >= 3) AND (SIZEOF(impl_rep.
used_representation.items) <= 5)))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'diameter'))) <= 1))) = 0))) = 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'base feature rotation'))) <=
1))) = 0))) = 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.COUNT_MEASURE' IN TYPEOF(it
\measure_with_unit.value_component))) AND (it.name =
'number of features'))) = 1))) = 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'angular spacing'))) = 1))) =
0))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY circular_runout_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
WR1: SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system)
<= 2;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY closed_path_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.' + 'DEFINITION')|
NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.' + 'DEFINITION')|
NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PATH_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)))) = 1))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY closed_shell
SUBTYPE OF (connected_face_set);
END_ENTITY; -- 10303-42: topology_schema
ENTITY coaxiality_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
WR1: SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system)
<= 2;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY common_datum
SUBTYPE OF (composite_shape_aspect, datum);
WHERE
WR1: SIZEOF(SELF.component_relationships) = 2;
WR2: SIZEOF(QUERY (sar <* SELF.component_relationships| NOT ((
'INTEGRATED_CNC_SCHEMA.DATUM' IN TYPEOF(sar.
related_shape_aspect)) AND NOT (
'INTEGRATED_CNC_SCHEMA.COMMON_DATUM' IN TYPEOF(sar.
related_shape_aspect))))) = 0;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY comparison_equal
SUBTYPE OF (comparison_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY comparison_expression
ABSTRACT SUPERTYPE OF (ONEOF (comparison_equal,comparison_greater,
comparison_greater_equal,comparison_less,comparison_less_equal,
comparison_not_equal))
SUBTYPE OF (boolean_expression, binary_generic_expression);
SELF\binary_generic_expression.operands : LIST [2:2] OF expression;
WHERE
WR1: (('INTEGRATED_CNC_SCHEMA.NUMERIC_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[1])) AND
('INTEGRATED_CNC_SCHEMA.NUMERIC_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[2]))
OR
(('INTEGRATED_CNC_SCHEMA.BOOLEAN_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[1])) AND
('INTEGRATED_CNC_SCHEMA.BOOLEAN_EXPRESSION'
IN TYPEOF(SELF\binary_generic_expression.operands[2]))));
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY comparison_greater
SUBTYPE OF (comparison_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY comparison_greater_equal
SUBTYPE OF (comparison_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY comparison_less
SUBTYPE OF (comparison_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY comparison_less_equal
SUBTYPE OF (comparison_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY comparison_not_equal
SUBTYPE OF (comparison_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY composite_curve
SUBTYPE OF (bounded_curve);
segments : LIST [1:?] OF composite_curve_segment;
self_intersect : LOGICAL;
DERIVE
n_segments : INTEGER := SIZEOF(segments);
closed_curve : LOGICAL := segments[n_segments].transition <>
discontinuous;
WHERE
WR1: NOT closed_curve AND (SIZEOF(QUERY (temp <* segments| (temp.
transition = discontinuous))) = 1) OR closed_curve AND (
SIZEOF(QUERY (temp <* segments| (temp.transition =
discontinuous))) = 0);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY composite_curve_on_surface
SUPERTYPE OF (boundary_curve)
SUBTYPE OF (composite_curve);
DERIVE
basis_surface : SET [0:2] OF surface := get_basis_surface(SELF);
WHERE
WR1: SIZEOF(basis_surface) > 0;
WR2: constraints_composite_curve_on_surface(SELF);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY composite_curve_segment
SUBTYPE OF (founded_item);
transition : transition_code;
same_sense : BOOLEAN;
parent_curve : curve;
INVERSE
using_curves : BAG [1:?] OF composite_curve FOR segments;
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE' IN TYPEOF(parent_curve);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY composite_hole
SUBTYPE OF (compound_feature);
WHERE
WR1: SELF\characterized_object.description IN [ 'counterbore',
'countersunk' ];
WR2: SIZEOF(QUERY (pds <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(
pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (
'INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)
) AND (SIZEOF(QUERY (sar <* csa.component_relationships| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)) AND ('INTEGRATED_CNC_SCHEMA.ROUND_HOLE' IN
TYPEOF(sar.related_shape_aspect)))) = 2))) = 1))) = 1;
WR3: NOT (SELF\characterized_object.description = 'countersunk') OR (
SIZEOF(QUERY (pds <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(
pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (
'INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)
) AND (SIZEOF(QUERY (sar <* csa.component_relationships| (
'INTEGRATED_CNC_SCHEMA.ROUND_HOLE' IN TYPEOF(sar.
related_shape_aspect)) AND NOT (SIZEOF(QUERY (pds <* QUERY (
pd <* USEDIN(sar.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'change in diameter occurrence') AND (SIZEOF(
QUERY (fcr2 <* QUERY (sar2 <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'
)| (sar2.description = 'taper usage') AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar2)))| ('INTEGRATED_CNC_SCHEMA.TAPER' IN TYPEOF(fcr2
.related_shape_aspect)))) = 1))) = 0))) = 0))) = 1))) = 1)))
= 1);
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY composite_shape_aspect
SUBTYPE OF (shape_aspect);
INVERSE
component_relationships : SET [2:?] OF shape_aspect_relationship FOR
relating_shape_aspect;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY compound_feature
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pds <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(
pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (csa.name =
'compound feature in solid') AND (
'INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)
))) = 1))) = 1;
WR2: SIZEOF(QUERY (pds <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(
pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (
'INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)
))) = 1))) = 1;
WR3: SIZEOF(QUERY (pds <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(
pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (
'INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)
) AND (SIZEOF(QUERY (fcr <* csa.component_relationships| NOT
('INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(fcr)))) = 0))) = 1))) = 1;
WR4: SIZEOF(QUERY (pds <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(
pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (
'INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)
))) = 1))) = 1;
WR5: SIZEOF(QUERY (pds <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(
pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (
'INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)
) AND (SIZEOF(QUERY (sar <* csa.component_relationships| (
'INTEGRATED_CNC_SCHEMA.THREAD' IN TYPEOF(sar.
related_shape_aspect)))) = 0))) = 1))) = 1;
WR6: SIZEOF(QUERY (pds <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(
pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (
'INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)
) AND (SIZEOF(QUERY (sar <* csa.component_relationships| (
'INTEGRATED_CNC_SCHEMA.COMPOUND_FEATURE' IN TYPEOF(sar.
related_shape_aspect)) AND (sar.related_shape_aspect\
characterized_object.name <> SELF\characterized_object.name))
) = 0))) = 1))) = 1;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY compound_representation_item
SUBTYPE OF (representation_item);
item_element : compound_item_definition;
END_ENTITY; -- 10303-43: representation_schema
ENTITY concentricity_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
WR1: SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system)
= 1;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY concurrent_action_method
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-49: method_definition_schema
ENTITY conic
SUPERTYPE OF (ONEOF(circle, ellipse, hyperbola, parabola))
SUBTYPE OF (curve);
position : axis2_placement;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY conical_surface
SUBTYPE OF (elementary_surface);
radius : length_measure;
semi_angle : plane_angle_measure;
WHERE
WR1: radius >= 0.0;
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY connected_face_set
SUPERTYPE OF (ONEOF(closed_shell, open_shell))
SUBTYPE OF (topological_representation_item);
cfs_faces : SET [1:?] OF face;
END_ENTITY; -- 10303-42: topology_schema
ENTITY context_dependent_shape_representation;
representation_relation : shape_representation_relationship;
represented_product_relation : product_definition_shape;
DERIVE
description : text := get_description_value(SELF);
name : label := get_name_value(SELF);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(
SELF.represented_product_relation.definition);
WR2: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
WR3: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY context_dependent_unit
SUBTYPE OF (named_unit);
name : label;
END_ENTITY; -- 10303-41: measure_schema
ENTITY contouring_turning_operation
SUBTYPE OF (turning_type_operation);
WHERE
WR1: (SELF.description IN ['roughing','finishing']);
WR2: (verify_optional_action_property (SELF, 'allowance')) AND
(verify_length_measure_action_property (SELF, 'allowance'));
WR3: NOT (SELF.description = 'roughing') OR
(verify_required_action_property (SELF, 'allowance'));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY conversion_based_unit
SUBTYPE OF (named_unit);
name : label;
conversion_factor : measure_with_unit;
END_ENTITY; -- 10303-41: measure_schema
ENTITY coordinated_universal_time_offset;
hour_offset : INTEGER;
minute_offset : OPTIONAL INTEGER;
sense : ahead_or_behind;
DERIVE
actual_minute_offset : INTEGER := NVL(minute_offset, 0);
WHERE
WR1: (0 <= hour_offset) AND (hour_offset < 24);
WR2: (0 <= actual_minute_offset) AND (actual_minute_offset <= 59);
WR3: NOT (((hour_offset <> 0) OR (actual_minute_offset <> 0)) AND (
sense = exact));
END_ENTITY; -- 10303-41: date_time_schema
ENTITY curve
SUPERTYPE OF (ONEOF(line, conic, pcurve, surface_curve, offset_curve_3d,
curve_replica))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY curve_bounded_surface
SUBTYPE OF (bounded_surface);
basis_surface : surface;
boundaries : SET [1:?] OF boundary_curve;
implicit_outer : BOOLEAN;
WHERE
WR1: NOT implicit_outer OR (SIZEOF(QUERY (temp <* boundaries| (
'INTEGRATED_CNC_SCHEMA.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))
)) = 0);
WR2: NOT implicit_outer OR ('INTEGRATED_CNC_SCHEMA.BOUNDED_SURFACE' IN
TYPEOF(basis_surface));
WR3: SIZEOF(QUERY (temp <* boundaries| (
'INTEGRATED_CNC_SCHEMA.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))
)) <= 1;
WR4: SIZEOF(QUERY (temp <* boundaries| (temp\composite_curve_on_surface
.basis_surface[1] <> SELF.basis_surface))) = 0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY curve_replica
SUBTYPE OF (curve);
parent_curve : curve;
transformation : cartesian_transformation_operator;
WHERE
WR1: transformation.dim = parent_curve.dim;
WR2: acyclic_curve_replica(SELF, parent_curve);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY cylindrical_shape_representation
SUBTYPE OF (shape_representation_with_parameters);
WHERE
WR1: SIZEOF(SELF.items) = 3;
WR2: SIZEOF(QUERY (it <* SELF.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1;
WR3: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'length'))) = 1;
WR4: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'diameter'))) = 1;
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY cylindrical_surface
SUBTYPE OF (elementary_surface);
radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY cylindricity_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
WR1: NOT ('INTEGRATED_CNC_SCHEMA.' +
'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY data_environment;
name : label;
description : text;
elements : SET [1:?] OF property_definition_representation;
END_ENTITY; -- 10303-45: material_property_representation_schema
ENTITY date
SUPERTYPE OF (ONEOF(calendar_date, ordinal_date,
week_of_year_and_day_date));
year_component : year_number;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY date_and_time;
date_component : date;
time_component : local_time;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY date_and_time_assignment
ABSTRACT SUPERTYPE;
assigned_date_and_time : date_and_time;
role : date_time_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY date_time_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY datum
SUBTYPE OF (shape_aspect);
identification : identifier;
INVERSE
established_by_relationships : SET [1:?] OF shape_aspect_relationship
FOR related_shape_aspect;
WHERE
WR1: SIZEOF(QUERY (x <* SELF\datum.established_by_relationships| (
SIZEOF(TYPEOF(x\shape_aspect_relationship.
relating_shape_aspect) * [
'INTEGRATED_CNC_SCHEMA.DATUM_FEATURE',
'INTEGRATED_CNC_SCHEMA.DATUM_TARGET' ]) <> 1))) = 0;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY datum_feature
SUBTYPE OF (shape_aspect);
INVERSE
feature_basis_relationship : shape_aspect_relationship FOR
relating_shape_aspect;
WHERE
WR1: SIZEOF(QUERY (sar <* bag_to_set(USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT'))| NOT ('INTEGRATED_CNC_SCHEMA.DATUM'
IN TYPEOF(sar\shape_aspect_relationship.related_shape_aspect
)))) = 0;
WR2: SELF\shape_aspect.product_definitional = TRUE;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY datum_reference;
precedence : INTEGER;
referenced_datum : datum;
WHERE
WR1: precedence > 0;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY datum_target
SUBTYPE OF (shape_aspect);
target_id : identifier;
INVERSE
target_basis_relationship : shape_aspect_relationship FOR
relating_shape_aspect;
WHERE
WR1: SIZEOF(QUERY (sar <* bag_to_set(USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT'))| NOT ('INTEGRATED_CNC_SCHEMA.DATUM'
IN TYPEOF(sar\shape_aspect_relationship.related_shape_aspect
)))) = 0;
WR2: SELF\shape_aspect.product_definitional = TRUE;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY definitional_representation
SUBTYPE OF (representation);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.PARAMETRIC_REPRESENTATION_CONTEXT' IN
TYPEOF(SELF\representation.context_of_items);
END_ENTITY; -- 10303-43: representation_schema
ENTITY degenerate_pcurve
SUBTYPE OF (point);
basis_surface : surface;
reference_to_curve : definitional_representation;
WHERE
WR1: SIZEOF(reference_to_curve\representation.items) = 1;
WR2: 'INTEGRATED_CNC_SCHEMA.CURVE' IN TYPEOF(reference_to_curve\
representation.items[1]);
WR3: reference_to_curve\representation.items[1]\
geometric_representation_item.dim = 2;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY degenerate_toroidal_surface
SUBTYPE OF (toroidal_surface);
select_outer : BOOLEAN;
WHERE
WR1: major_radius < minor_radius;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY derived_shape_aspect
SUPERTYPE OF (ONEOF(apex, centre_of_symmetry, geometric_alignment,
geometric_intersection, parallel_offset, perpendicular_to, extension,
tangent))
SUBTYPE OF (shape_aspect);
INVERSE
deriving_relationships : SET [1:?] OF shape_aspect_relationship FOR
relating_shape_aspect;
WHERE
WR1: SIZEOF(QUERY (dr <* SELF\derived_shape_aspect.
deriving_relationships| NOT ('INTEGRATED_CNC_SCHEMA.' +
'SHAPE_ASPECT_DERIVING_RELATIONSHIP' IN TYPEOF(dr)))) = 0;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY derived_unit;
elements : SET [1:?] OF derived_unit_element;
DERIVE
name : label := get_name_value(SELF);
WHERE
WR1: (SIZEOF(elements) > 1) OR (SIZEOF(elements) = 1) AND (elements[1].
exponent <> 1.0);
WR2: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: measure_schema
ENTITY derived_unit_element;
unit : named_unit;
exponent : REAL;
END_ENTITY; -- 10303-41: measure_schema
ENTITY description_attribute;
attribute_value : text;
described_item : description_attribute_select;
END_ENTITY; -- 10303-41: basic_attribute_schema
ENTITY descriptive_representation_item
SUBTYPE OF (representation_item);
description : text;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY dimension_related_tolerance_zone_element;
related_dimension : dimensional_location;
related_element : tolerance_zone_definition;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY dimensional_characteristic_representation;
dimension : dimensional_characteristic;
representation : shape_dimension_representation;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY dimensional_exponents;
length_exponent : REAL;
mass_exponent : REAL;
time_exponent : REAL;
electric_current_exponent : REAL;
thermodynamic_temperature_exponent : REAL;
amount_of_substance_exponent : REAL;
luminous_intensity_exponent : REAL;
END_ENTITY; -- 10303-41: measure_schema
ENTITY dimensional_location
SUPERTYPE OF (ONEOF(angular_location, dimensional_location_with_path))
SUBTYPE OF (shape_aspect_relationship);
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY dimensional_location_with_path
SUBTYPE OF (dimensional_location);
path : shape_aspect;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY dimensional_size
SUPERTYPE OF (ONEOF(angular_size, dimensional_size_with_path));
applies_to : shape_aspect;
name : label;
WHERE
WR1: applies_to.product_definitional = TRUE;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY dimensional_size_with_path
SUBTYPE OF (dimensional_size);
path : shape_aspect;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY directed_dimensional_location
SUBTYPE OF (dimensional_location);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY direction
SUBTYPE OF (geometric_representation_item);
direction_ratios : LIST [2:3] OF REAL;
WHERE
WR1: SIZEOF(QUERY (tmp <* direction_ratios| (tmp <> 0.0))) > 0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY direction_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(SELF.items) = 1;
WR2: SIZEOF(QUERY (it <* SELF.items| NOT (
'INTEGRATED_CNC_SCHEMA.DIRECTION' IN TYPEOF(it)))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY document;
id : identifier;
name : label;
description : OPTIONAL text;
kind : document_type;
INVERSE
representation_types : SET [0:?] OF document_representation_type FOR
represented_document;
END_ENTITY; -- 10303-41: document_schema
ENTITY document_file
SUBTYPE OF (characterized_object, document);
WHERE
WR1: (SIZEOF(QUERY (adr <* QUERY (dr <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.DOCUMENT_REFERENCE.ASSIGNED_DOCUMENT')
| ('INTEGRATED_CNC_SCHEMA.APPLIED_DOCUMENT_REFERENCE' IN
TYPEOF(dr)))| (
'INTEGRATED_CNC_SCHEMA.EXTERNALLY_DEFINED_FEATURE_DEFINITION'
IN TYPEOF(adr.items)))) = 1) OR (SIZEOF(QUERY (duc <* USEDIN
(SELF,
'INTEGRATED_CNC_SCHEMA.DOCUMENT_USAGE_CONSTRAINT.SOURCE')|
NOT (SIZEOF(QUERY (aduc <* QUERY (duca <* USEDIN(duc,
'INTEGRATED_CNC_SCHEMA.DOCUMENT_USAGE_CONSTRAINT_ASSIGNMENT.'
+ 'ASSIGNED_DOCUMENT_USAGE')| ('INTEGRATED_CNC_SCHEMA.' +
'APPLIED_DOCUMENT_USAGE_CONSTRAINT_ASSIGNMENT' IN TYPEOF(duca
)))| (
'INTEGRATED_CNC_SCHEMA.EXTERNALLY_DEFINED_FEATURE_DEFINITION'
IN TYPEOF(aduc.items)))) = 1))) = 0);
WR2: SIZEOF(QUERY (drt <* USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'DOCUMENT_REPRESENTATION_TYPE.REPRESENTED_DOCUMENT')| (drt.
name = 'physical'))) = 1;
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY document_reference
ABSTRACT SUPERTYPE;
assigned_document : document;
source : label;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY document_representation_type;
name : label;
represented_document : document;
END_ENTITY; -- 10303-41: document_schema
ENTITY document_type;
product_data_type : label;
END_ENTITY; -- 10303-41: document_schema
ENTITY document_usage_constraint;
source : document;
subject_element : label;
subject_element_value : text;
END_ENTITY; -- 10303-41: document_schema
ENTITY document_usage_constraint_assignment
ABSTRACT SUPERTYPE;
assigned_document_usage : document_usage_constraint;
role : document_usage_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY document_usage_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY document_with_class
SUBTYPE OF (document);
class : identifier;
END_ENTITY; -- 10303-41: document_schema
ENTITY drilling_operation
SUBTYPE OF (drilling_type_operation);
WHERE
WR1: (SELF.description IN ['drilling','counter sinking',
'center drilling', 'multistep drilling']);
WR2: NOT (SELF.description = 'multistep drilling') OR
((verify_required_action_property (SELF, 'retract distance')) AND
(verify_length_measure_action_property (SELF, 'retract distance')) AND
(verify_required_action_property (SELF, 'first depth')) AND
(verify_length_measure_action_property (SELF, 'first depth')) AND
(verify_required_action_property (SELF, 'depth of step')) AND
(verify_length_measure_action_property (SELF, 'depth of step')) AND
(verify_optional_action_property (SELF, 'dwell time step')) AND
(verify_rep_type_for_action_property (SELF, 'dwell time step',
['INTEGRATED_CNC_SCHEMA.MACHINING_DWELL_TIME_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property (SELF, 'dwell time step',
['dwell time']))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY drilling_type_operation
SUBTYPE OF (machining_operation);
WHERE
WR1: (verify_optional_action_property (SELF, 'overcut length')) AND
(verify_length_measure_action_property (SELF, 'overcut length'));
WR2: (verify_optional_action_property (SELF, 'cutting depth')) AND
(verify_length_measure_action_property (SELF, 'cutting depth'));
WR3: (verify_optional_action_property (SELF, 'previous diameter')) AND
(verify_length_measure_action_property (SELF, 'previous diameter'));
WR4: (verify_optional_action_property (SELF, 'dwell time bottom')) AND
(verify_rep_type_for_action_property (SELF, 'dwell time bottom',
['INTEGRATED_CNC_SCHEMA.MACHINING_DWELL_TIME_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property (SELF, 'dwell time bottom',
['dwell time']));
WR5: (verify_optional_action_property (SELF, 'feedrate on retract')) AND
(verify_rep_type_for_action_property (SELF, 'feedrate on retract',
['INTEGRATED_CNC_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property (SELF, 'feedrate on retract',
['relative speed']));
WR6: ((verify_optional_relating_amr_with_name (SELF, 'machining',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
(verify_related_type_for_amr_with_name (SELF, 'machining',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.DRILLING_TYPE_STRATEGY']))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY drilling_type_strategy
SUBTYPE OF (machining_strategy);
WHERE
WR1: (verify_optional_action_property (SELF, 'reduced cut at start')) AND
(verify_rep_type_for_action_property (SELF, 'reduced cut at start',
['INTEGRATED_CNC_SCHEMA.MACHINING_SPINDLE_SPEED_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property (SELF, 'reduced cut at start',
['relative speed']));
WR2: (verify_optional_action_property (SELF, 'reduced feedrate at start')) AND
(verify_rep_type_for_action_property (SELF, 'reduced feedrate at start',
['INTEGRATED_CNC_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property (SELF, 'reduced feedrate at start',
['relative speed']));
WR3: (verify_optional_action_property (SELF, 'depth of start')) AND
(verify_length_measure_action_property (SELF, 'depth of start'));
WR4: (verify_optional_action_property (SELF, 'reduced cut at end')) AND
(verify_rep_type_for_action_property (SELF, 'reduced cut at end',
['INTEGRATED_CNC_SCHEMA.MACHINING_SPINDLE_SPEED_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property (SELF, 'reduced cut at end',
['relative speed']));
WR5: (verify_optional_action_property (SELF, 'reduced feedrate at end')) AND
(verify_rep_type_for_action_property (SELF, 'reduced feedrate at end',
['INTEGRATED_CNC_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property (SELF, 'reduced feedrate at end',
['relative speed']));
WR6: (verify_optional_action_property (SELF, 'depth of end')) AND
(verify_length_measure_action_property (SELF, 'depth of end'));
WR7: (verify_required_action_property (SELF, 'depth of start')) OR
((0 = SIZEOF (get_action_property (SELF, 'reduced cut at start'))) AND
(0 = SIZEOF (get_action_property (SELF, 'reduced feedrate at start'))));
WR8: (verify_required_action_property (SELF, 'depth of end')) OR
((0 = SIZEOF (get_action_property (SELF, 'reduced cut at end'))) AND
(0 = SIZEOF (get_action_property (SELF, 'reduced feedrate at end'))));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY edge
SUPERTYPE OF (ONEOF(edge_curve, oriented_edge))
SUBTYPE OF (topological_representation_item);
edge_start : vertex;
edge_end : vertex;
END_ENTITY; -- 10303-42: topology_schema
ENTITY edge_curve
SUBTYPE OF (edge, geometric_representation_item);
edge_geometry : curve;
same_sense : BOOLEAN;
END_ENTITY; -- 10303-42: topology_schema
ENTITY edge_loop
SUBTYPE OF (loop, path);
DERIVE
ne : INTEGER := SIZEOF(SELF\path.edge_list);
WHERE
WR1: SELF\path.edge_list[1].edge_start :=: SELF\path.edge_list[ne].
edge_end;
END_ENTITY; -- 10303-42: topology_schema
ENTITY edge_round
SUBTYPE OF (transition_feature);
WHERE
WR1: NOT (SELF\shape_aspect.description = 'constant radius') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR2: NOT (SELF\shape_aspect.description = 'constant radius') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 1) AND (SIZEOF(impl_rep.
used_representation.items) <= 3))) = 0))) = 0);
WR3: NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
WR4: NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'first offset'))) <= 1))) = 0))) = 0
);
WR5: NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'second offset'))) <= 1))) = 0))) =
0);
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)) AND (pdr.used_representation.name =
'edge round face'))) <= 1))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)) AND (pdr.used_representation.name =
'first face shape'))) <= 1))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)) AND (pdr.used_representation.name =
'second face shape'))) <= 1))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY elementary_surface
SUPERTYPE OF (ONEOF(plane, cylindrical_surface, conical_surface,
spherical_surface, toroidal_surface))
SUBTYPE OF (surface);
position : axis2_placement_3d;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY ellipse
SUBTYPE OF (conic);
semi_axis_1 : positive_length_measure;
semi_axis_2 : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY environment;
syntactic_representation : generic_variable;
semantics : variable_semantics;
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY evaluated_degenerate_pcurve
SUBTYPE OF (degenerate_pcurve);
equivalent_point : cartesian_point;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY expanded_uncertainty
SUBTYPE OF (standard_uncertainty);
coverage_factor : REAL;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY expression
ABSTRACT SUPERTYPE OF (ONEOF(numeric_expression, boolean_expression))
SUBTYPE OF (generic_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY expression_representation_item
SUBTYPE OF (representation_item, generic_expression);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY extension
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY external_source;
source_id : source_item;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: external_reference_schema
ENTITY externally_defined_dimension_definition
SUBTYPE OF (externally_defined_item, dimensional_size);
WHERE
WR1: (SELF\externally_defined_item.item_id = 'external size dimension')
AND (SELF\externally_defined_item.source.source_id =
'external size dimension specification');
WR2: 1 >= SIZEOF(QUERY (adr <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.APPLIED_DOCUMENT_REFERENCE.ITEMS')| (
adr.assigned_document.description =
'external size dimension specification')));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY externally_defined_feature_definition
SUBTYPE OF (feature_definition, externally_defined_item);
WHERE
WR1: ((((SELF\characterized_object.description = 'thread') AND (SELF\
externally_defined_item.item_id = 'external thread')) AND (
SELF\externally_defined_item.source.source_id =
'external feature specification') OR ((SELF\
characterized_object.description = 'gear') AND (SELF\
externally_defined_item.item_id = 'external gear')) AND (SELF
\externally_defined_item.source.source_id =
'external feature specification')) OR ((SELF\
characterized_object.description = 'marking') AND (SELF\
externally_defined_item.item_id = 'external marking')) AND (
SELF\externally_defined_item.source.source_id =
'external feature specification')) OR ((SELF\
characterized_object.description = 'knurl') AND (SELF\
externally_defined_item.item_id = 'external knurl')) AND (
SELF\externally_defined_item.source.source_id =
'external feature specification');
WR2: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(
QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND ((5 <= SIZEOF(pdr.
used_representation.items)) AND (SIZEOF(pdr.
used_representation.items) <= 10)))) = 1))) = 1);
WR3: NOT (SELF\characterized_object.description = 'marking') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND (SIZEOF(pdr.used_representation.
items) = 2))) = 1))) = 1);
WR4: NOT (SELF\characterized_object.description = 'knurl') OR (SIZEOF(
QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND (SIZEOF(pdr.used_representation.
items) = 1))) = 1))) = 1);
WR5: NOT (SELF\characterized_object.description IN [ 'knurl', 'thread'
]) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'partial area occurrence') AND (SIZEOF(QUERY (
sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'applied area usage') AND (
'INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF
(sar)))| ('INTEGRATED_CNC_SCHEMA.APPLIED_AREA' IN TYPEOF(sdr.
relating_shape_aspect)))) = 1))) <= 1))) = 0);
WR6: NOT (SELF\characterized_object.description = 'marking') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'marking text'))) = 1))) = 0))) =
0);
WR7: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(
QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'removal direction')) AND ((it.
description = 'internal') OR (it.description = 'external'))))
= 1))) = 0))) = 0);
WR8: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(
QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'qualifier'))) <= 1))) = 0))) = 0)
;
WR9: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF(
QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'hand'))) = 1))) = 0))) = 0);
WR10: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'fit class'))) = 1))) = 0))) = 0);
WR11: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'form'))) = 1))) = 0))) = 0);
WR12: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'major diameter'))) <= 1))) = 0))) =
0);
WR13: NOT (SELF\characterized_object.description = 'thread') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.RATIO_MEASURE_WITH_UNIT' ] * TYPEOF(it
)) = 2) AND (it.name = 'number of threads'))) = 1))) = 0))) =
0);
WR14: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'fit class 2'))) <= 1))) = 0))) =
0;
WR15: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'nominal size'))) <= 1))) = 0))) = 0
;
WR16: NOT (SELF\characterized_object.description IN [ 'knurl', 'gear',
'thread' ]) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF
, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'applied shape')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) <= 1))) = 0);
WR17: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ((
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND (10 <= SIZEOF(pdr.
used_representation.items))) AND (SIZEOF(pdr.
used_representation.items) >= 11))) = 1))) = 1);
WR18: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.RATIO_MEASURE_WITH_UNIT' ] * TYPEOF(it
)) = 2) AND (it.name = 'number of teeth'))) = 1))) = 0))) = 0
);
WR19: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'reference presure angle')))
= 1))) = 0))) = 0);
WR20: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'rake shift factor'))) = 1))) = 0)))
= 0);
WR21: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'nominal tool depth'))) = 1))) = 0))
) = 0);
WR22: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'face width'))) = 1))) = 0))) = 0);
WR23: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'tip diameter'))) = 1))) = 0))) = 0)
;
WR24: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'module or diametral pitch')) AND
((it.description = 'module') OR (it.description =
'diameter pitch')))) = 1))) = 0))) = 0);
WR25: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'normal attribute'))) = 1))) = 0)))
= 0);
WR26: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'internal or external gear')) AND
((it.description = 'internal') OR (it.description =
'external')))) = 1))) = 0))) = 0);
WR27: NOT (SELF\characterized_object.description IN [ 'gear' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'root fillet radius'))) <= 1)
)) = 0))) = 0);
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY externally_defined_item;
item_id : source_item;
source : external_source;
END_ENTITY; -- 10303-41: external_reference_schema
ENTITY face
SUPERTYPE OF (ONEOF(face_surface, oriented_face))
SUBTYPE OF (topological_representation_item);
bounds : SET [1:?] OF face_bound;
WHERE
WR1: NOT mixed_loop_type_set(list_to_set(list_face_loops(SELF)));
WR2: SIZEOF(QUERY (temp <* bounds| (
'INTEGRATED_CNC_SCHEMA.FACE_OUTER_BOUND' IN TYPEOF(temp))))
<= 1;
END_ENTITY; -- 10303-42: topology_schema
ENTITY face_bound
SUBTYPE OF (topological_representation_item);
bound : loop;
orientation : BOOLEAN;
END_ENTITY; -- 10303-42: topology_schema
ENTITY face_outer_bound
SUBTYPE OF (face_bound);
END_ENTITY; -- 10303-42: topology_schema
ENTITY face_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(SELF.items) >= 1;
WR2: SIZEOF(QUERY (it <* SELF.items| NOT ((
'INTEGRATED_CNC_SCHEMA.FACE_SURFACE' IN TYPEOF(it)) OR (
'INTEGRATED_CNC_SCHEMA.ORIENTED_FACE' IN TYPEOF(it))))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY face_surface
SUBTYPE OF (face, geometric_representation_item);
face_geometry : surface;
same_sense : BOOLEAN;
-- WHERE
-- WR1: NOT ('INTEGRATED_CNC_SCHEMA.ORIENTED_SURFACE' IN TYPEOF(
-- face_geometry));
END_ENTITY; -- 10303-42: topology_schema
ENTITY facing_turning_operation
SUBTYPE OF (turning_type_operation);
WHERE
WR1: (SELF.description IN ['roughing','finishing']);
WR2: (verify_optional_action_property (SELF, 'allowance')) AND
(verify_length_measure_action_property (SELF, 'allowance'));
WR3: NOT (SELF.description = 'roughing') OR
(verify_required_action_property (SELF, 'allowance'));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY feature_component_definition
SUBTYPE OF (characterized_object);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')) = 1))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY feature_component_relationship
SUPERTYPE OF (ONEOF(pattern_omit_membership, pattern_offset_membership))
SUBTYPE OF (shape_aspect_relationship);
WHERE
WR1: ((SIZEOF([ 'INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT',
'INTEGRATED_CNC_SCHEMA.REPLICATE_FEATURE',
'INTEGRATED_CNC_SCHEMA.TRANSITION_FEATURE',
'INTEGRATED_CNC_SCHEMA.MODIFIED_PATTERN' ] * TYPEOF(SELF.
relating_shape_aspect)) = 1) OR (
'INTEGRATED_CNC_SCHEMA.FEATURE_DEFINITION' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition))) OR (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN
TYPEOF(SELF.relating_shape_aspect.of_shape.definition));
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY feature_definition
SUBTYPE OF (characterized_object);
WHERE
WR1: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) <= 1;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
WR3: SIZEOF([ 'INTEGRATED_CNC_SCHEMA.BOSS',
'INTEGRATED_CNC_SCHEMA.TURNED_KNURL',
'INTEGRATED_CNC_SCHEMA.THREAD', 'INTEGRATED_CNC_SCHEMA.GEAR',
'INTEGRATED_CNC_SCHEMA.MARKING',
'INTEGRATED_CNC_SCHEMA.RIB_TOP',
'INTEGRATED_CNC_SCHEMA.ROUND_HOLE',
'INTEGRATED_CNC_SCHEMA.OUTSIDE_PROFILE',
'INTEGRATED_CNC_SCHEMA.POCKET',
'INTEGRATED_CNC_SCHEMA.REMOVAL_VOLUME',
'INTEGRATED_CNC_SCHEMA.REVOLVED_PROFILE',
'INTEGRATED_CNC_SCHEMA.OUTER_ROUND',
'INTEGRATED_CNC_SCHEMA.FLAT_FACE',
'INTEGRATED_CNC_SCHEMA.PROTRUSION',
'INTEGRATED_CNC_SCHEMA.ROUNDED_END',
'INTEGRATED_CNC_SCHEMA.SLOT',
'INTEGRATED_CNC_SCHEMA.SPHERICAL_CAP',
'INTEGRATED_CNC_SCHEMA.STEP',
'INTEGRATED_CNC_SCHEMA.COMPOUND_FEATURE',
'INTEGRATED_CNC_SCHEMA.REPLICATE_FEATURE',
'INTEGRATED_CNC_SCHEMA.EXTERNALLY_DEFINED_FEATURE_DEFINITION'
] * TYPEOF(SELF)) = 1;
WR4: NOT (SIZEOF([ 'INTEGRATED_CNC_SCHEMA.ROUND_HOLE',
'INTEGRATED_CNC_SCHEMA.BOSS',
'INTEGRATED_CNC_SCHEMA.OUTSIDE_PROFILE',
'INTEGRATED_CNC_SCHEMA.REMOVAL_VOLUME',
'INTEGRATED_CNC_SCHEMA.FLAT_FACE',
'INTEGRATED_CNC_SCHEMA.POCKET',
'INTEGRATED_CNC_SCHEMA.PROTRUSION',
'INTEGRATED_CNC_SCHEMA.RIB_TOP',
'INTEGRATED_CNC_SCHEMA.ROUNDED_END',
'INTEGRATED_CNC_SCHEMA.SLOT', 'INTEGRATED_CNC_SCHEMA.STEP' ]
* TYPEOF(SELF)) = 1) OR (SIZEOF(QUERY (pdr <*
get_property_definition_representations(SELF)| (
'INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF
(pdr.used_representation)) AND (pdr.used_representation.name
= 'maximum feature limit'))) >= 0);
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY feature_pattern
SUBTYPE OF (replicate_feature);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.
used_representation.items| NOT (
'INTEGRATED_CNC_SCHEMA.PLACEMENT' IN TYPEOF(srwp_i)))) > 0)))
> 0))) = 0;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'base feature placement'))) >
1))) = 0))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY fillet
SUBTYPE OF (transition_feature);
WHERE
WR1: NOT (SELF\shape_aspect.description = 'constant radius') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0);
WR2: NOT (SELF\shape_aspect.description = 'constant radius') OR (SIZEOF
(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 1) AND (SIZEOF(impl_rep.
used_representation.items) <= 3))) = 0))) = 0);
WR3: NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
WR4: NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'first offset'))) <= 1))) = 0))) = 0
);
WR5: NOT (SELF.description = 'constant radius') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'second offset'))) <= 1))) = 0))) =
0);
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.' + 'DEFINITION')|
NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)) AND (pdr.used_representation.name =
'fillet face'))) = 1))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.' + 'DEFINITION')|
NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)) AND (pdr.used_representation.name =
'first face shape'))) = 1))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.' + 'DEFINITION')|
NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)) AND (pdr.used_representation.name =
'second face shape'))) = 1))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY flat_face
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'removal direction'))) = 1))) = 0;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'course of travel occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'path feature component usage') AND (
'INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF
(sar)))| (('INTEGRATED_CNC_SCHEMA.PATH_FEATURE_COMPONENT' IN
TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'linear')) AND (sdr.name
= 'course of travel'))) = 1))) = 1))) = 0;
WR3: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'removal boundary occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.LINEAR_PROFILE' IN
TYPEOF(sdr.relating_shape_aspect)) AND (sdr.name =
'removal boundary'))) = 1))) = 1))) = 0;
WR4: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'enclosed boundary occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.CIRCULAR_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.NGON_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.CLOSED_PATH_PROFILE' ] * TYPEOF(sdr.
relating_shape_aspect)) = 1) AND (sdr.relating_shape_aspect.
description = 'boundary'))) = 1))) <= 1))) = 0;
WR5: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| ('INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'maximum feature limit'))) >= 0;
WR6: SIZEOF(QUERY (pds <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(
pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| ((
'INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)
) AND (csa.name = 'uncut area')) AND (SIZEOF(QUERY (sar <*
csa.component_relationships| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)) AND (SIZEOF([ 'INTEGRATED_CNC_SCHEMA.BOSS',
'INTEGRATED_CNC_SCHEMA.PROTRUSION' ] * TYPEOF(sar.
related_shape_aspect)) = 1))) = 1))) <= 1))) = 1;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'removal depth'))) <= 1))) = 0))) =
0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY flatness_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
WR1: NOT ('INTEGRATED_CNC_SCHEMA.' +
'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY founded_item;
END_ENTITY; -- 10303-43: representation_schema
ENTITY freeform_milling_operation
SUBTYPE OF (milling_type_operation);
WHERE
WR1: ((verify_optional_relating_amr_with_name (SELF, 'machining',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
(verify_related_type_for_amr_with_name (SELF, 'machining',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.FREEFORM_MILLING_STRATEGY']))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY freeform_milling_strategy
SUBTYPE OF (milling_type_strategy);
WHERE
WR1: NOT (SELF.description IN ['leading line', 'plane cutter contact',
'plane cutter location', 'uv']) OR
((verify_required_action_property (SELF, 'pathmode')) AND
(verify_enumeration_action_property (SELF, 'pathmode',
['forward', 'zigzag'])) AND
(verify_required_action_property (SELF, 'cutmode')) AND
(verify_enumeration_action_property (SELF, 'cutmode',
['climb', 'conventional'])) AND
(verify_required_action_property (SELF, 'milling tolerances')) AND
(verify_rep_type_for_action_property (SELF, 'milling tolerances',
['INTEGRATED_CNC_SCHEMA.FREEFORM_MILLING_TOLERANCE_REPRESENTATION'])) AND
(verify_optional_action_property (SELF, 'stepover length')) AND
(verify_length_measure_action_property (SELF, 'stepover length')) );
WR2: NOT (SELF.description = 'leading line') OR
((verify_required_action_property (SELF, 'leading line')) AND
(verify_rep_item_for_action_property (SELF, 'leading line',
['INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE'])) );
WR3: NOT (SELF.description IN ['plane cutter contact', 'plane cutter location']) OR
((verify_required_action_property (SELF, 'plane normal')) AND
(verify_rep_item_for_action_property (SELF, 'plane normal',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) );
WR4: NOT (SELF.description = 'uv') OR
((verify_required_action_property (SELF, 'forward direction')) AND
(verify_rep_item_for_action_property (SELF, 'forward direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_required_action_property (SELF, 'sideward direction')) AND
(verify_rep_item_for_action_property (SELF, 'sideward direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) );
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY freeform_milling_tolerance_representation
SUBTYPE OF (representation);
WHERE
WR1: (verify_required_rep_item (SELF, 'chordal tolerance')) AND
(verify_length_measure_rep_item (SELF, 'chordal tolerance'));
WR2: (verify_required_rep_item (SELF, 'scallop height')) AND
(verify_length_measure_rep_item (SELF, 'scallop height'));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY functionally_defined_transformation;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-43: representation_schema
ENTITY gear
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| ((
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (10 <= SIZEOF(pdr.
used_representation.items))) AND (SIZEOF(pdr.
used_representation.items) >= 13))) = 1))) = 1;
WR2: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.RATIO_MEASURE_WITH_UNIT' ] * TYPEOF(it
)) = 2) AND (it.name = 'number of teeth'))) = 1))) = 0))) = 0
);
WR3: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'reference pressure angle')))
= 1))) = 0))) = 0);
WR4: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'rake shift factor'))) = 1))) = 0)))
= 0);
WR5: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'nominal tooth depth'))) = 1))) = 0)
)) = 0);
WR6: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'face width'))) = 1))) = 0))) = 0);
WR7: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'tip diameter'))) = 1))) = 0))) = 0)
;
WR8: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'module or diametral pitch')) AND
((it.description = 'module') OR (it.description =
'diametral pitch')))) = 1))) = 0))) = 0);
WR9: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'internal or external gear')) AND
((it.description = 'internal') OR (it.description =
'external')))) = 1))) = 0))) = 0);
WR10: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'normal attribute'))) = 1))) = 0)))
= 0);
WR11: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear', 'spur gear',
'helical gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'root fillet radius'))) <= 1))) = 0)
)) = 0);
WR12: NOT (SELF\characterized_object.description IN [ 'helix gear',
'helical bevel gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'reference helix angle'))) =
1))) = 0))) = 0);
WR13: NOT (SELF\characterized_object.description IN [ 'helix gear',
'helical bevel gear' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'gear tooth')) AND ((it.
description = 'left hand tooth') OR (it.description =
'right hand tooth')))) = 1))) = 0))) = 0);
WR14: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear' ]) OR (SIZEOF(
QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'tip angle'))) = 1))) = 0)))
= 0);
WR15: NOT (SELF\characterized_object.description IN [
'straight bevel gear', 'helical bevel gear' ]) OR (SIZEOF(
QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
)| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'root angle'))) = 1))) = 0)))
= 0);
WR16: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'
)| (sar.description = 'applied shape') AND (
'INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF
(sar)))| ('INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT' IN TYPEOF(sdr.
relating_shape_aspect)))) = 1))) = 1))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY generic_expression
ABSTRACT SUPERTYPE OF (ONEOF(simple_generic_expression,
unary_generic_expression, binary_generic_expression,
multiple_arity_generic_expression));
WHERE
WR1: is_acyclic(SELF);
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY generic_literal
ABSTRACT SUPERTYPE
SUBTYPE OF (simple_generic_expression);
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY generic_variable
ABSTRACT SUPERTYPE
SUBTYPE OF (simple_generic_expression);
INVERSE
interpretation : environment FOR syntactic_representation;
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY geometric_alignment
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) > 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY geometric_intersection
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) > 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY geometric_representation_context
SUBTYPE OF (representation_context);
coordinate_space_dimension : dimension_count;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY geometric_representation_item
SUPERTYPE OF (ONEOF(point, direction, vector, placement,
cartesian_transformation_operator, curve, surface, edge_curve,
face_surface, vertex_point, solid_model, right_circular_cylinder,
block, shell_based_surface_model, geometric_set))
SUBTYPE OF (representation_item);
DERIVE
dim : dimension_count := dimension_of(SELF);
WHERE
WR1: SIZEOF(QUERY (using_rep <* using_representations(SELF)| NOT (
'INTEGRATED_CNC_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT' IN
TYPEOF(using_rep.context_of_items)))) = 0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY geometric_set
SUBTYPE OF (geometric_representation_item);
elements : SET [1:?] OF geometric_set_select;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY geometric_tolerance;
name : label;
description : text;
magnitude : measure_with_unit;
toleranced_shape_aspect : shape_aspect;
WHERE
WR1: ('NUMBER' IN TYPEOF(magnitude\measure_with_unit.value_component))
AND (magnitude\measure_with_unit.value_component >= 0.0);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY geometric_tolerance_relationship;
name : label;
description : text;
relating_geometric_tolerance : geometric_tolerance;
related_geometric_tolerance : geometric_tolerance;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY geometric_tolerance_with_datum_reference
SUBTYPE OF (geometric_tolerance);
datum_system : SET [1:?] OF datum_reference;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY geometric_tolerance_with_defined_unit
SUBTYPE OF (geometric_tolerance);
unit_size : measure_with_unit;
WHERE
WR1: ('NUMBER' IN TYPEOF(unit_size\measure_with_unit.value_component))
AND (unit_size\measure_with_unit.value_component > 0.0);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY geometrically_bounded_surface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([
'INTEGRATED_CNC_SCHEMA.GEOMETRIC_SET',
'INTEGRATED_CNC_SCHEMA.MAPPED_ITEM',
'INTEGRATED_CNC_SCHEMA.AXIS2_PLACEMENT_3D' ] * TYPEOF(it)) =
1))) = 0;
WR2: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.GEOMETRIC_SET',
'INTEGRATED_CNC_SCHEMA.MAPPED_ITEM' ] * TYPEOF(it)) = 1))) >
0;
WR3: SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT ((
'INTEGRATED_CNC_SCHEMA.' +
'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION' IN
TYPEOF(mi\mapped_item.mapping_source.mapped_representation))
AND (SIZEOF(QUERY (mr_it <* mi\mapped_item.mapping_source.
mapped_representation.items| (
'INTEGRATED_CNC_SCHEMA.GEOMETRIC_SET' IN TYPEOF(mr_it)))) > 0
)))) = 0;
WR4: SIZEOF(QUERY (gs <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.GEOMETRIC_SET' IN TYPEOF(it)))| NOT (
SIZEOF(QUERY (pnt <* QUERY (gsel <* gs\geometric_set.elements
| ('INTEGRATED_CNC_SCHEMA.POINT' IN TYPEOF(gsel)))| NOT
gbsf_check_point(pnt))) = 0))) = 0;
WR5: SIZEOF(QUERY (gs <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.GEOMETRIC_SET' IN TYPEOF(it)))| NOT (
SIZEOF(QUERY (cv <* QUERY (gsel <* gs\geometric_set.elements|
('INTEGRATED_CNC_SCHEMA.CURVE' IN TYPEOF(gsel)))| NOT
gbsf_check_curve(cv))) = 0))) = 0;
WR6: SIZEOF(QUERY (gs <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.GEOMETRIC_SET' IN TYPEOF(it)))| NOT (
SIZEOF(QUERY (sf <* QUERY (gsel <* gs\geometric_set.elements|
('INTEGRATED_CNC_SCHEMA.SURFACE' IN TYPEOF(gsel)))| NOT
gbsf_check_surface(sf))) = 0))) = 0;
WR7: SIZEOF(QUERY (gs <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.GEOMETRIC_SET' IN TYPEOF(it)))| (
SIZEOF(QUERY (gsel <* gs\geometric_set.elements| (
'INTEGRATED_CNC_SCHEMA.SURFACE' IN TYPEOF(gsel)))) > 0))) > 0
;
END_ENTITY; -- 10303-507: aic_geometrically_bounded_surface
ENTITY global_uncertainty_assigned_context
SUBTYPE OF (representation_context);
uncertainty : SET [1:?] OF uncertainty_measure_with_unit;
END_ENTITY; -- 10303-43: representation_schema
ENTITY global_unit_assigned_context
SUBTYPE OF (representation_context);
units : SET [1:?] OF unit;
END_ENTITY; -- 10303-41: measure_schema
ENTITY grooving_turning_operation
SUBTYPE OF (turning_type_operation);
WHERE
WR1: (SELF.description IN ['roughing', 'finishing', 'cutting in']);
WR2: (verify_optional_action_property (SELF, 'dwell')) AND
(verify_rep_type_for_action_property (SELF, 'dwell',
['INTEGRATED_CNC_SCHEMA.MACHINING_DWELL_TIME_REPRESENTATION']));
WR3: (verify_optional_action_property (SELF, 'allowance')) AND
(verify_length_measure_action_property (SELF, 'allowance'));
-- allowance propery required for roughing
WR4: NOT (SELF.description = 'roughing') OR
(verify_required_action_property (SELF, 'allowance'));
-- allowance propery forbidden for cutting in
WR5: NOT (SELF.description = 'cutting in') OR
(0 = SIZEOF (get_action_property (SELF, 'allowance')));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY hole_bottom
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SELF.description IN [ 'through', 'flat', 'flat with radius',
'flat with taper', 'spherical', 'conical' ];
WR3: NOT (SELF.description = 'through') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) = 0))) = 0)
;
WR4: NOT (SELF.description IN [ 'flat with radius', 'flat with taper',
'spherical', 'conical' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF
, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')|
NOT (SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.'
+ 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0);
WR5: NOT (SELF.description = 'flat') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 0))) = 0))) = 0);
WR6: NOT (SELF.description IN [ 'flat with radius', 'spherical' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0);
WR7: NOT (SELF.description = 'flat with taper') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 2))) = 0))) = 0);
WR8: NOT (SELF.description = 'conical') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 1) AND (SIZEOF(impl_rep.
used_representation.items) <= 2))) = 0))) = 0);
WR9: (SELF.description = 'through') OR (SIZEOF(QUERY (fcr <* QUERY (sar
<* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (sar.description =
'hole bottom usage') AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| (fcr.name IN [ 'hole depth start',
'hole depth end' ]))) >= 1);
WR10: NOT (SELF.description = 'flat with radius') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'corner radius'))) = 1))) = 0))) = 0
);
WR11: NOT (SELF.description = 'spherical') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
WR12: NOT (SELF.description = 'conical') OR (SIZEOF(QUERY (pd <* USEDIN
(SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'tip radius'))) <= 1))) = 0))) = 0);
WR13: NOT (SELF.description = 'conical') OR (SIZEOF(QUERY (pd <* USEDIN
(SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'tip angle'))) = 1))) = 0)))
= 0);
WR14: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (sar.description =
'hole bottom usage') AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| ((fcr.related_shape_aspect.description =
'bottom condition occurrence') AND (
'INTEGRATED_CNC_SCHEMA.ROUND_HOLE' IN TYPEOF(fcr.
related_shape_aspect.of_shape.definition))) AND (
'INTEGRATED_CNC_SCHEMA.HOLE_BOTTOM' IN TYPEOF(fcr.
relating_shape_aspect)))) >= 1;
WR15: NOT (SELF.description = 'flat with taper') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'final diameter'))) = 1))) = 0))) =
0);
WR16: NOT (SELF.description = 'flat with taper') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'taper diameter'))) = 1))) =
0))) = 0);
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY hyperbola
SUBTYPE OF (conic);
semi_axis : positive_length_measure;
semi_imag_axis : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY id_attribute;
attribute_value : identifier;
identified_item : id_attribute_select;
END_ENTITY; -- 10303-41: basic_attribute_schema
ENTITY identification_assignment
ABSTRACT SUPERTYPE;
assigned_id : identifier;
role : identification_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY identification_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY instanced_feature
SUBTYPE OF (feature_definition, shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION' IN TYPEOF(SELF.of_shape
.definition);
WR2: SELF.product_definitional;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY int_literal
SUBTYPE OF (literal_number);
SELF\literal_number.the_value: INTEGER;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY int_numeric_variable
SUBTYPE OF (numeric_variable);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY intersection_curve
SUBTYPE OF (surface_curve);
WHERE
WR1: SIZEOF(SELF\surface_curve.associated_geometry) = 2;
WR2: associated_surface(SELF\surface_curve.associated_geometry[1]) <>
associated_surface(SELF\surface_curve.associated_geometry[2])
;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY item_defined_transformation;
name : label;
description : OPTIONAL text;
transform_item_1 : representation_item;
transform_item_2 : representation_item;
END_ENTITY; -- 10303-43: representation_schema
ENTITY knurling_turning_operation
SUBTYPE OF (turning_type_operation);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY length_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.LENGTH_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY length_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 1.0) AND (SELF\
named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\
named_unit.dimensions.time_exponent = 0.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 0.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY limits_and_fits;
form_variance : label;
zone_variance : label;
grade : label;
source : text;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY line
SUBTYPE OF (curve);
pnt : cartesian_point;
dir : vector;
WHERE
WR1: dir.dim = pnt.dim;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY line_profile_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
WR1: NOT ('INTEGRATED_CNC_SCHEMA.' +
'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF))
OR (SIZEOF(SELF\geometric_tolerance_with_datum_reference.
datum_system) <= 3);
WR2: SIZEOF(QUERY (sar <* USEDIN(SELF\geometric_tolerance.
toleranced_shape_aspect, 'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.name
IN [ 'affected plane association',
'resulting intersection curve association' ]))) = 1;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY linear_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 2))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'profile length'))) = 1))) = 0))) =
0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY literal_number
ABSTRACT SUPERTYPE OF (ONEOF(int_literal, real_literal))
SUBTYPE OF (simple_numeric_expression, generic_literal);
the_value : NUMBER;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY local_time;
hour_component : hour_in_day;
minute_component : OPTIONAL minute_in_hour;
second_component : OPTIONAL second_in_minute;
zone : coordinated_universal_time_offset;
WHERE
WR1: valid_time(SELF);
END_ENTITY; -- 10303-41: date_time_schema
ENTITY location_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(SELF.items) = 1;
WR2: SIZEOF(QUERY (it <* SELF.items| NOT ('INTEGRATED_CNC_SCHEMA.POINT'
IN TYPEOF(it)))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY loop
SUPERTYPE OF (ONEOF(vertex_loop, edge_loop))
SUBTYPE OF (topological_representation_item);
END_ENTITY; -- 10303-42: topology_schema
ENTITY machining_adaptive_control_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_approach_retract_strategy
SUBTYPE OF (machining_strategy);
WHERE
WR1: (SELF.description IN ['along path',
'approach retract angle', 'approach retract tangent',
'plunge helix', 'plunge ramp', 'plunge toolaxis',
'plunge zigzag']);
WR2: (verify_optional_action_property (SELF, 'tool orientation')) AND
(verify_rep_item_for_action_property (SELF, 'tool orientation',
['INTEGRATED_CNC_SCHEMA.DIRECTION']));
WR3: NOT (SELF.description = 'along path') OR
((1 <= get_count_of_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_TOOLPATH_SEQUENCE_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_TOOLPATH_SEQUENCE_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_TOOLPATH']))
);
WR4: NOT (SELF.description = 'approach retract angle') OR
((verify_required_action_property (SELF, 'travel angle')) AND
(verify_angle_measure_action_property (SELF, 'travel angle')) AND
(verify_required_action_property (SELF, 'travel length')) AND
(verify_length_measure_action_property (SELF, 'travel length')));
WR5: NOT (SELF.description = 'approach retract tangent') OR
((verify_required_action_property (SELF, 'travel radius')) AND
(verify_length_measure_action_property (SELF, 'travel radius')));
WR6: NOT (SELF.description IN ['plunge helix', 'plunge ramp', 'plunge zigzag']) OR
((verify_required_action_property (SELF, 'plunge angle')) AND
(verify_angle_measure_action_property (SELF, 'plunge angle')));
WR7: NOT (SELF.description = 'plunge helix') OR
((verify_required_action_property (SELF, 'plunge radius')) AND
(verify_length_measure_action_property (SELF, 'plunge radius')));
WR8: NOT (SELF.description = 'plunge zigzag') OR
((verify_required_action_property (SELF, 'plunge width')) AND
(verify_length_measure_action_property (SELF, 'plunge width')));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_cutting_component
SUBTYPE OF (action_resource,characterized_object);
WHERE
WR1: (verify_required_resource_property (SELF, 'offset length')) AND
(verify_length_measure_resource_property (SELF, 'offset length'));
WR2: (1 >= SIZEOF (USEDIN (SELF, 'INTEGRATED_CNC_SCHEMA.' +
'MATERIAL_DESIGNATION.DEFINITIONS')));
WR3: (verify_optional_resource_property
(SELF, 'technological data')) AND
(0 = SIZEOF (QUERY (prop <* get_resource_property
(SELF, 'technological data') |
NOT (0 < SIZEOF (QUERY (prep <* USEDIN (prop,
'INTEGRATED_CNC_SCHEMA.' +
'RESOURCE_PROPERTY_REPRESENTATION.PROPERTY') |
((verify_optional_rep_item
(prep.representation, 'cutting angle')) AND
(verify_angle_measure_rep_item
(prep.representation, 'cutting angle')) AND
(verify_optional_rep_item
(prep.representation, 'free angle')) AND
(verify_angle_measure_rep_item
(prep.representation, 'free angle')) AND
(verify_optional_rep_item
(prep.representation, 'aux angle')) AND
(verify_angle_measure_rep_item
(prep.representation, 'aux angle'))
)
)))
)));
WR4: (verify_optional_resource_property (SELF, 'expected life')) AND
(verify_time_measure_resource_property (SELF, 'expected life'));
WR5: (1 >= SIZEOF (QUERY (arr <* USEDIN (SELF,
'INTEGRATED_CNC_SCHEMA.REQUIREMENT_FOR_ACTION_RESOURCE.RESOURCES') |
(arr.kind.name = 'cutting component') AND
(0 < SIZEOF (QUERY (mt <* arr.operations |
'INTEGRATED_CNC_SCHEMA.MACHINING_TECHNOLOGY' IN TYPEOF (mt))))
)));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_dwell_time_representation
SUBTYPE OF (representation);
WHERE
WR1: (SELF.name IN ['dwell time', 'dwell revolution']);
WR2: NOT (SELF.name = 'dwell time') OR
((verify_required_rep_item (SELF, 'dwell time')) AND
(verify_time_measure_rep_item (SELF, 'dwell time'))
);
WR3: NOT (SELF.name = 'dwell revolution') OR
((verify_required_rep_item (SELF, 'dwell revolution')) AND
(verify_count_measure_rep_item (SELF, 'dwell revolution'))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_feature_process
SUBTYPE OF (machining_process_executable);
WHERE
WR1: (1 = SIZEOF (QUERY (act <*
USEDIN (SELF, 'INTEGRATED_CNC_SCHEMA.ACTION.CHOSEN_METHOD') |
(act.name = 'machining')))) AND
(0 = SIZEOF (QUERY (act <*
USEDIN (SELF, 'INTEGRATED_CNC_SCHEMA.ACTION.CHOSEN_METHOD') |
(act.name = 'machining') AND NOT
('INTEGRATED_CNC_SCHEMA.PROPERTY_PROCESS' IN TYPEOF (act))
)));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_feature_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_feature_sequence_relationship
SUBTYPE OF (machining_feature_relationship, sequential_method);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_feed_speed_representation
SUBTYPE OF (representation);
WHERE
WR1: (SELF.name IN ['feed speed', 'feed per revolution',
'feed per tooth', 'relative speed']);
WR2: NOT (SELF.name = 'feed speed') OR
((verify_required_rep_item (SELF, 'feed speed')) AND
(verify_linear_speed_measure_rep_item (SELF, 'feed speed'))
);
WR3: NOT (SELF.name = 'feed per revolution') OR
((verify_required_rep_item (SELF, 'feed per revolution')) AND
(verify_length_measure_rep_item (SELF, 'feed per revolution'))
);
WR4: NOT (SELF.name = 'feed per tooth') OR
((verify_required_rep_item (SELF, 'feed per tooth')) AND
(verify_length_measure_rep_item (SELF, 'feed per tooth'))
);
WR5: NOT (SELF.name = 'relative speed') OR
((verify_required_rep_item (SELF, 'relative speed')) AND
(verify_ratio_measure_rep_item (SELF, 'relative speed'))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_final_feature_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_functions
SUBTYPE OF (action_method);
WHERE
WR1: NOT (SELF.description = 'milling') OR
((verify_required_action_property (SELF, 'coolant')) AND
(verify_enumeration_action_property (SELF, 'coolant',
['coolant on', 'coolant off'])) AND
(verify_optional_action_property
(SELF, 'coolant pressure')) AND
(verify_pressure_measure_action_property
(SELF, 'coolant pressure')) AND
(verify_optional_action_property (SELF, 'mist')) AND
(verify_enumeration_action_property (SELF, 'mist',
['mist on', 'mist off'])) AND
(verify_required_action_property
(SELF, 'through spindle coolant')) AND
(verify_enumeration_action_property
(SELF, 'through spindle coolant',
['through spindle coolant on', 'through spindle coolant off'])) AND
(verify_optional_action_property
(SELF, 'through spindle pressure')) AND
(verify_pressure_measure_action_property
(SELF, 'through spindle pressure')) AND
-- axis constraints property must contain zero or more ranges
(0 = SIZEOF (QUERY (prop <* get_action_property
(SELF, 'axis constraints') | NOT
((0 < SIZEOF (QUERY (prep <* USEDIN (prop,
'INTEGRATED_CNC_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
(0 <= SIZEOF (QUERY (it <* prep.representation.items |
('INTEGRATED_CNC_SCHEMA.VALUE_RANGE' in TYPEOF(it)))))
)))))))
);
WR2: NOT (SELF.description = 'turning') OR
((verify_required_action_property (SELF, 'coolant')) AND
(verify_enumeration_action_property (SELF, 'coolant',
['coolant on', 'coolant off'])) AND
(verify_optional_action_property (SELF, 'coolant type')) AND
(verify_enumeration_action_property (SELF, 'coolant type',
['flood', 'mist', 'through tool'])) AND
(verify_optional_action_property
(SELF, 'coolant pressure')) AND
(verify_pressure_measure_action_property
(SELF, 'coolant pressure')) AND
(verify_optional_action_property (SELF, 'tail stock')) AND
(verify_enumeration_action_property (SELF, 'tail stock',
['tail stock used', 'tail stock not used'])) AND
(verify_optional_action_property (SELF, 'steady rest')) AND
(verify_enumeration_action_property (SELF, 'steady rest',
['steady rest used', 'steady rest not used'])) AND
(verify_optional_action_property (SELF, 'follow rest')) AND
(verify_enumeration_action_property (SELF, 'follow rest',
['follow rest used', 'follow rest not used']))
);
WR3: NOT (SELF.description IN ['milling', 'turning']) OR
((verify_optional_action_property (SELF, 'axis clamping')) AND
(0 = SIZEOF (QUERY (prop <*
get_action_property (SELF, 'axis clamping') | NOT
(0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'INTEGRATED_CNC_SCHEMA.' +
'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
(1 = SIZEOF (QUERY (it <* prep.representation.items |
(('INTEGRATED_CNC_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND
('INTEGRATED_CNC_SCHEMA.LIST_REPRESENTATION_ITEM'
IN TYPEOF(it.item_element)) AND
(0 = SIZEOF (QUERY (ie <* it.item_element | NOT
('INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(ie)) )))
))))
)))
))) AND
(verify_required_action_property (SELF, 'chip removal')) AND
(verify_enumeration_action_property (SELF, 'chip removal',
['chip removal on', 'chip removal off'])) AND
(verify_optional_action_property (SELF, 'oriented spindle stop')) AND
(verify_rep_item_for_action_property (SELF, 'oriented spindle stop',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_MODEL_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_MODEL'])) AND
(verify_optional_action_property (SELF, 'other functions')) AND
(0 = SIZEOF (QUERY (prop <* get_action_property
(SELF, 'other functions') | NOT
(0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'INTEGRATED_CNC_SCHEMA.' +
'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
(1 = SIZEOF (QUERY (it <* prep.representation.items |
(('INTEGRATED_CNC_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND
('INTEGRATED_CNC_SCHEMA.SET_REPRESENTATION_ITEM'
IN TYPEOF(it.item_element)))
)))
)))
)))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_functions_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_nc_function
SUBTYPE OF (machining_process_executable);
WHERE
WR1: (SELF.description IN ['display message',
'optional stop', 'program stop', 'set mark', 'wait for mark',
'exchange pallet', 'index pallet', 'load tool', 'unload tool',
'legacy function']);
WR2: NOT (SELF.description = 'display message') OR
((verify_required_action_property (SELF, 'message text')) AND
(verify_descriptive_action_property (SELF, 'message text')));
WR3: NOT (SELF.description = 'wait for mark') OR
((verify_required_action_property (SELF, 'channel')));
WR4: NOT (SELF.description = 'index pallet') OR
((verify_required_action_property (SELF, 'pallet index')) AND
(verify_parameter_action_property (SELF, 'pallet index')));
WR5: NOT (SELF.description = 'index table') OR
((verify_required_action_property (SELF, 'table index')) AND
(verify_parameter_action_property (SELF, 'table index')));
WR6: NOT (SELF.description = 'load tool') OR
(1 = SIZEOF (QUERY (mt <*
USEDIN (SELF, 'INTEGRATED_CNC_SCHEMA.ACTION_RESOURCE.USAGE') |
('INTEGRATED_CNC_SCHEMA.MACHINING_TOOL' in TYPEOF(mt)))));
WR7: NOT (SELF.description = 'unload tool') OR
(1 >= SIZEOF (QUERY (mt <*
USEDIN (SELF, 'INTEGRATED_CNC_SCHEMA.ACTION_RESOURCE.USAGE') |
('INTEGRATED_CNC_SCHEMA.MACHINING_TOOL' in TYPEOF(mt)))));
WR8: NOT (SELF.description = 'legacy function') OR
((verify_required_action_property (SELF, 'function text')) AND
(verify_descriptive_action_property (SELF, 'function text')));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_offset_vector_representation
SUBTYPE OF (representation);
WHERE
WR1: (1 = SIZEOF (QUERY ( it <* SELF.items | (it.name = 'translate')))) AND
(0 = SIZEOF (QUERY ( it <* SELF.items | (it.name = 'translate') AND NOT
(('INTEGRATED_CNC_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND
('INTEGRATED_CNC_SCHEMA.LIST_REPRESENTATION_ITEM'
IN TYPEOF(it.item_element)) AND
(SIZEOF(it.item_element) = 3) AND
(0 = SIZEOF (QUERY (ie <* it.item_element | NOT
(('INTEGRATED_CNC_SCHEMA.EXPRESSION_REPRESENTATION_ITEM'
IN TYPEOF(ie)) AND
('INTEGRATED_CNC_SCHEMA.NUMERIC_VARIABLE'
IN TYPEOF(ie))))))
)
)));
WR2: (1 >= SIZEOF (QUERY ( it <* SELF.items | (it.name = 'rotate')))) AND
(0 = SIZEOF (QUERY ( it <* SELF.items | (it.name = 'rotate') AND NOT
(('INTEGRATED_CNC_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND
('INTEGRATED_CNC_SCHEMA.LIST_REPRESENTATION_ITEM'
IN TYPEOF(it.item_element)) AND
(SIZEOF(it.item_element) = 3) AND
(0 = SIZEOF (QUERY (ie <* it.item_element | NOT
(('INTEGRATED_CNC_SCHEMA.EXPRESSION_REPRESENTATION_ITEM'
IN TYPEOF(ie)) AND
('INTEGRATED_CNC_SCHEMA.NUMERIC_VARIABLE'
IN TYPEOF(ie))))))
)
)));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_operation
SUBTYPE OF (action_method);
WHERE
WR1: ((verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_TOOLPATH_SEQUENCE_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_TOOLPATH']))
);
WR2: (verify_optional_action_property (SELF, 'tool direction')) AND
(verify_rep_type_for_action_property (SELF, 'tool direction',
['INTEGRATED_CNC_SCHEMA.MACHINING_TOOL_DIRECTION_REPRESENTATION']));
WR3: ('INTEGRATED_CNC_SCHEMA.MACHINING_RAPID_MOVEMENT' IN TYPEOF(SELF)) OR
('INTEGRATED_CNC_SCHEMA.MACHINING_TOUCH_PROBING' IN TYPEOF(SELF)) OR
((verify_optional_action_property (SELF, 'retract plane')) AND
(verify_length_measure_action_property (SELF, 'retract plane')) AND
(verify_optional_action_property (SELF, 'cut start point')) AND
(verify_rep_item_for_action_property (SELF, 'cut start point',
['INTEGRATED_CNC_SCHEMA.CARTESIAN_POINT'])) AND
(1 = SIZEOF (QUERY (mt <*
USEDIN (SELF, 'INTEGRATED_CNC_SCHEMA.ACTION_RESOURCE.USAGE') |
('INTEGRATED_CNC_SCHEMA.MACHINING_TOOL' in TYPEOF(mt))))) AND
(verify_required_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_TECHNOLOGY_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_TECHNOLOGY_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_TECHNOLOGY'])) AND
(verify_required_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_FUNCTIONS']))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_operation_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_operator_instruction
SUBTYPE OF (action_method_with_associated_documents);
WHERE
WR1: EXISTS (self.description) OR (0 < SIZEOF(self.documents));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_operator_instruction_relationship
SUBTYPE OF (sequential_method);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_process_body_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_process_branch_relationship
SUBTYPE OF (machining_process_body_relationship);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_process_concurrent_relationship
SUBTYPE OF (machining_process_body_relationship, concurrent_action_method);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_process_executable
SUBTYPE OF (action_method);
WHERE
WR1: NOT (0 = SIZEOF (TYPEOF (SELF) *
['INTEGRATED_CNC_SCHEMA.MACHINING_FEATURE_PROCESS',
'INTEGRATED_CNC_SCHEMA.MACHINING_NC_FUNCTION',
'INTEGRATED_CNC_SCHEMA.MACHINING_RAPID_MOVEMENT',
'INTEGRATED_CNC_SCHEMA.MACHINING_TOUCH_PROBING',
'INTEGRATED_CNC_SCHEMA.MACHINING_WORKINGSTEP',
'INTEGRATED_CNC_SCHEMA.MACHINING_WORKPLAN']
)) OR
(SELF.description IN ['assignment', 'if statement',
'non-sequential', 'parallel', 'selective',
'while statement', 'setup instructions']);
WR2: NOT (SELF.description = 'assignment') OR
((verify_required_action_property (SELF, 'lvalue')) AND
(verify_rep_item_for_action_property (SELF, 'lvalue',
['INTEGRATED_CNC_SCHEMA.EXPRESSION_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.NUMERIC_VARIABLE'])) AND
(verify_required_action_property (SELF, 'rvalue')) AND
(verify_rep_item_for_action_property (SELF, 'rvalue',
['INTEGRATED_CNC_SCHEMA.EXPRESSION_REPRESENTATION_ITEM'])));
WR3: NOT (SELF.description = 'if statement') OR
((verify_required_action_property (SELF, 'condition')) AND
(verify_rep_item_for_action_property (SELF, 'condition',
['INTEGRATED_CNC_SCHEMA.EXPRESSION_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.BOOLEAN_EXPRESSION'])) AND
(verify_required_relating_amr_with_name (SELF, 'true branch',
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'])) AND
(verify_related_type_for_amr_with_name (SELF, 'true branch',
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_EXECUTABLE'])) AND
(verify_optional_relating_amr_with_name (SELF, 'false branch',
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'])) AND
(verify_related_type_for_amr_with_name (SELF, 'false branch',
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
);
WR4: NOT (SELF.description = 'while statement') OR
((verify_required_action_property (SELF, 'condition')) AND
(verify_rep_item_for_action_property (SELF, 'condition',
['INTEGRATED_CNC_SCHEMA.EXPRESSION_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.BOOLEAN_EXPRESSION'])) AND
(verify_required_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_BODY_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_BODY_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
);
WR5: NOT (SELF.description = 'parallel') OR
((2 <= get_count_of_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_CONCURRENT_RELATIONSHIP']))
AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_CONCURRENT_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
);
WR6: NOT (SELF.description = 'non-sequential') OR
((2 <= get_count_of_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_BODY_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_BODY_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
);
WR7: NOT (SELF.description = 'selective') OR
((2 <= get_count_of_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_BRANCH_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_EXECUTABLE']))
);
WR8: NOT (SELF.description = 'setup instructions') OR
((verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_OPERATOR_INSTRUCTION_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_OPERATOR_INSTRUCTION']))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_process_model
SUBTYPE OF (action_method);
WHERE
WR1: (verify_required_action_property (SELF, 'initialization data')) AND
(verify_descriptive_action_property (SELF, 'initialization data'));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_process_model_relationship
SUBTYPE OF (sequential_method);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_process_sequence_relationship
SUBTYPE OF (machining_process_body_relationship, sequential_method);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_project
SUBTYPE OF (product);
WHERE
WR1: (0 = SIZEOF (QUERY (pdf <* USEDIN (SELF,
'INTEGRATED_CNC_SCHEMA.' +
'PRODUCT_DEFINITION_FORMATION.OF_PRODUCT') | NOT
-- it has at most one associated owner.
(1 >= SIZEOF (QUERY (poa <* USEDIN (pdf,
'INTEGRATED_CNC_SCHEMA.' +
'APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS') |
(poa.role.name = 'owner'))))
)));
WR2: (0 = SIZEOF (QUERY (pdf <* USEDIN (SELF,
'INTEGRATED_CNC_SCHEMA.' +
'PRODUCT_DEFINITION_FORMATION.OF_PRODUCT') | NOT
-- it has at most one associated release date.
(1 >= SIZEOF (QUERY (dta <* USEDIN (pdf,
'INTEGRATED_CNC_SCHEMA.' +
'APPLIED_DATE_AND_TIME_ASSIGNMENT.ITEMS') |
(dta.role.name = 'release date'))))
)));
WR3: (0 = SIZEOF (QUERY (pdf <* USEDIN (SELF,
'INTEGRATED_CNC_SCHEMA.' +
'PRODUCT_DEFINITION_FORMATION.OF_PRODUCT') | NOT
(0 = SIZEOF (QUERY (pd <* USEDIN (pdf,
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION.FORMATION') | NOT
-- it has one associated workplan.
(1 = SIZEOF (QUERY (ppa <* USEDIN (pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROCESS_PRODUCT_ASSOCIATION.DEFINED_PRODUCT') |
(ppa.process.name = 'machining') AND
('INTEGRATED_CNC_SCHEMA.MACHINING_WORKPLAN'
IN TYPEOF (ppa.process.chosen_method)))))
)))
)));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_project_workpiece_relationship
SUBTYPE OF (product_definition_relationship);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_rapid_movement
SUBTYPE OF (machining_process_executable, machining_operation);
WHERE
WR1: ((verify_required_action_property (SELF, 'security plane')) AND
(verify_rep_item_for_action_property (SELF, 'security plane',
['INTEGRATED_CNC_SCHEMA.ELEMENTARY_SURFACE'])));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_setup
SUBTYPE OF (product);
WHERE
WR1: (0 = SIZEOF (QUERY (pdf <* USEDIN (SELF,
'INTEGRATED_CNC_SCHEMA.' +
'PRODUCT_DEFINITION_FORMATION.OF_PRODUCT') | NOT
(0 = SIZEOF (QUERY (pd <* USEDIN (pdf,
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION.FORMATION') | NOT
-- it has one associated security plane.
(1 = SIZEOF (QUERY (prop <* USEDIN (pd,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION') |
(prop.name = 'security plane'))))
)))
)));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_setup_workpiece_relationship
SUBTYPE OF (product_definition_relationship);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_spindle_speed_representation
SUBTYPE OF (representation);
WHERE
WR1: (SELF.name IN ['spindle speed', 'cutting speed', 'relative speed']);
WR2: NOT (SELF.name = 'spindle speed') OR
((verify_required_rep_item (SELF, 'rotational speed')) AND
(verify_rotary_speed_measure_rep_item (SELF, 'rotational speed'))
);
WR3: NOT (SELF.name = 'cutting speed') OR
((verify_required_rep_item (SELF, 'surface speed')) AND
(verify_linear_speed_measure_rep_item (SELF, 'surface speed')) AND
(verify_optional_rep_item
(SELF, 'maximum rotational speed')) AND
(verify_rotary_speed_measure_rep_item
(SELF, 'maximum rotational speed'))
);
WR4: NOT (SELF.name = 'relative speed') OR
((verify_required_rep_item (SELF, 'relative speed')) AND
(verify_ratio_measure_rep_item (SELF, 'relative speed'))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_strategy
SUBTYPE OF (action_method);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_strategy_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_technology
SUBTYPE OF (action_method);
WHERE
WR1: (verify_optional_action_property (SELF, 'feedrate')) AND
(verify_rep_type_for_action_property (SELF, 'feedrate',
['INTEGRATED_CNC_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION']));
WR2: (verify_required_action_property (SELF, 'feedrate reference')) AND
(verify_enumeration_action_property (SELF, 'feedrate reference',
['tool center point', 'cutter contact point']));
WR3: NOT (SELF.description = 'milling') OR
((verify_optional_action_property (SELF, 'spindle')) AND
(verify_rep_type_for_action_property (SELF, 'spindle',
['INTEGRATED_CNC_SCHEMA.MACHINING_SPINDLE_SPEED_REPRESENTATION'])) AND
(verify_required_action_property
(SELF, 'synchronize spindle with feed')) AND
(verify_enumeration_action_property
(SELF, 'synchronize spindle with feed',
['synchronized', 'not synchronized'])) AND
(verify_required_action_property
(SELF, 'inhibit feedrate override')) AND
(verify_enumeration_action_property
(SELF, 'inhibit feedrate override',
['override allowed', 'override not allowed'])) AND
(verify_required_action_property
(SELF, 'inhibit spindle override')) AND
(verify_enumeration_action_property
(SELF, 'inhibit spindle override',
['override allowed', 'override not allowed'])) AND
(verify_optional_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_TECHNOLOGY']))
);
WR4: NOT (SELF.description = 'milling') OR
((verify_required_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'])) OR
(verify_required_action_property (SELF, 'spindle') AND
verify_rep_desc_for_action_property (SELF, 'spindle',
['spindle speed', 'cutting speed']))
);
WR5: NOT (SELF.description = 'milling') OR
((verify_required_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'])) OR
(verify_required_action_property (SELF, 'feedrate') AND
verify_rep_desc_for_action_property (SELF, 'feedrate',
['feed speed', 'feed per tooth']))
);
WR6: NOT (SELF.description = 'turning') OR
((verify_optional_action_property (SELF, 'spindle')) AND
(verify_rep_type_for_action_property (SELF, 'spindle',
['INTEGRATED_CNC_SCHEMA.MACHINING_SPINDLE_SPEED_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property (SELF, 'spindle',
['spindle speed', 'cutting speed'])) AND
(verify_rep_desc_for_action_property (SELF, 'feedrate',
['feed speed', 'feed per revolution'])) AND
(verify_required_action_property
(SELF, 'synchronize spindle with z feed')) AND
(verify_enumeration_action_property
(SELF, 'synchronize spindle with z feed',
['synchronized', 'not synchronized'])) AND
(verify_required_action_property
(SELF, 'inhibit feedrate override')) AND
(verify_enumeration_action_property
(SELF, 'inhibit feedrate override',
['override allowed', 'override not allowed'])) AND
(verify_required_action_property
(SELF, 'inhibit spindle override')) AND
(verify_enumeration_action_property
(SELF, 'inhibit spindle override',
['override allowed', 'override not allowed'])) AND
(verify_optional_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_ADAPTIVE_CONTROL_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_TECHNOLOGY']))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_technology_relationship
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_tool
SUBTYPE OF (action_resource);
WHERE
WR1: NOT (SELF.kind.name IN ['cutting tool', 'milling cutting tool',
'turning cutting tool']) OR
((verify_required_resource_property (SELF, 'tool body')) AND
(verify_rep_type_for_resource_property (SELF, 'tool body',
['INTEGRATED_CNC_SCHEMA.MACHINING_TOOL_BODY_REPRESENTATION'])) AND
-- Must have at least one cutting component
-- note that this is a set, not a list.
(0 < SIZEOF (QUERY (arr <* USEDIN (SELF,
'INTEGRATED_CNC_SCHEMA.ACTION_RESOURCE_RELATIONSHIP.RELATING_RESOURCE') |
('INTEGRATED_CNC_SCHEMA.MACHINING_CUTTING_COMPONENT'
IN TYPEOF (arr.related_resource)) ))) AND
(verify_optional_resource_property
(SELF, 'overall assembly length')) AND
(verify_length_measure_resource_property
(SELF, 'overall assembly length')) AND
(verify_optional_resource_property
(SELF, 'tool holder profile')) AND
(verify_rep_item_for_resource_property
(SELF, 'tool holder profile',
['INTEGRATED_CNC_SCHEMA.SURFACE_OF_REVOLUTION']))
);
WR2: NOT (SELF.kind.name = 'milling cutting tool') OR
((verify_optional_resource_property
(SELF, 'direction for spindle orientation')) AND
(verify_rep_item_for_resource_property
(SELF, 'direction for spindle orientation',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_resource_property
(SELF, 'tool holder diameter for spindle orientation')) AND
(verify_length_measure_resource_property
(SELF, 'tool holder diameter for spindle orientation'))
);
WR3: NOT (SELF.kind.name = 'turning cutting tool') OR
((verify_optional_resource_property
(SELF, 'overall assembly width')) AND
(verify_length_measure_resource_property
(SELF, 'overall assembly width')) AND
(verify_optional_resource_property
(SELF, 'minimum cutting diameter')) AND
(verify_length_measure_resource_property
(SELF, 'minimum cutting diameter'))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_tool_body_representation
SUBTYPE OF (representation);
WHERE
WR1: NOT (SELF.name IN ['backside counterbore', 'backside countersink',
'ball endmill', 'boring tool', 'bullnose endmill', 'centerdrill',
'combined drill and reamer', 'combined drill and tap', 'counterbore',
'countersink','dovetail mill', 'endmill', 'facemill', 'reamer',
'side mill', 'spade drill', 'tap', 'tapered drill', 'tapered endmill',
'tapered reamer', 'tapered tap', 'tee slot mill', 'thread mill',
'threading tool', 'twist drill', 'user defined milling tool',
'woodruff keyseat mill']) OR
((1 = SIZEOF (QUERY (rr <* USEDIN (SELF,
'INTEGRATED_CNC_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_1') |
('INTEGRATED_CNC_SCHEMA.MACHINING_TOOL_DIMENSION_REPRESENTATION'
IN TYPEOF(rr.rep_2))))
) AND
(verify_optional_rep_item (SELF, 'number of teeth')) AND
(verify_count_measure_rep_item (SELF, 'number of teeth')) AND
(verify_optional_rep_item (SELF, 'hand of cut')) AND
(verify_enumeration_rep_item (SELF, 'hand of cut',
['left', 'right', 'neutral'])) AND
(verify_optional_rep_item (SELF, 'coolant through tool')) AND
(verify_enumeration_rep_item (SELF, 'coolant through tool',
['supported', 'not supported'])) AND
(verify_optional_rep_item (SELF, 'pilot length')) AND
(verify_length_measure_rep_item (SELF, 'pilot length'))
);
WR2: NOT (SELF.name = 'boring tool') OR
((verify_required_rep_item (SELF, 'retract movement')) AND
(verify_enumeration_rep_item (SELF, 'retract movement',
['permitted', 'forbidden']))
);
WR3: NOT (SELF.name IN ['combined drill and reamer',
'combined drill and tap']) OR
((verify_optional_rep_item (SELF, 'drill length')) AND
(verify_length_measure_rep_item (SELF, 'drill length'))
);
WR4: NOT (SELF.name IN ['countersink', 'backside countersink']) OR
((verify_optional_rep_item (SELF, 'countersink radius')) AND
(verify_length_measure_rep_item (SELF, 'countersink radius'))
);
WR5: NOT (SELF.name = 'dovetail mill') OR
((verify_optional_rep_item (SELF, 'included angle')) AND
(verify_angle_measure_rep_item (SELF, 'included angle'))
);
WR6: NOT (SELF.name IN ['side mill', 'woodruff keyseat mill']) OR
((verify_optional_rep_item (SELF, 'cutter width')) AND
(verify_length_measure_rep_item (SELF, 'cutter width'))
);
WR7: NOT (SELF.name = 'tee slot mill') OR
((verify_optional_rep_item (SELF, 'cutting thickness')) AND
(verify_length_measure_rep_item (SELF, 'cutting thickness'))
);
WR8: NOT (SELF.name IN ['tapered drill', 'tapered endmill',
'tapered reamer', 'tapered tap']) OR
((verify_optional_rep_item (SELF, 'taper angle')) AND
(verify_angle_measure_rep_item (SELF, 'taper angle'))
);
WR9: NOT (SELF.name = 'user defined milling tool') OR
((verify_required_rep_item (SELF, 'tool identifier')) AND
(0 = SIZEOF (QUERY ( it <* SELF.items |
(it.name = 'tool identifier') AND NOT
(('INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it))))))
);
-- tool types for turning
WR10: NOT (SELF.name IN ['general turning tool',
'grooving tool', 'knurling tool', 'turning threading tool',
'user defined turning tool']) OR
((1 = SIZEOF (QUERY (rr <* USEDIN (SELF,
'INTEGRATED_CNC_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_1') |
('INTEGRATED_CNC_SCHEMA.MACHINING_TOOL_DIMENSION_REPRESENTATION'
IN TYPEOF(rr.rep_2))))) AND
(verify_optional_rep_item (SELF, 'hand of cut')) AND
(verify_enumeration_rep_item (SELF, 'hand of cut',
['left', 'right', 'neutral'])) AND
(verify_optional_rep_item
(SELF, 'maximum side cutting depth')) AND
(verify_length_measure_rep_item
(SELF, 'maximum side cutting depth')) AND
(verify_optional_rep_item
(SELF, 'maximum end cutting depth')) AND
(verify_length_measure_rep_item
(SELF, 'maximum end cutting depth')) AND
(verify_optional_rep_item (SELF, 'tool body height')) AND
(verify_length_measure_rep_item (SELF, 'tool body height')) AND
(verify_optional_rep_item (SELF, 'tool body width')) AND
(verify_length_measure_rep_item (SELF, 'tool body width'))
);
WR11: NOT (SELF.name = 'grooving tool') OR
((verify_required_rep_item (SELF, 'cutting width')) AND
(verify_length_measure_rep_item (SELF, 'cutting width')) AND
(verify_required_rep_item (SELF, 'maximum grooving depth')) AND
(verify_length_measure_rep_item (SELF, 'maximum grooving depth')) AND
(verify_optional_rep_item (SELF, 'corner radius')) AND
(verify_length_measure_rep_item (SELF, 'corner radius')) AND
(verify_optional_rep_item
(SELF, 'maximum axial grooving diameter')) AND
(verify_length_measure_rep_item
(SELF, 'maximum axial grooving diameter')) AND
(verify_optional_rep_item
(SELF, 'minimum axial grooving diameter')) AND
(verify_length_measure_rep_item
(SELF, 'minimum axial grooving diameter'))
);
WR12: NOT (SELF.name = 'knurling tool') OR
((verify_required_rep_item (SELF, 'knurl pattern')) AND
(verify_enumeration_rep_item (SELF, 'knurl pattern',
['straight', 'diagonal', 'diamond'])) AND
(verify_optional_rep_item (SELF, 'cutting length')) AND
(verify_length_measure_rep_item (SELF, 'cutting length')) AND
(verify_optional_rep_item (SELF, 'cutting angle')) AND
(verify_angle_measure_rep_item (SELF, 'cutting angle')) AND
(verify_optional_rep_item (SELF, 'cutting pitch')) AND
(verify_length_measure_rep_item (SELF, 'cutting pitch'))
);
WR13: NOT (SELF.name = 'turning threading tool') OR
((verify_required_rep_item (SELF, 'threading pitch')) AND
(verify_length_measure_rep_item (SELF, 'threading pitch')) AND
(verify_optional_rep_item (SELF, 'threading angle')) AND
(verify_angle_measure_rep_item (SELF, 'threading angle'))
);
WR14: NOT (SELF.name = 'user defined turning tool') OR
((verify_required_rep_item (SELF, 'tool identifier')) AND
(verify_descriptive_rep_item (SELF, 'tool identifier'))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_tool_dimension_representation
SUBTYPE OF (representation);
WHERE
WR1: NOT (SELF.name = 'milling') OR
((verify_required_rep_item (SELF, 'diameter')) AND
(verify_length_measure_rep_item (SELF, 'diameter')) AND
(verify_optional_rep_item (SELF, 'tool tip half angle')) AND
(verify_angle_measure_rep_item (SELF, 'tool tip half angle')) AND
(verify_optional_rep_item (SELF, 'tool circumference angle')) AND
(verify_angle_measure_rep_item (SELF, 'tool circumference angle')) AND
(verify_optional_rep_item (SELF, 'cutting edge length')) AND
(verify_length_measure_rep_item (SELF, 'cutting edge length')) AND
(verify_optional_rep_item (SELF, 'edge radius')) AND
(verify_length_measure_rep_item (SELF, 'edge radius')) AND
(verify_optional_rep_item (SELF, 'edge center vertical')) AND
(verify_length_measure_rep_item (SELF, 'edge center vertical')) AND
(verify_optional_rep_item (SELF, 'edge center horizontal')) AND
(verify_length_measure_rep_item (SELF, 'edge center horizontal'))
);
WR2: NOT (SELF.name = 'turning') OR
((verify_optional_rep_item (SELF, 'cutting edge length')) AND
(verify_length_measure_rep_item (SELF, 'cutting edge length')) AND
(verify_optional_rep_item (SELF, 'side cutting edge angle')) AND
(verify_angle_measure_rep_item (SELF, 'side cutting edge angle')) AND
(verify_optional_rep_item (SELF, 'end cutting edge angle')) AND
(verify_angle_measure_rep_item (SELF, 'end cutting edge angle')) AND
(verify_optional_rep_item (SELF, 'side rake angle')) AND
(verify_angle_measure_rep_item (SELF, 'side rake angle')) AND
(verify_optional_rep_item (SELF, 'back rake angle')) AND
(verify_angle_measure_rep_item (SELF, 'back rake angle')) AND
(verify_optional_rep_item (SELF, 'side clearance angle')) AND
(verify_angle_measure_rep_item (SELF, 'side clearance angle')) AND
(verify_optional_rep_item (SELF, 'back clearance angle')) AND
(verify_angle_measure_rep_item (SELF, 'back clearance angle')) AND
(verify_optional_rep_item (SELF, 'nose radius')) AND
(verify_length_measure_rep_item (SELF, 'nose radius')) AND
(verify_optional_rep_item (SELF, 'circle diameter')) AND
(verify_length_measure_rep_item (SELF, 'circle diameter'))
);
WR3: (0 = SIZEOF (QUERY (rr <* USEDIN (SELF,
'INTEGRATED_CNC_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_2') |
('INTEGRATED_CNC_SCHEMA.MACHINING_TOOL_BODY_REPRESENTATION'
IN TYPEOF(rr.rep_1)) AND (rr.rep_1.name = 'ball endmill')))
) OR (verify_ball_endmill_edge_dimensions (SELF));
WR4: (0 = SIZEOF (QUERY (rr <* USEDIN (SELF,
'INTEGRATED_CNC_SCHEMA.REPRESENTATION_RELATIONSHIP.REP_2') |
('INTEGRATED_CNC_SCHEMA.MACHINING_TOOL_BODY_REPRESENTATION'
IN TYPEOF(rr.rep_1)) AND
(rr.rep_1.name IN ['bullnose endmill', 'ball endmill'])))
) OR (
(0 = SIZEOF (QUERY ( it <* SELF.items |
(it.name = 'tool tip half angle') AND NOT
(it.value_component = 0)))
) AND
(0 = SIZEOF (QUERY ( it <* SELF.items |
(it.name = 'tool circumference angle') AND NOT
(it.value_component = 0)))
)
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_tool_direction_representation
SUBTYPE OF (representation);
WHERE
WR1: (SELF.name IN ['two axes', 'three axes', 'three axes tilted tool',
'five axes const tilt yaw', 'five axes var tilt yaw']);
WR2: NOT (SELF.name = 'three axes tilted tool') OR
((verify_required_rep_item (SELF, 'tool direction orientation')) AND
(0 = SIZEOF (QUERY ( it <* SELF.items |
(it.name = 'tool direction orientation') AND NOT
('INTEGRATED_CNC_SCHEMA.DIRECTION' IN TYPEOF(it)))))
);
WR3: NOT (SELF.name = 'five axes const tilt yaw') OR
((verify_required_rep_item (SELF, 'tool direction tilt angle')) AND
(verify_angle_measure_rep_item (SELF, 'tool direction tilt angle')) AND
(verify_required_rep_item (SELF, 'tool direction yaw angle')) AND
(verify_angle_measure_rep_item (SELF, 'tool direction yaw angle'))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_toolpath
SUBTYPE OF (action_method);
WHERE
WR1: (SELF.description IN ['feedstop', 'axis trajectory',
'cutter location trajectory', 'cutter contact trajectory',
'approach lift path angle', 'approach lift path tangent',
'connect security plane', 'connect direct']);
WR2: (verify_required_action_property (SELF, 'priority')) AND
(verify_enumeration_action_property (SELF, 'priority',
['required', 'suggested']));
WR3: (verify_required_action_property (SELF, 'trajectory type')) AND
(verify_enumeration_action_property (SELF, 'trajectory type',
['approach', 'lift', 'connect', 'non-contact',
'contact', 'trajectory path']));
WR4: ((verify_optional_action_property (SELF, 'speed profile')) AND
(0 = SIZEOF (QUERY (prop <*
get_action_property (SELF, 'speed profile') | NOT
(0 < SIZEOF (QUERY (prep <* USEDIN (prop,
'INTEGRATED_CNC_SCHEMA.' +
'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
('INTEGRATED_CNC_SCHEMA.' +
'MACHINING_TOOLPATH_SPEED_PROFILE_REPRESENTATION'
IN TYPEOF(prep.representation)) )))
)))
);
WR5: (verify_optional_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_TECHNOLOGY_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_TECHNOLOGY_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_TECHNOLOGY']));
WR6: (verify_optional_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_FUNCTIONS_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_FUNCTIONS']));
WR7: NOT (SELF.description IN ['axis trajectory',
'cutter location trajectory',
'cutter contact trajectory']) OR
((verify_optional_action_property (SELF, 'direction')) AND
(verify_enumeration_action_property (SELF, 'direction',
['beginning to end', 'end to beginning']))
);
WR8: NOT (SELF.description = 'connect security plane') OR
((verify_optional_action_property (SELF, 'up direction')) AND
(verify_rep_item_for_action_property (SELF, 'up direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_action_property (SELF, 'down direction')) AND
(verify_rep_item_for_action_property (SELF, 'down direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION']))
);
WR9: NOT (SELF.description = 'feedstop') OR
((verify_required_action_property (SELF, 'dwell')) AND
(verify_time_measure_action_property (SELF, 'dwell'))
);
WR10: NOT (SELF.description = 'axis trajectory') OR
((verify_required_action_property (SELF, 'axis commands')) AND
-- axis commands property must contain one or more bounded curves
(0 = SIZEOF (QUERY (prop <* get_action_property (SELF, 'axis commands') |
NOT ((0 < SIZEOF (QUERY (prep <* USEDIN (prop,
'INTEGRATED_CNC_SCHEMA.ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
(1 <= SIZEOF (QUERY (it <* prep.representation.items |
('INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE' in TYPEOF(it)))))
)))))))
);
WR11: NOT (SELF.description IN ['approach lift path angle',
'approach lift path tangent']) OR
((verify_required_action_property (SELF, 'fix point')) AND
(verify_rep_item_for_action_property (SELF, 'fix point',
['INTEGRATED_CNC_SCHEMA.CARTESIAN_POINT'])) AND
(verify_optional_action_property (SELF, 'fix point direction')) AND
(verify_rep_item_for_action_property (SELF, 'fix point direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION']))
);
WR12: NOT (SELF.description = 'approach lift path angle') OR
((verify_required_action_property (SELF, 'angle')) AND
(verify_angle_measure_action_property (SELF, 'angle')) AND
(verify_required_action_property (SELF, 'bend distance')) AND
(verify_length_measure_action_property (SELF, 'bend distance'))
);
WR13: NOT (SELF.description = 'approach lift path tangent') OR
((verify_required_action_property (SELF, 'radius')) AND
(verify_length_measure_action_property (SELF, 'radius'))
);
WR14: NOT (SELF.description = 'cutter location trajectory') OR
((verify_required_action_property (SELF, 'basic curve')) AND
(verify_rep_item_for_action_property (SELF, 'basic curve',
['INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE'])) AND
(verify_optional_action_property (SELF, 'surface normal')) AND
(verify_rep_item_for_action_property (SELF, 'surface normal',
['INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE'])) AND
(verify_optional_action_property (SELF, 'tool axis')) AND
(verify_rep_item_for_action_property (SELF, 'tool axis',
['INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE'])) AND
(verify_optional_action_property
(SELF, 'path maximum deviation')) AND
(verify_length_measure_action_property
(SELF, 'path maximum deviation')) AND
(verify_optional_action_property
(SELF, 'tool axis maximum deviation')) AND
(verify_angle_measure_action_property
(SELF, 'tool axis maximum deviation'))
);
WR15: NOT (SELF.description = 'cutter contact trajectory') OR
((((verify_required_action_property (SELF, 'basic curve')) AND
(verify_rep_item_for_action_property (SELF, 'basic curve',
['INTEGRATED_CNC_SCHEMA.BOUNDED_PCURVE'])) )
OR
((verify_required_action_property (SELF, 'basic curve')) AND
(verify_rep_item_for_action_property (SELF, 'basic curve',
['INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE'])) AND
(verify_required_action_property (SELF, 'surface normal')) AND
(verify_rep_item_for_action_property (SELF, 'surface normal',
['INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE'])) )
) AND
(verify_optional_action_property (SELF, 'tool axis')) AND
(verify_rep_item_for_action_property (SELF, 'tool axis',
['INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE'])) AND
(verify_optional_action_property (SELF, 'contact type')) AND
(verify_enumeration_action_property (SELF, 'contact type',
['side', 'front'])) AND
(verify_optional_action_property
(SELF, 'path maximum deviation')) AND
(verify_length_measure_action_property
(SELF, 'path maximum deviation')) AND
(verify_optional_action_property
(SELF, 'tool axis maximum deviation')) AND
(verify_angle_measure_action_property
(SELF, 'tool axis maximum deviation'))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_toolpath_sequence_relationship
SUBTYPE OF (sequential_method);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_toolpath_speed_profile_representation
SUBTYPE OF (representation);
WHERE
WR1: (1 = SIZEOF (QUERY ( it <* SELF.items |
( (('INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE'
IN TYPEOF(it))) OR
(('INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND
(it.description IN ['rapid'])) OR
((SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.RATIO_MEASURE_WITH_UNIT'] *
TYPEOF(it)) = 2))
)
)));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_touch_probing
SUBTYPE OF (machining_process_executable, machining_operation);
WHERE
WR1: (SELF.description IN ['tool length probing', 'tool radius probing',
'workpiece probing', 'workpiece complete probing']);
WR2: ((verify_required_action_property (SELF, 'security plane')) AND
(verify_rep_item_for_action_property (SELF, 'security plane',
['INTEGRATED_CNC_SCHEMA.ELEMENTARY_SURFACE'])));
WR3: ((verify_required_action_property (SELF, 'measured offset')) AND
(verify_rep_item_for_action_property (SELF, 'measured offset',
['INTEGRATED_CNC_SCHEMA.EXPRESSION_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.NUMERIC_VARIABLE'])));
WR4: NOT (SELF.description = 'workpiece probing') OR
((verify_required_action_property (SELF, 'start position')) AND
(verify_rep_item_for_action_property (SELF, 'start position',
['INTEGRATED_CNC_SCHEMA.AXIS2_PLACEMENT_3D'])) AND
(1 = SIZEOF (QUERY (act <*
USEDIN (SELF, 'INTEGRATED_CNC_SCHEMA.ACTION.CHOSEN_METHOD') |
(act.name = 'workpiece probing')))) AND
(0 = SIZEOF (QUERY (act <*
USEDIN (SELF, 'INTEGRATED_CNC_SCHEMA.ACTION.CHOSEN_METHOD') |
(act.name = 'workpiece probing') AND NOT
('INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_PROCESS'
IN TYPEOF (act))))) AND
(verify_required_action_property (SELF, 'direction')) AND
(verify_rep_item_for_action_property (SELF, 'direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_required_action_property (SELF, 'expected value')) AND
(verify_rep_item_for_action_property (SELF, 'expected value',
['INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT',
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.QUALIFIED_REPRESENTATION_ITEM'])) AND
(verify_required_action_property (SELF, 'probe'))
);
WR5: NOT (SELF.description = 'workpiece complete probing') OR
((1 = SIZEOF (QUERY (act <*
USEDIN (SELF, 'INTEGRATED_CNC_SCHEMA.ACTION.CHOSEN_METHOD') |
(act.name = 'workpiece complete probing')))) AND
(0 = SIZEOF (QUERY (act <*
USEDIN (SELF, 'INTEGRATED_CNC_SCHEMA.ACTION.CHOSEN_METHOD') |
(act.name = 'workpiece complete probing') AND NOT
('INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_PROCESS'
IN TYPEOF (act))))) AND
(verify_required_action_property (SELF, 'probing distance')) AND
(verify_rep_item_for_action_property (SELF, 'probing distance',
['INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT',
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.QUALIFIED_REPRESENTATION_ITEM'])) AND
(verify_required_action_property (SELF, 'probe')) AND
(verify_required_action_property (SELF, 'computed offset')) AND
(verify_rep_type_for_action_property (SELF, 'computed offset',
['INTEGRATED_CNC_SCHEMA.MACHINING_OFFSET_VECTOR_REPRESENTATION']))
);
WR6: NOT (SELF.description IN ['tool length probing',
'tool radius probing']) OR
((verify_required_action_property (SELF, 'offset')) AND
(verify_rep_item_for_action_property (SELF, 'offset',
['INTEGRATED_CNC_SCHEMA.CARTESIAN_POINT'])) AND
(verify_required_action_property (SELF, 'maximum wear')) AND
(verify_length_measure_action_property (SELF, 'maximum wear')) AND
(1 = SIZEOF (QUERY (mt <*
USEDIN (SELF, 'INTEGRATED_CNC_SCHEMA.ACTION_RESOURCE.USAGE') |
('INTEGRATED_CNC_SCHEMA.MACHINING_TOOL' in TYPEOF(mt)))))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_workingstep
SUBTYPE OF (machining_process_executable);
WHERE
WR1: ((verify_required_action_property (SELF, 'security plane')) AND
(verify_rep_item_for_action_property (SELF, 'security plane',
['INTEGRATED_CNC_SCHEMA.ELEMENTARY_SURFACE'])));
WR2: NOT (SELF.description = 'machining') OR
((verify_required_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_FEATURE_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_FEATURE_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_FEATURE_PROCESS'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_FINAL_FEATURE_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_FEATURE_PROCESS'])) AND
(verify_required_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_OPERATION_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_OPERATION_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_OPERATION']))
);
WR3: NOT (SELF.description = 'turning') OR
((2 <= get_count_of_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_FEATURE_SEQUENCE_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_FEATURE_SEQUENCE_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_FEATURE_PROCESS'])) AND
(verify_required_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_OPERATION_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_OPERATION_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.TURNING_TYPE_OPERATION']))
);
WR4: NOT (SELF.description IN ['machining', 'turning']) OR
(verify_optional_in_process_geometry (SELF));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY machining_workplan
SUBTYPE OF (machining_process_executable);
WHERE
WR1: (1 <= get_count_of_relating_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_SEQUENCE_RELATIONSHIP'])) AND
(verify_related_type_for_amr (SELF,
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_SEQUENCE_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_PROCESS_EXECUTABLE']));
WR2: (verify_optional_action_property (SELF, 'channel'));
WR3: (1 >= SIZEOF (QUERY (act <*
USEDIN (SELF, 'INTEGRATED_CNC_SCHEMA.ACTION.CHOSEN_METHOD') |
(act.name = 'setup')))) AND
(0 = SIZEOF (QUERY (act <*
USEDIN (SELF, 'INTEGRATED_CNC_SCHEMA.ACTION.CHOSEN_METHOD') |
(act.name = 'setup') AND NOT
('INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_PROCESS' IN TYPEOF (act))
)));
WR4: (verify_optional_in_process_geometry (SELF));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY make_from_usage_option
SUBTYPE OF (product_definition_usage);
ranking : INTEGER;
ranking_rationale : text;
quantity : measure_with_unit;
WHERE
WR1: NOT ('NUMBER' IN TYPEOF(quantity.value_component)) OR (quantity.
value_component > 0);
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY manifold_solid_brep
SUBTYPE OF (solid_model);
outer : closed_shell;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY manifold_surface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([
'INTEGRATED_CNC_SCHEMA.SHELL_BASED_SURFACE_MODEL',
'INTEGRATED_CNC_SCHEMA.MAPPED_ITEM',
'INTEGRATED_CNC_SCHEMA.AXIS2_PLACEMENT_3D' ] * TYPEOF(it)) =
1))) = 0;
WR2: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.SHELL_BASED_SURFACE_MODEL',
'INTEGRATED_CNC_SCHEMA.MAPPED_ITEM' ] * TYPEOF(it)) = 1))) >
0;
WR3: SIZEOF(QUERY (mi <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.MAPPED_ITEM' IN TYPEOF(it)))| NOT ((
'INTEGRATED_CNC_SCHEMA.MANIFOLD_SURFACE_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.
mapped_representation)) AND (SIZEOF(QUERY (mr_it <* mi\
mapped_item.mapping_source.mapped_representation.items| (
'INTEGRATED_CNC_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(
mr_it)))) > 0)))) = 0;
WR4: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(
it)))| NOT (SIZEOF(QUERY (sh <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF([
'INTEGRATED_CNC_SCHEMA.OPEN_SHELL',
'INTEGRATED_CNC_SCHEMA.ORIENTED_CLOSED_SHELL',
'INTEGRATED_CNC_SCHEMA.CLOSED_SHELL' ] * TYPEOF(sh)) = 1))) =
0))) = 0;
WR5: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(
it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT (
'INTEGRATED_CNC_SCHEMA.FACE_SURFACE' IN TYPEOF(fa)))) = 0)))
= 0))) = 0;
WR6: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(
it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'INTEGRATED_CNC_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR
msf_surface_check(fa\face_surface.face_geometry)))) = 0))) =
0))) = 0;
WR7: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(
it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'INTEGRATED_CNC_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (
SIZEOF(QUERY (bnds <* fa.bounds| NOT (SIZEOF([
'INTEGRATED_CNC_SCHEMA.EDGE_LOOP',
'INTEGRATED_CNC_SCHEMA.VERTEX_LOOP' ] * TYPEOF(bnds.bound)) =
1))) = 0)))) = 0))) = 0))) = 0;
WR8: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(
it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'INTEGRATED_CNC_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (
SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| (
'INTEGRATED_CNC_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))|
NOT (SIZEOF(QUERY (oe <* elp_fbnds\path.edge_list| NOT (
'INTEGRATED_CNC_SCHEMA.EDGE_CURVE' IN TYPEOF(oe.edge_element)
))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR9: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(
it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'INTEGRATED_CNC_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (
SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| (
'INTEGRATED_CNC_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))|
NOT (SIZEOF(QUERY (oe_cv <* QUERY (oe <* elp_fbnds\path.
edge_list| ('INTEGRATED_CNC_SCHEMA.EDGE_CURVE' IN TYPEOF(oe.
edge_element)))| NOT (SIZEOF([
'INTEGRATED_CNC_SCHEMA.B_SPLINE_CURVE',
'INTEGRATED_CNC_SCHEMA.CONIC',
'INTEGRATED_CNC_SCHEMA.CURVE_REPLICA',
'INTEGRATED_CNC_SCHEMA.LINE',
'INTEGRATED_CNC_SCHEMA.OFFSET_CURVE_3D',
'INTEGRATED_CNC_SCHEMA.PCURVE',
'INTEGRATED_CNC_SCHEMA.POLYLINE',
'INTEGRATED_CNC_SCHEMA.SURFACE_CURVE' ] * TYPEOF(oe_cv.
edge_element\edge_curve.edge_geometry)) = 1))) = 0))) = 0))))
= 0))) = 0))) = 0;
WR10: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(
it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'INTEGRATED_CNC_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (
SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| (
'INTEGRATED_CNC_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))|
NOT (SIZEOF(QUERY (oe <* elp_fbnds\path.edge_list| NOT
msf_curve_check(oe.edge_element\edge_curve.edge_geometry))) =
0))) = 0)))) = 0))) = 0))) = 0;
WR11: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(
it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'INTEGRATED_CNC_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (
SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| (
'INTEGRATED_CNC_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))|
NOT (SIZEOF(QUERY (oe <* elp_fbnds\path.edge_list| NOT ((
'INTEGRATED_CNC_SCHEMA.VERTEX_POINT' IN TYPEOF(oe.
edge_element.edge_start)) AND (
'INTEGRATED_CNC_SCHEMA.VERTEX_POINT' IN TYPEOF(oe.
edge_element.edge_end))))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR12: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(
it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'INTEGRATED_CNC_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (
SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds| (
'INTEGRATED_CNC_SCHEMA.EDGE_LOOP' IN TYPEOF(bnds.bound)))|
NOT (SIZEOF(QUERY (oe <* elp_fbnds\path.edge_list| NOT ((
SIZEOF([ 'INTEGRATED_CNC_SCHEMA.CARTESIAN_POINT',
'INTEGRATED_CNC_SCHEMA.DEGENERATE_PCURVE',
'INTEGRATED_CNC_SCHEMA.POINT_ON_CURVE',
'INTEGRATED_CNC_SCHEMA.POINT_ON_SURFACE' ] * TYPEOF(oe.
edge_element.edge_start\vertex_point.vertex_geometry)) = 1)
AND (SIZEOF([ 'INTEGRATED_CNC_SCHEMA.CARTESIAN_POINT',
'INTEGRATED_CNC_SCHEMA.DEGENERATE_PCURVE',
'INTEGRATED_CNC_SCHEMA.POINT_ON_CURVE',
'INTEGRATED_CNC_SCHEMA.POINT_ON_SURFACE' ] * TYPEOF(oe.
edge_element.edge_end\vertex_point.vertex_geometry)) = 1))))
= 0))) = 0)))) = 0))) = 0))) = 0;
WR13: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(
it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'INTEGRATED_CNC_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (
SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds| (
'INTEGRATED_CNC_SCHEMA.VERTEX_LOOP' IN TYPEOF(bnds.bound)))|
NOT ('INTEGRATED_CNC_SCHEMA.VERTEX_POINT' IN TYPEOF(vlp_fbnds
\vertex_loop.loop_vertex)))) = 0)))) = 0))) = 0))) = 0;
WR14: SIZEOF(QUERY (sbsm <* QUERY (it <* SELF.items| (
'INTEGRATED_CNC_SCHEMA.SHELL_BASED_SURFACE_MODEL' IN TYPEOF(
it)))| NOT (SIZEOF(QUERY (cfs <* sbsm\
shell_based_surface_model.sbsm_boundary| NOT (SIZEOF(QUERY (
fa <* cfs\connected_face_set.cfs_faces| NOT ((
'INTEGRATED_CNC_SCHEMA.ADVANCED_FACE' IN TYPEOF(fa)) OR (
SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds| (
'INTEGRATED_CNC_SCHEMA.VERTEX_LOOP' IN TYPEOF(bnds.bound)))|
NOT (SIZEOF([ 'INTEGRATED_CNC_SCHEMA.CARTESIAN_POINT',
'INTEGRATED_CNC_SCHEMA.DEGENERATE_PCURVE',
'INTEGRATED_CNC_SCHEMA.POINT_ON_CURVE',
'INTEGRATED_CNC_SCHEMA.POINT_ON_SURFACE' ] * TYPEOF(vlp_fbnds
\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) = 1))
) = 0)))) = 0))) = 0))) = 0;
END_ENTITY; -- 10303-509: aic_manifold_surface
ENTITY mapped_item
SUBTYPE OF (representation_item);
mapping_source : representation_map;
mapping_target : representation_item;
WHERE
WR1: acyclic_mapped_representation(using_representations(SELF), [ SELF
]);
END_ENTITY; -- 10303-43: representation_schema
ENTITY marking
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND ((2 <= SIZEOF(pdr.
used_representation.items)) AND (SIZEOF(pdr.
used_representation.items) <= 6)))) = 1))) = 1;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'marking text'))) = 1))) = 0))) =
0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'special instructions'))) <= 1)))
= 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'font name'))) <= 1))) = 0))) = 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'character height'))) <= 1))) = 0)))
= 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'character spacing'))) <= 1))) = 0))
) = 0;
WR7: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'applied shape')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY material_designation;
name : label;
definitions : SET [1:?] OF characterized_definition;
END_ENTITY; -- 10303-45: material_property_definition_schema
ENTITY material_designation_characterization;
name : label;
description : text;
designation : material_designation;
property : characterized_material_property;
END_ENTITY; -- 10303-45: material_property_definition_schema
ENTITY material_property
SUBTYPE OF (property_definition);
UNIQUE
UR1: SELF\property_definition.name, SELF\property_definition.definition;
WHERE
WR1: ('INTEGRATED_CNC_SCHEMA.CHARACTERIZED_OBJECT' IN TYPEOF(SELF\
property_definition.definition)) OR (SIZEOF(bag_to_set(USEDIN
(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) - QUERY (
temp <* bag_to_set(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'))| (
'INTEGRATED_CNC_SCHEMA.' + 'MATERIAL_PROPERTY_REPRESENTATION'
IN TYPEOF(temp)))) = 0);
END_ENTITY; -- 10303-45: material_property_definition_schema
ENTITY material_property_representation
SUBTYPE OF (property_definition_representation);
dependent_environment : data_environment;
END_ENTITY; -- 10303-45: material_property_representation_schema
ENTITY measure_qualification;
name : label;
description : text;
qualified_measure : measure_with_unit;
qualifiers : SET [1:?] OF value_qualifier;
WHERE
WR1: SIZEOF(QUERY (temp <* qualifiers| (
'INTEGRATED_CNC_SCHEMA.PRECISION_QUALIFIER' IN TYPEOF(temp)))
) < 2;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY measure_representation_item
SUBTYPE OF (representation_item, measure_with_unit);
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY measure_with_unit
SUPERTYPE OF (ONEOF(length_measure_with_unit, time_measure_with_unit,
plane_angle_measure_with_unit, solid_angle_measure_with_unit,
ratio_measure_with_unit));
value_component : measure_value;
unit_component : unit;
WHERE
WR1: valid_units(SELF);
END_ENTITY; -- 10303-41: measure_schema
ENTITY milling_type_operation
SUBTYPE OF (machining_operation);
WHERE
WR1: (verify_optional_action_property (SELF, 'overcut length')) AND
(verify_length_measure_action_property (SELF, 'overcut length'));
WR2: ((verify_optional_relating_amr_with_name (SELF, 'approach',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
(verify_related_type_for_amr_with_name (SELF, 'approach',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_APPROACH_RETRACT_STRATEGY']))
);
WR3: ((verify_optional_relating_amr_with_name (SELF, 'retract',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
(verify_related_type_for_amr_with_name (SELF, 'retract',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_APPROACH_RETRACT_STRATEGY']))
);
WR4: ((verify_optional_relating_amr_with_name (SELF, 'machining',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
(verify_related_type_for_amr_with_name (SELF, 'machining',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MILLING_TYPE_STRATEGY']))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY milling_type_strategy
SUBTYPE OF (machining_strategy);
WHERE
WR1: NOT (SELF.description IN ['bidirectional', 'bidirectional contour',
'center milling', 'contour bidirectional', 'contour parallel',
'contour spiral', 'explicit', 'unidirectional']) OR
((verify_optional_action_property (SELF, 'overlap ratio')) AND
(verify_ratio_measure_action_property (SELF, 'overlap ratio')) AND
(verify_optional_action_property (SELF, 'multiple passes')) AND
(verify_enumeration_action_property (SELF, 'multiple passes',
['multiple passes allowed', 'multiple passes not allowed'])) );
WR2: NOT (SELF.description = 'bidirectional') OR
((verify_optional_action_property (SELF, 'feed direction')) AND
(verify_rep_item_for_action_property (SELF, 'feed direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_action_property (SELF, 'stepover direction')) AND
(verify_enumeration_action_property (SELF, 'stepover direction',
['left', 'right'])) AND
(verify_optional_action_property (SELF, 'connection strategy')) AND
(verify_enumeration_action_property (SELF, 'connection strategy',
['straight line', 'lift shift plunge', 'degouge', 'loop back'])) );
WR3: NOT (SELF.description IN ['bidirectional contour',
'contour bidirectional']) OR
((verify_optional_action_property (SELF, 'feed direction')) AND
(verify_rep_item_for_action_property (SELF, 'feed direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_action_property (SELF, 'stepover direction')) AND
(verify_enumeration_action_property (SELF, 'stepover direction',
['left', 'right'])) AND
(verify_optional_action_property (SELF, 'rotation direction')) AND
(verify_enumeration_action_property (SELF, 'rotation direction',
['clockwise', 'counterclockwise'])) AND
(verify_optional_action_property (SELF, 'spiral cutmode')) AND
(verify_enumeration_action_property (SELF, 'spiral cutmode',
['climb', 'conventional'])) );
WR4: NOT (SELF.description IN ['contour parallel', 'contour spiral']) OR
((verify_optional_action_property (SELF, 'rotation direction')) AND
(verify_enumeration_action_property (SELF, 'rotation direction',
['clockwise', 'counterclockwise'])) AND
(verify_optional_action_property (SELF, 'cutmode')) AND
(verify_enumeration_action_property (SELF, 'cutmode',
['climb', 'conventional'])) );
WR5: NOT (SELF.description = 'unidirectional') OR
((verify_optional_action_property (SELF, 'feed direction')) AND
(verify_rep_item_for_action_property (SELF, 'feed direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_action_property (SELF, 'cutmode')) AND
(verify_enumeration_action_property (SELF, 'cutmode',
['climb', 'conventional'])) );
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY modified_geometric_tolerance
SUBTYPE OF (geometric_tolerance);
modifier : limit_condition;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY modified_pattern
SUBTYPE OF (shape_aspect);
WHERE
WR1: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.REPLICATE_FEATURE',
'INTEGRATED_CNC_SCHEMA.INSTANCED_FEATURE' ] * TYPEOF(fcr.
related_shape_aspect.of_shape.definition)) >= 1) AND (fcr.
description = 'base shape'))) = 1;
WR2: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.CIRCULAR_PATTERN',
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_PATTERN' ] * TYPEOF(fcr.
related_shape_aspect.of_shape.definition)) = 1) AND (fcr.
description = 'base pattern'))) = 1;
WR3: SIZEOF(QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (SIZEOF(QUERY (msar <* USEDIN(sar.
related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| ((SIZEOF([
'INTEGRATED_CNC_SCHEMA.PATTERN_OFFSET_MEMBERSHIP',
'INTEGRATED_CNC_SCHEMA.PATTERN_OMIT_MEMBERSHIP' ] * TYPEOF(
sar)) = 1) AND (sar.description = 'modified pattern')) AND (
sar :<>: msar))) >= 1))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY multiple_arity_boolean_expression
ABSTRACT SUPERTYPE OF (ONEOF (and_expression, or_expression))
SUBTYPE OF (boolean_expression, multiple_arity_generic_expression);
SELF\multiple_arity_generic_expression.operands :
LIST [2:?] OF boolean_expression;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY multiple_arity_generic_expression
ABSTRACT SUPERTYPE
SUBTYPE OF (generic_expression);
operands : LIST [2:?] OF generic_expression;
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY name_attribute;
attribute_value : label;
named_item : name_attribute_select;
END_ENTITY; -- 10303-41: basic_attribute_schema
ENTITY named_unit
SUPERTYPE OF (ONEOF(si_unit, conversion_based_unit,
context_dependent_unit) ANDOR ONEOF(length_unit, time_unit,
plane_angle_unit, solid_angle_unit, ratio_unit));
dimensions : dimensional_exponents;
END_ENTITY; -- 10303-41: measure_schema
ENTITY ngon_closed_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT ((SIZEOF(impl_rep.
used_representation.items) >= 3) AND (SIZEOF(impl_rep.
used_representation.items) <= 4)))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.
used_representation.items| ((((srwp_i.name = 'orientation')
OR (srwp_i.name = 'number of sides')) OR (srwp_i.name =
'circumscribed diameter')) OR (srwp_i.name = 'corner radius')
) OR (srwp_i.name = 'diameter across flats'))) = SIZEOF(pdr.
used_representation.items)))) = 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.COUNT_MEASURE' IN TYPEOF(it
\measure_with_unit.value_component))) AND (it.name =
'number of sides'))) = 1))) = 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name IN [ 'circumscribed diameter',
'diameter across flats' ]))) = 1))) = 0))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'corner radius'))) <= 1))) = 0))) =
0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY ngon_shape_representation
SUBTYPE OF (shape_representation_with_parameters);
WHERE
WR1: SIZEOF(SELF.items) = 5;
WR2: SIZEOF(QUERY (it <* SELF.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1;
WR3: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'length'))) = 1;
WR4: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'corner radius'))) = 1;
WR5: SIZEOF(QUERY (it <* SELF.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name IN [ 'circumscribed diameter',
'diameter across flats' ]))) = 1;
WR6: SIZEOF(QUERY (it <* SELF.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.COUNT_MEASURE' IN TYPEOF(it
\measure_with_unit.value_component))) AND (it.name =
'number of sides'))) = 1;
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY not_expression
SUBTYPE OF (unary_Boolean_expression);
SELF\unary_generic_expression.operand: boolean_expression;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY numeric_expression
ABSTRACT SUPERTYPE OF (ONEOF(simple_numeric_expression))
SUBTYPE OF (expression);
DERIVE
is_int : BOOLEAN := is_int_expr(SELF);
sql_mappable : BOOLEAN := is_SQL_mappable(SELF);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY numeric_variable
SUPERTYPE OF (ONEOF(int_numeric_variable, real_numeric_variable))
SUBTYPE OF (simple_numeric_expression, variable);
WHERE
WR1: ('INTEGRATED_CNC_SCHEMA.INT_NUMERIC_VARIABLE' IN TYPEOF(SELF)) OR
('INTEGRATED_CNC_SCHEMA.REAL_NUMERIC_VARIABLE' IN TYPEOF(SELF
));
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY object_role;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: basic_attribute_schema
ENTITY offset_curve_3d
SUBTYPE OF (curve);
basis_curve : curve;
distance : length_measure;
self_intersect : LOGICAL;
ref_direction : direction;
WHERE
WR1: (basis_curve.dim = 3) AND (ref_direction.dim = 3);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY offset_surface
SUBTYPE OF (surface);
basis_surface : surface;
distance : length_measure;
self_intersect : LOGICAL;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY open_path_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PATH_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)))) = 1))) = 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF
(pdr.used_representation)) AND (pdr.used_representation.name
= 'profile limit'))) <= 1))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY open_shell
SUBTYPE OF (connected_face_set);
END_ENTITY; -- 10303-42: topology_schema
ENTITY or_expression
SUBTYPE OF (multiple_arity_Boolean_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY ordinal_date
SUBTYPE OF (date);
day_component : day_in_year_number;
WHERE
WR1: NOT leap_year(SELF.year_component) AND ((1 <= day_component) AND (
day_component <= 365)) OR leap_year(SELF.year_component) AND
((1 <= day_component) AND (day_component <= 366));
END_ENTITY; -- 10303-41: date_time_schema
ENTITY organization;
id : OPTIONAL identifier;
name : label;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY organizational_address
SUBTYPE OF (address);
organizations : SET [1:?] OF organization;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY oriented_closed_shell
SUBTYPE OF (closed_shell);
closed_shell_element : closed_shell;
orientation : BOOLEAN;
DERIVE
SELF\connected_face_set.cfs_faces : SET [1:?] OF face :=
conditional_reverse(SELF.orientation,
SELF.closed_shell_element.cfs_faces);
WHERE
WR1: NOT ('INTEGRATED_CNC_SCHEMA.ORIENTED_CLOSED_SHELL' IN TYPEOF(SELF.
closed_shell_element));
END_ENTITY; -- 10303-42: topology_schema
ENTITY oriented_edge
SUBTYPE OF (edge);
edge_element : edge;
orientation : BOOLEAN;
DERIVE
SELF\edge.edge_start : vertex := boolean_choose(SELF.orientation,
SELF.edge_element.edge_start,
SELF.edge_element.edge_end);
SELF\edge.edge_end : vertex := boolean_choose(SELF.orientation,
SELF.edge_element.edge_end,
SELF.edge_element.edge_start);
WHERE
WR1: NOT ('INTEGRATED_CNC_SCHEMA.ORIENTED_EDGE' IN TYPEOF(SELF.
edge_element));
END_ENTITY; -- 10303-42: topology_schema
ENTITY oriented_face
SUBTYPE OF (face);
face_element : face;
orientation : BOOLEAN;
DERIVE
SELF\face.bounds : SET [1:?] OF face_bound := conditional_reverse(
SELF.orientation, SELF.face_element.bounds);
WHERE
WR1: NOT ('INTEGRATED_CNC_SCHEMA.ORIENTED_FACE' IN TYPEOF(SELF.
face_element));
END_ENTITY; -- 10303-42: topology_schema
ENTITY oriented_open_shell
SUBTYPE OF (open_shell);
open_shell_element : open_shell;
orientation : BOOLEAN;
DERIVE
SELF\connected_face_set.cfs_faces : SET [1:?] OF face :=
conditional_reverse(SELF.orientation,
SELF.open_shell_element.cfs_faces);
WHERE
WR1: NOT ('INTEGRATED_CNC_SCHEMA.ORIENTED_OPEN_SHELL' IN TYPEOF(SELF.
open_shell_element));
END_ENTITY; -- 10303-42: topology_schema
ENTITY oriented_path
SUBTYPE OF (path);
path_element : path;
orientation : BOOLEAN;
DERIVE
SELF\path.edge_list : LIST [1:?] OF UNIQUE oriented_edge :=
conditional_reverse(SELF.orientation,
SELF.path_element.edge_list);
WHERE
WR1: NOT ('INTEGRATED_CNC_SCHEMA.ORIENTED_PATH' IN TYPEOF(SELF.
path_element));
END_ENTITY; -- 10303-42: topology_schema
ENTITY outer_boundary_curve
SUBTYPE OF (boundary_curve);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY outer_round
SUBTYPE OF (feature_definition);
WHERE
WR1: NOT (SELF\characterized_object.description = 'outer diameter') OR
(SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.
used_representation.items) = 3))) = 1))) = 1);
WR2: NOT (SELF\characterized_object.description =
'outer diameter to shoulder') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| (SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND ((2 <= SIZEOF(pdr.
used_representation.items)) AND (SIZEOF(pdr.
used_representation.items) <= 3)))) = 1))) = 1);
WR3: SELF\characterized_object.description IN [ 'outer diameter',
'outer diameter to shoulder' ];
WR4: NOT (SELF\characterized_object.description = 'outer diameter') OR
(SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'length'))) = 1))) = 0))) = 0);
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'diameter'))) = 1))) = 0))) = 0;
WR6: NOT (SELF\characterized_object.description =
'outer diameter to shoulder') OR (SIZEOF(QUERY (pds <* QUERY
(pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'v-shape boundary occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.VEE_PROFILE' IN TYPEOF
(sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.
description = 'v-shape'))) = 1))) = 1))) = 0);
WR7: NOT (SELF\characterized_object.description = 'outer diameter') OR
(SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'reduced size occurrence') AND (SIZEOF(QUERY (
sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'taper usage')
AND ('INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (('INTEGRATED_CNC_SCHEMA.TAPER' IN TYPEOF(
sdr.relating_shape_aspect)) AND (
'INTEGRATED_CNC_SCHEMA.OUTER_ROUND' IN TYPEOF(sdr.
related_shape_aspect.of_shape.definition))) AND (sdr.name =
'reduced size'))) = 1))) <= 1))) = 0);
WR8: NOT (SELF\characterized_object.description =
'outer diameter to shoulder') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'length'))) <= 1))) = 0))) = 0);
WR9: NOT (SELF\characterized_object.description =
'outer diameter to shoulder') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'feature length'))) <= 1))) = 0))) =
0);
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY outside_profile
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(pdr.
used_representation.items) = 1))) = 1))) = 1;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description IN [ 'boundary occurrence',
'non-planar boundary occurrence',
'partial circular boundary occurrence',
'closed circular boundary occurrence',
'open rectangular boundary occurrence',
'closed rectangular boundary occurrence' ]))) = 1))) = 0;
WR3: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'boundary occurrence'))) = 1))) = 0) OR (SIZEOF
(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.' + 'SHAPE_DEFINING_RELATIONSHIP'
IN TYPEOF(sar)))| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.CIRCULAR_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.NGON_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.CLOSED_PATH_PROFILE',
'INTEGRATED_CNC_SCHEMA.SQUARE_U_PROFILE',
'INTEGRATED_CNC_SCHEMA.PARTIAL_CIRCULAR_PROFILE',
'INTEGRATED_CNC_SCHEMA.ROUNDED_U_PROFILE',
'INTEGRATED_CNC_SCHEMA.LINEAR_PROFILE',
'INTEGRATED_CNC_SCHEMA.VEE_PROFILE',
'INTEGRATED_CNC_SCHEMA.TEE_PROFILE',
'INTEGRATED_CNC_SCHEMA.OPEN_PATH_PROFILE' ] * TYPEOF(sdr.
relating_shape_aspect)) = 1) AND (sdr.relating_shape_aspect.
description = 'outside boundary'))) = 1))) = 1))) = 0);
WR4: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description IN [ 'complex boundary occurrence',
'partial circular boundary occurrence',
'closed circular boundary occurrence',
'open rectangular boundary occurrence',
'closed rectangular boundary occurrence' ]))) = 1))) = 0) OR
(SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| NOT (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'profile floor usage') AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.PROFILE_FLOOR' IN
TYPEOF(sdr.relating_shape_aspect)) AND (
'INTEGRATED_CNC_SCHEMA.OUTSIDE_PROFILE' IN TYPEOF(sdr.
related_shape_aspect.of_shape.definition)))) = 1))) = 0))) =
0);
WR5: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description IN [ 'outside boundary',
'complex boundary occurrence',
'partial circular boundary occurrence',
'closed circular boundary occurrence',
'open rectangular boundary occurrence',
'closed rectangular boundary occurrence' ]))) = 1))) = 0) OR
(SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'path feature component usage') AND ('INTEGRATED_CNC_SCHEMA.'
+ 'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| ((SIZEOF([
'INTEGRATED_CNC_SCHEMA.PATH_FEATURE_COMPONENT' ] * TYPEOF(
sdr.relating_shape_aspect)) = 1) AND (sdr.name =
'profile swept shape')) AND (sdr.relating_shape_aspect.
description = 'linear'))) = 1))) = 1))) = 0);
WR6: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'complex boundary occurrence'))) = 1))) = 0) OR
(SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.CIRCULAR_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.NGON_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.CLOSED_PATH_PROFILE',
'INTEGRATED_CNC_SCHEMA.SQUARE_U_PROFILE',
'INTEGRATED_CNC_SCHEMA.PARTIAL_CIRCULAR_PROFILE',
'INTEGRATED_CNC_SCHEMA.ROUNDED_U_PROFILE',
'INTEGRATED_CNC_SCHEMA.VEE_PROFILE',
'INTEGRATED_CNC_SCHEMA.TEE_PROFILE',
'INTEGRATED_CNC_SCHEMA.LINEAR_PROFILE',
'INTEGRATED_CNC_SCHEMA.OPEN_PATH_PROFILE' ] * TYPEOF(sdr.
relating_shape_aspect)) = 1))) = 1))) = 1))) = 0);
WR7: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'partial circular boundary occurrence'))) = 1))
) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (
'INTEGRATED_CNC_SCHEMA.PARTIAL_CIRCULAR_PROFILE' IN TYPEOF(
sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR8: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'closed circular boundary occurrence'))) = 1)))
= 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (
'INTEGRATED_CNC_SCHEMA.CIRCULAR_CLOSED_PROFILE' IN TYPEOF(sdr
.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR9: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'open rectangular boundary occurrence'))) = 1))
) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.SQUARE_U_PROFILE' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR10: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'closed rectangular boundary occurrence'))) = 1
))) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_CLOSED_PROFILE' IN TYPEOF(
sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR11: (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description IN [ 'boundary occurrence',
'complex boundary occurrence',
'partial circular boundary occurrence',
'closed circular boundary occurrence',
'open rectangular boundary occurrence',
'closed rectangular boundary occurrence' ]))) = 1))) = 0) OR
(SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'removal direction'))) = 1))) = 0);
WR12: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF
)| ('INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'maximum feature limit'))) >= 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY parabola
SUBTYPE OF (conic);
focal_dist : length_measure;
WHERE
WR1: focal_dist <> 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY parallel_offset
SUBTYPE OF (derived_shape_aspect);
offset : measure_with_unit;
WHERE
WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY parallelism_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
WR1: SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system)
< 3;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY parametric_representation_context
SUBTYPE OF (representation_context);
END_ENTITY; -- 10303-43: representation_schema
ENTITY partial_circular_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 3))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'sweep angle'))) = 1))) = 0))
) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF
(pdr.used_representation)) AND (pdr.used_representation.name
= 'profile limit'))) <= 1))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY path
SUPERTYPE OF (ONEOF(edge_loop, oriented_path))
SUBTYPE OF (topological_representation_item);
edge_list : LIST [1:?] OF UNIQUE oriented_edge;
WHERE
WR1: path_head_to_tail(SELF);
END_ENTITY; -- 10303-42: topology_schema
ENTITY path_feature_component
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SELF.description IN [ 'partial circular', 'complete circular',
'linear', 'complex' ];
WR3: NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0);
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
WR5: NOT (SELF.description = 'partial circular') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 3))) = 0))) = 0);
WR6: NOT (SELF.description = 'partial circular') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
WR7: NOT (SELF.description = 'partial circular') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'sweep angle'))) = 1))) = 0))
) = 0);
WR8: NOT (SELF.description = 'complete circular') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 2))) = 0))) = 0);
WR9: NOT (SELF.description = 'complete circular') OR (SIZEOF(QUERY (pd
<* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
WR10: NOT (SELF.description = 'linear') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 2))) = 0))) = 0);
WR11: NOT (SELF.description = 'linear') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'distance'))) = 1))) = 0))) = 0);
WR12: NOT (SELF.description = 'linear') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR13: NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN
(SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ((
'INTEGRATED_CNC_SCHEMA.PATH_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)) AND (pdr.used_representation.name =
'sweep path')) AND (SIZEOF(QUERY (srwp_i <* pdr.
used_representation.items| (srwp_i.name = 'profile shape')))
= 1))) = 1))) = 0);
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY path_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(SELF.items) >= 1;
WR2: SIZEOF(QUERY (i <* SELF.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE',
'INTEGRATED_CNC_SCHEMA.EDGE_CURVE',
'INTEGRATED_CNC_SCHEMA.PATH' ] * TYPEOF(i)) = 1))) >= 1;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY pattern_offset_membership
SUBTYPE OF (feature_component_relationship);
WHERE
WR1: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.
relating_shape_aspect,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)) AND (sar :<>: SELF))| (SIZEOF(QUERY (pdr <*
QUERY (pd <* USEDIN(fcr.related_shape_aspect.of_shape,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| (SIZEOF([ 'INTEGRATED_CNC_SCHEMA.CIRCULAR_PATTERN',
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_PATTERN' ] * TYPEOF(pdr.
definition)) = 1))) = 0))) = 0;
WR2: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.
related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)) AND (sar :<>: SELF))| (fcr.description =
'modified pattern') AND (
'INTEGRATED_CNC_SCHEMA.MODIFIED_PATTERN' IN TYPEOF(fcr.
relating_shape_aspect)))) >= 1;
WR3: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.
related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)) AND (sar :<>: SELF))| (
'INTEGRATED_CNC_SCHEMA.MODIFIED_PATTERN' IN TYPEOF(fcr.
relating_shape_aspect)) AND NOT (SIZEOF(QUERY (modfcr <*
QUERY (modsar <* USEDIN(fcr.relating_shape_aspect,
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.CIRCULAR_PATTERN',
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_PATTERN' ] * TYPEOF(modsar
.related_shape_aspect.of_shape.definition)) = 1) AND (modsar
:<>: fcr))| NOT (modfcr.related_shape_aspect.of_shape.
definition :=: SELF.relating_shape_aspect.of_shape.definition
))) = 0))) = 0;
WR4: NOT ('INTEGRATED_CNC_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) = 2))) = 0)
;
WR5: NOT ('INTEGRATED_CNC_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) = 1))) = 0)
;
WR6: NOT ('INTEGRATED_CNC_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| NOT (SIZEOF
(pdr.used_representation.items) = 2))) = 0))) = 0);
WR7: NOT ('INTEGRATED_CNC_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.COUNT_MEASURE' IN TYPEOF(it
\measure_with_unit.value_component))) AND (it.name =
'index number'))) = 1))) = 0))) = 0);
WR8: NOT ('INTEGRATED_CNC_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' IN
TYPEOF(it)) AND (it.name = 'offset'))) = 1))) = 0))) = 0);
WR9: NOT ('INTEGRATED_CNC_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 3))) = 0))) = 0);
WR10: NOT ('INTEGRATED_CNC_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.COUNT_MEASURE' IN TYPEOF(it
\measure_with_unit.value_component))) AND (it.name =
'row index'))) = 1))) = 0))) = 0);
WR11: NOT ('INTEGRATED_CNC_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.COUNT_MEASURE' IN TYPEOF(it
\measure_with_unit.value_component))) AND (it.name =
'column index'))) = 1))) = 0))) = 0);
WR12: NOT ('INTEGRATED_CNC_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(it
)) AND (it.name = 'offset distance'))) = 1))) = 0))) = 0);
WR13: NOT ('INTEGRATED_CNC_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'offset direction'))) = 1))) = 0);
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY pattern_omit_membership
SUBTYPE OF (feature_component_relationship);
WHERE
WR1: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.
relating_shape_aspect,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)) AND (sar :<>: SELF))| (SIZEOF(QUERY (pdr <*
QUERY (pd <* USEDIN(fcr.related_shape_aspect.of_shape,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| (SIZEOF([ 'INTEGRATED_CNC_SCHEMA.CIRCULAR_PATTERN',
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_PATTERN' ] * TYPEOF(pdr.
definition)) = 1))) = 0))) = 0;
WR2: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.
related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)) AND (sar :<>: SELF))| (fcr.description =
'modified pattern') AND (
'INTEGRATED_CNC_SCHEMA.MODIFIED_PATTERN' IN TYPEOF(fcr.
relating_shape_aspect)))) >= 1;
WR3: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF.
related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)) AND (sar :<>: SELF))| (
'INTEGRATED_CNC_SCHEMA.MODIFIED_PATTERN' IN TYPEOF(fcr.
relating_shape_aspect)) AND NOT (SIZEOF(QUERY (modfcr <*
QUERY (modsar <* USEDIN(fcr.relating_shape_aspect,
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.CIRCULAR_PATTERN',
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_PATTERN' ] * TYPEOF(modsar
.related_shape_aspect.of_shape.definition)) = 1) AND (modsar
:<>: fcr))| NOT (modfcr.related_shape_aspect.of_shape.
definition :=: SELF.relating_shape_aspect.of_shape.definition
))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) = 1))) = 0;
WR5: NOT ('INTEGRATED_CNC_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| NOT (SIZEOF
(pdr.used_representation.items) = 1))) = 0))) = 0);
WR6: NOT ('INTEGRATED_CNC_SCHEMA.CIRCULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.COUNT_MEASURE' IN TYPEOF(it
\measure_with_unit.value_component))) AND (it.name =
'index number'))) = 1))) = 0))) = 0);
WR7: NOT ('INTEGRATED_CNC_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| NOT (SIZEOF
(pdr.used_representation.items) = 2))) = 0))) = 0);
WR8: NOT ('INTEGRATED_CNC_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.COUNT_MEASURE' IN TYPEOF(it
\measure_with_unit.value_component))) AND (it.name =
'row index'))) = 1))) = 0))) = 0);
WR9: NOT ('INTEGRATED_CNC_SCHEMA.RECTANGULAR_PATTERN' IN TYPEOF(SELF.
relating_shape_aspect.of_shape.definition)) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF.related_shape_aspect,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.COUNT_MEASURE' IN TYPEOF(it
\measure_with_unit.value_component))) AND (it.name =
'column index'))) = 1))) = 0))) = 0);
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY pcurve
SUBTYPE OF (curve);
basis_surface : surface;
reference_to_curve : definitional_representation;
WHERE
WR1: SIZEOF(reference_to_curve\representation.items) = 1;
WR2: 'INTEGRATED_CNC_SCHEMA.CURVE' IN TYPEOF(reference_to_curve\
representation.items[1]);
WR3: reference_to_curve\representation.items[1]\
geometric_representation_item.dim = 2;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY perpendicular_to
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY perpendicularity_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
WR1: SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system)
<= 3;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY person;
id : identifier;
last_name : OPTIONAL label;
first_name : OPTIONAL label;
middle_names : OPTIONAL LIST [1:?] OF label;
prefix_titles : OPTIONAL LIST [1:?] OF label;
suffix_titles : OPTIONAL LIST [1:?] OF label;
WHERE
WR1: EXISTS(last_name) OR EXISTS(first_name);
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY person_and_organization;
the_person : person;
the_organization : organization;
DERIVE
name : label := get_name_value(SELF);
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY person_and_organization_assignment
ABSTRACT SUPERTYPE;
assigned_person_and_organization : person_and_organization;
role : person_and_organization_role;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY person_and_organization_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY personal_address
SUBTYPE OF (address);
people : SET [1:?] OF person;
description : OPTIONAL text;
END_ENTITY; -- 10303-41: person_organization_schema
ENTITY placed_datum_target_feature
SUBTYPE OF (datum_target);
WHERE
WR1: SELF.description IN [ 'point', 'line', 'rectangle', 'circle' ];
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (dtm_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* dtm_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
WR4: NOT (SELF.description = 'point') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (dtm_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(dtm_rep.
used_representation.items) = 1))) = 0))) = 0);
WR5: NOT (SELF.description IN [ 'line', 'circle' ]) OR (SIZEOF(QUERY (
pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (dtm_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(dtm_rep.
used_representation.items) = 2))) = 0))) = 0);
WR6: NOT (SELF.description = 'rectangle') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (dtm_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(dtm_rep.
used_representation.items) = 3))) = 0))) = 0);
WR7: NOT (SELF.description = 'circle') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (dtm_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* dtm_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'target diameter'))) = 1))) = 0))) =
0);
WR8: NOT (SELF.description = 'line') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (dtm_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* dtm_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'target length'))) = 1))) = 0))) = 0
);
WR9: NOT (SELF.description = 'rectangle') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (dtm_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* dtm_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'target length'))) = 1))) = 0))) = 0
);
WR10: NOT (SELF.description = 'rectangle') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (dtm_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* dtm_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'target width'))) = 1))) = 0))) = 0)
;
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY placement
SUPERTYPE OF (ONEOF(axis1_placement, axis2_placement_2d,
axis2_placement_3d))
SUBTYPE OF (geometric_representation_item);
location : cartesian_point;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY planar_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(SELF.items) = 1;
WR2: SIZEOF(QUERY (it <* SELF.items| ('INTEGRATED_CNC_SCHEMA.PLANE' IN
TYPEOF(it)))) = 1;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY plane
SUBTYPE OF (elementary_surface);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY plane_angle_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY plane_angle_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\
named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\
named_unit.dimensions.time_exponent = 0.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 0.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY plane_milling_operation
SUBTYPE OF (milling_type_operation);
WHERE
WR1: (SELF.description IN ['roughing','finishing']);
WR2: (verify_optional_action_property (SELF, 'axial cutting depth')) AND
(verify_length_measure_action_property (SELF, 'axial cutting depth'));
WR3: (verify_optional_action_property (SELF, 'allowance bottom')) AND
(verify_length_measure_action_property (SELF, 'allowance bottom'));
WR4: NOT (SELF.description = 'roughing') OR
(verify_required_action_property (SELF, 'allowance bottom'));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY plus_minus_tolerance;
range : tolerance_method_definition;
toleranced_dimension : dimensional_characteristic;
UNIQUE
UR1: toleranced_dimension;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY pocket
SUBTYPE OF (feature_definition);
WHERE
WR1: SELF\characterized_object.description IN [ 'closed rectangular',
'open rectangular', 'complex', 'circular cutout',
'complex cutout', 'recess' ];
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'pocket depth occurrence') AND (SIZEOF(QUERY (
sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| ((sar.description =
'path feature component usage') AND (sar.name =
'pocket depth')) AND (
'INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF
(sar)))| ('INTEGRATED_CNC_SCHEMA.PATH_FEATURE_COMPONENT' IN
TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'linear'))) = 1))) = 1)))
= 0;
WR3: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND ((1 <= SIZEOF(pdr.
used_representation.items)) AND (SIZEOF(pdr.
used_representation.items) <= 2)))) = 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.
used_representation.items| (srwp_i.name = 'orientation') OR (
srwp_i.name = 'fillet radius'))) = SIZEOF(pdr.
used_representation.items)))) = 1))) = 1;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'fillet radius'))) <= 1))) = 0))) =
0;
WR7: NOT (SELF\characterized_object.description IN [ 'complex',
'non-circular cutout', 'recess' ]) OR (SIZEOF(QUERY (pds <*
QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'boundary occurrence') AND (SIZEOF(QUERY (sdr
<* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.CIRCULAR_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.NGON_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.CLOSED_PATH_PROFILE',
'INTEGRATED_CNC_SCHEMA.SQUARE_U_PROFILE',
'INTEGRATED_CNC_SCHEMA.PARTIAL_CIRCULAR_PROFILE',
'INTEGRATED_CNC_SCHEMA.ROUNDED_U_PROFILE',
'INTEGRATED_CNC_SCHEMA.VEE_PROFILE',
'INTEGRATED_CNC_SCHEMA.TEE_PROFILE',
'INTEGRATED_CNC_SCHEMA.OPEN_PATH_PROFILE' ] * TYPEOF(sdr.
relating_shape_aspect)) = 1))) = 1))) = 1))) = 0);
WR8: NOT (SELF\characterized_object.description = 'closed rectangular')
OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'closed boundary occurrence') AND (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_CLOSED_PROFILE' IN TYPEOF(
sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR9: NOT (SELF\characterized_object.description = 'open rectangular')
OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'open boundary occurrence') AND (SIZEOF(QUERY (
sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.SQUARE_U_PROFILE' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR10: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'bottom condition occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'pocket bottom usage') AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.POCKET_BOTTOM' IN
TYPEOF(sdr.relating_shape_aspect)) AND (
'INTEGRATED_CNC_SCHEMA.POCKET' IN TYPEOF(sdr.
related_shape_aspect.of_shape.definition)))) = 1))) = 1))) =
0;
WR11: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'change in boundary occurrence') AND (SIZEOF(
QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (sar.description = 'taper usage')
AND ('INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| (('INTEGRATED_CNC_SCHEMA.TAPER' IN TYPEOF(
fcr.relating_shape_aspect)) AND (
'INTEGRATED_CNC_SCHEMA.POCKET' IN TYPEOF(fcr.
related_shape_aspect.of_shape.definition))) AND (fcr.
related_shape_aspect.description IN [ 'angle taper',
'directed taper' ]))) = 1))) <= 1))) = 0;
WR12: NOT (SELF\characterized_object.description = 'circular cutout')
OR (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'enclosed boundary occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (
'INTEGRATED_CNC_SCHEMA.CIRCULAR_CLOSED_PROFILE' IN TYPEOF(sdr
.relating_shape_aspect)))) = 1))) = 1))) = 0);
WR13: NOT (SELF\characterized_object.description IN [ 'circular cutout'
, 'complex cutout' ]) OR (SIZEOF(QUERY (pds <* QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'bottom condition occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'pocket bottom usage') AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| (('INTEGRATED_CNC_SCHEMA.POCKET_BOTTOM' IN
TYPEOF(sdr.relating_shape_aspect)) AND (
'INTEGRATED_CNC_SCHEMA.POCKET' IN TYPEOF(sdr.
related_shape_aspect.of_shape.definition))) AND (sdr.
relating_shape_aspect.description = 'through'))) = 1))) = 1))
) = 0);
WR14: NOT (SELF\characterized_object.description = 'recess') OR (SIZEOF
(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'bottom condition occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'pocket bottom usage') AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| (('INTEGRATED_CNC_SCHEMA.POCKET_BOTTOM' IN
TYPEOF(sdr.relating_shape_aspect)) AND (
'INTEGRATED_CNC_SCHEMA.POCKET' IN TYPEOF(sdr.
related_shape_aspect.of_shape.definition))) AND (sdr.
relating_shape_aspect.description IN [ 'planar', 'complex' ])
)) = 1))) = 1))) = 0);
WR15: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF
)| ('INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'maximum feature limit'))) >= 0;
WR16: NOT (SELF\characterized_object.description IN [
'closed rectangular', 'open rectangular', 'complex', 'recess'
]) OR (SIZEOF(QUERY (pds <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(
pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| ((
'INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)
) AND (csa.name = 'uncut area')) AND (SIZEOF(QUERY (sar <*
csa.component_relationships| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)) AND (SIZEOF([ 'INTEGRATED_CNC_SCHEMA.BOSS',
'INTEGRATED_CNC_SCHEMA.PROTRUSION' ] * TYPEOF(sar.
related_shape_aspect)) = 1))) = 1))) <= 1))) = 1);
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY pocket_bottom
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SELF.description IN [ 'planar', 'complex', 'through' ];
WR3: NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'floor normal'))) = 1))) = 0);
WR4: NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.LOCATION_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'floor location'))) = 1))) = 0);
WR5: NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)) AND (pdr.used_representation.name =
'floor face'))) = 1))) = 0);
WR6: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0);
WR7: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) <= 1))) = 0))) = 0);
WR8: NOT (SELF.description = 'through') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 0))) = 0);
WR9: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'radius'))) <= 1))) = 0))) = 0);
WR10: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (sar.description =
'pocket bottom usage') AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| ((fcr.related_shape_aspect.description =
'bottom condition occurrence') AND (
'INTEGRATED_CNC_SCHEMA.POCKET' IN TYPEOF(fcr.
related_shape_aspect.of_shape.definition))) AND (
'INTEGRATED_CNC_SCHEMA.POCKET_BOTTOM' IN TYPEOF(fcr.
relating_shape_aspect)))) >= 1;
WR11: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(
QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (sar.description =
'pocket bottom usage') AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| (fcr.related_shape_aspect.description =
'bottom condition occurrence') AND (fcr.related_shape_aspect.
name IN [ 'pocket depth start', 'pocket depth end' ]))) = 0);
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY point
SUPERTYPE OF (ONEOF(cartesian_point, point_on_curve, point_on_surface,
degenerate_pcurve))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY point_on_curve
SUBTYPE OF (point);
basis_curve : curve;
point_parameter : parameter_value;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY point_on_surface
SUBTYPE OF (point);
basis_surface : surface;
point_parameter_u : parameter_value;
point_parameter_v : parameter_value;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY polyline
SUBTYPE OF (bounded_curve);
points : LIST [2:?] OF cartesian_point;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY position_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
WR1: NOT ('INTEGRATED_CNC_SCHEMA.' +
'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF))
OR (SIZEOF(SELF\geometric_tolerance_with_datum_reference.
datum_system) <= 3);
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY precision_qualifier;
precision_value : INTEGER;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY process_product_association;
name : label;
description : text;
defined_product : characterized_product_definition;
process : product_definition_process;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY process_property_association;
name : label;
description : text;
process : property_process;
property_or_shape : property_or_shape_select;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY product;
id : identifier;
name : label;
description : OPTIONAL text;
frame_of_reference : SET [1:?] OF product_context;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_category;
name : label;
description : OPTIONAL text;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_category_relationship;
name : label;
description : OPTIONAL text;
category : product_category;
sub_category : product_category;
WHERE
WR1: acyclic_product_category_relationship(SELF, [ SELF.sub_category ])
;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_context
SUBTYPE OF (application_context_element);
discipline_type : label;
END_ENTITY; -- 10303-41: application_context_schema
ENTITY product_definition;
id : identifier;
description : OPTIONAL text;
formation : product_definition_formation;
frame_of_reference : product_definition_context;
DERIVE
name : label := get_name_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_definition_context
SUBTYPE OF (application_context_element);
life_cycle_stage : label;
END_ENTITY; -- 10303-41: application_context_schema
ENTITY product_definition_formation;
id : identifier;
description : OPTIONAL text;
of_product : product;
UNIQUE
UR1: id, of_product;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_definition_process
SUBTYPE OF (action);
identification : identifier;
INVERSE
product_definitions : SET [1:?] OF process_product_association FOR
process;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY product_definition_relationship;
id : identifier;
name : label;
description : OPTIONAL text;
relating_product_definition : product_definition;
related_product_definition : product_definition;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_definition_shape
SUBTYPE OF (property_definition);
UNIQUE
UR1: SELF\property_definition.definition;
WHERE
WR1: SIZEOF([ 'INTEGRATED_CNC_SCHEMA.CHARACTERIZED_PRODUCT_DEFINITION',
'INTEGRATED_CNC_SCHEMA.CHARACTERIZED_OBJECT' ] * TYPEOF(SELF
\property_definition.definition)) > 0;
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY product_definition_usage
SUPERTYPE OF (make_from_usage_option)
SUBTYPE OF (product_definition_relationship);
UNIQUE
UR1: SELF\product_definition_relationship.id,
SELF\product_definition_relationship.relating_product_definition,
SELF\product_definition_relationship.related_product_definition;
WHERE
WR1: acyclic_product_definition_relationship(SELF, [ SELF\
product_definition_relationship.related_product_definition ],
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_USAGE');
END_ENTITY; -- 10303-44: product_structure_schema
ENTITY product_definition_with_associated_documents
SUBTYPE OF (product_definition);
documentation_ids : SET [1:?] OF document;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY product_related_product_category
SUBTYPE OF (product_category);
products : SET [1:?] OF product;
END_ENTITY; -- 10303-41: product_definition_schema
ENTITY profile_floor
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SELF.description IN [ 'planar', 'complex', 'through' ];
WR3: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0);
WR4: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 1) AND (SIZEOF(impl_rep.
used_representation.items) <= 2))) = 0))) = 0);
WR5: NOT (SELF.description = 'through') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 0))) = 0);
WR6: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
WR7: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (sar.description =
'profile floor usage') AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.OUTSIDE_PROFILE' IN
TYPEOF(fcr.related_shape_aspect.of_shape.definition)) AND (
'INTEGRATED_CNC_SCHEMA.PROFILE_FLOOR' IN TYPEOF(fcr.
relating_shape_aspect)))) >= 1;
WR8: NOT (SELF.description IN [ 'planar', 'complex' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'shape profile floor orientation')
) AND (it.description IN [ 'shape profile start',
'shape profile end' ]))) = 1))) = 0))) = 0);
WR9: NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)) AND (pdr.used_representation.name =
'floor'))) = 1))) = 1);
WR10: NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF
(pdr.used_representation)) AND (pdr.used_representation.name
= 'floor'))) = 1))) = 1);
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY projected_zone_definition
SUBTYPE OF (tolerance_zone_definition);
projection_end : shape_aspect;
projected_length : measure_with_unit;
WHERE
WR1: ('NUMBER' IN TYPEOF(projected_length\measure_with_unit.
value_component)) AND (projected_length\measure_with_unit.
value_component > 0.0);
WR2: derive_dimensional_exponents(projected_length\measure_with_unit.
unit_component) = dimensional_exponents(1, 0, 0, 0, 0, 0, 0);
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY property_definition;
name : label;
description : OPTIONAL text;
definition : characterized_definition;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY property_definition_representation;
definition : represented_definition;
used_representation : representation;
DERIVE
description : text := get_description_value(SELF);
name : label := get_name_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY property_process
SUBTYPE OF (action);
identification : identifier;
INVERSE
properties : SET [1:?] OF process_property_association FOR process;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY protrusion
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'shape volume occurrence') AND (SIZEOF(QUERY (
sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'volume shape usage') AND (
'INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF
(sar)))| (sdr.relating_shape_aspect.description =
'volume shape'))) = 1))) = 1))) = 0;
WR3: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| ('INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'maximum feature limit'))) >= 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY qualified_representation_item
SUBTYPE OF (representation_item);
qualifiers : SET [1:?] OF value_qualifier;
WHERE
WR1: SIZEOF(QUERY (temp <* qualifiers| (
'INTEGRATED_CNC_SCHEMA.PRECISION_QUALIFIER' IN TYPEOF(temp)))
) < 2;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY qualitative_uncertainty
SUBTYPE OF (uncertainty_qualifier);
uncertainty_value : text;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY quasi_uniform_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY quasi_uniform_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY ratio_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.RATIO_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY ratio_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\
named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\
named_unit.dimensions.time_exponent = 0.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 0.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY rational_b_spline_curve
SUBTYPE OF (b_spline_curve);
weights_data : LIST [2:?] OF REAL;
DERIVE
weights : ARRAY [0:upper_index_on_control_points] OF REAL :=
list_to_array(weights_data, 0,
upper_index_on_control_points);
WHERE
WR1: SIZEOF(weights_data) = SIZEOF(SELF\b_spline_curve.
control_points_list);
WR2: curve_weights_positive(SELF);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY rational_b_spline_surface
SUBTYPE OF (b_spline_surface);
weights_data : LIST [2:?] OF LIST [2:?] OF REAL;
DERIVE
weights : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF REAL :=
make_array_of_array(weights_data, 0, u_upper, 0, v_upper);
WHERE
WR1: (SIZEOF(weights_data) = SIZEOF(SELF\b_spline_surface.
control_points_list)) AND (SIZEOF(weights_data[1]) = SIZEOF(
SELF\b_spline_surface.control_points_list[1]));
WR2: surface_weights_positive(SELF);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY real_literal
SUBTYPE OF (literal_number);
SELF\literal_number.the_value: REAL;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY real_numeric_variable
SUBTYPE OF (numeric_variable);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY rectangular_closed_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT ((SIZEOF(impl_rep.
used_representation.items) >= 3) AND (SIZEOF(impl_rep.
used_representation.items) <= 4)))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION.DEFINITION')| (SIZEOF(QUERY (pdr <*
USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)) AND (SIZEOF(QUERY (srwp_i
<* pdr.used_representation.items| (((srwp_i.name =
'orientation') OR (srwp_i.name = 'length')) OR (srwp_i.name =
'width')) OR (srwp_i.name = 'corner radius'))) = SIZEOF(pdr.
used_representation.items)))) = 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'width'))) = 1))) = 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'length'))) = 1))) = 0))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'corner radius'))) <= 1))) = 0))) =
0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY rectangular_composite_surface
SUBTYPE OF (bounded_surface);
segments : LIST [1:?] OF LIST [1:?] OF surface_patch;
DERIVE
n_u : INTEGER := SIZEOF(segments);
n_v : INTEGER := SIZEOF(segments[1]);
WHERE
WR1: SIZEOF(QUERY (s <* segments| (n_v <> SIZEOF(s)))) = 0;
WR2: constraints_rectangular_composite_surface(SELF);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY rectangular_pattern
SUBTYPE OF (replicate_feature);
WHERE
WR1: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT' IN
TYPEOF(sdr.related_shape_aspect)))) = 1))) <= 5))) = 0;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'row layout direction'))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'column layout direction'))) = 1))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.' + 'DEFINITION')|
NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 5))) = 0))) = 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.COUNT_MEASURE' IN TYPEOF(it
\measure_with_unit.value_component))) AND (it.name =
'number of rows'))) = 1))) = 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.COUNT_MEASURE' IN TYPEOF(it
\measure_with_unit.value_component))) AND (it.name =
'number of columns'))) = 1))) = 0))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'row spacing'))) = 1))) = 0))) = 0;
WR9: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'column spacing'))) = 1))) = 0))) =
0;
WR10: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY rectangular_trimmed_surface
SUBTYPE OF (bounded_surface);
basis_surface : surface;
u1 : parameter_value;
u2 : parameter_value;
v1 : parameter_value;
v2 : parameter_value;
usense : BOOLEAN;
vsense : BOOLEAN;
WHERE
WR1: u1 <> u2;
WR2: v1 <> v2;
WR3: (('INTEGRATED_CNC_SCHEMA.ELEMENTARY_SURFACE' IN TYPEOF(
basis_surface)) AND NOT ('INTEGRATED_CNC_SCHEMA.PLANE' IN
TYPEOF(basis_surface)) OR (
'INTEGRATED_CNC_SCHEMA.SURFACE_OF_REVOLUTION' IN TYPEOF(
basis_surface))) OR (usense = (u2 > u1));
WR4: (('INTEGRATED_CNC_SCHEMA.SPHERICAL_SURFACE' IN TYPEOF(
basis_surface)) OR ('INTEGRATED_CNC_SCHEMA.TOROIDAL_SURFACE'
IN TYPEOF(basis_surface))) OR (vsense = (v2 > v1));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY referenced_modified_datum
SUBTYPE OF (datum_reference);
modifier : limit_condition;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY removal_volume
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'shape volume occurrence') AND (SIZEOF(QUERY (
sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'volume shape usage') AND ('INTEGRATED_CNC_SCHEMA.' +
'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (sdr.
relating_shape_aspect.description = 'volume shape'))) = 1)))
= 1))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY reparametrised_composite_curve_segment
SUBTYPE OF (composite_curve_segment);
param_length : parameter_value;
WHERE
WR1: param_length > 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY replicate_feature
SUPERTYPE OF (ONEOF(circular_pattern, rectangular_pattern,
feature_pattern))
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR2: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.REPLICATE_FEATURE',
'INTEGRATED_CNC_SCHEMA.INSTANCED_FEATURE' ] * TYPEOF(fcr.
related_shape_aspect)) >= 1) AND (fcr.name = 'pattern basis')
)) = 1;
WR3: SIZEOF(QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| NOT (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))) + SIZEOF(QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| NOT (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY representation;
name : label;
items : SET [1:?] OF representation_item;
context_of_items : representation_context;
DERIVE
id : identifier := get_id_value(SELF);
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY; -- 10303-43: representation_schema
ENTITY representation_context;
context_identifier : identifier;
context_type : text;
INVERSE
representations_in_context : SET [1:?] OF representation FOR
context_of_items;
END_ENTITY; -- 10303-43: representation_schema
ENTITY representation_item;
name : label;
WHERE
WR1: SIZEOF(using_representations(SELF)) > 0;
END_ENTITY; -- 10303-43: representation_schema
ENTITY representation_item_relationship;
name : label;
description : OPTIONAL text;
relating_representation_item : representation_item;
related_representation_item : representation_item;
END_ENTITY; -- 10303-43: representation_schema
ENTITY representation_map;
mapping_origin : representation_item;
mapped_representation : representation;
INVERSE
map_usage : SET [1:?] OF mapped_item FOR mapping_source;
WHERE
WR1: item_in_context(SELF.mapping_origin, SELF.mapped_representation.
context_of_items);
END_ENTITY; -- 10303-43: representation_schema
ENTITY representation_relationship;
name : label;
description : OPTIONAL text;
rep_1 : representation;
rep_2 : representation;
END_ENTITY; -- 10303-43: representation_schema
ENTITY representation_relationship_with_transformation
SUBTYPE OF (representation_relationship);
transformation_operator : transformation;
WHERE
WR1: SELF\representation_relationship.rep_1.context_of_items :<>: SELF\
representation_relationship.rep_2.context_of_items;
END_ENTITY; -- 10303-43: representation_schema
ENTITY requirement_for_action_resource
SUBTYPE OF (action_resource_requirement);
resources : SET [1:?] OF action_resource;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY resource_property;
name : label;
description : text;
resource : characterized_resource_definition;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY resource_property_representation;
name : label;
description : text;
property : resource_property;
representation : representation;
END_ENTITY; -- 10303-49: process_property_representation_schema
ENTITY resource_requirement_type;
name : label;
description : text;
END_ENTITY; -- 10303-49: process_property_schema
ENTITY revolved_profile
SUBTYPE OF (feature_definition);
WHERE
WR1: SELF\characterized_object.description IN [ 'groove', 'flat',
'round', 'open profile' ];
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 2))) = 0))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0;
WR4: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| ('INTEGRATED_CNC_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'removal direction'))) = 1;
WR5: NOT (SELF\characterized_object.description = 'open profile') OR (
SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'outer edge shape occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.OPEN_PATH_PROFILE' IN
TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'outer edge shape'))) = 1
))) = 1))) = 0);
WR6: NOT (SELF\characterized_object.description = 'flat') OR (SIZEOF(
QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'flat edge shape occurrence') AND (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.LINEAR_PROFILE' IN
TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'flat edge shape'))) = 1)
)) = 1))) = 0);
WR7: NOT (SELF\characterized_object.description = 'round') OR (SIZEOF(
QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'rounded edge shape occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (
'INTEGRATED_CNC_SCHEMA.PARTIAL_CIRCULAR_PROFILE' IN TYPEOF(
sdr.relating_shape_aspect)) AND (sdr.relating_shape_aspect.
description = 'rounded edge shape'))) = 1))) = 1))) = 0);
WR8: NOT (SELF\characterized_object.description = 'groove') OR (SIZEOF(
QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'sweep occurrence') AND (SIZEOF(QUERY (sdr <*
QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.SQUARE_U_PROFILE',
'INTEGRATED_CNC_SCHEMA.PARTIAL_CIRCULAR_PROFILE',
'INTEGRATED_CNC_SCHEMA.ROUNDED_U_PROFILE',
'INTEGRATED_CNC_SCHEMA.VEE_PROFILE',
'INTEGRATED_CNC_SCHEMA.TEE_PROFILE',
'INTEGRATED_CNC_SCHEMA.OPEN_PATH_PROFILE' ] * TYPEOF(sdr.
relating_shape_aspect)) = 1) AND (sdr.relating_shape_aspect.
description = 'sweep'))) = 1))) = 1))) = 0);
WR9: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| ('INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'maximum feature limit'))) >= 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY rib_top
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'rib top condition occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'rib top usage')
AND ('INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.RIB_TOP_FLOOR' IN
TYPEOF(sdr.relating_shape_aspect)) AND (
'INTEGRATED_CNC_SCHEMA.RIB_TOP' IN TYPEOF(sdr.
related_shape_aspect.of_shape.definition)))) = 1))) = 1))) =
0;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'removal direction'))) = 1))) = 1;
WR3: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| ('INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'maximum feature limit'))) >= 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY rib_top_floor
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SELF.description IN [ 'planar', 'complex' ];
WR3: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| (sar.description = 'rib top usage')
AND ('INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ((fcr.related_shape_aspect.description =
'rib top condition occurrence') AND (
'INTEGRATED_CNC_SCHEMA.RIB_TOP' IN TYPEOF(fcr.
related_shape_aspect.of_shape.definition))) AND (
'INTEGRATED_CNC_SCHEMA.RIB_TOP_FLOOR' IN TYPEOF(fcr.
relating_shape_aspect)))) >= 1;
WR4: NOT (SELF.description = 'complex') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
pdr.used_representation)) AND (pdr.used_representation.name =
'rib top face'))) = 1))) = 0);
WR5: NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF
(pdr.used_representation)) AND (pdr.used_representation.name
= 'rib top face'))) = 1))) = 0);
WR6: NOT (SELF.description = 'planar') OR (SIZEOF(QUERY (pds <* QUERY (
pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'boundary occurrence') AND (SIZEOF(QUERY (sdr
<* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.CIRCULAR_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.NGON_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_CLOSED_PROFILE',
'INTEGRATED_CNC_SCHEMA.CLOSED_PATH_PROFILE' ] * TYPEOF(sdr.
relating_shape_aspect)) = 1) AND (sdr.relating_shape_aspect.
description = 'rib top floor boundary'))) = 1))) = 1))) = 0);
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY right_circular_cylinder
SUBTYPE OF (geometric_representation_item);
position : axis1_placement;
height : positive_length_measure;
radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY role_association;
role : object_role;
item_with_role : role_select;
END_ENTITY; -- 10303-41: basic_attribute_schema
ENTITY round_hole
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'diameter occurrence') AND (SIZEOF(QUERY (sdr
<* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (
'INTEGRATED_CNC_SCHEMA.CIRCULAR_CLOSED_PROFILE' IN TYPEOF(sdr
.relating_shape_aspect)) AND (sdr.name = 'diameter'))) = 1)))
= 1))) = 0;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'hole depth occurrence') AND (SIZEOF(QUERY (sdr
<* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'path feature component usage') AND (
'INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF
(sar)))| (('INTEGRATED_CNC_SCHEMA.PATH_FEATURE_COMPONENT' IN
TYPEOF(sdr.relating_shape_aspect)) AND (sdr.name =
'hole depth')) AND (sdr.relating_shape_aspect.description =
'linear'))) = 1))) = 1))) = 0;
WR3: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'bottom condition occurrence') AND (SIZEOF(
QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'hole bottom usage') AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.HOLE_BOTTOM' IN TYPEOF
(fcr.relating_shape_aspect)) AND (
'INTEGRATED_CNC_SCHEMA.ROUND_HOLE' IN TYPEOF(fcr.
related_shape_aspect.of_shape.definition)))) = 1))) = 1))) =
0;
WR4: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'change in diameter occurrence') AND (SIZEOF(
QUERY (fcr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'taper usage')
AND ('INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP'
IN TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.TAPER' IN TYPEOF(
fcr.relating_shape_aspect)) AND (
'INTEGRATED_CNC_SCHEMA.ROUND_HOLE' IN TYPEOF(fcr.
related_shape_aspect.of_shape.definition)))) = 1))) <= 1))) =
0;
WR5: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY rounded_end
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'partial circular boundary occurrence') AND (
SIZEOF(QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (
'INTEGRATED_CNC_SCHEMA.PARTIAL_CIRCULAR_PROFILE' IN TYPEOF(
sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
WR3: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'course of travel occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'path feature component usage') AND (
'INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF
(sar)))| ('INTEGRATED_CNC_SCHEMA.PATH_FEATURE_COMPONENT' IN
TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'linear'))) = 1))) = 1)))
= 0;
WR4: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| ('INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'maximum feature limit'))) >= 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY rounded_u_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 1) AND (SIZEOF(impl_rep.
used_representation.items) <= 2))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.
used_representation.items| (srwp_i.name = 'orientation') OR (
srwp_i.name = 'depth'))) = SIZEOF(pdr.used_representation.
items)))) = 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'width'))) = 1))) = 0))) = 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF
(pdr.used_representation)) AND (pdr.used_representation.name
= 'profile limit'))) <= 1))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'depth'))) <= 1))) = 0))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY roundness_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
WR1: NOT ('INTEGRATED_CNC_SCHEMA.' +
'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY runout_zone_definition
SUBTYPE OF (tolerance_zone_definition);
orientation : runout_zone_orientation;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY runout_zone_orientation;
angle : measure_with_unit;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY runout_zone_orientation_reference_direction
SUBTYPE OF (runout_zone_orientation);
orientation_defining_relationship : shape_aspect_relationship;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY seam_curve
SUBTYPE OF (surface_curve);
WHERE
WR1: SIZEOF(SELF\surface_curve.associated_geometry) = 2;
WR2: associated_surface(SELF\surface_curve.associated_geometry[1]) =
associated_surface(SELF\surface_curve.associated_geometry[2])
;
WR3: 'INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(SELF\surface_curve.
associated_geometry[1]);
WR4: 'INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(SELF\surface_curve.
associated_geometry[2]);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY security_classification;
name : label;
purpose : text;
security_level : security_classification_level;
END_ENTITY; -- 10303-41: security_classification_schema
ENTITY security_classification_assignment
ABSTRACT SUPERTYPE;
assigned_security_classification : security_classification;
DERIVE
role : object_role := get_role(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1;
END_ENTITY; -- 10303-41: management_resources_schema
ENTITY security_classification_level;
name : label;
END_ENTITY; -- 10303-41: security_classification_schema
ENTITY sequential_method
SUBTYPE OF (serial_action_method);
sequence_position : count_measure;
END_ENTITY; -- 10303-49: method_definition_schema
ENTITY serial_action_method
SUBTYPE OF (action_method_relationship);
END_ENTITY; -- 10303-49: method_definition_schema
ENTITY shape_aspect;
name : label;
description : OPTIONAL text;
of_shape : product_definition_shape;
product_definitional : LOGICAL;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY shape_aspect_deriving_relationship
SUBTYPE OF (shape_aspect_relationship);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.DERIVED_SHAPE_ASPECT' IN TYPEOF(SELF\
shape_aspect_relationship.relating_shape_aspect);
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY shape_aspect_relationship;
name : label;
description : OPTIONAL text;
relating_shape_aspect : shape_aspect;
related_shape_aspect : shape_aspect;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'INTEGRATED_CNC_SCHEMA.' +
'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY; -- 10303-41: product_property_definition_schema
ENTITY shape_defining_relationship
SUBTYPE OF (shape_aspect_relationship);
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY shape_definition_representation
SUBTYPE OF (property_definition_representation);
WHERE
WR1: ('INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.
definition)) OR ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINITION' IN
TYPEOF(SELF.definition.definition));
WR2: 'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION' IN TYPEOF(SELF.
used_representation);
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY shape_dimension_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (temp <* SELF\representation.items| NOT (
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(temp)))) = 0;
WR2: SIZEOF(SELF\representation.items) <= 3;
WR3: SIZEOF(QUERY (pos_mri <* QUERY (real_mri <* SELF\representation.
items| ('REAL' IN TYPEOF(real_mri\measure_with_unit.
value_component)))| NOT (pos_mri\measure_with_unit.
value_component > 0.0))) = 0;
END_ENTITY; -- 10303-47: shape_dimension_schema
ENTITY shape_representation
SUBTYPE OF (representation);
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY shape_representation_relationship
SUBTYPE OF (representation_relationship);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION' IN TYPEOF(SELF\
representation_relationship.rep_1) + TYPEOF(SELF\
representation_relationship.rep_2);
END_ENTITY; -- 10303-41: product_property_representation_schema
ENTITY shape_representation_with_parameters
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF(QUERY (it <* SELF.items| NOT (SIZEOF([
'INTEGRATED_CNC_SCHEMA.PLACEMENT',
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' ] *
TYPEOF(it)) = 1))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY shell_based_surface_model
SUBTYPE OF (geometric_representation_item);
sbsm_boundary : SET [1:?] OF shell;
WHERE
WR1: constraints_geometry_shell_based_surface_model(SELF);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY si_unit
SUBTYPE OF (named_unit);
prefix : OPTIONAL si_prefix;
name : si_unit_name;
DERIVE
SELF\named_unit.dimensions : dimensional_exponents :=
dimensions_for_si_unit(name);
END_ENTITY; -- 10303-41: measure_schema
ENTITY side_milling_operation
SUBTYPE OF (milling_type_operation);
WHERE
WR1: (SELF.description IN ['roughing','finishing']);
WR2: (verify_optional_action_property (SELF, 'axial cutting depth')) AND
(verify_length_measure_action_property (SELF, 'axial cutting depth'));
WR3: (verify_optional_action_property (SELF, 'radial cutting depth')) AND
(verify_length_measure_action_property (SELF, 'radial cutting depth'));
WR4: (verify_optional_action_property (SELF, 'allowance side')) AND
(verify_length_measure_action_property (SELF, 'allowance side'));
WR5: NOT (SELF.description = 'roughing') OR
(verify_required_action_property (SELF, 'allowance side'));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY simple_generic_expression
ABSTRACT SUPERTYPE OF (ONEOF(generic_literal, generic_variable))
SUBTYPE OF (generic_expression);
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY simple_numeric_expression
ABSTRACT SUPERTYPE OF (ONEOF(literal_number, numeric_variable))
SUBTYPE OF (numeric_expression, simple_generic_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY slot
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'swept shape occurrence') AND (SIZEOF(QUERY (
sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.SQUARE_U_PROFILE',
'INTEGRATED_CNC_SCHEMA.PARTIAL_CIRCULAR_PROFILE',
'INTEGRATED_CNC_SCHEMA.ROUNDED_U_PROFILE',
'INTEGRATED_CNC_SCHEMA.VEE_PROFILE',
'INTEGRATED_CNC_SCHEMA.TEE_PROFILE',
'INTEGRATED_CNC_SCHEMA.OPEN_PATH_PROFILE' ] * TYPEOF(sdr.
relating_shape_aspect)) = 1))) = 1))) = 1))) = 0;
WR3: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'course of travel occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'path feature component usage') AND ((sar.name =
'course of travel') AND (
'INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF
(sar))))| ('INTEGRATED_CNC_SCHEMA.PATH_FEATURE_COMPONENT' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
WR4: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'end condition occurrence') AND (SIZEOF(QUERY (
fcr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| ((sar.description = 'slot end usage'
) AND (sar.name IN [ 'course of travel start',
'course of travel end' ])) AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| (('INTEGRATED_CNC_SCHEMA.SLOT_END' IN TYPEOF(
fcr.relating_shape_aspect)) AND (fcr.relating_shape_aspect.
description IN [ 'open', 'radiused', 'flat', 'woodruff' ]))
AND ('INTEGRATED_CNC_SCHEMA.SLOT' IN TYPEOF(fcr.
related_shape_aspect.of_shape.definition)))) = 1))) = 2))) =
0;
WR5: NOT (SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'end condition occurrence') AND (SIZEOF(QUERY (
fcr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP' +
'.RELATED_SHAPE_ASPECT')| ((sar.description =
'slot end usage') AND (sar.name IN [ 'course of travel start'
, 'course of travel end' ])) AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| (('INTEGRATED_CNC_SCHEMA.SLOT_END' IN TYPEOF(
fcr.relating_shape_aspect)) AND (fcr.relating_shape_aspect.
description IN [ 'loop' ])) AND ('INTEGRATED_CNC_SCHEMA.SLOT'
IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)))) =
1))) = 1))) = 0) OR (SIZEOF(QUERY (pds <* QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'course of travel occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'path feature component usage') AND ((sar.name =
'course of travel') AND (
'INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF
(sar))))| ('INTEGRATED_CNC_SCHEMA.PATH_FEATURE_COMPONENT' IN
TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description IN [ 'complex',
'complete circular' ]))) = 1))) = 1))) = 0);
WR6: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| ('INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'maximum feature limit'))) >= 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY slot_end
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SELF.description IN [ 'open', 'radiused', 'flat', 'woodruff',
'loop' ];
WR3: NOT (SELF.description IN [ 'open', 'radiused', 'loop' ]) OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 0))) = 0);
WR4: NOT (SELF.description IN [ 'flat', 'woodruff' ]) OR (SIZEOF(QUERY
(pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))) = 1))) = 0);
WR5: NOT (SELF.description IN [ 'flat' ]) OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 2))) = 0))) = 0);
WR6: NOT (SELF.description = 'flat') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'first radius'))) = 1))) = 0))) = 0)
;
WR7: NOT (SELF.description = 'flat') OR (SIZEOF(QUERY (pd <* USEDIN(
SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')
| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'second radius'))) = 1))) = 0))) = 0
);
WR8: NOT (SELF.description = 'woodruff') OR (SIZEOF(QUERY (pd <* USEDIN
(SELF, 'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION'
)| NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(QUERY (it
<* impl_rep.used_representation.items| (
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' IN TYPEOF(it
)) AND (it.name = 'radius'))) = 1))) = 0))) = 0);
WR9: NOT (SELF.description IN [ 'woodruff' ]) OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.SHAPE_REPRESENTATION_WITH_PARAMETERS'
IN TYPEOF(pdr.used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0);
WR10: SIZEOF(QUERY (fcr <* QUERY (sar <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATING_SHAPE_ASPECT')| ((sar.description =
'slot end usage') AND (sar.name IN [ 'course of travel start'
, 'course of travel end' ])) AND (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)))| ((fcr.related_shape_aspect.description =
'end condition occurrence') AND ('INTEGRATED_CNC_SCHEMA.SLOT'
IN TYPEOF(fcr.related_shape_aspect.of_shape.definition)))
AND ('INTEGRATED_CNC_SCHEMA.SLOT_END' IN TYPEOF(fcr.
relating_shape_aspect)))) >= 1;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY solid_angle_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.SOLID_ANGLE_UNIT' IN TYPEOF(SELF\
measure_with_unit.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY solid_angle_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\
named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\
named_unit.dimensions.time_exponent = 0.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 0.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY solid_model
SUPERTYPE OF (manifold_solid_brep)
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- 10303-42: geometric_model_schema
ENTITY spherical_cap
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 3))) = 0))) = 0;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'radius'))) = 1))) = 0))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'internal angle'))) = 1))) =
0))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY spherical_surface
SUBTYPE OF (elementary_surface);
radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY square_u_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 4) AND (SIZEOF(impl_rep.
used_representation.items) <= 7))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.
used_representation.items| (((((((srwp_i.name = 'orientation'
) OR (srwp_i.name = 'width')) OR (srwp_i.name = 'first angle'
)) OR (srwp_i.name = 'second angle')) OR (srwp_i.name =
'first radius')) OR (srwp_i.name = 'second radius')) OR (
srwp_i.name = 'profile limit')) OR (srwp_i.name = 'depth')))
= SIZEOF(pdr.used_representation.items)))) = 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'width'))) = 1))) = 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'first radius'))) <= 1))) = 0))) = 0
;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'second radius'))) <= 1))) = 0))) =
0;
WR9: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'first angle'))) = 1))) = 0))
) = 0;
WR10: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'second angle'))) = 1))) = 0)
)) = 0;
WR11: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.' + 'DEFINITION')|
NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF
(pdr.used_representation)) AND (pdr.used_representation.name
= 'profile limit'))) <= 1))) = 0;
WR12: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'depth'))) <= 1))) = 0))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY standard_uncertainty
SUPERTYPE OF (expanded_uncertainty)
SUBTYPE OF (uncertainty_qualifier);
uncertainty_value : REAL;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY step
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR2: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'course of travel occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'path feature component usage') AND (
'INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF
(sar)))| ('INTEGRATED_CNC_SCHEMA.PATH_FEATURE_COMPONENT' IN
TYPEOF(sdr.relating_shape_aspect)) AND (sdr.
relating_shape_aspect.description = 'linear'))) = 1))) = 1)))
= 0;
WR3: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'removal boundary occurrence') AND (SIZEOF(
QUERY (sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'profile usage')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.VEE_PROFILE' IN TYPEOF
(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
WR4: SIZEOF(QUERY (pdr <* get_property_definition_representations(SELF)
| ('INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'maximum feature limit'))) >= 0;
WR5: SIZEOF(QUERY (pds <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(
pds)) AND (SIZEOF(QUERY (csa <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| ((
'INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT' IN TYPEOF(csa)
) AND (csa.name = 'uncut area')) AND (SIZEOF(QUERY (sar <*
csa.component_relationships| (
'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_RELATIONSHIP' IN
TYPEOF(sar)) AND (SIZEOF([ 'INTEGRATED_CNC_SCHEMA.BOSS',
'INTEGRATED_CNC_SCHEMA.PROTRUSION' ] * TYPEOF(sar.
related_shape_aspect)) = 1))) = 1))) <= 1))) = 1;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY straightness_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
WR1: NOT ('INTEGRATED_CNC_SCHEMA.' +
'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF));
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY surface
SUPERTYPE OF (ONEOF(elementary_surface, swept_surface, bounded_surface,
offset_surface, surface_replica))
SUBTYPE OF (geometric_representation_item);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY surface_curve
SUPERTYPE OF (ONEOF(intersection_curve, seam_curve) ANDOR
bounded_surface_curve)
SUBTYPE OF (curve);
curve_3d : curve;
associated_geometry : LIST [1:2] OF pcurve_or_surface;
master_representation : preferred_surface_curve_representation;
DERIVE
basis_surface : SET [1:2] OF surface := get_basis_surface(SELF);
WHERE
WR1: curve_3d.dim = 3;
WR2: ('INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(associated_geometry[1]))
OR (master_representation <> pcurve_s1);
WR3: ('INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(associated_geometry[2]))
OR (master_representation <> pcurve_s2);
WR4: NOT ('INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(curve_3d));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY surface_of_linear_extrusion
SUBTYPE OF (swept_surface);
extrusion_axis : vector;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY surface_of_revolution
SUBTYPE OF (swept_surface);
axis_position : axis1_placement;
DERIVE
axis_line : line := representation_item('') ||
geometric_representation_item() || curve() || line(
axis_position.location, representation_item('') ||
geometric_representation_item() || vector(axis_position.
z, 1.0));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY surface_patch
SUBTYPE OF (founded_item);
parent_surface : bounded_surface;
u_transition : transition_code;
v_transition : transition_code;
u_sense : BOOLEAN;
v_sense : BOOLEAN;
INVERSE
using_surfaces : BAG [1:?] OF rectangular_composite_surface FOR
segments;
WHERE
WR1: NOT ('INTEGRATED_CNC_SCHEMA.CURVE_BOUNDED_SURFACE' IN TYPEOF(
parent_surface));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY surface_profile_tolerance
SUBTYPE OF (geometric_tolerance);
WHERE
WR1: NOT ('INTEGRATED_CNC_SCHEMA.' +
'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF(SELF))
OR (SIZEOF(SELF\geometric_tolerance_with_datum_reference.
datum_system) <= 3);
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY surface_replica
SUBTYPE OF (surface);
parent_surface : surface;
transformation : cartesian_transformation_operator_3d;
WHERE
WR1: acyclic_surface_replica(SELF, parent_surface);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY surface_texture_representation
SUBTYPE OF (representation);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY swept_surface
SUPERTYPE OF (ONEOF(surface_of_linear_extrusion, surface_of_revolution))
SUBTYPE OF (surface);
swept_curve : curve;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY symmetric_shape_aspect
SUBTYPE OF (shape_aspect);
INVERSE
basis_relationships : SET [1:?] OF shape_aspect_relationship FOR
relating_shape_aspect;
WHERE
WR1: SIZEOF(QUERY (x <* SELF\symmetric_shape_aspect.basis_relationships
| ('INTEGRATED_CNC_SCHEMA.CENTRE_OF_SYMMETRY' IN TYPEOF(x\
shape_aspect_relationship.related_shape_aspect)))) >= 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY symmetry_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
WR1: SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system)
<= 3;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY tangent
SUBTYPE OF (derived_shape_aspect);
WHERE
WR1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
END_ENTITY; -- 10303-47: shape_aspect_definition_schema
ENTITY taper
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SELF.description IN [ 'angle taper', 'diameter taper',
'directed taper' ];
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) = 1))) = 0))) = 0;
WR5: NOT (SELF.description = 'angle taper') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'taper angle'))) = 1))) = 0))
) = 0);
WR6: NOT (SELF.description = 'diameter taper') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'final diameter'))) = 1))) = 0))) =
0);
WR7: NOT (SELF.description = 'directed taper') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'angle'))) = 1))) = 0))) = 0)
;
WR8: NOT (SELF.description = 'directed taper') OR (SIZEOF(QUERY (pd <*
USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.DIRECTION_SHAPE_REPRESENTATION' IN
TYPEOF(pdr.used_representation)) AND (pdr.used_representation
.name = 'direction'))) = 1))) = 0);
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY tapping_operation
SUBTYPE OF (drilling_type_operation);
WHERE
WR1: (SELF.description IN ['tapping','thread drilling']);
WR2: NOT (SELF.description = 'tapping') OR
((verify_required_action_property (SELF, 'compensation chuck')) AND
(verify_enumeration_action_property (SELF, 'compensation chuck',
['compensation chuck used', 'compensation chuck not used'])));
WR3: NOT (SELF.description = 'thread drilling') OR
((verify_required_action_property (SELF, 'helical movement on forward')) AND
(verify_enumeration_action_property (SELF, 'helical movement on forward',
['helical movement on forward', 'no helical movement on forward'])));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY tee_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 9) AND (SIZEOF(impl_rep.
used_representation.items) <= 10))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.
used_representation.items| (((((((((srwp_i.name =
'orientation') OR (srwp_i.name = 'width')) OR (srwp_i.name =
'depth')) OR (srwp_i.name = 'cross bar width')) OR (srwp_i.
name = 'cross bar depth')) OR (srwp_i.name = 'first offset'))
OR (srwp_i.name = 'second offset')) OR (srwp_i.name =
'first angle')) OR (srwp_i.name = 'second angle')) OR (srwp_i
.name = 'radius'))) = SIZEOF(pdr.used_representation.items)))
) = 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'width'))) = 1))) = 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'depth'))) = 1))) = 0))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'cross bar width'))) = 1))) = 0))) =
0;
WR9: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'cross bar depth'))) = 1))) = 0))) =
0;
WR10: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'first offset'))) = 1))) = 0))) = 0;
WR11: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'second offset'))) = 1))) = 0))) = 0
;
WR12: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'first angle'))) = 1))) = 0))
) = 0;
WR13: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'second angle'))) = 1))) = 0)
)) = 0;
WR14: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'radius'))) <= 1))) = 0))) = 0;
WR15: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.' + 'DEFINITION')|
NOT (SIZEOF(QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF
(pdr.used_representation)) AND (pdr.used_representation.name
= 'profile limit'))) <= 1))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY thread
SUBTYPE OF (feature_definition);
WHERE
WR1: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| ((
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND (8 <= SIZEOF(pdr.
used_representation.items))) AND (SIZEOF(pdr.
used_representation.items) <= 11))) = 1))) = 1;
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'major diameter'))) = 1))) = 0))) =
0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'minor diameter'))) <= 1))) = 0))) =
0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'pitch diameter'))) <= 1))) = 0))) =
0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.RATIO_MEASURE_WITH_UNIT' ] * TYPEOF(it
)) = 2) AND (it.name = 'number of threads'))) = 1))) = 0))) =
0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'fit class'))) = 1))) = 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'form'))) = 1))) = 0))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'hand')) AND (it.description IN [
'left', 'right' ]))) = 1))) = 0))) = 0;
WR9: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'qualifier'))) <= 1))) = 0))) = 0;
WR10: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'thread side')) AND ((it.
description = 'internal') OR (it.description = 'external'))))
= 1))) = 0))) = 0;
WR11: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'crest'))) <= 1))) = 0))) = 0;
WR12: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'partial area occurrence') AND (SIZEOF(QUERY (
sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'applied area usage') AND (
'INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF
(sar)))| ('INTEGRATED_CNC_SCHEMA.APPLIED_AREA' IN TYPEOF(sdr.
relating_shape_aspect)))) = 1))) = 1))) = 0;
WR13: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'applied shape')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
WR14: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'fit class 2'))) <= 1))) = 0))) =
0;
WR15: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'nominal size'))) <= 1))) = 0))) = 0
;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY threading_turning_operation
SUBTYPE OF (turning_type_operation);
WHERE
WR1: (SELF.description IN ['roughing','finishing']);
WR2: (verify_optional_action_property (SELF, 'allowance')) AND
(verify_length_measure_action_property (SELF, 'allowance'));
WR3: NOT (SELF.description = 'roughing') OR
(verify_required_action_property (SELF, 'allowance'));
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY time_measure_with_unit
SUBTYPE OF (measure_with_unit);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.TIME_UNIT' IN TYPEOF(SELF\measure_with_unit
.unit_component);
END_ENTITY; -- 10303-41: measure_schema
ENTITY time_unit
SUBTYPE OF (named_unit);
WHERE
WR1: ((((((SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\
named_unit.dimensions.mass_exponent = 0.0)) AND (SELF\
named_unit.dimensions.time_exponent = 1.0)) AND (SELF\
named_unit.dimensions.electric_current_exponent = 0.0)) AND (
SELF\named_unit.dimensions.thermodynamic_temperature_exponent
= 0.0)) AND (SELF\named_unit.dimensions.
amount_of_substance_exponent = 0.0)) AND (SELF\named_unit.
dimensions.luminous_intensity_exponent = 0.0);
END_ENTITY; -- 10303-41: measure_schema
ENTITY tolerance_value;
lower_bound : measure_with_unit;
upper_bound : measure_with_unit;
WHERE
WR1: upper_bound\measure_with_unit.value_component > lower_bound\
measure_with_unit.value_component;
WR2: upper_bound\measure_with_unit.unit_component = lower_bound\
measure_with_unit.unit_component;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY tolerance_zone
SUBTYPE OF (shape_aspect);
defining_tolerance : SET [1:?] OF geometric_tolerance;
form : tolerance_zone_form;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY tolerance_zone_definition
SUPERTYPE OF (ONEOF(projected_zone_definition, runout_zone_definition));
zone : tolerance_zone;
boundaries : SET [1:?] OF shape_aspect;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY tolerance_zone_form;
name : label;
END_ENTITY; -- 10303-47: shape_tolerance_schema
ENTITY topological_representation_item
SUPERTYPE OF (ONEOF(vertex, edge, face_bound, face, connected_face_set,
loop ANDOR path))
SUBTYPE OF (representation_item);
END_ENTITY; -- 10303-42: topology_schema
ENTITY toroidal_surface
SUBTYPE OF (elementary_surface);
major_radius : positive_length_measure;
minor_radius : positive_length_measure;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY total_runout_tolerance
SUBTYPE OF (geometric_tolerance_with_datum_reference);
WHERE
WR1: SIZEOF(SELF\geometric_tolerance_with_datum_reference.datum_system)
<= 2;
END_ENTITY; -- 10303-519: aic_geometric_tolerances
ENTITY transition_feature
SUPERTYPE OF (ONEOF(chamfer, edge_round, fillet))
SUBTYPE OF (shape_aspect);
WHERE
WR1: SIZEOF([ 'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION',
'INTEGRATED_CNC_SCHEMA.COMPOUND_FEATURE' ] * TYPEOF(SELF.
of_shape.definition)) = 1;
WR2: SIZEOF([ 'INTEGRATED_CNC_SCHEMA.CHAMFER',
'INTEGRATED_CNC_SCHEMA.EDGE_ROUND',
'INTEGRATED_CNC_SCHEMA.FILLET' ] * TYPEOF(SELF)) = 1;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY trimmed_curve
SUBTYPE OF (bounded_curve);
basis_curve : curve;
trim_1 : SET [1:2] OF trimming_select;
trim_2 : SET [1:2] OF trimming_select;
sense_agreement : BOOLEAN;
master_representation : trimming_preference;
WHERE
WR1: (HIINDEX(trim_1) = 1) OR (TYPEOF(trim_1[1]) <> TYPEOF(trim_1[2]));
WR2: (HIINDEX(trim_2) = 1) OR (TYPEOF(trim_2[1]) <> TYPEOF(trim_2[2]));
END_ENTITY; -- 10303-42: geometry_schema
ENTITY turned_knurl
SUBTYPE OF (feature_definition);
WHERE
WR1: SELF\characterized_object.description IN [ 'diamond', 'diagonal',
'straight' ];
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND ((6 <= SIZEOF(pdr.
used_representation.items)) AND (SIZEOF(pdr.
used_representation.items) <= 9)))) = 1))) = 1;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.COUNT_MEASURE' IN TYPEOF(it
\measure_with_unit.value_component))) AND (it.name =
'number of teeth'))) <= 1))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'major diameter'))) = 1))) = 0))) =
0;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'nominal diameter'))) = 1))) = 0)))
= 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.' + 'DEFINITION')|
NOT (SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'tooth depth'))) <= 1))) = 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'root fillet'))) <= 1))) = 0))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF(
it)) = 2) AND (it.name = 'diametral pitch'))) = 1))) = 0))) =
0;
WR9: NOT (SELF\characterized_object.description IN [ 'diamond',
'diagonal' ]) OR (SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'helix angle'))) = 1))) = 0))
) = 0);
WR10: NOT (SELF\characterized_object.description = 'diagonal') OR (
SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM' IN
TYPEOF(it)) AND (it.name = 'helix hand'))) = 1))) = 0))) = 0)
;
WR11: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (sa_occ.
description = 'partial area occurrence') AND (SIZEOF(QUERY (
sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description =
'applied area usage') AND ('INTEGRATED_CNC_SCHEMA.' +
'SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF(sar)))| (
'INTEGRATED_CNC_SCHEMA.APPLIED_AREA' IN TYPEOF(sdr.
relating_shape_aspect)))) = 1))) = 1))) = 0;
WR12: SIZEOF(QUERY (pds <* QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pd
)))| NOT (SIZEOF(QUERY (sa_occ <* USEDIN(pds,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT.OF_SHAPE')| (SIZEOF(QUERY
(sdr <* QUERY (sar <* USEDIN(sa_occ,
'INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT_RELATIONSHIP.' +
'RELATED_SHAPE_ASPECT')| (sar.description = 'applied shape')
AND ('INTEGRATED_CNC_SCHEMA.SHAPE_DEFINING_RELATIONSHIP' IN
TYPEOF(sar)))| ('INTEGRATED_CNC_SCHEMA.SHAPE_ASPECT' IN
TYPEOF(sdr.relating_shape_aspect)))) = 1))) = 1))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY turning_type_operation
SUBTYPE OF (machining_operation);
WHERE
WR1: ((verify_optional_relating_amr_with_name (SELF, 'approach',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
(verify_related_type_for_amr_with_name (SELF, 'approach',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_APPROACH_RETRACT_STRATEGY']))
);
WR2: ((verify_optional_relating_amr_with_name (SELF, 'retract',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
(verify_related_type_for_amr_with_name (SELF, 'retract',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.MACHINING_APPROACH_RETRACT_STRATEGY']))
);
WR3: ((verify_optional_relating_amr_with_name (SELF, 'machining',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'])) AND
(verify_related_type_for_amr_with_name (SELF, 'machining',
['INTEGRATED_CNC_SCHEMA.MACHINING_STRATEGY_RELATIONSHIP'],
['INTEGRATED_CNC_SCHEMA.TURNING_TYPE_STRATEGY']))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY turning_type_strategy
SUBTYPE OF (machining_strategy);
WHERE
WR1: (SELF.description IN ['unidirectional', 'bidirectional',
'contour', 'thread', 'grooving', 'multistep grooving',
'explicit']);
WR2: ((verify_optional_action_property (SELF, 'overcut length')) AND
(verify_length_measure_action_property (SELF, 'overcut length'))
);
WR3: ((verify_optional_action_property (SELF, 'multiple passes')) AND
(verify_enumeration_action_property (SELF, 'multiple passes',
['multiple passes allowed', 'multiple passes not allowed']))
);
WR4: ((verify_optional_action_property (SELF, 'cutting depth')) AND
(0 = SIZEOF (QUERY (prop <*
get_action_property (SELF, 'cutting depth') | NOT
(0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'INTEGRATED_CNC_SCHEMA.' +
'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
(1 = SIZEOF (QUERY (it <* prep.representation.items |
(('INTEGRATED_CNC_SCHEMA.COMPOUND_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND
('INTEGRATED_CNC_SCHEMA.LIST_REPRESENTATION_ITEM'
IN TYPEOF(it.item_element)) AND
(0 = SIZEOF (QUERY (ie <* it.item_element | NOT (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] *
TYPEOF(ie)) = 2))))
))))
)))
)))
);
WR5: ((verify_optional_action_property (SELF, 'variable feedrate')) AND
(verify_rep_type_for_action_property (SELF, 'variable feedrate',
['INTEGRATED_CNC_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property (SELF, 'variable feedrate',
['relative speed']))
);
WR6: NOT (SELF.description = 'unidirectional') OR
((verify_optional_action_property (SELF, 'feed direction')) AND
(verify_rep_item_for_action_property (SELF, 'feed direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_action_property (SELF, 'back path direction')) AND
(verify_rep_item_for_action_property (SELF, 'back path direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_action_property (SELF, 'lift direction')) AND
(verify_rep_item_for_action_property (SELF, 'lift direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_action_property (SELF, 'stepover direction')) AND
(verify_rep_item_for_action_property (SELF, 'stepover direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_action_property (SELF, 'lift height')) AND
(verify_length_measure_action_property (SELF, 'lift height')) AND
(verify_optional_action_property (SELF, 'lift feedrate')) AND
(verify_rep_type_for_action_property (SELF, 'lift feedrate',
['INTEGRATED_CNC_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property (SELF, 'lift feedrate',
['feed speed', 'feed per revolution'])) AND
(verify_optional_action_property (SELF, 'stepover feedrate')) AND
(verify_rep_type_for_action_property (SELF, 'stepover feedrate',
['INTEGRATED_CNC_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property (SELF, 'stepover feedrate',
['feed speed', 'feed per revolution']))
);
WR7: NOT (SELF.description = 'bidirectional') OR
((verify_optional_action_property (SELF, 'feed direction')) AND
(verify_rep_item_for_action_property (SELF, 'feed direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_action_property (SELF, 'stepover direction')) AND
(verify_rep_item_for_action_property (SELF, 'stepover direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_action_property (SELF, 'stepover feedrate')) AND
(verify_rep_type_for_action_property (SELF, 'stepover feedrate',
['INTEGRATED_CNC_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property (SELF, 'stepover feedrate',
['feed speed', 'feed per revolution']))
);
WR8: NOT (SELF.description = 'contour') OR
((verify_optional_action_property (SELF, 'back path direction')) AND
(verify_rep_item_for_action_property (SELF, 'back path direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_action_property (SELF, 'lift direction')) AND
(verify_rep_item_for_action_property (SELF, 'lift direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_action_property (SELF, 'stepover direction')) AND
(verify_rep_item_for_action_property (SELF, 'stepover direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_action_property (SELF, 'lift height')) AND
(verify_length_measure_action_property (SELF, 'lift height')) AND
(verify_optional_action_property (SELF, 'lift feedrate')) AND
(verify_rep_type_for_action_property (SELF, 'lift feedrate',
['INTEGRATED_CNC_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property (SELF, 'lift feedrate',
['feed speed', 'feed per revolution'])) AND
(verify_optional_action_property (SELF, 'stepover feedrate')) AND
(verify_rep_type_for_action_property (SELF, 'stepover feedrate',
['INTEGRATED_CNC_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property (SELF, 'stepover feedrate',
['feed speed', 'feed per revolution'])) AND
(verify_optional_action_property
(SELF, 'variable stepover feedrate')) AND
(verify_rep_type_for_action_property
(SELF, 'variable stepover feedrate',
['INTEGRATED_CNC_SCHEMA.MACHINING_FEED_SPEED_REPRESENTATION'])) AND
(verify_rep_desc_for_action_property
(SELF, 'variable stepover feedrate', ['relative speed']))
);
WR9: NOT (SELF.description = 'thread') OR
((verify_required_action_property (SELF, 'cut in amount')) AND
(verify_enumeration_action_property (SELF, 'cut in amount',
['constant depth', 'variable depth', 'constant removal amount'])) AND
(verify_required_action_property (SELF, 'threading direction')) AND
(verify_enumeration_action_property (SELF, 'threading direction',
['left', 'right', 'center', 'left zigzag', 'right zigzag'])) AND
(verify_optional_action_property (SELF, 'path return angle')) AND
(verify_angle_measure_action_property (SELF, 'path return angle')) AND
(verify_optional_action_property (SELF, 'lift height')) AND
(verify_length_measure_action_property (SELF, 'lift height'))
);
WR10: NOT (SELF.description IN ['grooving', 'multistep grooving']) OR
((verify_optional_action_property (SELF, 'grooving direction')) AND
(verify_rep_item_for_action_property (SELF, 'grooving direction',
['INTEGRATED_CNC_SCHEMA.DIRECTION'])) AND
(verify_optional_action_property (SELF, 'travel distance')) AND
(verify_length_measure_action_property (SELF, 'travel distance'))
);
WR11: NOT (SELF.description = 'multistep grooving') OR
((verify_optional_action_property (SELF, 'retract distance')) AND
(verify_length_measure_action_property (SELF, 'retract distance'))
);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY type_qualifier;
name : label;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY unary_boolean_expression
ABSTRACT SUPERTYPE OF (not_expression)
SUBTYPE OF (boolean_expression, unary_generic_expression);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY unary_generic_expression
ABSTRACT SUPERTYPE
SUBTYPE OF (generic_expression);
operand : generic_expression;
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY uncertainty_measure_with_unit
SUBTYPE OF (measure_with_unit);
name : label;
description : OPTIONAL text;
WHERE
WR1: valid_measure_value(SELF\measure_with_unit.value_component);
END_ENTITY; -- 10303-43: representation_schema
ENTITY uncertainty_qualifier
SUPERTYPE OF (ONEOF(standard_uncertainty, qualitative_uncertainty));
measure_name : label;
description : text;
END_ENTITY; -- 10303-45: qualified_measure_schema
ENTITY uniform_curve
SUBTYPE OF (b_spline_curve);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY uniform_surface
SUBTYPE OF (b_spline_surface);
END_ENTITY; -- 10303-42: geometry_schema
ENTITY value_range
SUBTYPE OF (compound_representation_item);
END_ENTITY; -- 10303-238: integrated_cnc_schema
ENTITY variable
ABSTRACT SUPERTYPE OF (numeric_variable)
SUBTYPE OF (generic_variable);
END_ENTITY; -- 13584-20: iso13584_expressions_schema
ENTITY variable_semantics
ABSTRACT SUPERTYPE;
END_ENTITY; -- 13584-20: iso13584_generic_expressions_schema
ENTITY vector
SUBTYPE OF (geometric_representation_item);
orientation : direction;
magnitude : length_measure;
WHERE
WR1: magnitude >= 0.0;
END_ENTITY; -- 10303-42: geometry_schema
ENTITY vee_profile
SUBTYPE OF (shape_aspect);
WHERE
WR1: 'INTEGRATED_CNC_SCHEMA.FEATURE_COMPONENT_DEFINITION' IN TYPEOF(
SELF.of_shape.definition);
WR2: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))) = 1))) = 0;
WR3: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(impl_rep.
used_representation.items) >= 3) AND (SIZEOF(impl_rep.
used_representation.items) <= 6))) = 0))) = 0;
WR4: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| (
SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)) AND (SIZEOF(QUERY (srwp_i <* pdr.
used_representation.items| (((((srwp_i.name = 'orientation')
OR (srwp_i.name = 'profile angle')) OR (srwp_i.name =
'tilt angle')) OR (srwp_i.name = 'profile radius')) OR (
srwp_i.name = 'first length')) OR (srwp_i.name =
'second length'))) = SIZEOF(pdr.used_representation.items))))
= 1))) = 1;
WR5: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ('INTEGRATED_CNC_SCHEMA.PLACEMENT'
IN TYPEOF(it)) AND (it.name = 'orientation'))) = 1))) = 0)))
= 0;
WR6: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'profile radius'))) <= 1))) = 0))) = 0;
WR7: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'profile angle'))) = 1))) = 0
))) = 0;
WR8: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT' ] *
TYPEOF(it)) = 2) AND (it.name = 'tilt angle'))) = 1))) = 0)))
= 0;
WR9: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (pdr <* USEDIN(pd, 'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF
(pdr.used_representation)) AND (pdr.used_representation.name
= 'profile limit'))) <= 1))) = 0;
WR10: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'first length'))) <= 1))) = 0))) = 0;
WR11: SIZEOF(QUERY (pd <* USEDIN(SELF,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION')| NOT
(SIZEOF(QUERY (impl_rep <* QUERY (pdr <* USEDIN(pd,
'INTEGRATED_CNC_SCHEMA.' +
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')| (
'INTEGRATED_CNC_SCHEMA.' +
'SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF(pdr.
used_representation)))| NOT (SIZEOF(QUERY (it <* impl_rep.
used_representation.items| ((
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM' IN TYPEOF
(it)) AND ('INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT'
IN TYPEOF(it\measure_with_unit.value_component))) AND (it.
name = 'second length'))) <= 1))) = 0))) = 0;
END_ENTITY; -- 10303-522: aic_machining_feature
ENTITY vertex
SUBTYPE OF (topological_representation_item);
END_ENTITY; -- 10303-42: topology_schema
ENTITY vertex_loop
SUBTYPE OF (loop);
loop_vertex : vertex;
END_ENTITY; -- 10303-42: topology_schema
ENTITY vertex_point
SUBTYPE OF (vertex, geometric_representation_item);
vertex_geometry : point;
END_ENTITY; -- 10303-42: topology_schema
ENTITY week_of_year_and_day_date
SUBTYPE OF (date);
week_component : week_in_year_number;
day_component : OPTIONAL day_in_week_number;
END_ENTITY; -- 10303-41: date_time_schema
ENTITY xor_expression
SUBTYPE OF (binary_boolean_expression);
SELF\binary_generic_expression.operands :
LIST [2:2] OF boolean_expression;
END_ENTITY; -- 13584-20: iso13584_expressions_schema
RULE application_context_requires_ap_definition FOR
(application_context,
application_protocol_definition);
WHERE
WR1: (0 = SIZEOF (QUERY (ac <* application_context | NOT
(1 = SIZEOF (QUERY (apd <* application_protocol_definition |
(apd.application :=: ac) AND
(apd.application_interpreted_model_schema_name =
'integrated_cnc_schema'))))
)));
END_RULE; -- 10303-238: integrated_cnc_schema
RULE approval_requires_approval_person_organization FOR
(approval,
approval_person_organization);
WHERE
WR1: (0 = SIZEOF (QUERY (app <* approval | NOT
(1 <= SIZEOF (QUERY (apo <* approval_person_organization |
(app :=: apo.authorized_approval))))
)));
END_RULE; -- 10303-238: integrated_cnc_schema
RULE approval_requires_assignment FOR
(approval,
approval_assignment);
WHERE
WR1: (0 = SIZEOF (QUERY (app <* approval | NOT
(1 <= SIZEOF (QUERY (aa <* approval_assignment |
(app :=: aa.assigned_approval))))
)));
END_RULE; -- 10303-238: integrated_cnc_schema
RULE chamfer_requires_faces_or_features FOR
(chamfer,
property_definition_representation,
feature_component_relationship);
WHERE
WR1: (0 = SIZEOF (QUERY (cf <* chamfer | NOT (
-- chamfer relates two sets of faces in AP-224 style
((1 = SIZEOF (QUERY (pdr <* property_definition_representation |
((pdr.used_representation.name = 'chamfer face') AND
(pdr.definition.definition :=: cf) AND
('INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF (pdr.used_representation)))))) AND
(1 = SIZEOF (QUERY (fcr <* feature_component_relationship |
((fcr.relating_shape_aspect :=: cf) AND
(fcr.related_shape_aspect.description = 'first offset') AND
('INTEGRATED_CNC_SCHEMA.CHAMFER_OFFSET'
IN TYPEOF (fcr.related_shape_aspect)) AND
((1 = SIZEOF (QUERY (pdr <* property_definition_representation |
((pdr.used_representation.name = 'first face shape') AND
(pdr.definition.definition :=: fcr.related_shape_aspect) AND
('INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF (pdr.used_representation)))
)))) )))) AND
(1 = SIZEOF (QUERY (fcr <* feature_component_relationship |
((fcr.relating_shape_aspect :=: cf) AND
(fcr.related_shape_aspect.description = 'second offset') AND
('INTEGRATED_CNC_SCHEMA.CHAMFER_OFFSET'
IN TYPEOF (fcr.related_shape_aspect)) AND
((1 = SIZEOF (QUERY (pdr <* property_definition_representation |
((pdr.used_representation.name = 'second face shape') AND
(pdr.definition.definition :=: fcr.related_shape_aspect) AND
('INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF (pdr.used_representation)))
)))) ))))
)
OR
-- chamfer relates two features in ISO 14649 style
((1 = SIZEOF (QUERY (fcr <* feature_component_relationship |
((fcr.name = 'first feature') AND
(fcr.relating_shape_aspect.of_shape.definition :=: cf) AND
('INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF (fcr.relating_shape_aspect)))))) AND
(1 = SIZEOF (QUERY (fcr <* feature_component_relationship |
((fcr.name = 'second feature') AND
(fcr.relating_shape_aspect.of_shape.definition :=: cf) AND
('INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF (fcr.relating_shape_aspect)))))))
))));
END_RULE; -- 10303-238: integrated_cnc_schema
RULE compatible_dimension FOR
(cartesian_point,
direction,
representation_context,
geometric_representation_context);
WHERE
WR1: SIZEOF(QUERY (x <* cartesian_point| (SIZEOF(QUERY (y <*
geometric_representation_context| item_in_context(x, y) AND (
HIINDEX(x.coordinates) <> y.coordinate_space_dimension))) > 0
))) = 0;
WR2: SIZEOF(QUERY (x <* direction| (SIZEOF(QUERY (y <*
geometric_representation_context| item_in_context(x, y) AND (
HIINDEX(x.direction_ratios) <> y.coordinate_space_dimension))
) > 0))) = 0;
END_RULE; -- 10303-42: geometry_schema
RULE dependent_instantiable_approval_status FOR
(approval_status);
WHERE
WR1: (0 = SIZEOF (QUERY (ast <* approval_status | NOT
(1 <= SIZEOF (USEDIN (ast, '')))
)));
END_RULE; -- 10303-238: integrated_cnc_schema
RULE dependent_instantiable_named_unit FOR
(named_unit);
WHERE
WR1: (0 = SIZEOF (QUERY (nu <* named_unit | NOT
(1 <= SIZEOF (USEDIN (nu, '')))
)));
END_RULE; -- 10303-238: integrated_cnc_schema
RULE edge_round_requires_faces_or_features FOR
(edge_round,
property_definition_representation,
feature_component_relationship);
WHERE
WR1: (0 = SIZEOF (QUERY (er <* edge_round | NOT (
-- edge round relates two sets of faces in AP-224 style
((1 = SIZEOF (QUERY (pdr <* property_definition_representation |
((pdr.used_representation.name = 'edge round face') AND
(pdr.definition.definition :=: er) AND
('INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF (pdr.used_representation)))))) AND
(1 = SIZEOF (QUERY (pdr <* property_definition_representation |
((pdr.used_representation.name = 'first face shape') AND
(pdr.definition.definition :=: er) AND
('INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF (pdr.used_representation)))))) AND
(1 = SIZEOF (QUERY (pdr <* property_definition_representation |
((pdr.used_representation.name = 'second face shape') AND
(pdr.definition.definition :=: er) AND
('INTEGRATED_CNC_SCHEMA.FACE_SHAPE_REPRESENTATION'
IN TYPEOF (pdr.used_representation))))))
)
OR
-- edge round relates two features in ISO 14649 style
((1 = SIZEOF (QUERY (fcr <* feature_component_relationship |
((fcr.name = 'first feature') AND
(fcr.relating_shape_aspect.of_shape.definition :=: er) AND
('INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF (fcr.relating_shape_aspect)))))) AND
(1 = SIZEOF (QUERY (fcr <* feature_component_relationship |
((fcr.name = 'second feature') AND
(fcr.relating_shape_aspect.of_shape.definition :=: er) AND
('INTEGRATED_CNC_SCHEMA.COMPOSITE_SHAPE_ASPECT'
IN TYPEOF (fcr.relating_shape_aspect)))))))
))));
END_RULE; -- 10303-238: integrated_cnc_schema
RULE feature_optional_machining_property_process FOR
(shape_aspect,
process_property_association);
WHERE
WR1: (0 = SIZEOF (QUERY (sa <* shape_aspect |
(('INTEGRATED_CNC_SCHEMA.FEATURE_DEFINITION' IN TYPEOF (sa)) OR
('INTEGRATED_CNC_SCHEMA.TRANSITION_FEATURE' IN TYPEOF (sa)))
AND NOT
(1 >= SIZEOF (QUERY (ppa <* process_property_association |
((ppa.property_or_shape :=: sa) AND
(ppa.process.name = 'machining')))))
)));
END_RULE; -- 10303-238: integrated_cnc_schema
RULE nc_variable_compatible_initial_value FOR
(expression_representation_item,
representation_item_relationship);
WHERE
-- each nc_variable has at most one one initial value
WR1: (0 = SIZEOF (QUERY (nv <* expression_representation_item |
('INTEGRATED_CNC_SCHEMA.NUMERIC_VARIABLE'
IN TYPEOF (nv)) AND NOT
(1 >= SIZEOF (QUERY (rir <* representation_item_relationship |
(rir.description = 'initial value') AND
(rir.relating_representation_item :=: nv)
))))));
-- the types on either side of the initial value relationship must match
-- each nc_variable has at most one one initial value
WR2: (0 = SIZEOF (QUERY (rir <* representation_item_relationship |
(rir.description = 'initial value') AND
('INTEGRATED_CNC_SCHEMA.NUMERIC_VARIABLE'
IN TYPEOF (rir.relating_representation_item))
AND NOT
((('INTEGRATED_CNC_SCHEMA.INT_NUMERIC_VARIABLE'
IN TYPEOF (rir.relating_representation_item)) AND
('INTEGRATED_CNC_SCHEMA.INT_LITERAL'
IN TYPEOF (rir.related_representation_item)))
OR
((('INTEGRATED_CNC_SCHEMA.REAL_NUMERIC_VARIABLE'
IN TYPEOF (rir.relating_representation_item)) AND
('INTEGRATED_CNC_SCHEMA.REAL_LITERAL'
IN TYPEOF (rir.related_representation_item)
)))))));
END_RULE; -- 10303-238: integrated_cnc_schema
RULE product_requires_version FOR
(product,
product_definition_formation);
WHERE
WR1: (0 = SIZEOF (QUERY (prod <* product | NOT
(1 <= SIZEOF (QUERY (pdf <* product_definition_formation |
(prod :=: pdf.of_product))))
)));
END_RULE; -- 10303-238: integrated_cnc_schema
RULE restrict_unneeded_feature_usage FOR (feature_definition);
WHERE
WR1: (0 = SIZEOF (QUERY (fd <* feature_definition |
('INTEGRATED_CNC_SCHEMA.FILLET' IN TYPEOF(fd)) OR
('INTEGRATED_CNC_SCHEMA.GEAR' IN TYPEOF(fd)) OR
('INTEGRATED_CNC_SCHEMA.MARKING' IN TYPEOF(fd)) OR
('INTEGRATED_CNC_SCHEMA.PROTRUSION' IN TYPEOF(fd)) OR
('INTEGRATED_CNC_SCHEMA.RIB_TOP' IN TYPEOF(fd))
)));
END_RULE; -- 10303-238: integrated_cnc_schema
RULE security_classification_requires_assignment FOR
(security_classification,
security_classification_assignment);
WHERE
WR1: (0 = SIZEOF (QUERY (sc <* security_classification | NOT
(1 <= SIZEOF (QUERY (sca <* security_classification_assignment |
(sc :=: sca.assigned_security_classification))))
)));
END_RULE; -- 10303-238: integrated_cnc_schema
FUNCTION acyclic (
arg1 : generic_expression;
arg2 : SET OF generic_expression
) : BOOLEAN;
LOCAL
result : BOOLEAN;
END_LOCAL;
IF 'INTEGRATED_CNC_SCHEMA.SIMPLE_GENERIC_EXPRESSION' IN TYPEOF(arg1)
THEN
RETURN (TRUE);
END_IF;
IF arg1 IN arg2 THEN
RETURN (FALSE);
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.UNARY_GENERIC_EXPRESSION' IN TYPEOF(arg1)
THEN
RETURN (acyclic(arg1\unary_generic_expression.operand, arg2 + [ arg1
]));
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.BINARY_GENERIC_EXPRESSION' IN TYPEOF(arg1)
THEN
RETURN (acyclic(arg1\binary_generic_expression.operands[1], (arg2 + [
arg1 ])) AND acyclic(arg1\binary_generic_expression.operands[2], (
arg2 + [ arg1 ])));
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.MULTIPLE_ARITY_GENERIC_EXPRESSION' IN TYPEOF(
arg1) THEN
result := TRUE;
REPEAT i := 1 TO SIZEOF(arg1\multiple_arity_generic_expression.
operands);
result := result AND acyclic(arg1\multiple_arity_generic_expression
.operands[i], (arg2 + [ arg1 ]));
END_REPEAT;
RETURN (result);
END_IF;
END_FUNCTION; -- 13584-20: iso13584_generic_expressions_schema
FUNCTION acyclic_curve_replica (
rep : curve_replica;
parent : curve
) : BOOLEAN;
IF NOT ('INTEGRATED_CNC_SCHEMA.CURVE_REPLICA' IN TYPEOF(parent)) THEN
RETURN (TRUE);
END_IF;
IF parent :=: rep THEN
RETURN (FALSE);
ELSE
RETURN (acyclic_curve_replica(rep, parent\curve_replica.parent_curve)
);
END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION acyclic_mapped_representation (
parent_set : SET OF representation;
children_set : SET OF representation_item
) : BOOLEAN;
LOCAL
x : SET OF representation_item;
y : SET OF representation_item;
END_LOCAL;
x := QUERY (z <* children_set| 'INTEGRATED_CNC_SCHEMA.MAPPED_ITEM' IN
TYPEOF(z));
IF SIZEOF(x) > 0 THEN
REPEAT i := 1 TO HIINDEX(x);
IF x[i]\mapped_item.mapping_source.mapped_representation IN
parent_set THEN
RETURN (FALSE);
END_IF;
IF NOT acyclic_mapped_representation((parent_set + x[i]\mapped_item
.mapping_source.mapped_representation), x[i]\mapped_item.
mapping_source.mapped_representation.items) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_IF;
x := children_set - x;
IF SIZEOF(x) > 0 THEN
REPEAT i := 1 TO HIINDEX(x);
y := QUERY (z <* bag_to_set(USEDIN(x[i], ''))|
'INTEGRATED_CNC_SCHEMA.REPRESENTATION_ITEM' IN TYPEOF(z));
IF NOT acyclic_mapped_representation(parent_set, y) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-43: representation_schema
FUNCTION acyclic_product_category_relationship (
relation : product_category_relationship;
children : SET OF product_category
) : BOOLEAN;
LOCAL
x : SET OF product_category_relationship;
local_children : SET OF product_category;
END_LOCAL;
REPEAT i := 1 TO HIINDEX(children);
IF relation.category :=: children[i] THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
x := bag_to_set(USEDIN(relation.category, 'INTEGRATED_CNC_SCHEMA.' +
'PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY'));
local_children := children + relation.category;
IF SIZEOF(x) > 0 THEN
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_product_category_relationship(x[i], local_children)
THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-41: product_definition_schema
FUNCTION acyclic_product_definition_relationship (
relation : product_definition_relationship;
relatives : SET [1:?] OF product_definition;
specific_relation : STRING
) : BOOLEAN;
LOCAL
x : SET OF product_definition_relationship;
END_LOCAL;
IF relation.relating_product_definition IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY (pd <* bag_to_set(USEDIN(relation.
relating_product_definition, 'INTEGRATED_CNC_SCHEMA.' +
'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION'))|
specific_relation IN TYPEOF(pd));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_product_definition_relationship(x[i], (relatives +
relation.relating_product_definition), specific_relation) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-41: product_definition_schema
FUNCTION acyclic_surface_replica (
rep : surface_replica;
parent : surface
) : BOOLEAN;
IF NOT ('INTEGRATED_CNC_SCHEMA.SURFACE_REPLICA' IN TYPEOF(parent)) THEN
RETURN (TRUE);
END_IF;
IF parent :=: rep THEN
RETURN (FALSE);
ELSE
RETURN (acyclic_surface_replica(rep, parent\surface_replica.
parent_surface));
END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION associated_surface (
arg : pcurve_or_surface
) : surface;
LOCAL
surf : surface;
END_LOCAL;
IF 'INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(arg) THEN
surf := arg.basis_surface;
ELSE
surf := arg;
END_IF;
RETURN (surf);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION bag_to_set (
the_bag : BAG OF GENERIC : intype
) : SET OF GENERIC : intype;
LOCAL
the_set : SET OF GENERIC : intype := [];
END_LOCAL;
IF SIZEOF(the_bag) > 0 THEN
REPEAT i := 1 TO HIINDEX(the_bag);
the_set := the_set + the_bag[i];
END_REPEAT;
END_IF;
RETURN (the_set);
END_FUNCTION; -- 10303-41: support_resource_schema
FUNCTION base_axis (
dim : INTEGER;
axis1 : direction;
axis2 : direction;
axis3 : direction
) : LIST [2:3] OF direction;
LOCAL
u : LIST [2:3] OF direction;
factor : REAL;
d1 : direction;
d2 : direction;
END_LOCAL;
IF dim = 3 THEN
d1 := NVL(normalise(axis3), dummy_gri || direction([ 0.0, 0.0, 1.0 ])
);
d2 := first_proj_axis(d1, axis1);
u := [ d2, second_proj_axis(d1, d2, axis2), d1 ];
ELSE
IF EXISTS(axis1) THEN
d1 := normalise(axis1);
u := [ d1, orthogonal_complement(d1) ];
IF EXISTS(axis2) THEN
factor := dot_product(axis2, u[2]);
IF factor < 0.0 THEN
u[2].direction_ratios[1] := -u[2].direction_ratios[1];
u[2].direction_ratios[2] := -u[2].direction_ratios[2];
END_IF;
END_IF;
ELSE
IF EXISTS(axis2) THEN
d1 := normalise(axis2);
u := [ orthogonal_complement(d1), d1 ];
u[1].direction_ratios[1] := -u[1].direction_ratios[1];
u[1].direction_ratios[2] := -u[1].direction_ratios[2];
ELSE
u := [ dummy_gri || direction([ 1.0, 0.0 ]), dummy_gri ||
direction([ 0.0, 1.0 ]) ];
END_IF;
END_IF;
END_IF;
RETURN (u);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION boolean_choose (
b : BOOLEAN;
choice1 : GENERIC : item;
choice2 : GENERIC : item
) : GENERIC : item;
IF b THEN
RETURN (choice1);
ELSE
RETURN (choice2);
END_IF;
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION build_2axes (
ref_direction : direction
) : LIST [2:2] OF direction;
LOCAL
d : direction := NVL(normalise(ref_direction), dummy_gri || direction([
1.0, 0.0 ]));
END_LOCAL;
RETURN ([ d, orthogonal_complement(d) ]);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION build_axes (
axis : direction;
ref_direction : direction
) : LIST [3:3] OF direction;
LOCAL
d1 : direction;
d2 : direction;
END_LOCAL;
d1 := NVL(normalise(axis), dummy_gri || direction([ 0.0, 0.0, 1.0 ]));
d2 := first_proj_axis(d1, ref_direction);
RETURN ([ d2, normalise(cross_product(d1, d2)).orientation, d1 ]);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION closed_shell_reversed (
a_shell : closed_shell
) : oriented_closed_shell;
LOCAL
the_reverse : oriented_closed_shell;
END_LOCAL;
IF 'INTEGRATED_CNC_SCHEMA.ORIENTED_CLOSED_SHELL' IN TYPEOF(a_shell)
THEN
the_reverse := dummy_tri || connected_face_set(a_shell\
connected_face_set.cfs_faces) || closed_shell() ||
oriented_closed_shell(a_shell\oriented_closed_shell.
closed_shell_element, NOT a_shell\oriented_closed_shell.orientation
);
ELSE
the_reverse := dummy_tri || connected_face_set(a_shell\
connected_face_set.cfs_faces) || closed_shell() ||
oriented_closed_shell(a_shell, FALSE);
END_IF;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION conditional_reverse (
p : BOOLEAN;
an_item : reversible_topology
) : reversible_topology;
IF p THEN
RETURN (an_item);
ELSE
RETURN (topology_reversed(an_item));
END_IF;
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION constraints_composite_curve_on_surface (
c : composite_curve_on_surface
) : BOOLEAN;
LOCAL
n_segments : INTEGER := SIZEOF(c.segments);
END_LOCAL;
REPEAT k := 1 TO n_segments;
IF (NOT ('INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(c\composite_curve.
segments[k].parent_curve)) AND NOT (
'INTEGRATED_CNC_SCHEMA.SURFACE_CURVE' IN TYPEOF(c\composite_curve.
segments[k].parent_curve))) AND NOT (
'INTEGRATED_CNC_SCHEMA.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c\
composite_curve.segments[k].parent_curve)) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION constraints_geometry_shell_based_surface_model (
m : shell_based_surface_model
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT j := 1 TO SIZEOF(m.sbsm_boundary);
IF NOT ('INTEGRATED_CNC_SCHEMA.OPEN_SHELL' IN TYPEOF(m.sbsm_boundary[
j])) AND NOT ('INTEGRATED_CNC_SCHEMA.CLOSED_SHELL' IN TYPEOF(m.
sbsm_boundary[j])) THEN
result := FALSE;
RETURN (result);
END_IF;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-42: geometric_model_schema
FUNCTION constraints_param_b_spline (
degree : INTEGER;
up_knots : INTEGER;
up_cp : INTEGER;
knot_mult : LIST OF INTEGER;
knots : LIST OF parameter_value
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
k : INTEGER;
sum : INTEGER;
END_LOCAL;
sum := knot_mult[1];
REPEAT i := 2 TO up_knots;
sum := sum + knot_mult[i];
END_REPEAT;
IF (((degree < 1) OR (up_knots < 2)) OR (up_cp < degree)) OR (sum <>
degree + up_cp + 2) THEN
result := FALSE;
RETURN (result);
END_IF;
k := knot_mult[1];
IF (k < 1) OR (k > degree + 1) THEN
result := FALSE;
RETURN (result);
END_IF;
REPEAT i := 2 TO up_knots;
IF (knot_mult[i] < 1) OR (knots[i] <= knots[(i - 1)]) THEN
result := FALSE;
RETURN (result);
END_IF;
k := knot_mult[i];
IF (i < up_knots) AND (k > degree) THEN
result := FALSE;
RETURN (result);
END_IF;
IF (i = up_knots) AND (k > degree + 1) THEN
result := FALSE;
RETURN (result);
END_IF;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION constraints_rectangular_composite_surface (
s : rectangular_composite_surface
) : BOOLEAN;
REPEAT i := 1 TO s.n_u;
REPEAT j := 1 TO s.n_v;
IF NOT (('INTEGRATED_CNC_SCHEMA.B_SPLINE_SURFACE' IN TYPEOF(s.
segments[i][j].parent_surface)) OR (
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_TRIMMED_SURFACE' IN TYPEOF(s.
segments[i][j].parent_surface))) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO s.n_u - 1;
REPEAT j := 1 TO s.n_v;
IF s.segments[i][j].u_transition = discontinuous THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_REPEAT;
REPEAT i := 1 TO s.n_u;
REPEAT j := 1 TO s.n_v - 1;
IF s.segments[i][j].v_transition = discontinuous THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_REPEAT;
RETURN (TRUE);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION cross_product (
arg1 : direction;
arg2 : direction
) : vector;
LOCAL
mag : REAL;
res : direction;
v1 : LIST [3:3] OF REAL;
v2 : LIST [3:3] OF REAL;
result : vector;
END_LOCAL;
IF (NOT EXISTS(arg1) OR (arg1.dim = 2)) OR (NOT EXISTS(arg2) OR (arg2.
dim = 2)) THEN
RETURN (?);
ELSE
BEGIN
v1 := normalise(arg1).direction_ratios;
v2 := normalise(arg2).direction_ratios;
res := dummy_gri || direction([ (v1[2] * v2[3] - v1[3] * v2[2]), (
v1[3] * v2[1] - v1[1] * v2[3]), (v1[1] * v2[2] - v1[2] * v2[1]) ]
);
mag := 0.0;
REPEAT i := 1 TO 3;
mag := mag + res.direction_ratios[i] * res.direction_ratios[i];
END_REPEAT;
IF mag > 0.0 THEN
result := dummy_gri || vector(res, sqrt(mag));
ELSE
result := dummy_gri || vector(arg1, 0.0);
END_IF;
RETURN (result);
END;
END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION curve_weights_positive (
b : rational_b_spline_curve
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 0 TO b.upper_index_on_control_points;
IF b.weights[i] <= 0.0 THEN
result := FALSE;
RETURN (result);
END_IF;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION derive_dimensional_exponents (
x : unit
) : dimensional_exponents;
LOCAL
result : dimensional_exponents := dimensional_exponents(0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0);
END_LOCAL;
IF 'INTEGRATED_CNC_SCHEMA.DERIVED_UNIT' IN TYPEOF(x) THEN
REPEAT i := LOINDEX(x.elements) TO HIINDEX(x.elements);
result.length_exponent := result.length_exponent + x.elements[i].
exponent * x.elements[i].unit.dimensions.length_exponent;
result.mass_exponent := result.mass_exponent + x.elements[i].
exponent * x.elements[i].unit.dimensions.mass_exponent;
result.time_exponent := result.time_exponent + x.elements[i].
exponent * x.elements[i].unit.dimensions.time_exponent;
result.electric_current_exponent := result.
electric_current_exponent + x.elements[i].exponent * x.elements[i
].unit.dimensions.electric_current_exponent;
result.thermodynamic_temperature_exponent := result.
thermodynamic_temperature_exponent + x.elements[i].exponent * x.
elements[i].unit.dimensions.thermodynamic_temperature_exponent;
result.amount_of_substance_exponent := result.
amount_of_substance_exponent + x.elements[i].exponent * x.
elements[i].unit.dimensions.amount_of_substance_exponent;
result.luminous_intensity_exponent := result.
luminous_intensity_exponent + x.elements[i].exponent * x.elements
[i].unit.dimensions.luminous_intensity_exponent;
END_REPEAT;
ELSE
result := x.dimensions;
END_IF;
RETURN (result);
END_FUNCTION; -- 10303-41: measure_schema
FUNCTION dimension_of (
item : geometric_representation_item
) : dimension_count;
LOCAL
x : SET OF representation;
y : representation_context;
dim : dimension_count;
END_LOCAL;
IF 'INTEGRATED_CNC_SCHEMA.CARTESIAN_POINT' IN TYPEOF(item) THEN
dim := SIZEOF(item\cartesian_point.coordinates);
RETURN (dim);
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.DIRECTION' IN TYPEOF(item) THEN
dim := SIZEOF(item\direction.direction_ratios);
RETURN (dim);
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.VECTOR' IN TYPEOF(item) THEN
dim := SIZEOF(item\vector.orientation\direction.direction_ratios);
RETURN (dim);
END_IF;
x := using_representations(item);
y := x[1].context_of_items;
dim := y\geometric_representation_context.coordinate_space_dimension;
RETURN (dim);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION dimensions_for_si_unit (
n : si_unit_name
) : dimensional_exponents;
CASE n OF
metre :
RETURN (dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0))
;
gram :
RETURN (dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0))
;
second :
RETURN (dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0))
;
ampere :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0))
;
kelvin :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0))
;
mole :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0))
;
candela :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0))
;
radian :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0))
;
steradian :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0))
;
hertz :
RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)
);
newton :
RETURN (dimensional_exponents(1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)
);
pascal :
RETURN (dimensional_exponents(-1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0
));
joule :
RETURN (dimensional_exponents(2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)
);
watt :
RETURN (dimensional_exponents(2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0)
);
coulomb :
RETURN (dimensional_exponents(0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0))
;
volt :
RETURN (dimensional_exponents(2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0
));
farad :
RETURN (dimensional_exponents(-2.0, -1.0, 4.0, 1.0, 0.0, 0.0, 0.0
));
ohm :
RETURN (dimensional_exponents(2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0
));
siemens :
RETURN (dimensional_exponents(-2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0
));
weber :
RETURN (dimensional_exponents(2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0
));
tesla :
RETURN (dimensional_exponents(0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0
));
henry :
RETURN (dimensional_exponents(2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0
));
degree_Celsius :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0))
;
lumen :
RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0))
;
lux :
RETURN (dimensional_exponents(-2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)
);
becquerel :
RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)
);
gray :
RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)
);
sievert :
RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)
);
OTHERWISE :
RETURN (?);
END_CASE;
END_FUNCTION; -- 10303-41: measure_schema
FUNCTION dot_product (
arg1 : direction;
arg2 : direction
) : REAL;
LOCAL
scalar : REAL;
vec1 : direction;
vec2 : direction;
ndim : INTEGER;
END_LOCAL;
IF NOT EXISTS(arg1) OR NOT EXISTS(arg2) THEN
scalar := ?;
ELSE
IF arg1.dim <> arg2.dim THEN
scalar := ?;
ELSE
BEGIN
vec1 := normalise(arg1);
vec2 := normalise(arg2);
ndim := arg1.dim;
scalar := 0.0;
REPEAT i := 1 TO ndim;
scalar := scalar + vec1.direction_ratios[i] * vec2.
direction_ratios[i];
END_REPEAT;
END;
END_IF;
END_IF;
RETURN (scalar);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION edge_reversed (
an_edge : edge
) : oriented_edge;
LOCAL
the_reverse : oriented_edge;
END_LOCAL;
IF 'INTEGRATED_CNC_SCHEMA.ORIENTED_EDGE' IN TYPEOF(an_edge) THEN
the_reverse := dummy_tri || edge(an_edge.edge_end, an_edge.edge_start
) || oriented_edge(an_edge\oriented_edge.edge_element, NOT an_edge\
oriented_edge.orientation);
ELSE
the_reverse := dummy_tri || edge(an_edge.edge_end, an_edge.edge_start
) || oriented_edge(an_edge, FALSE);
END_IF;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION face_bound_reversed (
a_face_bound : face_bound
) : face_bound;
LOCAL
the_reverse : face_bound;
END_LOCAL;
IF 'INTEGRATED_CNC_SCHEMA.FACE_OUTER_BOUND' IN TYPEOF(a_face_bound)
THEN
the_reverse := dummy_tri || face_bound(a_face_bound\face_bound.bound,
NOT a_face_bound\face_bound.orientation) || face_outer_bound();
ELSE
the_reverse := dummy_tri || face_bound(a_face_bound.bound, NOT
a_face_bound.orientation);
END_IF;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION face_reversed (
a_face : face
) : oriented_face;
LOCAL
the_reverse : oriented_face;
END_LOCAL;
IF 'INTEGRATED_CNC_SCHEMA.ORIENTED_FACE' IN TYPEOF(a_face) THEN
the_reverse := dummy_tri || face(set_of_topology_reversed(a_face.
bounds)) || oriented_face(a_face\oriented_face.face_element, NOT
a_face\oriented_face.orientation);
ELSE
the_reverse := dummy_tri || face(set_of_topology_reversed(a_face.
bounds)) || oriented_face(a_face, FALSE);
END_IF;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION first_proj_axis (
z_axis : direction;
arg : direction
) : direction;
LOCAL
x_axis : direction;
v : direction;
z : direction;
x_vec : vector;
END_LOCAL;
IF NOT EXISTS(z_axis) THEN
RETURN (?);
ELSE
z := normalise(z_axis);
IF NOT EXISTS(arg) THEN
IF (z.direction_ratios <> [ 1.0, 0.0, 0.0 ]) AND (z.
direction_ratios <> [ -1.0, 0.0, 0.0 ]) THEN
v := dummy_gri || direction([ 1.0, 0.0, 0.0 ]);
ELSE
v := dummy_gri || direction([ 0.0, 1.0, 0.0 ]);
END_IF;
ELSE
IF arg.dim <> 3 THEN
RETURN (?);
END_IF;
IF cross_product(arg, z).magnitude = 0.0 THEN
RETURN (?);
ELSE
v := normalise(arg);
END_IF;
END_IF;
x_vec := scalar_times_vector(dot_product(v, z), z);
x_axis := vector_difference(v, x_vec).orientation;
x_axis := normalise(x_axis);
END_IF;
RETURN (x_axis);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION gbsf_check_curve (
cv : representation_item
) : BOOLEAN;
IF SIZEOF([ 'INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE',
'INTEGRATED_CNC_SCHEMA.CONIC', 'INTEGRATED_CNC_SCHEMA.CURVE_REPLICA',
'INTEGRATED_CNC_SCHEMA.LINE',
'INTEGRATED_CNC_SCHEMA.OFFSET_CURVE_3D' ] * TYPEOF(cv)) > 1 THEN
RETURN (FALSE);
END_IF;
IF SIZEOF([ 'INTEGRATED_CNC_SCHEMA.CIRCLE',
'INTEGRATED_CNC_SCHEMA.ELLIPSE',
'INTEGRATED_CNC_SCHEMA.TRIMMED_CURVE' ] * TYPEOF(cv)) = 1 THEN
RETURN (TRUE);
ELSE
IF ('INTEGRATED_CNC_SCHEMA.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\
b_spline_curve.self_intersect = FALSE) OR (cv\b_spline_curve.
self_intersect = UNKNOWN) THEN
RETURN (TRUE);
ELSE
IF ('INTEGRATED_CNC_SCHEMA.COMPOSITE_CURVE' IN TYPEOF(cv)) AND (cv\
composite_curve.self_intersect = FALSE) OR (cv\composite_curve.
self_intersect = UNKNOWN) THEN
RETURN (SIZEOF(QUERY (seg <* cv\composite_curve.segments| NOT
gbsf_check_curve(seg.parent_curve))) = 0);
ELSE
IF 'INTEGRATED_CNC_SCHEMA.CURVE_REPLICA' IN TYPEOF(cv) THEN
RETURN (gbsf_check_curve(cv\curve_replica.parent_curve));
ELSE
IF (('INTEGRATED_CNC_SCHEMA.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND
((cv\offset_curve_3d.self_intersect = FALSE) OR (cv\
offset_curve_3d.self_intersect = UNKNOWN))) AND NOT (
'INTEGRATED_CNC_SCHEMA.POLYLINE' IN TYPEOF(cv\offset_curve_3d
.basis_curve)) THEN
RETURN (gbsf_check_curve(cv\offset_curve_3d.basis_curve));
ELSE
IF 'INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(cv) THEN
RETURN (gbsf_check_curve(cv\pcurve.reference_to_curve\
representation.items[1]) AND gbsf_check_surface(cv\pcurve
.basis_surface));
ELSE
IF 'INTEGRATED_CNC_SCHEMA.POLYLINE' IN TYPEOF(cv) THEN
IF SIZEOF(cv\polyline.points) >= 3 THEN
RETURN (TRUE);
END_IF;
ELSE
IF 'INTEGRATED_CNC_SCHEMA.SURFACE_CURVE' IN TYPEOF(cv)
THEN
IF gbsf_check_curve(cv\surface_curve.curve_3d) THEN
REPEAT i := 1 TO SIZEOF(cv\surface_curve.
associated_geometry);
IF 'INTEGRATED_CNC_SCHEMA.SURFACE' IN TYPEOF(cv\
surface_curve.associated_geometry[i]) THEN
IF NOT gbsf_check_surface(cv\surface_curve.
associated_geometry[i]) THEN
RETURN (FALSE);
END_IF;
ELSE
IF 'INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(cv\
surface_curve.associated_geometry[i]) THEN
IF NOT gbsf_check_curve(cv\surface_curve.
associated_geometry[i]) THEN
RETURN (FALSE);
END_IF;
END_IF;
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-507: aic_geometrically_bounded_surface
FUNCTION gbsf_check_point (
pnt : point
) : BOOLEAN;
IF 'INTEGRATED_CNC_SCHEMA.CARTESIAN_POINT' IN TYPEOF(pnt) THEN
RETURN (TRUE);
ELSE
IF 'INTEGRATED_CNC_SCHEMA.POINT_ON_CURVE' IN TYPEOF(pnt) THEN
RETURN (gbsf_check_curve(pnt\point_on_curve.basis_curve));
ELSE
IF 'INTEGRATED_CNC_SCHEMA.POINT_ON_SURFACE' IN TYPEOF(pnt) THEN
RETURN (gbsf_check_surface(pnt\point_on_surface.basis_surface));
ELSE
IF 'INTEGRATED_CNC_SCHEMA.DEGENERATE_PCURVE' IN TYPEOF(pnt) THEN
RETURN (gbsf_check_curve(pnt\degenerate_pcurve.
reference_to_curve\representation.items[1]) AND
gbsf_check_surface(pnt\degenerate_pcurve.basis_surface));
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-507: aic_geometrically_bounded_surface
FUNCTION gbsf_check_surface (
sf : surface
) : BOOLEAN;
IF ('INTEGRATED_CNC_SCHEMA.B_SPLINE_SURFACE' IN TYPEOF(sf)) AND (sf\
b_spline_surface.self_intersect = FALSE) OR (sf\b_spline_surface.
self_intersect = UNKNOWN) THEN
RETURN (TRUE);
ELSE
IF SIZEOF([ 'INTEGRATED_CNC_SCHEMA.SPHERICAL_SURFACE',
'INTEGRATED_CNC_SCHEMA.TOROIDAL_SURFACE',
'INTEGRATED_CNC_SCHEMA.CURVE_BOUNDED_SURFACE',
'INTEGRATED_CNC_SCHEMA.RECTANGULAR_TRIMMED_SURFACE' ] * TYPEOF(sf))
= 1 THEN
RETURN (TRUE);
ELSE
IF ('INTEGRATED_CNC_SCHEMA.OFFSET_SURFACE' IN TYPEOF(sf)) AND (sf\
offset_surface.self_intersect = FALSE) OR (sf\offset_surface.
self_intersect = UNKNOWN) THEN
RETURN (gbsf_check_surface(sf\offset_surface.basis_surface));
ELSE
IF 'INTEGRATED_CNC_SCHEMA.RECTANGULAR_COMPOSITE_SURFACE' IN
TYPEOF(sf) THEN
REPEAT i := 1 TO SIZEOF(sf\rectangular_composite_surface.
segments);
REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface.
segments[i]);
IF NOT gbsf_check_surface(sf\rectangular_composite_surface.
segments[i][j].parent_surface) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
END_REPEAT;
RETURN (TRUE);
ELSE
IF 'INTEGRATED_CNC_SCHEMA.SURFACE_REPLICA' IN TYPEOF(sf) THEN
RETURN (gbsf_check_surface(sf\surface_replica.parent_surface)
);
ELSE
IF 'INTEGRATED_CNC_SCHEMA.SURFACE_OF_REVOLUTION' IN TYPEOF(sf
) THEN
RETURN (gbsf_check_curve(sf\swept_surface.swept_curve));
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-507: aic_geometrically_bounded_surface
FUNCTION get_action_property (
cad : characterized_action_definition;
prop_name : STRING
): SET OF action_property;
RETURN (bag_to_set (QUERY (ap <*
USEDIN (cad, 'INTEGRATED_CNC_SCHEMA.ACTION_PROPERTY.DEFINITION') |
(ap.name = prop_name))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION get_basis_surface (
c : curve_on_surface
) : SET [0:2] OF surface;
LOCAL
surfs : SET [0:2] OF surface;
n : INTEGER;
END_LOCAL;
surfs := [];
IF 'INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(c) THEN
surfs := [ c\pcurve.basis_surface ];
ELSE
IF 'INTEGRATED_CNC_SCHEMA.SURFACE_CURVE' IN TYPEOF(c) THEN
n := SIZEOF(c\surface_curve.associated_geometry);
REPEAT i := 1 TO n;
surfs := surfs + associated_surface(c\surface_curve.
associated_geometry[i]);
END_REPEAT;
END_IF;
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c) THEN
n := SIZEOF(c\composite_curve.segments);
surfs := get_basis_surface(c\composite_curve.segments[1].parent_curve
);
IF n > 1 THEN
REPEAT i := 2 TO n;
surfs := surfs * get_basis_surface(c\composite_curve.segments[i].
parent_curve);
END_REPEAT;
END_IF;
END_IF;
RETURN (surfs);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION get_count_of_relating_amr (
am : action_method;
amr_types : SET OF STRING
): INTEGER;
RETURN (SIZEOF (QUERY (amr <* get_relating_amr (am) |
(SIZEOF(amr_types * TYPEOF(amr)) =
SIZEOF(amr_types)) )));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION get_count_of_relating_amr_with_name (
am : action_method;
amr_name : STRING;
amr_types : SET OF STRING
): INTEGER;
RETURN (SIZEOF (QUERY (amr <* get_relating_amr (am) |
((amr.name = amr_name) AND
(SIZEOF(amr_types * TYPEOF(amr)) =
SIZEOF(amr_types))) )));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION get_description_value (
obj : description_attribute_select
) : text;
LOCAL
description_bag : BAG OF description_attribute := USEDIN(obj,
'INTEGRATED_CNC_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.' +
'DESCRIBED_ITEM');
END_LOCAL;
IF SIZEOF(description_bag) = 1 THEN
RETURN (description_bag[1].attribute_value);
ELSE
RETURN (?);
END_IF;
END_FUNCTION; -- 10303-41: basic_attribute_schema
FUNCTION get_id_value (
obj : id_attribute_select
) : identifier;
LOCAL
id_bag : BAG OF id_attribute := USEDIN(obj, 'INTEGRATED_CNC_SCHEMA.' +
'ID_ATTRIBUTE.' + 'IDENTIFIED_ITEM');
END_LOCAL;
IF SIZEOF(id_bag) = 1 THEN
RETURN (id_bag[1].attribute_value);
ELSE
RETURN (?);
END_IF;
END_FUNCTION; -- 10303-41: basic_attribute_schema
FUNCTION get_name_value (
obj : name_attribute_select
) : label;
LOCAL
name_bag : BAG OF name_attribute := USEDIN(obj,
'INTEGRATED_CNC_SCHEMA.' + 'NAME_ATTRIBUTE.' + 'NAMED_ITEM');
END_LOCAL;
IF SIZEOF(name_bag) = 1 THEN
RETURN (name_bag[1].attribute_value);
ELSE
RETURN (?);
END_IF;
END_FUNCTION; -- 10303-41: basic_attribute_schema
FUNCTION get_property_definition_representations (
c_def_instance : characterized_definition
) : SET OF property_definition_representation;
LOCAL
pd_set : SET OF property_definition := [];
pdr_set : SET OF property_definition_representation := [];
END_LOCAL;
pd_set := bag_to_set(USEDIN(c_def_instance,
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION.DEFINITION'));
IF SIZEOF(pd_set) < 1 THEN
RETURN (pdr_set);
END_IF;
REPEAT i := 1 TO HIINDEX(pd_set);
pdr_set := pdr_set + bag_to_set(USEDIN(pd_set[i],
'INTEGRATED_CNC_SCHEMA.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'
));
END_REPEAT;
RETURN (pdr_set);
END_FUNCTION; -- 10303-41: product_property_representation_schema
FUNCTION get_relating_amr (
am : action_method
) : SET OF action_method_relationship;
RETURN (bag_to_set (USEDIN (am,
'INTEGRATED_CNC_SCHEMA.ACTION_METHOD_RELATIONSHIP.RELATING_METHOD')));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION get_resource_property (
crd : characterized_resource_definition;
prop_name : STRING
): SET OF resource_property;
RETURN (bag_to_set (QUERY (rp <*
USEDIN (crd, 'INTEGRATED_CNC_SCHEMA.RESOURCE_PROPERTY.RESOURCE') |
(rp.name = prop_name))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION get_role (
obj : role_select
) : object_role;
LOCAL
role_bag : BAG OF role_association := USEDIN(obj,
'INTEGRATED_CNC_SCHEMA.' + 'ROLE_ASSOCIATION.' + 'ITEM_WITH_ROLE');
END_LOCAL;
IF SIZEOF(role_bag) = 1 THEN
RETURN (role_bag[1].role);
ELSE
RETURN (?);
END_IF;
END_FUNCTION; -- 10303-41: basic_attribute_schema
FUNCTION is_acyclic (
arg : generic_expression
) : BOOLEAN;
RETURN (acyclic(arg, []));
END_FUNCTION; -- 13584-20: iso13584_generic_expressions_schema
FUNCTION is_int_expr (
arg : numeric_expression
) : BOOLEAN;
IF 'INTEGRATED_CNC_SCHEMA.INT_LITERAL' IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.REAL_LITERAL' IN TYPEOF(arg) THEN
RETURN (FALSE);
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.INT_NUMERIC_VARIABLE' IN TYPEOF(arg) THEN
RETURN (TRUE);
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.REAL_NUMERIC_VARIABLE' IN TYPEOF(arg) THEN
RETURN (FALSE);
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 13584-20: iso13584_expressions_schema
FUNCTION is_SQL_mappable (
arg : expression
) : BOOLEAN;
IF 'INTEGRATED_CNC_SCHEMA.SIMPLE_NUMERIC_EXPRESSION' IN TYPEOF(arg)
THEN
RETURN (TRUE);
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.NOT_EXPRESSION' IN TYPEOF(arg) THEN
RETURN (is_SQL_mappable(arg\unary_generic_expression.operand));
END_IF;
IF ('INTEGRATED_CNC_SCHEMA.XOR_EXPRESSION' IN TYPEOF(arg)) THEN
RETURN (FALSE);
END_IF;
IF ('INTEGRATED_CNC_SCHEMA.AND_EXPRESSION' IN TYPEOF(arg)) OR (
'INTEGRATED_CNC_SCHEMA.OR_EXPRESSION' IN TYPEOF(arg)) THEN
REPEAT i := 1 TO SIZEOF(arg\multiple_arity_Boolean_expression.
operands);
IF NOT is_SQL_mappable(arg\multiple_arity_Boolean_expression.
operands[i]) THEN
RETURN (FALSE);
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
IF (((((('INTEGRATED_CNC_SCHEMA.COMPARISON_EQUAL' IN TYPEOF(arg)) OR (
'INTEGRATED_CNC_SCHEMA.COMPARISON_GREATER' IN TYPEOF(arg))) OR (
'INTEGRATED_CNC_SCHEMA.COMPARISON_GREATER_EQUAL' IN TYPEOF(arg))) OR
('INTEGRATED_CNC_SCHEMA.COMPARISON_LESS' IN TYPEOF(arg))) OR (
'INTEGRATED_CNC_SCHEMA.COMPARISON_LESS_EQUAL' IN TYPEOF(arg))) OR (
'INTEGRATED_CNC_SCHEMA.COMPARISON_NOT_EQUAL' IN TYPEOF(arg))) THEN
RETURN (is_SQL_mappable(arg\comparison_expression.operands[1]) AND
is_SQL_mappable(arg\comparison_expression.operands[2]));
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 13584-20: iso13584_expressions_schema
FUNCTION item_in_context (
item : representation_item;
cntxt : representation_context
) : BOOLEAN;
LOCAL
y : BAG OF representation_item;
END_LOCAL;
IF SIZEOF(USEDIN(item, 'INTEGRATED_CNC_SCHEMA.REPRESENTATION.ITEMS') *
cntxt.representations_in_context) > 0 THEN
RETURN (TRUE);
ELSE
y := QUERY (z <* USEDIN(item, '')|
'INTEGRATED_CNC_SCHEMA.REPRESENTATION_ITEM' IN TYPEOF(z));
IF SIZEOF(y) > 0 THEN
REPEAT i := 1 TO HIINDEX(y);
IF item_in_context(y[i], cntxt) THEN
RETURN (TRUE);
END_IF;
END_REPEAT;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-43: representation_schema
FUNCTION leap_year (
year : year_number
) : BOOLEAN;
IF (year MOD 4 = 0) AND (year MOD 100 <> 0) OR (year MOD 400 = 0) THEN
RETURN (TRUE);
ELSE
RETURN (FALSE);
END_IF;
END_FUNCTION; -- 10303-41: date_time_schema
FUNCTION list_face_loops (
f : face
) : LIST [0:?] OF loop;
LOCAL
loops : LIST [0:?] OF loop := [];
END_LOCAL;
REPEAT i := 1 TO SIZEOF(f.bounds);
loops := loops + f.bounds[i].bound;
END_REPEAT;
RETURN (loops);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION list_of_topology_reversed (
a_list : list_of_reversible_topology_item
) : list_of_reversible_topology_item;
LOCAL
the_reverse : list_of_reversible_topology_item;
END_LOCAL;
the_reverse := [];
REPEAT i := 1 TO SIZEOF(a_list);
the_reverse := topology_reversed(a_list[i]) + the_reverse;
END_REPEAT;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION list_to_array (
lis : LIST [0:?] OF GENERIC : T;
low : INTEGER;
u : INTEGER
) : ARRAY [low:u] OF GENERIC : T;
LOCAL
n : INTEGER;
res : ARRAY [low:u] OF GENERIC : T;
END_LOCAL;
n := SIZEOF(lis);
IF n <> u - low + 1 THEN
RETURN (?);
ELSE
res := [ lis[1] ];
REPEAT i := 2 TO n;
res[(low + i - 1)] := lis[i];
END_REPEAT;
RETURN (res);
END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION list_to_set (
l : LIST [0:?] OF GENERIC : T
) : SET OF GENERIC : T;
LOCAL
s : SET OF GENERIC : T := [];
END_LOCAL;
REPEAT i := 1 TO SIZEOF(l);
s := s + l[i];
END_REPEAT;
RETURN (s);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION make_array_of_array (
lis : LIST [1:?] OF LIST [1:?] OF GENERIC : T;
low1 : INTEGER;
u1 : INTEGER;
low2 : INTEGER;
u2 : INTEGER
) : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC : T;
LOCAL
res : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC : T;
END_LOCAL;
IF u1 - low1 + 1 <> SIZEOF(lis) THEN
RETURN (?);
END_IF;
IF u2 - low2 + 1 <> SIZEOF(lis[1]) THEN
RETURN (?);
END_IF;
res := [ list_to_array(lis[1], low2, u2) ];
REPEAT i := 2 TO HIINDEX(lis);
IF u2 - low2 + 1 <> SIZEOF(lis[i]) THEN
RETURN (?);
END_IF;
res[(low1 + i - 1)] := list_to_array(lis[i], low2, u2);
END_REPEAT;
RETURN (res);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION mixed_loop_type_set (
l : SET [0:?] OF loop
) : LOGICAL;
-- LOCAL
-- poly_loop_type : LOGICAL;
-- END_LOCAL;
IF SIZEOF(l) <= 1 THEN
RETURN (FALSE);
END_IF;
-- poly_loop_type := 'INTEGRATED_CNC_SCHEMA.POLY_LOOP' IN TYPEOF(l[1]);
-- REPEAT i := 2 TO SIZEOF(l);
-- IF ('INTEGRATED_CNC_SCHEMA.POLY_LOOP' IN TYPEOF(l[i])) <>
-- poly_loop_type THEN
-- RETURN (TRUE);
-- END_IF;
-- END_REPEAT;
RETURN (FALSE);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION msb_shells (
brep : manifold_solid_brep
) : SET [1:?] OF closed_shell;
IF SIZEOF(QUERY (msbtype <* TYPEOF(brep)| msbtype LIKE
'*BREP_WITH_VOIDS')) >= 1 THEN
RETURN (brep\brep_with_voids.voids + brep.outer);
ELSE
RETURN ([ brep.outer ]);
END_IF;
END_FUNCTION; -- 10303-42: geometric_model_schema
FUNCTION msf_curve_check (
cv : representation_item
) : BOOLEAN;
IF SIZEOF([ 'INTEGRATED_CNC_SCHEMA.BOUNDED_CURVE',
'INTEGRATED_CNC_SCHEMA.CONIC', 'INTEGRATED_CNC_SCHEMA.CURVE_REPLICA',
'INTEGRATED_CNC_SCHEMA.LINE',
'INTEGRATED_CNC_SCHEMA.OFFSET_CURVE_3D' ] * TYPEOF(cv)) > 1 THEN
RETURN (FALSE);
END_IF;
IF ('INTEGRATED_CNC_SCHEMA.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\
b_spline_curve.self_intersect = FALSE) OR (cv\b_spline_curve.
self_intersect = UNKNOWN) THEN
RETURN (TRUE);
ELSE
IF SIZEOF([ 'INTEGRATED_CNC_SCHEMA.CONIC',
'INTEGRATED_CNC_SCHEMA.LINE' ] * TYPEOF(cv)) = 1 THEN
RETURN (TRUE);
ELSE
IF 'INTEGRATED_CNC_SCHEMA.CURVE_REPLICA' IN TYPEOF(cv) THEN
RETURN (msf_curve_check(cv\curve_replica.parent_curve));
ELSE
IF (('INTEGRATED_CNC_SCHEMA.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND (
(cv\offset_curve_3d.self_intersect = FALSE) OR (cv\
offset_curve_3d.self_intersect = UNKNOWN))) AND NOT (
'INTEGRATED_CNC_SCHEMA.POLYLINE' IN TYPEOF(cv\offset_curve_3d.
basis_curve)) THEN
RETURN (msf_curve_check(cv\offset_curve_3d.basis_curve));
ELSE
IF 'INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(cv) THEN
RETURN (msf_curve_check(cv\pcurve.reference_to_curve\
representation.items[1]) AND msf_surface_check(cv\pcurve.
basis_surface));
ELSE
IF 'INTEGRATED_CNC_SCHEMA.SURFACE_CURVE' IN TYPEOF(cv) THEN
IF msf_curve_check(cv\surface_curve.curve_3d) THEN
REPEAT i := 1 TO SIZEOF(cv\surface_curve.
associated_geometry);
IF 'INTEGRATED_CNC_SCHEMA.SURFACE' IN TYPEOF(cv\
surface_curve.associated_geometry[i]) THEN
IF NOT msf_surface_check(cv\surface_curve.
associated_geometry[i]) THEN
RETURN (FALSE);
END_IF;
ELSE
IF 'INTEGRATED_CNC_SCHEMA.PCURVE' IN TYPEOF(cv\
surface_curve.associated_geometry[i]) THEN
IF NOT msf_curve_check(cv\surface_curve.
associated_geometry[i]) THEN
RETURN (FALSE);
END_IF;
END_IF;
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
ELSE
IF 'INTEGRATED_CNC_SCHEMA.POLYLINE' IN TYPEOF(cv) THEN
IF SIZEOF(cv\polyline.points) >= 3 THEN
RETURN (TRUE);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-509: aic_manifold_surface
FUNCTION msf_surface_check (
surf : surface
) : BOOLEAN;
IF 'INTEGRATED_CNC_SCHEMA.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN
RETURN (TRUE);
ELSE
IF 'INTEGRATED_CNC_SCHEMA.SWEPT_SURFACE' IN TYPEOF(surf) THEN
RETURN (msf_curve_check(surf\swept_surface.swept_curve));
ELSE
IF ('INTEGRATED_CNC_SCHEMA.OFFSET_SURFACE' IN TYPEOF(surf)) AND (
surf\offset_surface.self_intersect = FALSE) OR (surf\
offset_surface.self_intersect = UNKNOWN) THEN
RETURN (msf_surface_check(surf\offset_surface.basis_surface));
ELSE
IF 'INTEGRATED_CNC_SCHEMA.SURFACE_REPLICA' IN TYPEOF(surf) THEN
RETURN (msf_surface_check(surf\surface_replica.parent_surface))
;
ELSE
IF ('INTEGRATED_CNC_SCHEMA.B_SPLINE_SURFACE' IN TYPEOF(surf))
AND (surf\b_spline_surface.self_intersect = FALSE) OR (surf\
b_spline_surface.self_intersect = UNKNOWN) THEN
RETURN (TRUE);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION; -- 10303-509: aic_manifold_surface
FUNCTION normalise (
arg : vector_or_direction
) : vector_or_direction;
LOCAL
ndim : INTEGER;
v : direction;
result : vector_or_direction;
vec : vector;
mag : REAL;
END_LOCAL;
IF NOT EXISTS(arg) THEN
result := ?;
ELSE
ndim := arg.dim;
IF 'INTEGRATED_CNC_SCHEMA.VECTOR' IN TYPEOF(arg) THEN
BEGIN
v := dummy_gri || direction(arg.orientation.direction_ratios);
IF arg.magnitude = 0.0 THEN
RETURN (?);
ELSE
vec := dummy_gri || vector(v, 1.0);
END_IF;
END;
ELSE
v := dummy_gri || direction(arg.direction_ratios);
END_IF;
mag := 0.0;
REPEAT i := 1 TO ndim;
mag := mag + v.direction_ratios[i] * v.direction_ratios[i];
END_REPEAT;
IF mag > 0.0 THEN
mag := sqrt(mag);
REPEAT i := 1 TO ndim;
v.direction_ratios[i] := v.direction_ratios[i] / mag;
END_REPEAT;
IF 'INTEGRATED_CNC_SCHEMA.VECTOR' IN TYPEOF(arg) THEN
vec.orientation := v;
result := vec;
ELSE
result := v;
END_IF;
ELSE
RETURN (?);
END_IF;
END_IF;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION open_shell_reversed (
a_shell : open_shell
) : oriented_open_shell;
LOCAL
the_reverse : oriented_open_shell;
END_LOCAL;
IF 'INTEGRATED_CNC_SCHEMA.ORIENTED_OPEN_SHELL' IN TYPEOF(a_shell) THEN
the_reverse := dummy_tri || connected_face_set(a_shell\
connected_face_set.cfs_faces) || open_shell() ||
oriented_open_shell(a_shell\oriented_open_shell.open_shell_element,
NOT a_shell\oriented_open_shell.orientation);
ELSE
the_reverse := dummy_tri || connected_face_set(a_shell\
connected_face_set.cfs_faces) || open_shell() ||
oriented_open_shell(a_shell, FALSE);
END_IF;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION orthogonal_complement (
vec : direction
) : direction;
LOCAL
result : direction;
END_LOCAL;
IF (vec.dim <> 2) OR NOT EXISTS(vec) THEN
RETURN (?);
ELSE
result := dummy_gri || direction([ -vec.direction_ratios[2], vec.
direction_ratios[1] ]);
RETURN (result);
END_IF;
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION path_head_to_tail (
a_path : path
) : LOGICAL;
LOCAL
n : INTEGER;
p : LOGICAL := TRUE;
END_LOCAL;
n := SIZEOF(a_path.edge_list);
REPEAT i := 2 TO n;
p := p AND (a_path.edge_list[(i - 1)].edge_end :=: a_path.edge_list[i
].edge_start);
END_REPEAT;
RETURN (p);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION path_reversed (
a_path : path
) : oriented_path;
LOCAL
the_reverse : oriented_path;
END_LOCAL;
IF 'INTEGRATED_CNC_SCHEMA.ORIENTED_PATH' IN TYPEOF(a_path) THEN
the_reverse := dummy_tri || path(list_of_topology_reversed(a_path.
edge_list)) || oriented_path(a_path\oriented_path.path_element, NOT
a_path\oriented_path.orientation);
ELSE
the_reverse := dummy_tri || path(list_of_topology_reversed(a_path.
edge_list)) || oriented_path(a_path, FALSE);
END_IF;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION scalar_times_vector (
scalar : REAL;
vec : vector_or_direction
) : vector;
LOCAL
v : direction;
mag : REAL;
result : vector;
END_LOCAL;
IF NOT EXISTS(scalar) OR NOT EXISTS(vec) THEN
RETURN (?);
ELSE
IF 'INTEGRATED_CNC_SCHEMA.VECTOR' IN TYPEOF(vec) THEN
v := dummy_gri || direction(vec.orientation.direction_ratios);
mag := scalar * vec.magnitude;
ELSE
v := dummy_gri || direction(vec.direction_ratios);
mag := scalar;
END_IF;
IF mag < 0.0 THEN
REPEAT i := 1 TO SIZEOF(v.direction_ratios);
v.direction_ratios[i] := -v.direction_ratios[i];
END_REPEAT;
mag := -mag;
END_IF;
result := dummy_gri || vector(normalise(v), mag);
END_IF;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION second_proj_axis (
z_axis : direction;
x_axis : direction;
arg : direction
) : direction;
LOCAL
y_axis : vector;
v : direction;
temp : vector;
END_LOCAL;
IF NOT EXISTS(arg) THEN
v := dummy_gri || direction([ 0.0, 1.0, 0.0 ]);
ELSE
v := arg;
END_IF;
temp := scalar_times_vector(dot_product(v, z_axis), z_axis);
y_axis := vector_difference(v, temp);
temp := scalar_times_vector(dot_product(v, x_axis), x_axis);
y_axis := vector_difference(y_axis, temp);
y_axis := normalise(y_axis);
RETURN (y_axis.orientation);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION set_of_topology_reversed (
a_set : set_of_reversible_topology_item
) : set_of_reversible_topology_item;
LOCAL
the_reverse : set_of_reversible_topology_item;
END_LOCAL;
the_reverse := [];
REPEAT i := 1 TO SIZEOF(a_set);
the_reverse := the_reverse + topology_reversed(a_set[i]);
END_REPEAT;
RETURN (the_reverse);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION shell_reversed (
a_shell : shell
) : shell;
IF 'INTEGRATED_CNC_SCHEMA.OPEN_SHELL' IN TYPEOF(a_shell) THEN
RETURN (open_shell_reversed(a_shell));
ELSE
IF 'INTEGRATED_CNC_SCHEMA.CLOSED_SHELL' IN TYPEOF(a_shell) THEN
RETURN (closed_shell_reversed(a_shell));
ELSE
RETURN (?);
END_IF;
END_IF;
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION surface_weights_positive (
b : rational_b_spline_surface
) : BOOLEAN;
LOCAL
result : BOOLEAN := TRUE;
END_LOCAL;
REPEAT i := 0 TO b.u_upper;
REPEAT j := 0 TO b.v_upper;
IF b.weights[i][j] <= 0.0 THEN
result := FALSE;
RETURN (result);
END_IF;
END_REPEAT;
END_REPEAT;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION topology_reversed (
an_item : reversible_topology
) : reversible_topology;
IF 'INTEGRATED_CNC_SCHEMA.EDGE' IN TYPEOF(an_item) THEN
RETURN (edge_reversed(an_item));
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.PATH' IN TYPEOF(an_item) THEN
RETURN (path_reversed(an_item));
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.FACE_BOUND' IN TYPEOF(an_item) THEN
RETURN (face_bound_reversed(an_item));
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.FACE' IN TYPEOF(an_item) THEN
RETURN (face_reversed(an_item));
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.SHELL' IN TYPEOF(an_item) THEN
RETURN (shell_reversed(an_item));
END_IF;
IF 'SET' IN TYPEOF(an_item) THEN
RETURN (set_of_topology_reversed(an_item));
END_IF;
IF 'LIST' IN TYPEOF(an_item) THEN
RETURN (list_of_topology_reversed(an_item));
END_IF;
RETURN (?);
END_FUNCTION; -- 10303-42: topology_schema
FUNCTION using_items (
item : founded_item_select;
checked_items : SET OF founded_item_select
) : SET OF founded_item_select;
LOCAL
new_check_items : SET OF founded_item_select;
result_items : SET OF founded_item_select;
next_items : SET OF founded_item_select;
END_LOCAL;
result_items := [];
new_check_items := checked_items + item;
next_items := QUERY (z <* bag_to_set(USEDIN(item, ''))| (
'INTEGRATED_CNC_SCHEMA.REPRESENTATION_ITEM' IN TYPEOF(z)) OR (
'INTEGRATED_CNC_SCHEMA.FOUNDED_ITEM' IN TYPEOF(z)));
IF SIZEOF(next_items) > 0 THEN
REPEAT i := 1 TO HIINDEX(next_items);
IF NOT (next_items[i] IN new_check_items) THEN
result_items := result_items + next_items[i] + using_items(
next_items[i], new_check_items);
END_IF;
END_REPEAT;
END_IF;
RETURN (result_items);
END_FUNCTION; -- 10303-43: representation_schema
FUNCTION using_representations (
item : founded_item_select
) : SET OF representation;
LOCAL
results : SET OF representation;
result_bag : BAG OF representation;
intermediate_items : SET OF founded_item_select;
END_LOCAL;
results := [];
result_bag := USEDIN(item, 'INTEGRATED_CNC_SCHEMA.REPRESENTATION.ITEMS'
);
IF SIZEOF(result_bag) > 0 THEN
REPEAT i := 1 TO HIINDEX(result_bag);
results := results + result_bag[i];
END_REPEAT;
END_IF;
intermediate_items := using_items(item, []);
IF SIZEOF(intermediate_items) > 0 THEN
REPEAT i := 1 TO HIINDEX(intermediate_items);
result_bag := USEDIN(intermediate_items[i],
'INTEGRATED_CNC_SCHEMA.REPRESENTATION.ITEMS');
IF SIZEOF(result_bag) > 0 THEN
REPEAT j := 1 TO HIINDEX(result_bag);
results := results + result_bag[j];
END_REPEAT;
END_IF;
END_REPEAT;
END_IF;
RETURN (results);
END_FUNCTION; -- 10303-43: representation_schema
FUNCTION valid_calendar_date (
date : calendar_date
) : LOGICAL;
CASE date.month_component OF
1 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 31))
;
2 :
BEGIN
IF leap_year(date.year_component) THEN
RETURN ((1 <= date.day_component) AND (date.day_component <=
29));
ELSE
RETURN ((1 <= date.day_component) AND (date.day_component <=
28));
END_IF;
END;
3 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 31))
;
4 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 30))
;
5 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 31))
;
6 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 30))
;
7 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 31))
;
8 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 31))
;
9 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 30))
;
10 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 31))
;
11 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 30))
;
12 :
RETURN ((1 <= date.day_component) AND (date.day_component <= 31))
;
END_CASE;
RETURN (FALSE);
END_FUNCTION; -- 10303-41: date_time_schema
FUNCTION valid_measure_value (
m : measure_value
) : BOOLEAN;
IF 'REAL' IN TYPEOF(m) THEN
RETURN (m > 0.0);
ELSE
IF 'INTEGER' IN TYPEOF(m) THEN
RETURN (m > 0);
ELSE
RETURN (TRUE);
END_IF;
END_IF;
END_FUNCTION; -- 10303-43: representation_schema
FUNCTION valid_time (
time : local_time
) : BOOLEAN;
IF EXISTS(time.second_component) THEN
RETURN (EXISTS(time.minute_component));
ELSE
RETURN (TRUE);
END_IF;
END_FUNCTION; -- 10303-41: date_time_schema
FUNCTION valid_units (
m : measure_with_unit
) : BOOLEAN;
IF 'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(1, 0, 0, 0, 0, 0, 0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.TIME_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0, 0, 1, 0, 0, 0, 0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0, 0, 0, 0, 0, 0, 0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.SOLID_ANGLE_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0, 0, 0, 0, 0, 0, 0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.RATIO_MEASURE'
IN TYPEOF(m.value_component)
THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0, 0, 0, 0, 0, 0, 0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.POSITIVE_LENGTH_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(1, 0, 0, 0, 0, 0, 0) THEN
RETURN (FALSE);
END_IF;
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.POSITIVE_PLANE_ANGLE_MEASURE'
IN TYPEOF(m.value_component) THEN
IF derive_dimensional_exponents(m.unit_component) <>
dimensional_exponents(0, 0, 0, 0, 0, 0, 0) THEN
RETURN (FALSE);
END_IF;
END_IF;
RETURN (TRUE);
END_FUNCTION; -- 10303-41: measure_schema
FUNCTION vector_difference (
arg1 : vector_or_direction;
arg2 : vector_or_direction
) : vector;
LOCAL
result : vector;
res : direction;
vec1 : direction;
vec2 : direction;
mag : REAL;
mag1 : REAL;
mag2 : REAL;
ndim : INTEGER;
END_LOCAL;
IF (NOT EXISTS(arg1) OR NOT EXISTS(arg2)) OR (arg1.dim <> arg2.dim)
THEN
RETURN (?);
ELSE
BEGIN
IF 'INTEGRATED_CNC_SCHEMA.VECTOR' IN TYPEOF(arg1) THEN
mag1 := arg1.magnitude;
vec1 := arg1.orientation;
ELSE
mag1 := 1.0;
vec1 := arg1;
END_IF;
IF 'INTEGRATED_CNC_SCHEMA.VECTOR' IN TYPEOF(arg2) THEN
mag2 := arg2.magnitude;
vec2 := arg2.orientation;
ELSE
mag2 := 1.0;
vec2 := arg2;
END_IF;
vec1 := normalise(vec1);
vec2 := normalise(vec2);
ndim := SIZEOF(vec1.direction_ratios);
mag := 0.0;
res := dummy_gri || direction(vec1.direction_ratios);
REPEAT i := 1 TO ndim;
res.direction_ratios[i] := mag1 * vec1.direction_ratios[i] + mag2
* vec2.direction_ratios[i];
mag := mag + res.direction_ratios[i] * res.direction_ratios[i];
END_REPEAT;
IF mag > 0.0 THEN
result := dummy_gri || vector(res, sqrt(mag));
ELSE
result := dummy_gri || vector(vec1, 0.0);
END_IF;
END;
END_IF;
RETURN (result);
END_FUNCTION; -- 10303-42: geometry_schema
FUNCTION verify_angle_measure_action_property (
cad : characterized_action_definition;
prop_name : STRING
): LOGICAL;
RETURN (verify_rep_item_for_action_property(cad, prop_name,
['INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT']));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_angle_measure_rep_item (
rep : representation;
prop_name : STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
(it.name = prop_name) AND NOT (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.PLANE_ANGLE_MEASURE_WITH_UNIT'] *
TYPEOF(it)) = 2))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_ball_endmill_edge_dimensions (
rep : machining_tool_dimension_representation
): LOGICAL;
LOCAL
diameter : length_measure;
dia_items : SET OF REPRESENTATION_ITEM :=
QUERY (it <* rep.items | (it.name = 'diameter'));
END_LOCAL;
diameter := dia_items[1].value_component;
RETURN
((0 = SIZEOF (QUERY ( it <* rep.items |
(it.name = 'edge center horizontal') AND NOT
(it.value_component = 0))))
AND
(0 = SIZEOF (QUERY ( it <* rep.items |
(it.name = 'edge center vertical') AND NOT
(it.value_component = diameter/2))))
AND
(0 = SIZEOF (QUERY ( it <* rep.items |
(it.name = 'edge radius') AND NOT
(it.value_component = diameter/2))))
);
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_count_measure_rep_item (
rep : representation;
prop_name : STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
(it.name = prop_name) AND NOT
(('INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND
('INTEGRATED_CNC_SCHEMA.COUNT_MEASURE'
IN TYPEOF(it.value_component))))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_descriptive_action_property (
cad : characterized_action_definition;
prop_name : STRING
): LOGICAL;
RETURN (verify_rep_item_for_action_property(cad, prop_name,
['INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM']));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_descriptive_rep_item (
rep : representation;
prop_name : STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
(it.name = prop_name) AND NOT (
'INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_enumeration_action_property (
cad : characterized_action_definition;
prop_name : STRING;
prop_values : SET OF STRING
): LOGICAL;
-- Each action property has at least one representation that contains
-- a descriptive rep item, and that descriptive rep item has a value
-- drawn from the prop_values set.
-- there are no properties that do not have matching representations
RETURN (0 = SIZEOF (QUERY (prop <* get_action_property (cad, prop_name) |
NOT (
-- there is at least one rep with matching rep items
(0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'INTEGRATED_CNC_SCHEMA.' +
'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
-- property representation has at least one matching rep item
(0 < SIZEOF (QUERY (it <* prep.representation.items |
(('INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND
(it.description IN prop_values))
)))
)))
))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_enumeration_rep_item (
rep : representation;
prop_name : STRING;
prop_values : SET OF STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
(it.name = prop_name) AND NOT
(('INTEGRATED_CNC_SCHEMA.DESCRIPTIVE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND
(it.description IN prop_values)))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_length_measure_action_property (
cad : characterized_action_definition;
prop_name : STRING
): LOGICAL;
RETURN (verify_rep_item_for_action_property (cad, prop_name,
['INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT']));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_length_measure_rep_item (
rep : representation;
prop_name : STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
(it.name = prop_name) AND NOT (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT'] *
TYPEOF(it)) = 2))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_length_measure_resource_property (
crd : characterized_resource_definition;
prop_name : STRING
): LOGICAL;
RETURN (verify_rep_item_for_resource_property (crd, prop_name,
['INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.LENGTH_MEASURE_WITH_UNIT']));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_linear_speed_measure_rep_item (
rep : representation;
prop_name : STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
(it.name = prop_name) AND NOT
(('INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND
('INTEGRATED_CNC_SCHEMA.NUMERIC_MEASURE'
IN TYPEOF(it.value_component))))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_numeric_measure_action_property (
cad : characterized_action_definition;
prop_name : STRING
): LOGICAL;
-- All properties have matching representations. The reason we test
-- for "nothing matching the negation" rather than "something matching
-- the positive" is so that we return true if there are no properties.
--
RETURN (0 = SIZEOF (QUERY (prop <* get_action_property (cad, prop_name) |
-- property has no matching representations
NOT (
-- there is at least one rep with matching rep items
(0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'INTEGRATED_CNC_SCHEMA.' +
'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
-- property representation has at least one matching rep item
(0 < SIZEOF (QUERY (it <* prep.representation.items |
(('INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND
('INTEGRATED_CNC_SCHEMA.NUMERIC_MEASURE'
IN TYPEOF(it.value_component)))
)))
)))
))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_optional_action_property (
cad : characterized_action_definition;
prop_name : STRING
): LOGICAL;
RETURN (1 >= SIZEOF (get_action_property (cad, prop_name)));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_optional_in_process_geometry (
mpe : machining_process_executable
): LOGICAL;
RETURN
((verify_optional_action_property (mpe, 'as-is shape')) AND
(verify_optional_action_property (mpe, 'to-be shape')) AND
(verify_optional_action_property (mpe, 'removal shape')) AND
-- All properties need advanced brep shape reps
(0 = SIZEOF (QUERY (prop <*
USEDIN (mpe, 'INTEGRATED_CNC_SCHEMA.ACTION_PROPERTY.DEFINITION') |
((prop.name IN ['as-is shape', 'to-be shape', 'removal shape']) AND
(0 = SIZEOF (QUERY (prep <* USEDIN (prop, 'INTEGRATED_CNC_SCHEMA.' +
'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
('INTEGRATED_CNC_SCHEMA.ADVANCED_BREP_SHAPE_REPRESENTATION'
IN TYPEOF (prep.representation))))))
)))
);
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_optional_relating_amr (
am : action_method;
amr_types : SET OF STRING
): LOGICAL;
RETURN (1 >= get_count_of_relating_amr (am, amr_types));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_optional_relating_amr_with_name (
am : action_method;
amr_name : STRING;
amr_types : SET OF STRING
): LOGICAL;
RETURN (1 >= get_count_of_relating_amr_with_name (
am, amr_name, amr_types));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_optional_rep_item (
rep : representation;
prop_name : STRING
): LOGICAL;
RETURN (1 >= SIZEOF (QUERY ( it <* rep.items |
(it.name = prop_name))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_optional_resource_property (
crd : characterized_resource_definition;
prop_name : STRING
): LOGICAL;
RETURN (1 >= SIZEOF (get_resource_property (crd, prop_name)));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_parameter_action_property (
cad : characterized_action_definition;
prop_name : STRING
): LOGICAL;
-- All properties have matching representations. The reason we test
-- for "nothing matching the negation" rather than "something matching
-- the positive" is so that we return true if there are no properties.
--
RETURN (0 = SIZEOF (QUERY (prop <* get_action_property (cad, prop_name) |
-- property has no matching representations
NOT (
-- there is at least one rep with matching rep items
(0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'INTEGRATED_CNC_SCHEMA.' +
'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
-- property representation has at least one matching rep item
(0 < SIZEOF (QUERY (it <* prep.representation.items |
(('INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND
('INTEGRATED_CNC_SCHEMA.PARAMETER_VALUE'
IN TYPEOF(it.value_component)))
)))
)))
))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_pressure_measure_action_property (
cad : characterized_action_definition;
prop_name : STRING
): LOGICAL;
RETURN (verify_numeric_measure_action_property (cad, prop_name));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_ratio_measure_action_property (
cad : characterized_action_definition;
prop_name : STRING
): LOGICAL;
RETURN (verify_rep_item_for_action_property (cad, prop_name,
['INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.RATIO_MEASURE_WITH_UNIT']));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_ratio_measure_rep_item (
rep : representation;
prop_name : STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
(it.name = prop_name) AND NOT (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.RATIO_MEASURE_WITH_UNIT'] *
TYPEOF(it)) = 2))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_related_type_for_amr (
am : action_method;
amr_types : SET OF STRING;
types : SET OF STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY (amr <* get_relating_amr (am) |
(SIZEOF(amr_types * TYPEOF(amr)) =
SIZEOF(amr_types)) AND
NOT
(SIZEOF(types * TYPEOF(amr.related_method)) =
SIZEOF(types)) )));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_related_type_for_amr_with_name (
am : action_method;
amr_name : STRING;
amr_types : SET OF STRING;
types : SET OF STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY (amr <* get_relating_amr (am) |
(amr.name = amr_name) AND
(SIZEOF(amr_types * TYPEOF(amr)) =
SIZEOF(amr_types)) AND
NOT
(SIZEOF(types * TYPEOF(amr.related_method)) =
SIZEOF(types)) )));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_rep_desc_for_action_property (
cad : characterized_action_definition;
prop_name : STRING;
desc_names : SET OF STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY (prop <*
get_action_property (cad, prop_name) | NOT
(0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'INTEGRATED_CNC_SCHEMA.'+
'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
(prep.representation.description IN desc_names)
)))
)));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_rep_item_for_action_property (
cad : characterized_action_definition;
prop_name : STRING;
rep_item_types : SET OF STRING
): LOGICAL;
-- All properties have matching representations. The reason we test
-- for "nothing matching the negation" rather than "something matching
-- the positive" is so that we return true if there are no properties.
--
RETURN (0 = SIZEOF (QUERY (prop <* get_action_property (cad, prop_name) |
-- property has no matching representations
NOT (
-- there is at least one rep with matching rep items
(0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'INTEGRATED_CNC_SCHEMA.' +
'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
-- property representation has at least one matching rep item
(0 < SIZEOF (QUERY (it <* prep.representation.items |
(SIZEOF (rep_item_types * TYPEOF(it)) =
SIZEOF (rep_item_types))))
)))
))
)));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_rep_item_for_resource_property (
crd : characterized_resource_definition;
prop_name : STRING;
rep_item_types : SET OF STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY (prop <* get_resource_property (crd, prop_name) |
NOT (0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'INTEGRATED_CNC_SCHEMA.' +
'RESOURCE_PROPERTY_REPRESENTATION.PROPERTY') |
(0 < SIZEOF (QUERY (it <* prep.representation.items |
(SIZEOF (rep_item_types * TYPEOF(it)) =
SIZEOF (rep_item_types)))))
)))
)));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_rep_type_for_action_property (
cad : characterized_action_definition;
prop_name : STRING;
rep_types : SET OF STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY (prop <*
get_action_property (cad, prop_name) | NOT
(0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'INTEGRATED_CNC_SCHEMA.'+
'ACTION_PROPERTY_REPRESENTATION.PROPERTY') |
(SIZEOF(rep_types * TYPEOF(prep.representation)) =
SIZEOF(rep_types))
)))
)));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_rep_type_for_resource_property (
crd : characterized_resource_definition;
prop_name : STRING;
rep_types : SET OF STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY (prop <*
get_resource_property (crd, prop_name) | NOT
(0 < SIZEOF (QUERY (prep <* USEDIN (prop, 'INTEGRATED_CNC_SCHEMA.'+
'RESOURCE_PROPERTY_REPRESENTATION.PROPERTY') |
(SIZEOF(rep_types * TYPEOF(prep.representation)) =
SIZEOF(rep_types))
)))
)));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_required_action_property (
cad : characterized_action_definition;
prop_name : STRING
): LOGICAL;
RETURN (1 = SIZEOF (get_action_property (cad, prop_name)));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_required_relating_amr (
am : action_method;
amr_types : SET OF STRING
): LOGICAL;
RETURN (1 = get_count_of_relating_amr (am, amr_types));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_required_relating_amr_with_name (
am : action_method;
amr_name : STRING;
amr_types : SET OF STRING
): LOGICAL;
RETURN (1 = get_count_of_relating_amr_with_name (
am, amr_name, amr_types));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_required_rep_item (
rep : representation;
prop_name : STRING
): LOGICAL;
RETURN (1 = SIZEOF (QUERY ( it <* rep.items |
(it.name = prop_name))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_required_resource_property (
crd : characterized_resource_definition;
prop_name : STRING
): LOGICAL;
RETURN (1 = SIZEOF (get_resource_property (crd, prop_name)));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_rotary_speed_measure_rep_item (
rep : representation;
prop_name : STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
(it.name = prop_name) AND NOT
(('INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM'
IN TYPEOF(it)) AND
('INTEGRATED_CNC_SCHEMA.NUMERIC_MEASURE'
IN TYPEOF(it.value_component))))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_time_measure_action_property (
cad : characterized_action_definition;
prop_name : STRING
): LOGICAL;
RETURN (verify_rep_item_for_action_property(cad, prop_name,
['INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.TIME_MEASURE_WITH_UNIT']));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_time_measure_rep_item (
rep : representation;
prop_name : STRING
): LOGICAL;
RETURN (0 = SIZEOF (QUERY ( it <* rep.items |
(it.name = prop_name) AND NOT (SIZEOF([
'INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.TIME_MEASURE_WITH_UNIT'] *
TYPEOF(it)) = 2))));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
FUNCTION verify_time_measure_resource_property (
crd : characterized_resource_definition;
prop_name : STRING
): LOGICAL;
RETURN (verify_rep_item_for_resource_property (crd, prop_name,
['INTEGRATED_CNC_SCHEMA.MEASURE_REPRESENTATION_ITEM',
'INTEGRATED_CNC_SCHEMA.TIME_MEASURE_WITH_UNIT']));
END_FUNCTION; -- 10303-238: integrated_cnc_schema
END_SCHEMA; -- integrated_cnc_schema