7191 lines
280 KiB
Text
7191 lines
280 KiB
Text
|
|
|
|
SCHEMA associative_draughting;
|
|
|
|
TYPE ahead_or_behind = ENUMERATION OF
|
|
(ahead,
|
|
behind);
|
|
END_TYPE; -- ahead_or_behind
|
|
|
|
TYPE angle_relator = ENUMERATION OF
|
|
(equal,
|
|
large,
|
|
small);
|
|
END_TYPE; -- angle_relator
|
|
|
|
TYPE approved_item = SELECT
|
|
(drawing_revision,
|
|
drawing_sheet_revision);
|
|
END_TYPE; -- approved_item
|
|
|
|
TYPE area_or_view = SELECT
|
|
(presentation_area,
|
|
presentation_view);
|
|
END_TYPE; -- area_or_view
|
|
|
|
TYPE axis2_placement = SELECT
|
|
(axis2_placement_2d,
|
|
axis2_placement_3d);
|
|
END_TYPE; -- axis2_placement
|
|
|
|
TYPE b_spline_curve_form = ENUMERATION OF
|
|
(polyline_form,
|
|
circular_arc,
|
|
elliptic_arc,
|
|
parabolic_arc,
|
|
hyperbolic_arc,
|
|
unspecified);
|
|
END_TYPE; -- b_spline_curve_form
|
|
|
|
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; -- b_spline_surface_form
|
|
|
|
TYPE boolean_operand = SELECT
|
|
(solid_model);
|
|
END_TYPE; -- boolean_operand
|
|
|
|
TYPE box_characteristic_select = SELECT
|
|
(box_height,
|
|
box_width,
|
|
box_slant_angle,
|
|
box_rotate_angle);
|
|
END_TYPE; -- box_characteristic_select
|
|
|
|
TYPE box_height = positive_ratio_measure;
|
|
END_TYPE; -- box_height
|
|
|
|
TYPE box_rotate_angle = plane_angle_measure;
|
|
END_TYPE; -- box_rotate_angle
|
|
|
|
TYPE box_slant_angle = plane_angle_measure;
|
|
END_TYPE; -- box_slant_angle
|
|
|
|
TYPE box_width = positive_ratio_measure;
|
|
END_TYPE; -- box_width
|
|
|
|
TYPE central_or_parallel = ENUMERATION OF
|
|
(central,
|
|
parallel);
|
|
END_TYPE; -- central_or_parallel
|
|
|
|
TYPE character_spacing_select = SELECT
|
|
(length_measure,
|
|
ratio_measure,
|
|
measure_with_unit);
|
|
END_TYPE; -- character_spacing_select
|
|
|
|
TYPE character_style_select = SELECT
|
|
(text_style_for_defined_font);
|
|
END_TYPE; -- character_style_select
|
|
|
|
TYPE characterized_definition = SELECT
|
|
(characterized_product_definition,
|
|
shape_definition);
|
|
END_TYPE; -- characterized_definition
|
|
|
|
TYPE characterized_product_definition = SELECT
|
|
(product_definition);
|
|
END_TYPE; -- characterized_product_definition
|
|
|
|
TYPE classified_item = SELECT
|
|
(drawing_revision,
|
|
drawing_sheet_revision);
|
|
END_TYPE; -- classified_item
|
|
|
|
TYPE contracted_item = SELECT
|
|
(drawing_revision);
|
|
END_TYPE; -- contracted_item
|
|
|
|
TYPE curve_font_or_scaled_curve_font_select = SELECT
|
|
(curve_style_font_select);
|
|
END_TYPE; -- curve_font_or_scaled_curve_font_select
|
|
|
|
TYPE curve_on_surface = SELECT
|
|
(pcurve,
|
|
surface_curve,
|
|
composite_curve_on_surface);
|
|
END_TYPE; -- curve_on_surface
|
|
|
|
TYPE curve_or_annotation_curve_occurrence = SELECT
|
|
(curve,
|
|
annotation_curve_occurrence);
|
|
END_TYPE; -- curve_or_annotation_curve_occurrence
|
|
|
|
TYPE curve_or_render = SELECT
|
|
(curve_style);
|
|
END_TYPE; -- curve_or_render
|
|
|
|
TYPE curve_style_font_select = SELECT
|
|
(curve_style_font,
|
|
pre_defined_curve_font,
|
|
externally_defined_curve_font);
|
|
END_TYPE; -- curve_style_font_select
|
|
|
|
TYPE date_time_select = SELECT
|
|
(date,
|
|
local_time,
|
|
date_and_time);
|
|
END_TYPE; -- date_time_select
|
|
|
|
TYPE day_in_month_number = INTEGER;
|
|
END_TYPE; -- day_in_month_number
|
|
|
|
TYPE defined_symbol_select = SELECT
|
|
(pre_defined_symbol,
|
|
externally_defined_symbol);
|
|
END_TYPE; -- defined_symbol_select
|
|
|
|
TYPE dimension_count = INTEGER;
|
|
WHERE
|
|
wr1: SELF > 0;
|
|
END_TYPE; -- dimension_count
|
|
|
|
TYPE dimension_extent_usage = ENUMERATION OF
|
|
(origin,
|
|
target);
|
|
END_TYPE; -- dimension_extent_usage
|
|
|
|
TYPE dimensional_characteristic = SELECT
|
|
(dimensional_location,
|
|
dimensional_size);
|
|
END_TYPE; -- dimensional_characteristic
|
|
|
|
TYPE draughting_callout_element = SELECT
|
|
(annotation_text_occurrence,
|
|
annotation_symbol_occurrence,
|
|
annotation_curve_occurrence);
|
|
END_TYPE; -- draughting_callout_element
|
|
|
|
TYPE draughting_group_element = SELECT
|
|
(annotation_occurrence,
|
|
point,
|
|
curve,
|
|
surface);
|
|
END_TYPE; -- draughting_group_element
|
|
|
|
TYPE draughting_organization_item = SELECT
|
|
(product_definition_formation,
|
|
drawing_revision,
|
|
drawing_sheet_revision);
|
|
END_TYPE; -- draughting_organization_item
|
|
|
|
TYPE draughting_presented_item_select = SELECT
|
|
(product_definition_formation);
|
|
END_TYPE; -- draughting_presented_item_select
|
|
|
|
TYPE draughting_titled_item = SELECT
|
|
(drawing_revision,
|
|
drawing_sheet_revision);
|
|
END_TYPE; -- draughting_titled_item
|
|
|
|
TYPE fill_area_style_tile_shape_select = SELECT
|
|
(fill_area_style_tile_symbol_with_style);
|
|
END_TYPE; -- fill_area_style_tile_shape_select
|
|
|
|
TYPE fill_style_select = SELECT
|
|
(fill_area_style_colour,
|
|
externally_defined_tile_style,
|
|
fill_area_style_tiles,
|
|
externally_defined_hatch_style,
|
|
fill_area_style_hatching);
|
|
END_TYPE; -- fill_style_select
|
|
|
|
TYPE font_select = SELECT
|
|
(pre_defined_text_font,
|
|
externally_defined_text_font);
|
|
END_TYPE; -- font_select
|
|
|
|
TYPE geometric_set_select = SELECT
|
|
(point,
|
|
curve,
|
|
surface);
|
|
END_TYPE; -- geometric_set_select
|
|
|
|
TYPE hiding_or_blanking_select = SELECT
|
|
(presentation_area,
|
|
presentation_view,
|
|
annotation_fill_area);
|
|
END_TYPE; -- hiding_or_blanking_select
|
|
|
|
TYPE hour_in_day = INTEGER;
|
|
WHERE
|
|
wr1: (0 <= SELF) AND (SELF < 24);
|
|
END_TYPE; -- hour_in_day
|
|
|
|
TYPE identifier = STRING;
|
|
END_TYPE; -- identifier
|
|
|
|
TYPE invisibility_context = SELECT
|
|
(presentation_layer_usage,
|
|
presentation_representation,
|
|
presentation_set);
|
|
END_TYPE; -- invisibility_context
|
|
|
|
TYPE invisible_item = SELECT
|
|
(styled_item,
|
|
presentation_layer_assignment,
|
|
presentation_representation);
|
|
END_TYPE; -- invisible_item
|
|
|
|
TYPE knot_type = ENUMERATION OF
|
|
(uniform_knots,
|
|
unspecified,
|
|
quasi_uniform_knots,
|
|
piecewise_bezier_knots);
|
|
END_TYPE; -- knot_type
|
|
|
|
TYPE label = STRING;
|
|
END_TYPE; -- label
|
|
|
|
TYPE layered_item = SELECT
|
|
(presentation_representation,
|
|
representation_item);
|
|
END_TYPE; -- layered_item
|
|
|
|
TYPE length_measure = REAL;
|
|
END_TYPE; -- length_measure
|
|
|
|
TYPE list_of_reversible_topology_item = LIST [0:?] OF
|
|
reversible_topology_item;
|
|
END_TYPE; -- list_of_reversible_topology_item
|
|
|
|
TYPE marker_select = SELECT
|
|
(pre_defined_marker);
|
|
END_TYPE; -- marker_select
|
|
|
|
TYPE measure_value = SELECT
|
|
(length_measure,
|
|
plane_angle_measure,
|
|
solid_angle_measure,
|
|
ratio_measure,
|
|
parameter_value,
|
|
positive_length_measure,
|
|
positive_ratio_measure);
|
|
END_TYPE; -- measure_value
|
|
|
|
TYPE minute_in_hour = INTEGER;
|
|
WHERE
|
|
wr1: (0 <= SELF) AND (SELF <= 59);
|
|
END_TYPE; -- minute_in_hour
|
|
|
|
TYPE month_in_year_number = INTEGER;
|
|
WHERE
|
|
wr1: (1 <= SELF) AND (SELF <= 12);
|
|
END_TYPE; -- month_in_year_number
|
|
|
|
TYPE null_style = ENUMERATION OF
|
|
(null);
|
|
END_TYPE; -- null_style
|
|
|
|
TYPE parameter_value = REAL;
|
|
END_TYPE; -- parameter_value
|
|
|
|
TYPE pcurve_or_surface = SELECT
|
|
(pcurve,
|
|
surface);
|
|
END_TYPE; -- pcurve_or_surface
|
|
|
|
TYPE person_organization_select = SELECT
|
|
(person,
|
|
organization,
|
|
person_and_organization);
|
|
END_TYPE; -- person_organization_select
|
|
|
|
TYPE plane_angle_measure = REAL;
|
|
END_TYPE; -- plane_angle_measure
|
|
|
|
TYPE positive_length_measure = length_measure;
|
|
WHERE
|
|
wr1: SELF > 0;
|
|
END_TYPE; -- positive_length_measure
|
|
|
|
TYPE positive_ratio_measure = ratio_measure;
|
|
WHERE
|
|
wr1: SELF > 0;
|
|
END_TYPE; -- positive_ratio_measure
|
|
|
|
TYPE preferred_surface_curve_representation = ENUMERATION OF
|
|
(curve_3d,
|
|
pcurve_s1,
|
|
pcurve_s2);
|
|
END_TYPE; -- preferred_surface_curve_representation
|
|
|
|
TYPE presentable_text = STRING;
|
|
END_TYPE; -- presentable_text
|
|
|
|
TYPE presentation_representation_select = SELECT
|
|
(presentation_representation,
|
|
presentation_set);
|
|
END_TYPE; -- presentation_representation_select
|
|
|
|
TYPE presentation_size_assignment_select = SELECT
|
|
(presentation_view,
|
|
presentation_area,
|
|
area_in_set);
|
|
END_TYPE; -- presentation_size_assignment_select
|
|
|
|
TYPE presentation_style_select = SELECT
|
|
(curve_style,
|
|
symbol_style,
|
|
fill_area_style,
|
|
text_style,
|
|
null_style);
|
|
END_TYPE; -- presentation_style_select
|
|
|
|
TYPE ratio_measure = REAL;
|
|
END_TYPE; -- ratio_measure
|
|
|
|
TYPE reversible_topology = SELECT
|
|
(reversible_topology_item,
|
|
list_of_reversible_topology_item,
|
|
set_of_reversible_topology_item);
|
|
END_TYPE; -- reversible_topology
|
|
|
|
TYPE reversible_topology_item = SELECT
|
|
(edge,
|
|
path,
|
|
face,
|
|
face_bound,
|
|
closed_shell,
|
|
open_shell);
|
|
END_TYPE; -- reversible_topology_item
|
|
|
|
TYPE second_in_minute = REAL;
|
|
WHERE
|
|
wr1: (0 <= SELF) AND (SELF < 60);
|
|
END_TYPE; -- second_in_minute
|
|
|
|
TYPE set_of_reversible_topology_item = SET [0:?] OF
|
|
reversible_topology_item;
|
|
END_TYPE; -- set_of_reversible_topology_item
|
|
|
|
TYPE shape_definition = SELECT
|
|
(product_definition_shape,
|
|
shape_aspect,
|
|
shape_aspect_relationship);
|
|
END_TYPE; -- shape_definition
|
|
|
|
TYPE shell = SELECT
|
|
(vertex_shell,
|
|
wire_shell,
|
|
open_shell,
|
|
closed_shell);
|
|
END_TYPE; -- shell
|
|
|
|
TYPE si_prefix = ENUMERATION OF
|
|
(exa,
|
|
peta,
|
|
tera,
|
|
giga,
|
|
mega,
|
|
kilo,
|
|
hecto,
|
|
deca,
|
|
deci,
|
|
centi,
|
|
milli,
|
|
micro,
|
|
nano,
|
|
pico,
|
|
femto,
|
|
atto);
|
|
END_TYPE; -- si_prefix
|
|
|
|
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; -- si_unit_name
|
|
|
|
TYPE size_select = SELECT
|
|
(positive_length_measure,
|
|
measure_with_unit);
|
|
END_TYPE; -- size_select
|
|
|
|
TYPE solid_angle_measure = REAL;
|
|
END_TYPE; -- solid_angle_measure
|
|
|
|
TYPE source_item = SELECT
|
|
(identifier);
|
|
END_TYPE; -- source_item
|
|
|
|
TYPE specified_item = SELECT
|
|
(drawing_revision);
|
|
END_TYPE; -- specified_item
|
|
|
|
TYPE style_context_select = SELECT
|
|
(representation,
|
|
representation_item,
|
|
presentation_set);
|
|
END_TYPE; -- style_context_select
|
|
|
|
TYPE surface_model = SELECT
|
|
(shell_based_surface_model);
|
|
END_TYPE; -- surface_model
|
|
|
|
TYPE symbol_style_select = SELECT
|
|
(symbol_colour);
|
|
END_TYPE; -- symbol_style_select
|
|
|
|
TYPE text = STRING;
|
|
END_TYPE; -- text
|
|
|
|
TYPE text_alignment = label;
|
|
END_TYPE; -- text_alignment
|
|
|
|
TYPE text_delineation = label;
|
|
END_TYPE; -- text_delineation
|
|
|
|
TYPE text_or_character = SELECT
|
|
(annotation_text,
|
|
composite_text,
|
|
text_literal);
|
|
END_TYPE; -- text_or_character
|
|
|
|
TYPE text_path = ENUMERATION OF
|
|
(left,
|
|
right,
|
|
up,
|
|
down);
|
|
END_TYPE; -- text_path
|
|
|
|
TYPE tolerance_method_definition = SELECT
|
|
(tolerance_value);
|
|
END_TYPE; -- tolerance_method_definition
|
|
|
|
TYPE tolerance_select = SELECT
|
|
(plus_minus_tolerance);
|
|
END_TYPE; -- tolerance_select
|
|
|
|
TYPE transformation = SELECT
|
|
(functionally_defined_transformation);
|
|
END_TYPE; -- transformation
|
|
|
|
TYPE transition_code = ENUMERATION OF
|
|
(discontinuous,
|
|
continuous,
|
|
cont_same_gradient,
|
|
cont_same_gradient_same_curvature);
|
|
END_TYPE; -- transition_code
|
|
|
|
TYPE trimming_preference = ENUMERATION OF
|
|
(cartesian,
|
|
parameter,
|
|
unspecified);
|
|
END_TYPE; -- trimming_preference
|
|
|
|
TYPE trimming_select = SELECT
|
|
(cartesian_point,
|
|
parameter_value);
|
|
END_TYPE; -- trimming_select
|
|
|
|
TYPE unit = SELECT
|
|
(named_unit,
|
|
derived_unit);
|
|
END_TYPE; -- unit
|
|
|
|
TYPE vector_or_direction = SELECT
|
|
(vector,
|
|
direction);
|
|
END_TYPE; -- vector_or_direction
|
|
|
|
TYPE wireframe_model = SELECT
|
|
(shell_based_wireframe_model,
|
|
edge_based_wireframe_model);
|
|
END_TYPE; -- wireframe_model
|
|
|
|
TYPE year_number = INTEGER;
|
|
END_TYPE; -- year_number
|
|
|
|
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;
|
|
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; -- address
|
|
|
|
ENTITY advanced_brep_shape_representation
|
|
SUBTYPE OF (shape_representation);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP',
|
|
'ASSOCIATIVE_DRAUGHTING.FACETED_BREP',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) =
|
|
1)) )) = 0;
|
|
wr2: SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM'] * TYPEOF(it)) = 1) ))
|
|
> 0;
|
|
wr3: SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(QUERY ( csh <* msb_shells(msb,
|
|
'ASSOCIATIVE_DRAUGHTING') | (NOT (SIZEOF(QUERY ( fcs <* csh\
|
|
connected_face_set.cfs_faces | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.ADVANCED_FACE' IN TYPEOF(fcs))) )) =
|
|
0)) )) = 0)) )) = 0;
|
|
wr4: SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) )
|
|
| ('ASSOCIATIVE_DRAUGHTING.ORIENTED_CLOSED_SHELL' IN
|
|
TYPEOF(msb\manifold_solid_brep.outer)) )) = 0;
|
|
wr5: SIZEOF(QUERY ( brv <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.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 <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(it)) ) | (
|
|
NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.ADVANCED_BREP_SHAPE_REPRESENTATION'
|
|
IN TYPEOF(mi\mapped_item.mapping_source.
|
|
mapped_representation))) )) = 0;
|
|
END_ENTITY; -- advanced_brep_shape_representation
|
|
|
|
ENTITY advanced_face
|
|
SUBTYPE OF (face_surface);
|
|
WHERE
|
|
wr1 : SIZEOF(['ASSOCIATIVE_DRAUGHTING.ELEMENTARY_SURFACE',
|
|
'ASSOCIATIVE_DRAUGHTING.B_SPLINE_SURFACE',
|
|
'ASSOCIATIVE_DRAUGHTING.SWEPT_SURFACE'] * TYPEOF(
|
|
face_geometry)) = 1;
|
|
wr2 : SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* SELF.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.
|
|
edge_list | (NOT ('ASSOCIATIVE_DRAUGHTING.EDGE_CURVE' IN
|
|
TYPEOF(oe.edge_element))) )) = 0)) )) = 0;
|
|
wr3 : SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* SELF.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.
|
|
edge_list | (NOT (SIZEOF(['ASSOCIATIVE_DRAUGHTING.LINE',
|
|
'ASSOCIATIVE_DRAUGHTING.CONIC',
|
|
'ASSOCIATIVE_DRAUGHTING.POLYLINE',
|
|
'ASSOCIATIVE_DRAUGHTING.SURFACE_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.B_SPLINE_CURVE'] * TYPEOF(oe.
|
|
edge_element\edge_curve.edge_geometry)) = 1)) )) = 0)) )) =
|
|
0;
|
|
wr4 : SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* SELF.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.
|
|
edge_list | (NOT (('ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN
|
|
TYPEOF(oe.edge_start)) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.CARTESIAN_POINT' IN TYPEOF(oe.
|
|
edge_start\vertex_point.vertex_geometry)) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN TYPEOF(oe.edge_end))
|
|
AND ('ASSOCIATIVE_DRAUGHTING.CARTESIAN_POINT' IN TYPEOF(oe.
|
|
edge_end\vertex_point.vertex_geometry)))) )) = 0)) )) = 0;
|
|
wr5 : SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* SELF.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| ('ASSOCIATIVE_DRAUGHTING.ORIENTED_PATH' IN TYPEOF(
|
|
elp_fbnds.bound)) )) = 0;
|
|
wr6 : (NOT ('ASSOCIATIVE_DRAUGHTING.SWEPT_SURFACE' IN TYPEOF(
|
|
face_geometry))) OR (SIZEOF(['ASSOCIATIVE_DRAUGHTING.LINE',
|
|
'ASSOCIATIVE_DRAUGHTING.CONIC',
|
|
'ASSOCIATIVE_DRAUGHTING.POLYLINE',
|
|
'ASSOCIATIVE_DRAUGHTING.B_SPLINE_CURVE'] * TYPEOF(
|
|
face_geometry\swept_surface.swept_curve)) = 1);
|
|
wr7 : SIZEOF(QUERY ( vlp_fbnds <* QUERY ( bnds <* SELF.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT (('ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN TYPEOF(
|
|
vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.CARTESIAN_POINT' IN TYPEOF(
|
|
vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\
|
|
vertex_point.vertex_geometry)))) )) = 0;
|
|
wr8 : SIZEOF(QUERY ( bnd <* SELF.bounds | (NOT (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP',
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_LOOP'] * TYPEOF(bnd.bound))
|
|
= 1)) )) = 0;
|
|
wr9 : SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* SELF.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.
|
|
edge_list | (('ASSOCIATIVE_DRAUGHTING.SURFACE_CURVE' IN
|
|
TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND (NOT
|
|
(SIZEOF(QUERY ( sc_ag <* oe.edge_element\edge_curve.
|
|
edge_geometry\surface_curve.associated_geometry | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.PCURVE' IN TYPEOF(sc_ag))) )) = 0)))))
|
|
= 0)) )) = 0;
|
|
wr10: ((NOT ('ASSOCIATIVE_DRAUGHTING.SWEPT_SURFACE' IN TYPEOF(
|
|
face_geometry))) OR (NOT ('ASSOCIATIVE_DRAUGHTING.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 <* SELF.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.
|
|
edge_list | (('ASSOCIATIVE_DRAUGHTING.POLYLINE' IN TYPEOF(
|
|
oe.edge_element\edge_curve.edge_geometry)) AND (NOT (
|
|
SIZEOF(oe.edge_element\edge_curve.edge_geometry\polyline.
|
|
points) < 3))) )) = 0)) )) = 0);
|
|
END_ENTITY; -- advanced_face
|
|
|
|
ENTITY angular_dimension
|
|
SUBTYPE OF (dimension_curve_directed_callout);
|
|
END_ENTITY; -- angular_dimension
|
|
|
|
ENTITY angular_location
|
|
SUBTYPE OF (dimensional_location);
|
|
angle_selection : angle_relator;
|
|
END_ENTITY; -- angular_location
|
|
|
|
ENTITY annotation_curve_occurrence
|
|
SUBTYPE OF (annotation_occurrence);
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.CURVE' IN TYPEOF(SELF\styled_item.item);
|
|
END_ENTITY; -- annotation_curve_occurrence
|
|
|
|
ENTITY annotation_fill_area
|
|
SUBTYPE OF (geometric_representation_item);
|
|
boundaries : SET [1:?] OF curve;
|
|
END_ENTITY; -- annotation_fill_area
|
|
|
|
ENTITY annotation_fill_area_occurrence
|
|
SUBTYPE OF (annotation_occurrence);
|
|
fill_style_target : point;
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.ANNOTATION_FILL_AREA' IN TYPEOF(SELF.
|
|
item);
|
|
END_ENTITY; -- annotation_fill_area_occurrence
|
|
|
|
ENTITY annotation_occurrence
|
|
SUPERTYPE OF (ONEOF (annotation_curve_occurrence,
|
|
annotation_fill_area_occurrence,annotation_text_occurrence,
|
|
annotation_symbol_occurrence))
|
|
SUBTYPE OF (styled_item);
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_REPRESENTATION_ITEM' IN
|
|
TYPEOF(SELF);
|
|
END_ENTITY; -- annotation_occurrence
|
|
|
|
ENTITY annotation_occurrence_associativity
|
|
SUBTYPE OF (annotation_occurrence_relationship);
|
|
WHERE
|
|
wr1: SIZEOF(TYPEOF(SELF.related_annotation_occurrence) * [
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_FILL_AREA_OCCURRENCE',
|
|
'ASSOCIATIVE_DRAUGHTING.PROJECTION_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.LEADER_CURVE']) = 1;
|
|
END_ENTITY; -- annotation_occurrence_associativity
|
|
|
|
ENTITY annotation_occurrence_relationship;
|
|
name : label;
|
|
description : text;
|
|
relating_annotation_occurrence : annotation_occurrence;
|
|
related_annotation_occurrence : annotation_occurrence;
|
|
END_ENTITY; -- annotation_occurrence_relationship
|
|
|
|
ENTITY annotation_subfigure_occurrence
|
|
SUBTYPE OF (annotation_symbol_occurrence);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( sty <* SELF.styles | (NOT (SIZEOF(sty.styles) =
|
|
1)) )) = 0;
|
|
wr2: SIZEOF(QUERY ( sty <* SELF.styles | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.NULL_STYLE' IN TYPEOF(sty.styles[1])))
|
|
))
|
|
= 0;
|
|
wr3: 'ASSOCIATIVE_DRAUGHTING.ANNOTATION_SYMBOL' IN TYPEOF(SELF.item);
|
|
wr4: 'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_SUBFIGURE_REPRESENTATION' IN
|
|
TYPEOF(SELF.item\mapped_item.mapping_source.
|
|
mapped_representation);
|
|
END_ENTITY; -- annotation_subfigure_occurrence
|
|
|
|
ENTITY annotation_symbol
|
|
SUBTYPE OF (mapped_item);
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.SYMBOL_REPRESENTATION_MAP' IN TYPEOF(
|
|
SELF\mapped_item.mapping_source);
|
|
wr2: 'ASSOCIATIVE_DRAUGHTING.SYMBOL_TARGET' IN TYPEOF(SELF\
|
|
mapped_item.mapping_target);
|
|
wr3: 'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_REPRESENTATION_ITEM' IN
|
|
TYPEOF(SELF);
|
|
END_ENTITY; -- annotation_symbol
|
|
|
|
ENTITY annotation_symbol_occurrence
|
|
SUBTYPE OF (annotation_occurrence);
|
|
WHERE
|
|
wr1: SIZEOF(['ASSOCIATIVE_DRAUGHTING.ANNOTATION_SYMBOL',
|
|
'ASSOCIATIVE_DRAUGHTING.DEFINED_SYMBOL'] * TYPEOF(SELF\
|
|
styled_item.item)) > 0;
|
|
END_ENTITY; -- annotation_symbol_occurrence
|
|
|
|
ENTITY annotation_text
|
|
SUBTYPE OF (mapped_item);
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT' IN TYPEOF(SELF\
|
|
mapped_item.mapping_target);
|
|
wr2: 'ASSOCIATIVE_DRAUGHTING.TEXT_STRING_REPRESENTATION' IN TYPEOF(
|
|
SELF\mapped_item.mapping_source.mapped_representation);
|
|
wr3: 'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_REPRESENTATION_ITEM' IN
|
|
TYPEOF(SELF);
|
|
END_ENTITY; -- annotation_text
|
|
|
|
ENTITY annotation_text_occurrence
|
|
SUBTYPE OF (annotation_occurrence);
|
|
WHERE
|
|
wr1: SIZEOF(['ASSOCIATIVE_DRAUGHTING.TEXT_LITERAL',
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT',
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_CHARACTER',
|
|
'ASSOCIATIVE_DRAUGHTING.DEFINED_CHARACTER_GLYPH',
|
|
'ASSOCIATIVE_DRAUGHTING.COMPOSITE_TEXT'] * TYPEOF(SELF\
|
|
styled_item.item)) > 0;
|
|
END_ENTITY; -- annotation_text_occurrence
|
|
|
|
ENTITY application_context;
|
|
application : text;
|
|
INVERSE
|
|
context_elements : SET [1:?] OF application_context_element FOR
|
|
frame_of_reference;
|
|
END_ENTITY; -- application_context
|
|
|
|
ENTITY application_context_element
|
|
SUPERTYPE OF (ONEOF (product_context,product_definition_context));
|
|
name : label;
|
|
frame_of_reference : application_context;
|
|
END_ENTITY; -- application_context_element
|
|
|
|
ENTITY application_protocol_definition;
|
|
status : label;
|
|
application_interpreted_model_schema_name : label;
|
|
application_protocol_year : year_number;
|
|
application : application_context;
|
|
END_ENTITY; -- application_protocol_definition
|
|
|
|
ENTITY approval;
|
|
status : approval_status;
|
|
level : label;
|
|
END_ENTITY; -- approval
|
|
|
|
ENTITY approval_assignment
|
|
ABSTRACT SUPERTYPE;
|
|
assigned_approval : approval;
|
|
END_ENTITY; -- approval_assignment
|
|
|
|
ENTITY approval_date_time;
|
|
date_time : date_time_select;
|
|
dated_approval : approval;
|
|
END_ENTITY; -- approval_date_time
|
|
|
|
ENTITY approval_person_organization;
|
|
person_organization : person_organization_select;
|
|
authorized_approval : approval;
|
|
role : approval_role;
|
|
END_ENTITY; -- approval_person_organization
|
|
|
|
ENTITY approval_role;
|
|
role : label;
|
|
END_ENTITY; -- approval_role
|
|
|
|
ENTITY approval_status;
|
|
name : label;
|
|
END_ENTITY; -- approval_status
|
|
|
|
ENTITY area_in_set;
|
|
area : presentation_area;
|
|
in_set : presentation_set;
|
|
END_ENTITY; -- area_in_set
|
|
|
|
ENTITY axis1_placement
|
|
SUBTYPE OF (placement);
|
|
axis : OPTIONAL direction;
|
|
DERIVE
|
|
z : direction := NVL(normalise(axis),direction([0,0,1]));
|
|
WHERE
|
|
wr1: SELF\geometric_representation_item.dim = 3;
|
|
END_ENTITY; -- axis1_placement
|
|
|
|
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; -- axis2_placement_2d
|
|
|
|
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);
|
|
END_ENTITY; -- axis2_placement_3d
|
|
|
|
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: ('ASSOCIATIVE_DRAUGHTING.UNIFORM_CURVE' IN TYPEOF(SELF)) OR (
|
|
'ASSOCIATIVE_DRAUGHTING.QUASI_UNIFORM_CURVE' IN TYPEOF(SELF))
|
|
OR ('ASSOCIATIVE_DRAUGHTING.BEZIER_CURVE' IN TYPEOF(SELF))
|
|
OR ('ASSOCIATIVE_DRAUGHTING.B_SPLINE_CURVE_WITH_KNOTS' IN
|
|
TYPEOF(SELF));
|
|
END_ENTITY; -- b_spline_curve
|
|
|
|
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; -- b_spline_curve_with_knots
|
|
|
|
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: ('ASSOCIATIVE_DRAUGHTING.UNIFORM_SURFACE' IN TYPEOF(SELF)) OR (
|
|
'ASSOCIATIVE_DRAUGHTING.QUASI_UNIFORM_SURFACE' IN TYPEOF(
|
|
SELF)) OR ('ASSOCIATIVE_DRAUGHTING.BEZIER_SURFACE' IN
|
|
TYPEOF(SELF)) OR (
|
|
'ASSOCIATIVE_DRAUGHTING.B_SPLINE_SURFACE_WITH_KNOTS' IN
|
|
TYPEOF(SELF));
|
|
END_ENTITY; -- b_spline_surface
|
|
|
|
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; -- b_spline_surface_with_knots
|
|
|
|
ENTITY bezier_curve
|
|
SUBTYPE OF (b_spline_curve);
|
|
END_ENTITY; -- bezier_curve
|
|
|
|
ENTITY bezier_surface
|
|
SUBTYPE OF (b_spline_surface);
|
|
END_ENTITY; -- bezier_surface
|
|
|
|
ENTITY boundary_curve
|
|
SUBTYPE OF (composite_curve_on_surface);
|
|
WHERE
|
|
wr1: SELF\composite_curve.closed_curve;
|
|
END_ENTITY; -- boundary_curve
|
|
|
|
ENTITY bounded_curve
|
|
SUPERTYPE OF (ONEOF (polyline,b_spline_curve,trimmed_curve,
|
|
composite_curve))
|
|
SUBTYPE OF (curve);
|
|
END_ENTITY; -- bounded_curve
|
|
|
|
ENTITY bounded_surface
|
|
SUPERTYPE OF (ONEOF (b_spline_surface,rectangular_trimmed_surface,
|
|
curve_bounded_surface,rectangular_composite_surface))
|
|
SUBTYPE OF (surface);
|
|
END_ENTITY; -- bounded_surface
|
|
|
|
ENTITY brep_with_voids
|
|
SUBTYPE OF (manifold_solid_brep);
|
|
voids : SET [1:?] OF oriented_closed_shell;
|
|
END_ENTITY; -- brep_with_voids
|
|
|
|
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; -- calendar_date
|
|
|
|
ENTITY camera_image
|
|
SUBTYPE OF (mapped_item);
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.CAMERA_USAGE' IN TYPEOF(SELF\
|
|
mapped_item.mapping_source);
|
|
wr2: 'ASSOCIATIVE_DRAUGHTING.PLANAR_BOX' IN TYPEOF(SELF\mapped_item.
|
|
mapping_target);
|
|
wr3: 'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_REPRESENTATION_ITEM' IN
|
|
TYPEOF(SELF);
|
|
END_ENTITY; -- camera_image
|
|
|
|
ENTITY camera_image_2d_with_scale
|
|
SUBTYPE OF (camera_image);
|
|
DERIVE
|
|
scale : positive_ratio_measure := SELF\mapped_item.mapping_target\
|
|
planar_extent.size_in_x / SELF\mapped_item.mapping_source.
|
|
mapping_origin\camera_model_d2.view_window.size_in_x;
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.CAMERA_MODEL_D2' IN TYPEOF(SELF\
|
|
mapped_item.mapping_source.mapping_origin);
|
|
wr2: aspect_ratio(SELF\mapped_item.mapping_target) = aspect_ratio(
|
|
SELF\mapped_item.mapping_source.mapping_origin\
|
|
camera_model_d2.view_window);
|
|
wr3: SELF\mapped_item.mapping_source.mapping_origin\camera_model_d2.
|
|
view_window_clipping;
|
|
END_ENTITY; -- camera_image_2d_with_scale
|
|
|
|
ENTITY camera_image_3d_with_scale
|
|
SUBTYPE OF (camera_image);
|
|
DERIVE
|
|
scale : positive_ratio_measure := SELF\mapped_item.mapping_target\
|
|
planar_extent.size_in_x / SELF\mapped_item.mapping_source.
|
|
mapping_origin\camera_model_d3.perspective_of_volume.
|
|
view_window.size_in_x;
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.CAMERA_MODEL_D3' IN TYPEOF(SELF\
|
|
mapped_item.mapping_source.mapping_origin);
|
|
wr2: aspect_ratio(SELF\mapped_item.mapping_target) = aspect_ratio(
|
|
SELF\mapped_item.mapping_source.mapping_origin\
|
|
camera_model_d3.perspective_of_volume.view_window);
|
|
wr3: SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.
|
|
perspective_of_volume.front_plane_clipping AND SELF\
|
|
mapped_item.mapping_source.mapping_origin\camera_model_d3.
|
|
perspective_of_volume.view_volume_sides_clipping;
|
|
END_ENTITY; -- camera_image_3d_with_scale
|
|
|
|
ENTITY camera_model
|
|
SUPERTYPE OF (ONEOF (camera_model_d2,camera_model_d3))
|
|
SUBTYPE OF (geometric_representation_item);
|
|
WHERE
|
|
wr1: (SIZEOF(USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'ITEM_DEFINED_TRANSFORMATION.' + 'TRANSFORM_ITEM_1')) +
|
|
SIZEOF(USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'REPRESENTATION_MAP.MAPPING_ORIGIN'))) > 0;
|
|
wr2: SIZEOF(USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'STYLED_ITEM.ITEM')) = 0;
|
|
END_ENTITY; -- camera_model
|
|
|
|
ENTITY camera_model_d2
|
|
SUBTYPE OF (camera_model);
|
|
view_window : planar_box;
|
|
view_window_clipping : BOOLEAN;
|
|
WHERE
|
|
wr1: SELF\geometric_representation_item.dim = 2;
|
|
END_ENTITY; -- camera_model_d2
|
|
|
|
ENTITY camera_model_d3
|
|
SUBTYPE OF (camera_model);
|
|
view_reference_system : axis2_placement_3d;
|
|
perspective_of_volume : view_volume;
|
|
WHERE
|
|
wr1: (dot_product(SELF.view_reference_system.p[3],SELF.
|
|
perspective_of_volume.view_window.placement.p[3]) = 1) AND (
|
|
SELF.view_reference_system.location.coordinates[3] = SELF.
|
|
perspective_of_volume.view_window.placement.location.
|
|
coordinates[3]);
|
|
wr2: SELF\geometric_representation_item.dim = 3;
|
|
END_ENTITY; -- camera_model_d3
|
|
|
|
ENTITY camera_model_d3_with_hlhsr
|
|
SUBTYPE OF (camera_model_d3);
|
|
hidden_line_surface_removal : BOOLEAN;
|
|
END_ENTITY; -- camera_model_d3_with_hlhsr
|
|
|
|
ENTITY camera_usage
|
|
SUBTYPE OF (representation_map);
|
|
WHERE
|
|
wr1: NOT ('ASSOCIATIVE_DRAUGHTING.PRESENTATION_REPRESENTATION' IN
|
|
TYPEOF(SELF\representation_map.mapped_representation));
|
|
wr2: 'ASSOCIATIVE_DRAUGHTING.CAMERA_MODEL' IN TYPEOF(SELF\
|
|
representation_map.mapping_origin);
|
|
END_ENTITY; -- camera_usage
|
|
|
|
ENTITY cartesian_point
|
|
SUBTYPE OF (point);
|
|
coordinates : LIST [1:3] OF length_measure;
|
|
END_ENTITY; -- cartesian_point
|
|
|
|
ENTITY cartesian_transformation_operator
|
|
SUPERTYPE OF (ONEOF (cartesian_transformation_operator_2d,
|
|
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);
|
|
WHERE
|
|
wr1: scl > 0;
|
|
END_ENTITY; -- cartesian_transformation_operator
|
|
|
|
ENTITY cartesian_transformation_operator_2d
|
|
SUBTYPE OF (cartesian_transformation_operator);
|
|
DERIVE
|
|
u : LIST [2:2] OF direction := base_axis(2,SELF\
|
|
cartesian_transformation_operator.axis1,SELF\
|
|
cartesian_transformation_operator.axis2,?);
|
|
WHERE
|
|
-- Correcting bad EXPRESS usage
|
|
-- wr1: SELF\cartesian_transformation_operator.dim = 2;
|
|
wr1: (SELF\geometric_representation_item.dim = 2);
|
|
END_ENTITY; -- cartesian_transformation_operator_2d
|
|
|
|
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
|
|
-- Correcting bad EXPRESS usage
|
|
-- wr1: SELF\cartesian_transformation_operator.dim = 3;
|
|
wr1: (SELF\geometric_representation_item.dim = 3);
|
|
END_ENTITY; -- cartesian_transformation_operator_3d
|
|
|
|
ENTITY centre_of_symmetry
|
|
SUBTYPE OF (derived_shape_aspect);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( sadr <* deriving_relationships | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.SYMMETRIC_SHAPE_ASPECT' IN TYPEOF(
|
|
sadr.related_shape_aspect))) )) = 0;
|
|
END_ENTITY; -- centre_of_symmetry
|
|
|
|
ENTITY circle
|
|
SUBTYPE OF (conic);
|
|
radius : positive_length_measure;
|
|
END_ENTITY; -- circle
|
|
|
|
ENTITY closed_shell
|
|
SUBTYPE OF (connected_face_set);
|
|
END_ENTITY; -- closed_shell
|
|
|
|
ENTITY colour;
|
|
END_ENTITY; -- colour
|
|
|
|
ENTITY colour_rgb
|
|
SUBTYPE OF (colour_specification);
|
|
red : REAL;
|
|
green : REAL;
|
|
blue : REAL;
|
|
WHERE
|
|
wr1: (0 <= red) AND (red <= 1);
|
|
wr2: (0 <= green) AND (green <= 1);
|
|
wr3: (0 <= blue) AND (blue <= 1);
|
|
END_ENTITY; -- colour_rgb
|
|
|
|
ENTITY colour_specification
|
|
SUBTYPE OF (colour);
|
|
name : label;
|
|
END_ENTITY; -- colour_specification
|
|
|
|
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; -- composite_curve
|
|
|
|
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; -- composite_curve_on_surface
|
|
|
|
ENTITY composite_curve_segment;
|
|
transition : transition_code;
|
|
same_sense : BOOLEAN;
|
|
parent_curve : curve;
|
|
INVERSE
|
|
using_curves : BAG [1:?] OF composite_curve FOR segments;
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE' IN TYPEOF(parent_curve);
|
|
END_ENTITY; -- composite_curve_segment
|
|
|
|
ENTITY composite_text
|
|
SUBTYPE OF (geometric_representation_item);
|
|
collected_text : SET [2:?] OF text_or_character;
|
|
WHERE
|
|
wr1: acyclic_composite_text(SELF,SELF.collected_text);
|
|
END_ENTITY; -- composite_text
|
|
|
|
ENTITY composite_text_with_associated_curves
|
|
SUBTYPE OF (composite_text);
|
|
associated_curves : SET [1:?] OF curve;
|
|
END_ENTITY; -- composite_text_with_associated_curves
|
|
|
|
ENTITY composite_text_with_blanking_box
|
|
SUBTYPE OF (composite_text);
|
|
blanking : planar_box;
|
|
END_ENTITY; -- composite_text_with_blanking_box
|
|
|
|
ENTITY composite_text_with_extent
|
|
SUBTYPE OF (composite_text);
|
|
extent : planar_extent;
|
|
END_ENTITY; -- composite_text_with_extent
|
|
|
|
ENTITY conic
|
|
SUPERTYPE OF (ONEOF (circle,ellipse,hyperbola,parabola))
|
|
SUBTYPE OF (curve);
|
|
position : axis2_placement;
|
|
END_ENTITY; -- conic
|
|
|
|
ENTITY conical_surface
|
|
SUBTYPE OF (elementary_surface);
|
|
radius : length_measure;
|
|
semi_angle : plane_angle_measure;
|
|
WHERE
|
|
wr1: radius >= 0;
|
|
END_ENTITY; -- conical_surface
|
|
|
|
ENTITY connected_edge_set
|
|
SUBTYPE OF (topological_representation_item);
|
|
ces_edges : SET [1:?] OF edge;
|
|
END_ENTITY; -- connected_edge_set
|
|
|
|
ENTITY connected_face_set
|
|
SUPERTYPE OF (ONEOF (closed_shell,open_shell))
|
|
SUBTYPE OF (topological_representation_item);
|
|
cfs_faces : SET [1:?] OF face;
|
|
END_ENTITY; -- connected_face_set
|
|
|
|
ENTITY context_dependent_invisibility
|
|
SUBTYPE OF (invisibility);
|
|
presentation_context : invisibility_context;
|
|
END_ENTITY; -- context_dependent_invisibility
|
|
|
|
ENTITY context_dependent_over_riding_styled_item
|
|
SUBTYPE OF (over_riding_styled_item);
|
|
style_context : SET [1:2] OF style_context_select;
|
|
WHERE
|
|
wr1: (SIZEOF(QUERY ( sc <* SELF.style_context | (
|
|
'ASSOCIATIVE_DRAUGHTING.REPRESENTATION' IN TYPEOF(sc)) )) =
|
|
1) AND (SIZEOF(QUERY ( sc <* SELF.style_context | (
|
|
'ASSOCIATIVE_DRAUGHTING.REPRESENTATION_ITEM' IN TYPEOF(sc)) ))
|
|
= 1);
|
|
END_ENTITY; -- context_dependent_over_riding_styled_item
|
|
|
|
ENTITY contract;
|
|
name : label;
|
|
purpose : text;
|
|
kind : contract_type;
|
|
END_ENTITY; -- contract
|
|
|
|
ENTITY contract_assignment
|
|
ABSTRACT SUPERTYPE;
|
|
assigned_contract : contract;
|
|
END_ENTITY; -- contract_assignment
|
|
|
|
ENTITY contract_type;
|
|
description : label;
|
|
END_ENTITY; -- contract_type
|
|
|
|
ENTITY conversion_based_unit
|
|
SUBTYPE OF (named_unit);
|
|
name : label;
|
|
conversion_factor : measure_with_unit;
|
|
END_ENTITY; -- conversion_based_unit
|
|
|
|
ENTITY coordinated_universal_time_offset;
|
|
hour_offset : hour_in_day;
|
|
minute_offset : OPTIONAL minute_in_hour;
|
|
sense : ahead_or_behind;
|
|
END_ENTITY; -- coordinated_universal_time_offset
|
|
|
|
ENTITY curve
|
|
SUPERTYPE OF (ONEOF (line,conic,pcurve,surface_curve,offset_curve_2d,
|
|
offset_curve_3d,curve_replica))
|
|
SUBTYPE OF (geometric_representation_item);
|
|
END_ENTITY; -- curve
|
|
|
|
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 AND (
|
|
'ASSOCIATIVE_DRAUGHTING.OUTER_BOUNDARY_CURVE' IN TYPEOF(
|
|
boundaries)));
|
|
wr2: (NOT implicit_outer) OR (
|
|
'ASSOCIATIVE_DRAUGHTING.BOUNDED_SURFACE' IN TYPEOF(
|
|
basis_surface));
|
|
wr3: SIZEOF(QUERY ( temp <* boundaries | (
|
|
'ASSOCIATIVE_DRAUGHTING.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; -- curve_bounded_surface
|
|
|
|
ENTITY curve_dimension
|
|
SUBTYPE OF (dimension_curve_directed_callout);
|
|
END_ENTITY; -- curve_dimension
|
|
|
|
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; -- curve_replica
|
|
|
|
ENTITY curve_style;
|
|
name : label;
|
|
curve_font : curve_font_or_scaled_curve_font_select;
|
|
curve_width : size_select;
|
|
curve_colour : colour;
|
|
END_ENTITY; -- curve_style
|
|
|
|
ENTITY curve_style_font;
|
|
name : label;
|
|
pattern_list : LIST [1:?] OF curve_style_font_pattern;
|
|
END_ENTITY; -- curve_style_font
|
|
|
|
ENTITY curve_style_font_pattern;
|
|
visible_segment_length : positive_length_measure;
|
|
invisible_segment_length : positive_length_measure;
|
|
END_ENTITY; -- curve_style_font_pattern
|
|
|
|
ENTITY cylindrical_surface
|
|
SUBTYPE OF (elementary_surface);
|
|
radius : positive_length_measure;
|
|
END_ENTITY; -- cylindrical_surface
|
|
|
|
ENTITY date
|
|
SUPERTYPE OF (calendar_date);
|
|
year_component : year_number;
|
|
END_ENTITY; -- date
|
|
|
|
ENTITY date_and_time;
|
|
date_component : date;
|
|
time_component : local_time;
|
|
END_ENTITY; -- date_and_time
|
|
|
|
ENTITY datum_feature_callout
|
|
SUBTYPE OF (draughting_callout);
|
|
END_ENTITY; -- datum_feature_callout
|
|
|
|
ENTITY datum_target_callout
|
|
SUBTYPE OF (draughting_callout);
|
|
END_ENTITY; -- datum_target_callout
|
|
|
|
ENTITY defined_symbol
|
|
SUBTYPE OF (geometric_representation_item);
|
|
definition : defined_symbol_select;
|
|
target : symbol_target;
|
|
END_ENTITY; -- defined_symbol
|
|
|
|
ENTITY definitional_representation
|
|
SUBTYPE OF (representation);
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.PARAMETRIC_REPRESENTATION_CONTEXT' IN
|
|
TYPEOF(SELF\representation.context_of_items);
|
|
END_ENTITY; -- definitional_representation
|
|
|
|
ENTITY degenerate_pcurve
|
|
SUBTYPE OF (point);
|
|
basis_surface : surface;
|
|
reference_to_curve : definitional_representation;
|
|
WHERE
|
|
wr1: SIZEOF(reference_to_curve\representation.items) = 1;
|
|
wr2: 'ASSOCIATIVE_DRAUGHTING.CURVE' IN TYPEOF(reference_to_curve\
|
|
representation.items[1]);
|
|
wr3: reference_to_curve\representation.items[1]\
|
|
geometric_representation_item.dim = 2;
|
|
END_ENTITY; -- degenerate_pcurve
|
|
|
|
ENTITY degenerate_toroidal_surface
|
|
SUBTYPE OF (toroidal_surface);
|
|
select_outer : BOOLEAN;
|
|
WHERE
|
|
wr1: major_radius < minor_radius;
|
|
END_ENTITY; -- degenerate_toroidal_surface
|
|
|
|
ENTITY derived_shape_aspect
|
|
SUPERTYPE OF (ONEOF (centre_of_symmetry,tangent))
|
|
SUBTYPE OF (shape_aspect);
|
|
INVERSE
|
|
deriving_relationships : SET [1:?] OF
|
|
shape_aspect_deriving_relationship FOR
|
|
relating_shape_aspect;
|
|
END_ENTITY; -- derived_shape_aspect
|
|
|
|
ENTITY derived_unit;
|
|
elements : SET [1:?] OF derived_unit_element;
|
|
WHERE
|
|
wr1: (SIZEOF(elements) > 1) OR ((SIZEOF(elements) = 1) AND (elements
|
|
[1].exponent <> 1));
|
|
END_ENTITY; -- derived_unit
|
|
|
|
ENTITY derived_unit_element;
|
|
unit : named_unit;
|
|
exponent : REAL;
|
|
END_ENTITY; -- derived_unit_element
|
|
|
|
ENTITY diameter_dimension
|
|
SUBTYPE OF (dimension_curve_directed_callout);
|
|
END_ENTITY; -- diameter_dimension
|
|
|
|
ENTITY dimension_callout_component_relationship
|
|
SUBTYPE OF (draughting_callout_relationship);
|
|
WHERE
|
|
wr1: SELF.name IN ['prefix','suffix'];
|
|
wr2: 'ASSOCIATIVE_DRAUGHTING.STRUCTURED_DIMENSION_CALLOUT' IN
|
|
TYPEOF(SELF.relating_draughting_callout);
|
|
wr3: SIZEOF(TYPEOF(SELF.related_draughting_callout) * [
|
|
'ASSOCIATIVE_DRAUGHTING.LEADER_DIRECTED_CALLOUT',
|
|
'ASSOCIATIVE_DRAUGHTING.PROJECTION_DIRECTED_CALLOUT',
|
|
'ASSOCIATIVE_DRAUGHTING.DIMENSION_CURVE_DIRECTED_CALLOUT',
|
|
'ASSOCIATIVE_DRAUGHTING.STRUCTURED_DIMENSION_CALLOUT']) = 0;
|
|
wr4: (SELF.related_draughting_callout.contents * SELF.
|
|
relating_draughting_callout.contents) = SELF.
|
|
related_draughting_callout.contents;
|
|
wr5: (SELF.name = 'prefix') AND (SIZEOF(QUERY ( ato <*
|
|
QUERY ( con <* SELF.related_draughting_callout.contents | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(con)) ) | (NOT (ato.name = 'prefix text')) )) = 0);
|
|
wr6: (SELF.name = 'suffix') AND (SIZEOF(QUERY ( ato <*
|
|
QUERY ( con <* SELF.related_draughting_callout.contents | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(con)) ) | (NOT (ato.name = 'suffix text')) )) = 0);
|
|
END_ENTITY; -- dimension_callout_component_relationship
|
|
|
|
ENTITY dimension_callout_relationship
|
|
SUBTYPE OF (draughting_callout_relationship);
|
|
WHERE
|
|
wr1: SELF.name IN ['primary','secondary'];
|
|
wr2: SIZEOF(TYPEOF(SELF.relating_draughting_callout) * [
|
|
'ASSOCIATIVE_DRAUGHTING.ANGULAR_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.CURVE_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.DIAMETER_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.LEADER_DIRECTED_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.LINEAR_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.ORDINATE_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.RADIUS_DIMENSION']) = 1;
|
|
wr3: SIZEOF(TYPEOF(SELF.related_draughting_callout) * [
|
|
'ASSOCIATIVE_DRAUGHTING.DIMENSION_CURVE_DIRECTED_CALLOUT',
|
|
'ASSOCIATIVE_DRAUGHTING.PROJECTION_DIRECTED_CALLOUT',
|
|
'ASSOCIATIVE_DRAUGHTING.LEADER_DIRECTED_CALLOUT']) = 0;
|
|
wr4: (SELF.related_draughting_callout.contents * SELF.
|
|
relating_draughting_callout.contents) = SELF.
|
|
related_draughting_callout.contents;
|
|
END_ENTITY; -- dimension_callout_relationship
|
|
|
|
ENTITY dimension_curve
|
|
SUBTYPE OF (annotation_curve_occurrence);
|
|
WHERE
|
|
wr1: SIZEOF(USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DIMENSION_CURVE_TERMINATOR.ANNOTATED_DIMENSION_CURVE'))
|
|
<= 2;
|
|
wr2: SIZEOF(USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DIMENSION_CURVE_DIRECTED_CALLOUT.CONTENTS')) >= 1;
|
|
wr3: (SIZEOF(QUERY ( dct_1 <* USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DIMENSION_CURVE_TERMINATOR.ANNOTATED_DIMENSION_CURVE') |
|
|
(dct_1.role = origin) )) <= 1) AND (SIZEOF(
|
|
QUERY ( dct_2 <* USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DIMENSION_CURVE_TERMINATOR.ANNOTATED_DIMENSION_CURVE') |
|
|
(dct_2.role = target) )) <= 1);
|
|
END_ENTITY; -- dimension_curve
|
|
|
|
ENTITY dimension_curve_directed_callout
|
|
SUBTYPE OF (draughting_callout);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( d_c <* SELF\draughting_callout.contents | (
|
|
'ASSOCIATIVE_DRAUGHTING.DIMENSION_CURVE' IN TYPEOF(d_c)) ))
|
|
= 1;
|
|
wr2: SIZEOF(SELF\draughting_callout.contents) >= 2;
|
|
END_ENTITY; -- dimension_curve_directed_callout
|
|
|
|
ENTITY dimension_curve_terminator
|
|
SUBTYPE OF (terminator_symbol);
|
|
role : dimension_extent_usage;
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.DIMENSION_CURVE' IN TYPEOF(SELF\
|
|
terminator_symbol.annotated_curve);
|
|
END_ENTITY; -- dimension_curve_terminator
|
|
|
|
ENTITY dimension_pair
|
|
SUBTYPE OF (draughting_callout_relationship);
|
|
WHERE
|
|
wr1: SELF.name IN ['chained','parallel'];
|
|
wr2: SIZEOF(TYPEOF(SELF.relating_draughting_callout) * [
|
|
'ASSOCIATIVE_DRAUGHTING.ANGULAR_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.CURVE_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.DIAMETER_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.LINEAR_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.ORDINATE_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.RADIUS_DIMENSION']) = 1;
|
|
wr3: SIZEOF(TYPEOF(SELF.related_draughting_callout) * [
|
|
'ASSOCIATIVE_DRAUGHTING.ANGULAR_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.CURVE_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.DIAMETER_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.LINEAR_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.ORDINATE_DIMENSION',
|
|
'ASSOCIATIVE_DRAUGHTING.RADIUS_DIMENSION']) = 1;
|
|
END_ENTITY; -- dimension_pair
|
|
|
|
ENTITY dimension_text_associativity
|
|
SUBTYPE OF (text_literal, mapped_item);
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.SHAPE_DIMENSION_REPRESENTATION' IN
|
|
TYPEOF(SELF\mapped_item.mapping_source.mapped_representation);
|
|
wr2: 'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_CALLOUT' IN TYPEOF(SELF\
|
|
mapped_item.mapping_target);
|
|
wr3: SIZEOF(QUERY ( ato <* QUERY ( si <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.STYLED_ITEM.ITEM') | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(si)) ) | (NOT (SIZEOF(QUERY ( dc <* USEDIN(ato,
|
|
'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_CALLOUT.' + 'CONTENTS')
|
|
| ('ASSOCIATIVE_DRAUGHTING.DRAUGHTING_CALLOUT' IN TYPEOF(dc))
|
|
)
|
|
* [SELF\mapped_item.mapping_target]) = 1)) )) = 0;
|
|
END_ENTITY; -- dimension_text_associativity
|
|
|
|
ENTITY dimensional_characteristic_representation;
|
|
dimension : dimensional_characteristic;
|
|
representation : shape_dimension_representation;
|
|
END_ENTITY; -- dimensional_characteristic_representation
|
|
|
|
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; -- dimensional_exponents
|
|
|
|
ENTITY dimensional_location
|
|
SUPERTYPE OF (ONEOF (angular_location,dimensional_location_with_path))
|
|
SUBTYPE OF (shape_aspect_relationship);
|
|
END_ENTITY; -- dimensional_location
|
|
|
|
ENTITY dimensional_location_with_path
|
|
SUBTYPE OF (dimensional_location);
|
|
path : shape_aspect;
|
|
END_ENTITY; -- dimensional_location_with_path
|
|
|
|
ENTITY dimensional_size;
|
|
applies_to : shape_aspect;
|
|
name : label;
|
|
WHERE
|
|
wr1: applies_to.product_definitional = TRUE;
|
|
END_ENTITY; -- dimensional_size
|
|
|
|
ENTITY direction
|
|
SUBTYPE OF (geometric_representation_item);
|
|
direction_ratios : LIST [2:3] OF REAL;
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( tmp <* direction_ratios | (tmp <> 0) )) > 0;
|
|
END_ENTITY; -- direction
|
|
|
|
ENTITY document;
|
|
id : identifier;
|
|
name : label;
|
|
description : text;
|
|
kind : document_type;
|
|
UNIQUE
|
|
ur1 : id;
|
|
END_ENTITY; -- document
|
|
|
|
ENTITY document_reference
|
|
ABSTRACT SUPERTYPE;
|
|
assigned_document : document;
|
|
source : label;
|
|
END_ENTITY; -- document_reference
|
|
|
|
ENTITY document_type;
|
|
product_data_type : label;
|
|
END_ENTITY; -- document_type
|
|
|
|
ENTITY draughting_annotation_occurrence
|
|
SUBTYPE OF (annotation_occurrence);
|
|
WHERE
|
|
wr1 : (NOT ('ASSOCIATIVE_DRAUGHTING.ANNOTATION_CURVE_OCCURRENCE' IN
|
|
TYPEOF(SELF))) OR (SIZEOF(QUERY ( sty <* SELF.styles | (
|
|
NOT ((SIZEOF(sty.styles) = 1) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.CURVE_STYLE' IN
|
|
TYPEOF(sty.styles[1])))) ))
|
|
= 0);
|
|
wr2 : (NOT ('ASSOCIATIVE_DRAUGHTING.ANNOTATION_FILL_AREA_OCCURRENCE'
|
|
IN TYPEOF(SELF))) OR (SIZEOF(QUERY ( sty <* SELF.styles | (
|
|
NOT ((SIZEOF(sty.styles) = 1) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.FILL_AREA_STYLE' IN TYPEOF(sty.
|
|
styles[1])))) )) = 0);
|
|
wr3 : (NOT ('ASSOCIATIVE_DRAUGHTING.ANNOTATION_FILL_AREA_OCCURRENCE'
|
|
IN TYPEOF(SELF))) OR (SIZEOF(QUERY ( bound <* SELF.item\
|
|
annotation_fill_area.boundaries | (NOT (SIZEOF(
|
|
QUERY ( si <* USEDIN(bound,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'STYLED_ITEM.ITEM') | (('ASSOCIATIVE_DRAUGHTING.' +
|
|
'ANNOTATION_CURVE_OCCURRENCE') IN TYPEOF(si)) )) > 0)) )) =
|
|
0);
|
|
wr4 : (NOT ('ASSOCIATIVE_DRAUGHTING.ANNOTATION_SYMBOL_OCCURRENCE' IN
|
|
TYPEOF(SELF))) OR (SIZEOF(QUERY ( sty <* SELF.styles | (
|
|
NOT ((SIZEOF(sty.styles) = 1) AND (SIZEOF(TYPEOF(sty.styles
|
|
[1]) * ['ASSOCIATIVE_DRAUGHTING.SYMBOL_STYLE',
|
|
'ASSOCIATIVE_DRAUGHTING.NULL_STYLE']) = 1))) )) = 0);
|
|
wr5 : (NOT (('ASSOCIATIVE_DRAUGHTING.ANNOTATION_SYMBOL_OCCURRENCE'
|
|
IN TYPEOF(SELF)) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_SYMBOL' IN TYPEOF(SELF.
|
|
item)))) OR (SIZEOF(['ASSOCIATIVE_DRAUGHTING.' +
|
|
'DRAUGHTING_SYMBOL_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DRAUGHTING_SUBFIGURE_REPRESENTATION'] * TYPEOF(SELF.item\
|
|
mapped_item.mapping_source.mapped_representation)) = 1);
|
|
wr6 : (NOT ('ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(SELF))) OR (SIZEOF(QUERY ( sty <* SELF.styles | (
|
|
NOT ((SIZEOF(sty.styles) = 1) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.TEXT_STYLE' IN
|
|
TYPEOF(sty.styles[1])))) ))
|
|
= 0);
|
|
wr7 : NOT (('ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(SELF)) AND (SIZEOF(TYPEOF(SELF.item) * [
|
|
'ASSOCIATIVE_DRAUGHTING.COMPOSITE_TEXT',
|
|
'ASSOCIATIVE_DRAUGHTING.TEXT_LITERAL']) = 1));
|
|
wr8 : (NOT (('ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(SELF)) AND ('ASSOCIATIVE_DRAUGHTING.COMPOSITE_TEXT'
|
|
IN TYPEOF(SELF.item)))) OR (SIZEOF(QUERY ( tl <* SELF.item\
|
|
composite_text.collected_text | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.TEXT_LITERAL' IN TYPEOF(tl))) )) =
|
|
0);
|
|
wr9 : (NOT (('ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(SELF)) AND ('ASSOCIATIVE_DRAUGHTING.TEXT_LITERAL' IN
|
|
TYPEOF(SELF.item)))) OR (SELF.item\text_literal.alignment
|
|
IN ['baseline left','baseline centre','baseline right']);
|
|
wr10: (NOT (('ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(SELF)) AND ('ASSOCIATIVE_DRAUGHTING.COMPOSITE_TEXT'
|
|
IN TYPEOF(SELF.item)))) OR (SIZEOF(QUERY ( tl <*
|
|
QUERY ( text <* SELF.item\composite_text.collected_text | (
|
|
'ASSOCIATIVE_DRAUGHTING.TEXT_LITERAL' IN TYPEOF(text)) ) |
|
|
(NOT (tl\text_literal.alignment IN ['baseline left',
|
|
'baseline centre','baseline right'])) )) = 0);
|
|
wr11: NOT (('ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(SELF)) AND ('ASSOCIATIVE_DRAUGHTING.TEXT_LITERAL' IN
|
|
TYPEOF(SELF.item)) AND EXISTS(SELF.item\text_literal.
|
|
placement.ref_direction));
|
|
wr12: (NOT (('ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(SELF)) AND ('ASSOCIATIVE_DRAUGHTING.COMPOSITE_TEXT'
|
|
IN TYPEOF(SELF.item)))) OR (SIZEOF(QUERY ( tl <*
|
|
QUERY ( text <* SELF.item\composite_text.collected_text | (
|
|
'ASSOCIATIVE_DRAUGHTING.TEXT_LITERAL' IN TYPEOF(text)) ) |
|
|
EXISTS(tl\text_literal.placement.ref_direction) )) = 0);
|
|
wr13: (NOT (('ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(SELF)) AND ('ASSOCIATIVE_DRAUGHTING.COMPOSITE_TEXT'
|
|
IN TYPEOF(SELF.item)))) OR check_text_alignment(SELF.item);
|
|
wr14: (NOT (('ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(SELF)) AND ('ASSOCIATIVE_DRAUGHTING.COMPOSITE_TEXT'
|
|
IN TYPEOF(SELF.item)))) OR check_text_font(SELF.item);
|
|
wr15: (NOT (('ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(SELF)) AND ('ASSOCIATIVE_DRAUGHTING.COMPOSITE_TEXT'
|
|
IN TYPEOF(SELF.item)))) OR (SIZEOF(QUERY ( tl <*
|
|
QUERY ( text <* SELF.item\composite_text.collected_text | (
|
|
'ASSOCIATIVE_DRAUGHTING.TEXT_LITERAL' IN TYPEOF(text)) ) |
|
|
(NOT (SIZEOF(TYPEOF(tl) * ['ASSOCIATIVE_DRAUGHTING.' +
|
|
'TEXT_LITERAL_WITH_BLANKING_BOX','ASSOCIATIVE_DRAUGHTING.'
|
|
+ 'TEXT_LITERAL_WITH_ASSOCIATED_CURVES']) = 0)) )) = 0);
|
|
wr16: (NOT (('ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(SELF)) AND
|
|
('ASSOCIATIVE_DRAUGHTING.TEXT_LITERAL_WITH_ASSOCIATED_CURVES'
|
|
IN TYPEOF(SELF.item)))) OR (SIZEOF(QUERY ( crv <* SELF.item
|
|
\text_literal_with_associated_curves.associated_curves | (
|
|
NOT (SIZEOF(QUERY ( si <* USEDIN(crv,
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'STYLED_ITEM.ITEM') | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_CURVE_OCCURRENCE' IN
|
|
TYPEOF(si)) )) > 0)) )) = 0);
|
|
wr17: (NOT (('ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(SELF)) AND
|
|
('ASSOCIATIVE_DRAUGHTING.COMPOSITE_TEXT_WITH_ASSOCIATED_CURVES'
|
|
IN TYPEOF(SELF.item)))) OR (SIZEOF(QUERY ( crv <* SELF.item
|
|
\composite_text_with_associated_curves.associated_curves |
|
|
(NOT (SIZEOF(QUERY ( si <* USEDIN(crv,
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'STYLED_ITEM.ITEM') | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_CURVE_OCCURRENCE' IN
|
|
TYPEOF(si)) )) > 0)) )) = 0);
|
|
wr18: SIZEOF(QUERY ( cs <* QUERY ( sty <* SELF.styles | (
|
|
'ASSOCIATIVE_DRAUGHTING.CURVE_STYLE' IN TYPEOF(sty.styles[1]))
|
|
) | (NOT (('ASSOCIATIVE_DRAUGHTING.LENGTH_MEASURE_WITH_UNIT'
|
|
IN TYPEOF(cs.styles[1]\curve_style.curve_width)) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.POSITIVE_LENGTH_MEASURE' IN TYPEOF(
|
|
cs.styles[1]\curve_style.curve_width\measure_with_unit.
|
|
value_component)))) )) = 0;
|
|
wr19: SIZEOF(QUERY ( fas <* QUERY ( sty <* SELF.styles | (
|
|
'ASSOCIATIVE_DRAUGHTING.FILL_AREA_STYLE' IN TYPEOF(sty.
|
|
styles[1])) ) | (NOT ((SIZEOF(QUERY ( fs <* fas.styles[1]\
|
|
fill_area_style.fill_styles | (
|
|
'ASSOCIATIVE_DRAUGHTING.FILL_AREA_STYLE_TILES' IN TYPEOF(fs))
|
|
)) <= 1) AND (SIZEOF(QUERY ( fst <* QUERY ( fs <*
|
|
fas.styles[1]\fill_area_style.fill_styles | (
|
|
'ASSOCIATIVE_DRAUGHTING.FILL_AREA_STYLE_TILES' IN TYPEOF(fs))
|
|
) | (NOT (SIZEOF(fst\fill_area_style_tiles.tiles) = 1)) )) =
|
|
0))) )) = 0;
|
|
wr20: SIZEOF(QUERY ( fas <* QUERY ( sty <* SELF.styles | (
|
|
'ASSOCIATIVE_DRAUGHTING.FILL_AREA_STYLE' IN TYPEOF(sty.
|
|
styles[1])) ) | (NOT (SIZEOF(QUERY ( fsh <* QUERY ( fs <*
|
|
fas.styles[1]\fill_area_style.fill_styles | (
|
|
'ASSOCIATIVE_DRAUGHTING.FILL_AREA_STYLE_HATCHING' IN
|
|
TYPEOF(fs)) ) | (NOT (fsh\fill_area_style_hatching.
|
|
point_of_reference_hatch_line :=: fsh\
|
|
fill_area_style_hatching.pattern_start)) )) = 0)) )) = 0;
|
|
wr21: SIZEOF(QUERY ( ts <* QUERY ( sty <* SELF.styles | (
|
|
'ASSOCIATIVE_DRAUGHTING.TEXT_STYLE' IN TYPEOF(sty.styles[1]))
|
|
) | (NOT
|
|
('ASSOCIATIVE_DRAUGHTING.TEXT_STYLE_WITH_BOX_CHARACTERISTICS'
|
|
IN TYPEOF(ts.styles[1]))) )) = 0;
|
|
wr22: SIZEOF(QUERY ( ts <* QUERY ( sty <* SELF.styles |
|
|
('ASSOCIATIVE_DRAUGHTING.TEXT_STYLE_WITH_BOX_CHARACTERISTICS'
|
|
IN TYPEOF(sty.styles[1])) ) | (NOT (SIZEOF(ts.styles[1]\
|
|
text_style_with_box_characteristics.characteristics) = 4)) ))
|
|
= 0;
|
|
END_ENTITY; -- draughting_annotation_occurrence
|
|
|
|
ENTITY draughting_approval_assignment
|
|
SUBTYPE OF (approval_assignment);
|
|
approved_items : SET [1:?] OF approved_item;
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( item <* approved_items | (
|
|
'ASSOCIATIVE_DRAUGHTING.DRAWING_REVISION' IN TYPEOF(item)) ))
|
|
<= 1;
|
|
END_ENTITY; -- draughting_approval_assignment
|
|
|
|
ENTITY draughting_callout
|
|
SUBTYPE OF (geometric_representation_item);
|
|
contents : SET [1:?] OF draughting_callout_element;
|
|
END_ENTITY; -- draughting_callout
|
|
|
|
ENTITY draughting_callout_relationship;
|
|
name : label;
|
|
description : text;
|
|
relating_draughting_callout : draughting_callout;
|
|
related_draughting_callout : draughting_callout;
|
|
END_ENTITY; -- draughting_callout_relationship
|
|
|
|
ENTITY draughting_contract_assignment
|
|
SUBTYPE OF (contract_assignment);
|
|
items : SET [1:?] OF contracted_item;
|
|
END_ENTITY; -- draughting_contract_assignment
|
|
|
|
ENTITY draughting_drawing_revision
|
|
SUBTYPE OF (drawing_revision);
|
|
WHERE
|
|
wr1 : (SIZEOF(USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET')) >= 1) AND (
|
|
SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.DRAWING_SHEET_REVISION' IN TYPEOF(
|
|
ais.area))) )) = 0);
|
|
wr2 : SIZEOF(QUERY ( app_ass <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DRAUGHTING_APPROVAL_ASSIGNMENT.APPROVED_ITEMS') | (NOT (
|
|
SIZEOF(USEDIN(app_ass.assigned_approval,
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'APPROVAL_DATE_TIME.DATED_APPROVAL')) = 1)) )) = 0;
|
|
wr3 : SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
SIZEOF(QUERY ( app_ass <* USEDIN(ais.area,
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DRAUGHTING_APPROVAL_ASSIGNMENT.APPROVED_ITEMS') | (NOT (
|
|
SIZEOF(USEDIN(app_ass.assigned_approval,
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'APPROVAL_DATE_TIME.DATED_APPROVAL')) = 1)) )) = 0)) )) = 0;
|
|
wr4 : SIZEOF(QUERY ( app_ass <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DRAUGHTING_APPROVAL_ASSIGNMENT.APPROVED_ITEMS') | (NOT (
|
|
SIZEOF(USEDIN(app_ass.assigned_approval,
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'APPROVAL_PERSON_ORGANIZATION.AUTHORIZED_APPROVAL')) >= 1)) ))
|
|
|
|
= 0;
|
|
wr5 : SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
SIZEOF(QUERY ( app_ass <* USEDIN(ais.area,
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DRAUGHTING_APPROVAL_ASSIGNMENT.APPROVED_ITEMS') | (NOT (
|
|
SIZEOF(USEDIN(app_ass.assigned_approval,
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'APPROVAL_PERSON_ORGANIZATION.AUTHORIZED_APPROVAL')) >= 1)) ))
|
|
|
|
= 0)) )) = 0;
|
|
wr6 : SIZEOF(USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DRAUGHTING_TITLE.ITEMS')) <= 1;
|
|
wr7 : SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
SIZEOF(USEDIN(ais.area,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DRAUGHTING_TITLE.ITEMS')) <= 1)) )) = 0;
|
|
wr8 : SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
SIZEOF(QUERY ( item <* ais.area.items | (NOT (SIZEOF(
|
|
TYPEOF(item) * ['ASSOCIATIVE_DRAUGHTING.STYLED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT',
|
|
'ASSOCIATIVE_DRAUGHTING.PLANAR_BOX']) = 1)) )) = 0)) )) = 0;
|
|
wr9 : SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
SIZEOF(QUERY ( item <* ais.area.items | (SIZEOF(TYPEOF(item)
|
|
* ['ASSOCIATIVE_DRAUGHTING.STYLED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM']) = 1) )) > 0)) )) = 0;
|
|
wr10: SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
SIZEOF(QUERY ( p_b <* QUERY ( item <* ais.area.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.PLANAR_BOX' IN TYPEOF(item)) ) | (
|
|
NOT (SIZEOF(USEDIN(p_b,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PRESENTATION_SIZE.SIZE')) = 1)) )) = 0)) ))
|
|
= 0;
|
|
wr11: SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
SIZEOF(QUERY ( mi <* QUERY ( item <* ais.area.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(item)) ) | (
|
|
NOT ('ASSOCIATIVE_DRAUGHTING.PRESENTATION_VIEW' IN TYPEOF(
|
|
mi.mapping_source.mapped_representation))) )) = 0)) )) = 0;
|
|
wr12: SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
SIZEOF(QUERY ( a2p <* QUERY ( item <* ais.area.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT' IN TYPEOF(item)) )
|
|
| (NOT (SIZEOF(USEDIN(a2p,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'MAPPED_ITEM.MAPPING_TARGET')) > 0)) )) = 0)) )) = 0;
|
|
wr13: SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
SIZEOF(ais.area.context_of_items.representations_in_context)
|
|
= 1)) )) = 0;
|
|
wr14: SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
SIZEOF(QUERY ( mi <* QUERY ( item <* ais.area.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(item)) ) | (
|
|
NOT (SIZEOF(USEDIN(mi.mapping_source.mapped_representation,
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'REPRESENTATION_MAP.MAPPED_REPRESENTATION')) = 1)) )) = 0)) ))
|
|
= 0;
|
|
wr15: SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
SIZEOF(QUERY ( mi <* QUERY ( item <* ais.area.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(item)) ) | (
|
|
NOT (SIZEOF(QUERY ( pv_item <* mi.mapping_source.
|
|
mapped_representation.items | (NOT (SIZEOF(TYPEOF(pv_item)
|
|
* ['ASSOCIATIVE_DRAUGHTING.' + 'STYLED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.CAMERA_IMAGE',
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'AXIS2_PLACEMENT']) = 1)) )) =
|
|
0)) )) = 0)) )) = 0;
|
|
wr16: SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
SIZEOF(QUERY ( mi <* QUERY ( item <* ais.area.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(item)) ) | (
|
|
NOT (SIZEOF(QUERY ( pv_item <* mi.mapping_source.
|
|
mapped_representation.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.CAMERA_IMAGE' IN TYPEOF(pv_item)) ))
|
|
= 1)) )) = 0)) )) = 0;
|
|
wr17: SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
SIZEOF(QUERY ( mi <* QUERY ( item <* ais.area.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(item)) ) | (
|
|
NOT (SIZEOF(QUERY ( a2p <* QUERY ( pv_item <* mi.
|
|
mapping_source.mapped_representation.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT' IN TYPEOF(pv_item)) )
|
|
| (('ASSOCIATIVE_DRAUGHTING.' +
|
|
'MAPPING_SOURCE.MAPPING_ORIGIN') IN ROLESOF(a2p)) )) = 1)) ))
|
|
= 0)) )) = 0;
|
|
wr18: SIZEOF(QUERY ( ais <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET.IN_SET') | (NOT (
|
|
SIZEOF(QUERY ( mi <* QUERY ( item <* ais.area.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(item)) ) | (
|
|
NOT (SIZEOF(mi.mapping_source.mapped_representation.
|
|
context_of_items.representations_in_context) = 1)) )) = 0)) ))
|
|
= 0;
|
|
END_ENTITY; -- draughting_drawing_revision
|
|
|
|
ENTITY draughting_elements
|
|
SUBTYPE OF (draughting_callout);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( l_c <* QUERY ( con <* SELF.contents | (
|
|
'ASSOCIATIVE_DRAUGHTING.LEADER_CURVE' IN TYPEOF(con)) ) | (
|
|
NOT (SIZEOF(QUERY ( ldc <* USEDIN(l_c,
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'DRAUGHTING_CALLOUT.CONTENTS')
|
|
| ('ASSOCIATIVE_DRAUGHTING.LEADER_DIRECTED_CALLOUT' IN
|
|
TYPEOF(ldc)) )) <= 1)) )) = 0;
|
|
wr2: (NOT ('ASSOCIATIVE_DRAUGHTING.DIMENSION_CURVE_DIRECTED_CALLOUT'
|
|
IN TYPEOF(SELF))) OR (SIZEOF(QUERY ( con <* SELF.contents |
|
|
('ASSOCIATIVE_DRAUGHTING.PROJECTION_CURVE' IN TYPEOF(con)) ))
|
|
<= 2);
|
|
wr3: SIZEOF(QUERY ( rc <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.DIMENSION_CALLOUT_' +
|
|
'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | (rc.name =
|
|
'primary') )) <= 1;
|
|
wr4: SIZEOF(QUERY ( rc <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.DIMENSION_CALLOUT_' +
|
|
'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | (rc.name =
|
|
'secondary') )) <= 1;
|
|
wr5: SIZEOF(QUERY ( sec <* QUERY ( rc <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.DIMENSION_CALLOUT_' +
|
|
'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | (rc.name =
|
|
'secondary') ) | (NOT (SIZEOF(QUERY ( prim <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.DIMENSION_CALLOUT_' +
|
|
'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | (prim.name =
|
|
'primary') )) = 1)) )) = 0;
|
|
END_ENTITY; -- draughting_elements
|
|
|
|
ENTITY draughting_group_elements_assignment
|
|
SUBTYPE OF (group_assignment);
|
|
items : SET [1:?] OF draughting_group_element;
|
|
END_ENTITY; -- draughting_group_elements_assignment
|
|
|
|
ENTITY draughting_model
|
|
SUBTYPE OF (representation);
|
|
UNIQUE
|
|
ur1 : name;
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.STYLED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT'] * TYPEOF(it)) = 1))
|
|
)) = 0;
|
|
wr2: SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(it)) ) | (
|
|
NOT (SIZEOF(['ASSOCIATIVE_DRAUGHTING.SHAPE_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_MODEL'] * TYPEOF(mi\
|
|
mapped_item.mapping_source.mapped_representation)) = 1)) ))
|
|
= 0;
|
|
wr3: SIZEOF(QUERY ( smi <* QUERY ( si <* QUERY ( it <* SELF.items |
|
|
('ASSOCIATIVE_DRAUGHTING.STYLED_ITEM' IN TYPEOF(it)) ) | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(si\
|
|
styled_item.item)) ) | (NOT ((
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_REPRESENTATION' IN TYPEOF(smi\
|
|
styled_item.item\mapped_item.mapping_source.
|
|
mapped_representation)) AND (SIZEOF(QUERY ( sty <* smi\
|
|
styled_item.styles | (NOT (SIZEOF(QUERY ( psa <* sty.styles
|
|
| (NOT ('ASSOCIATIVE_DRAUGHTING.CURVE_STYLE' IN TYPEOF(psa)))
|
|
)) = 1)) )) = 1)) ))) = 0;
|
|
END_ENTITY; -- draughting_model
|
|
|
|
ENTITY draughting_organization_assignment
|
|
SUBTYPE OF (organization_assignment);
|
|
assigned_items : SET [1:?] OF draughting_organization_item;
|
|
END_ENTITY; -- draughting_organization_assignment
|
|
|
|
ENTITY draughting_person_and_organization_assignment
|
|
SUBTYPE OF (person_and_organization_assignment);
|
|
assigned_items : SET [1:?] OF draughting_organization_item;
|
|
END_ENTITY; -- draughting_person_and_organization_assignment
|
|
|
|
ENTITY draughting_person_assignment
|
|
SUBTYPE OF (person_assignment);
|
|
assigned_items : SET [1:?] OF draughting_organization_item;
|
|
END_ENTITY; -- draughting_person_assignment
|
|
|
|
ENTITY draughting_pre_defined_colour
|
|
SUBTYPE OF (pre_defined_colour);
|
|
WHERE
|
|
wr1: SELF.name IN ['black','red','green','blue','yellow','magenta',
|
|
'cyan','white'];
|
|
END_ENTITY; -- draughting_pre_defined_colour
|
|
|
|
ENTITY draughting_pre_defined_curve_font
|
|
SUBTYPE OF (pre_defined_curve_font);
|
|
WHERE
|
|
wr1: SELF.name IN ['continuous','chain','chain double dash','dashed',
|
|
'dotted'];
|
|
END_ENTITY; -- draughting_pre_defined_curve_font
|
|
|
|
ENTITY draughting_pre_defined_text_font
|
|
SUBTYPE OF (pre_defined_text_font);
|
|
WHERE
|
|
wr1: SELF.name IN ['ISO 3098-1 font A','ISO 3098-1 font B'];
|
|
END_ENTITY; -- draughting_pre_defined_text_font
|
|
|
|
ENTITY draughting_presented_item
|
|
SUBTYPE OF (presented_item);
|
|
items : SET [1:?] OF draughting_presented_item_select;
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( pir <* USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PRESENTED_ITEM_REPRESENTATION.ITEM') | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.DRAWING_REVISION' IN TYPEOF(pir.
|
|
presentation))) )) = 0;
|
|
END_ENTITY; -- draughting_presented_item
|
|
|
|
ENTITY draughting_security_classification_assignment
|
|
SUBTYPE OF (security_classification_assignment);
|
|
assigned_items : SET [1:?] OF classified_item;
|
|
END_ENTITY; -- draughting_security_classification_assignment
|
|
|
|
ENTITY draughting_specification_reference
|
|
SUBTYPE OF (document_reference);
|
|
specified_items : SET [1:?] OF specified_item;
|
|
WHERE
|
|
wr1: SELF.assigned_document.kind.product_data_type =
|
|
'draughting specification';
|
|
END_ENTITY; -- draughting_specification_reference
|
|
|
|
ENTITY draughting_subfigure_representation
|
|
SUBTYPE OF (symbol_representation);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( item <* SELF\representation.items | (NOT (
|
|
SIZEOF(['ASSOCIATIVE_DRAUGHTING.ANNOTATION_OCCURRENCE',
|
|
'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_CALLOUT',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT'] * TYPEOF(item)) =
|
|
1)) )) = 0;
|
|
wr2: SIZEOF(QUERY ( item <* SELF\representation.items | (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_OCCURRENCE',
|
|
'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_CALLOUT'] * TYPEOF(item))
|
|
= 1) )) >= 1;
|
|
wr3: SIZEOF(QUERY ( srm <* QUERY ( rm <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'REPRESENTATION_MAP.MAPPED_REPRESENTATION') | (
|
|
'ASSOCIATIVE_DRAUGHTING.SYMBOL_REPRESENTATION_MAP' IN
|
|
TYPEOF(rm)) ) | (NOT (SIZEOF(QUERY ( a_s <* QUERY ( mi <*
|
|
srm.map_usage | ('ASSOCIATIVE_DRAUGHTING.ANNOTATION_SYMBOL'
|
|
IN TYPEOF(mi)) ) | (NOT (SIZEOF(QUERY ( aso <* USEDIN(a_s,
|
|
'ASSOCIATIVE_DRAUGHTING.STYLED_ITEM.ITEM') | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_SUBFIGURE_OCCURRENCE' IN
|
|
TYPEOF(aso))) )) = 0)) )) = 0)) )) > 0;
|
|
wr4: NOT acyclic_mapped_item_usage(SELF);
|
|
wr5: SIZEOF(SELF.context_of_items.representations_in_context) = 1;
|
|
END_ENTITY; -- draughting_subfigure_representation
|
|
|
|
ENTITY draughting_symbol_representation
|
|
SUBTYPE OF (symbol_representation);
|
|
UNIQUE
|
|
ur1 : name;
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( item <* SELF\representation.items | (NOT (
|
|
SIZEOF(TYPEOF(item) * [
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_CURVE_OCCURRENCE',
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_SYMBOL_OCCURRENCE',
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_FILL_AREA_OCCURRENCE',
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT']) = 1)) )) = 0;
|
|
wr2: SIZEOF(QUERY ( item <* SELF\representation.items | (SIZEOF(
|
|
TYPEOF(item) * [
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_CURVE_OCCURRENCE',
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_SYMBOL_OCCURRENCE',
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_FILL_AREA_OCCURRENCE',
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE']) = 1) ))
|
|
>= 1;
|
|
wr3: SIZEOF(QUERY ( item <* SELF\representation.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_SUBFIGURE_OCCURRENCE' IN
|
|
TYPEOF(item)) )) = 0;
|
|
wr4: SIZEOF(QUERY ( srm <* QUERY ( rm <* USEDIN(SELF,
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'REPRESENTATION_MAP.MAPPED_REPRESENTATION') | (
|
|
'ASSOCIATIVE_DRAUGHTING.SYMBOL_REPRESENTATION_MAP' IN
|
|
TYPEOF(rm)) ) | (NOT (SIZEOF(QUERY ( a_s <* QUERY ( mi <*
|
|
srm.map_usage | ('ASSOCIATIVE_DRAUGHTING.ANNOTATION_SYMBOL'
|
|
IN TYPEOF(mi)) ) | (NOT (SIZEOF(QUERY ( aso <* USEDIN(a_s,
|
|
'ASSOCIATIVE_DRAUGHTING.STYLED_ITEM.ITEM') | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_SYMBOL_OCCURRENCE' IN
|
|
TYPEOF(aso))) )) = 0)) )) = 0)) )) > 0;
|
|
wr5: NOT acyclic_mapped_item_usage(SELF);
|
|
wr6: SIZEOF(SELF.context_of_items.representations_in_context) = 1;
|
|
END_ENTITY; -- draughting_symbol_representation
|
|
|
|
ENTITY draughting_text_literal_with_delineation
|
|
SUBTYPE OF (text_literal_with_delineation);
|
|
WHERE
|
|
wr1: SELF.delineation IN ['underline','overline'];
|
|
END_ENTITY; -- draughting_text_literal_with_delineation
|
|
|
|
ENTITY draughting_title;
|
|
items : SET [1:?] OF draughting_titled_item;
|
|
language : label;
|
|
contents : text;
|
|
END_ENTITY; -- draughting_title
|
|
|
|
ENTITY drawing_definition;
|
|
drawing_number : identifier;
|
|
drawing_type : OPTIONAL label;
|
|
END_ENTITY; -- drawing_definition
|
|
|
|
ENTITY drawing_revision
|
|
SUBTYPE OF (presentation_set);
|
|
revision_identifier : identifier;
|
|
drawing_identifier : drawing_definition;
|
|
intended_scale : OPTIONAL text;
|
|
UNIQUE
|
|
ur1 : revision_identifier, drawing_identifier;
|
|
END_ENTITY; -- drawing_revision
|
|
|
|
ENTITY drawing_sheet_layout
|
|
SUBTYPE OF (draughting_symbol_representation);
|
|
END_ENTITY; -- drawing_sheet_layout
|
|
|
|
ENTITY drawing_sheet_revision
|
|
SUBTYPE OF (presentation_area);
|
|
revision_identifier : identifier;
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( item <* SELF\representation.items | ((
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(item)) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.DRAWING_SHEET_REVISION' IN TYPEOF(
|
|
item\mapped_item.mapping_source.mapped_representation))) ))
|
|
= 0;
|
|
END_ENTITY; -- drawing_sheet_revision
|
|
|
|
ENTITY drawing_sheet_revision_usage
|
|
SUBTYPE OF (area_in_set);
|
|
sheet_number : identifier;
|
|
UNIQUE
|
|
ur1 : sheet_number, in_set;
|
|
WHERE
|
|
wr1: ('ASSOCIATIVE_DRAUGHTING.DRAWING_SHEET_REVISION' IN TYPEOF(
|
|
SELF\area_in_set.area)) AND
|
|
('ASSOCIATIVE_DRAUGHTING.DRAWING_REVISION' IN TYPEOF(SELF\
|
|
area_in_set.in_set));
|
|
END_ENTITY; -- drawing_sheet_revision_usage
|
|
|
|
ENTITY edge
|
|
SUPERTYPE OF (ONEOF (edge_curve,oriented_edge))
|
|
SUBTYPE OF (topological_representation_item);
|
|
edge_start : vertex;
|
|
edge_end : vertex;
|
|
END_ENTITY; -- edge
|
|
|
|
ENTITY edge_based_2d_wireframe_shape_representation
|
|
SUBTYPE OF (shape_representation);
|
|
WHERE
|
|
wr1 : SIZEOF(QUERY ( it <* SELF\representation.items | (NOT (SIZEOF(
|
|
['ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_2D'] * TYPEOF(it))
|
|
= 1)) )) = 0;
|
|
wr2 : SIZEOF(QUERY ( it <* SELF\representation.items | (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM'] * TYPEOF(it)) = 1) ))
|
|
>= 1;
|
|
wr3 : SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
|
|
edge_based_wireframe_model.ebwm_boundary | (NOT (SIZEOF(
|
|
QUERY ( edges <* eb.ces_edges | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_CURVE' IN TYPEOF(edges))) )) =
|
|
0)) )) = 0)) )) = 0;
|
|
wr4 : SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
|
|
edge_based_wireframe_model.ebwm_boundary | (NOT (SIZEOF(
|
|
QUERY ( pline_edges <* QUERY ( edges <* eb.ces_edges | (
|
|
'ASSOCIATIVE_DRAUGHTING.POLYLINE' IN TYPEOF(edges\
|
|
edge_curve.edge_geometry)) ) | (NOT (SIZEOF(pline_edges\
|
|
edge_curve.edge_geometry\polyline.points) > 2)) )) = 0)) ))
|
|
= 0)) )) = 0;
|
|
wr5 : SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
|
|
edge_based_wireframe_model.ebwm_boundary | (NOT (SIZEOF(
|
|
QUERY ( edges <* eb.ces_edges | (NOT ((
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN TYPEOF(edges.
|
|
edge_start)) AND ('ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN
|
|
TYPEOF(edges.edge_end)))) )) = 0)) )) = 0)) )) = 0;
|
|
wr6 : SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
|
|
edge_based_wireframe_model.ebwm_boundary | (NOT (SIZEOF(
|
|
QUERY ( edges <* eb.ces_edges | (NOT
|
|
valid_2d_wireframe_edge_curve(edges\edge_curve.
|
|
edge_geometry,'ASSOCIATIVE_DRAUGHTING')) )) = 0)) )) = 0)) ))
|
|
= 0;
|
|
wr7 : SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
|
|
edge_based_wireframe_model.ebwm_boundary | (NOT (SIZEOF(
|
|
QUERY ( edges <* eb.ces_edges | (NOT (
|
|
valid_wireframe_vertex_point(edges.edge_start\vertex_point.
|
|
vertex_geometry,'ASSOCIATIVE_DRAUGHTING') AND
|
|
valid_wireframe_vertex_point(edges.edge_end\vertex_point.
|
|
vertex_geometry,'ASSOCIATIVE_DRAUGHTING'))) )) = 0)) )) = 0))
|
|
)) = 0;
|
|
wr8 : SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
|
|
edge_based_wireframe_model.ebwm_boundary | (NOT (SIZEOF(
|
|
QUERY ( con_edges <* QUERY ( edges <* eb.ces_edges | (
|
|
'ASSOCIATIVE_DRAUGHTING.CONIC' IN TYPEOF(edges\edge_curve.
|
|
edge_geometry)) ) | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_2D' IN TYPEOF(
|
|
con_edges\edge_curve.edge_geometry\conic.position))) )) = 0))
|
|
)) = 0)) )) = 0;
|
|
wr9 : SIZEOF(QUERY ( mi <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(it)) )
|
|
| (NOT (('ASSOCIATIVE_DRAUGHTING.' +
|
|
'EDGE_BASED_2D_WIREFRAME_SHAPE_REPRESENTATION') IN TYPEOF(
|
|
mi\mapped_item.mapping_source.mapped_representation))) )) =
|
|
0;
|
|
wr10: SELF\representation.context_of_items\
|
|
geometric_representation_context.coordinate_space_dimension
|
|
= 2;
|
|
END_ENTITY; -- edge_based_2d_wireframe_shape_representation
|
|
|
|
ENTITY edge_based_wireframe_model
|
|
SUBTYPE OF (geometric_representation_item);
|
|
ebwm_boundary : SET [1:?] OF connected_edge_set;
|
|
END_ENTITY; -- edge_based_wireframe_model
|
|
|
|
ENTITY edge_based_wireframe_shape_representation
|
|
SUBTYPE OF (shape_representation);
|
|
WHERE
|
|
wr1 : SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_3D'] * TYPEOF(it))
|
|
= 1)) )) = 0;
|
|
wr2 : SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM'] * TYPEOF(it)) = 1) ))
|
|
>= 1;
|
|
wr3 : SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
|
|
edge_based_wireframe_model.ebwm_boundary | (NOT (SIZEOF(
|
|
QUERY ( edges <* eb.ces_edges | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_CURVE' IN TYPEOF(edges))) )) =
|
|
0)) )) = 0)) )) = 0;
|
|
wr4 : SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
|
|
edge_based_wireframe_model.ebwm_boundary | (NOT (SIZEOF(
|
|
QUERY ( pline_edges <* QUERY ( edges <* eb.ces_edges | (
|
|
'ASSOCIATIVE_DRAUGHTING.POLYLINE' IN TYPEOF(edges\
|
|
edge_curve.edge_geometry)) ) | (NOT (SIZEOF(pline_edges\
|
|
edge_curve.edge_geometry\polyline.points) > 2)) )) = 0)) ))
|
|
= 0)) )) = 0;
|
|
wr5 : SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
|
|
edge_based_wireframe_model.ebwm_boundary | (NOT (SIZEOF(
|
|
QUERY ( edges <* eb.ces_edges | (NOT ((
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN TYPEOF(edges.
|
|
edge_start)) AND ('ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN
|
|
TYPEOF(edges.edge_end)))) )) = 0)) )) = 0)) )) = 0;
|
|
wr6 : SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
|
|
edge_based_wireframe_model.ebwm_boundary | (NOT (SIZEOF(
|
|
QUERY ( edges <* eb.ces_edges | (NOT
|
|
valid_wireframe_edge_curve(edges\edge_curve.edge_geometry,
|
|
'ASSOCIATIVE_DRAUGHTING')) )) = 0)) )) = 0)) )) = 0;
|
|
wr7 : SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
|
|
edge_based_wireframe_model.ebwm_boundary | (NOT (SIZEOF(
|
|
QUERY ( edges <* eb.ces_edges | (NOT (
|
|
valid_wireframe_vertex_point(edges.edge_start\vertex_point.
|
|
vertex_geometry,'ASSOCIATIVE_DRAUGHTING') AND
|
|
valid_wireframe_vertex_point(edges.edge_end\vertex_point.
|
|
vertex_geometry,'ASSOCIATIVE_DRAUGHTING'))) )) = 0)) )) =
|
|
0)) )) = 0;
|
|
wr8 : SIZEOF(QUERY ( ebwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( eb <* ebwm\
|
|
edge_based_wireframe_model.ebwm_boundary | (NOT (SIZEOF(
|
|
QUERY ( con_edges <* QUERY ( edges <* eb.ces_edges | (
|
|
'ASSOCIATIVE_DRAUGHTING.CONIC' IN TYPEOF(edges\edge_curve.
|
|
edge_geometry)) ) | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_3D' IN TYPEOF(
|
|
con_edges\edge_curve.edge_geometry\conic.position))) )) = 0))
|
|
)) = 0)) )) = 0;
|
|
wr9 : SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(it)) ) | (
|
|
NOT (('ASSOCIATIVE_DRAUGHTING.' +
|
|
'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION') IN TYPEOF(mi\
|
|
mapped_item.mapping_source.mapped_representation))) )) = 0;
|
|
wr10: SELF.context_of_items\geometric_representation_context.
|
|
coordinate_space_dimension = 3;
|
|
END_ENTITY; -- edge_based_wireframe_shape_representation
|
|
|
|
ENTITY edge_curve
|
|
SUBTYPE OF (edge, geometric_representation_item);
|
|
edge_geometry : curve;
|
|
same_sense : BOOLEAN;
|
|
END_ENTITY; -- edge_curve
|
|
|
|
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; -- edge_loop
|
|
|
|
ENTITY elementary_2d_geometric_curve_set_shape_representation
|
|
SUBTYPE OF (shape_representation);
|
|
WHERE
|
|
wr1: SELF\representation.context_of_items\
|
|
geometric_representation_context.coordinate_space_dimension
|
|
= 2;
|
|
wr2: SIZEOF(QUERY ( item <* SELF\representation.items | (NOT (
|
|
SIZEOF(['ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_2D'] * TYPEOF(item))
|
|
= 1)) )) = 0;
|
|
wr3: SIZEOF(QUERY ( item <* SELF\representation.items | (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM'] * TYPEOF(item)) = 1) ))
|
|
>= 1;
|
|
wr4: SIZEOF(QUERY ( mi <* QUERY ( item <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(item)) )
|
|
| (NOT (('ASSOCIATIVE_DRAUGHTING.' +
|
|
'ELEMENTARY_2D_GEOMETRIC_CURVE_SET_SHAPE_REPRESENTATION') IN
|
|
TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))
|
|
)) = 0;
|
|
wr5: SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET' IN TYPEOF(
|
|
item)) ) | (NOT (SIZEOF(QUERY ( elem <* gcs\geometric_set.
|
|
elements | (NOT (SIZEOF(TYPEOF(elem) * [
|
|
'ASSOCIATIVE_DRAUGHTING.CIRCLE',
|
|
'ASSOCIATIVE_DRAUGHTING.COMPOSITE_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.ELLIPSE',
|
|
'ASSOCIATIVE_DRAUGHTING.POINT',
|
|
'ASSOCIATIVE_DRAUGHTING.POLYLINE',
|
|
'ASSOCIATIVE_DRAUGHTING.TRIMMED_CURVE']) = 1)) )) = 0)) )) =
|
|
0;
|
|
wr6: SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET' IN TYPEOF(
|
|
item)) ) | (NOT (SIZEOF(QUERY ( tc <* QUERY ( elem <* gcs\
|
|
geometric_set.elements | (
|
|
'ASSOCIATIVE_DRAUGHTING.TRIMMED_CURVE' IN TYPEOF(elem)) ) |
|
|
(NOT valid_elementary_trimmed_curves_in_set(tc\trimmed_curve
|
|
.basis_curve,'ASSOCIATIVE_DRAUGHTING')) )) = 0)) )) = 0;
|
|
wr7: SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET' IN TYPEOF(
|
|
item)) ) | (NOT (SIZEOF(QUERY ( pnt <* QUERY ( elem <* gcs\
|
|
geometric_set.elements | ('ASSOCIATIVE_DRAUGHTING.POINT' IN
|
|
TYPEOF(elem)) ) | (NOT (SIZEOF(TYPEOF(pnt) * [
|
|
'ASSOCIATIVE_DRAUGHTING.CARTESIAN_POINT',
|
|
'ASSOCIATIVE_DRAUGHTING.POINT_ON_CURVE']) = 1)) )) = 0)) ))
|
|
= 0;
|
|
wr8: SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET' IN TYPEOF(
|
|
item)) ) | (NOT (SIZEOF(QUERY ( pl <* QUERY ( elem <* gcs\
|
|
geometric_set.elements | ('ASSOCIATIVE_DRAUGHTING.POLYLINE'
|
|
IN TYPEOF(elem)) ) | (NOT (SIZEOF(pl\polyline.points) > 2)) ))
|
|
= 0)) )) = 0;
|
|
END_ENTITY; -- elementary_2d_geometric_curve_set_shape_representation
|
|
|
|
ENTITY elementary_brep_shape_representation
|
|
SUBTYPE OF (shape_representation);
|
|
WHERE
|
|
wr1 : SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP',
|
|
'ASSOCIATIVE_DRAUGHTING.FACETED_BREP',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_3D'] * TYPEOF(it))
|
|
= 1)) )) = 0;
|
|
wr2 : SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM'] * TYPEOF(it)) = 1) ))
|
|
> 0;
|
|
wr3 : SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(QUERY ( csh <* msb_shells(msb,
|
|
'ASSOCIATIVE_DRAUGHTING') | (NOT (SIZEOF(QUERY ( fcs <* csh.
|
|
cfs_faces | (NOT ('ASSOCIATIVE_DRAUGHTING.FACE_SURFACE' IN
|
|
TYPEOF(fcs))) )) = 0)) )) = 0)) )) = 0;
|
|
wr4 : SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(QUERY ( csh <* msb_shells(msb,
|
|
'ASSOCIATIVE_DRAUGHTING') | (NOT (SIZEOF(QUERY ( fcs <* csh\
|
|
connected_face_set.cfs_faces | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.ELEMENTARY_SURFACE' IN TYPEOF(fcs\
|
|
face_surface.face_geometry))) )) = 0)) )) = 0)) )) = 0;
|
|
wr5 : SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(QUERY ( csh <* msb_shells(msb,
|
|
'ASSOCIATIVE_DRAUGHTING') | (NOT (SIZEOF(QUERY ( fcs <* csh\
|
|
connected_face_set.cfs_faces | (NOT (SIZEOF(
|
|
QUERY ( elp_fbnds <* QUERY ( bnds <* fcs.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.
|
|
edge_list | (NOT ('ASSOCIATIVE_DRAUGHTING.EDGE_CURVE' IN
|
|
TYPEOF(oe.edge_element))) )) = 0)) )) = 0)) )) = 0)) )) = 0))
|
|
)) = 0;
|
|
wr6 : SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(QUERY ( csh <* msb_shells(msb,
|
|
'ASSOCIATIVE_DRAUGHTING') | (NOT (SIZEOF(QUERY ( fcs <* csh\
|
|
connected_face_set.cfs_faces | (NOT (SIZEOF(
|
|
QUERY ( elp_fbnds <* QUERY ( bnds <* fcs.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.
|
|
edge_list | (NOT (SIZEOF(['ASSOCIATIVE_DRAUGHTING.LINE',
|
|
'ASSOCIATIVE_DRAUGHTING.CONIC',
|
|
'ASSOCIATIVE_DRAUGHTING.POLYLINE'] * TYPEOF(oe.edge_element
|
|
\edge_curve.edge_geometry)) = 1)) )) = 0)) )) = 0)) )) = 0))
|
|
)) = 0)) )) = 0;
|
|
wr7 : SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(QUERY ( csh <* msb_shells(msb,
|
|
'ASSOCIATIVE_DRAUGHTING') | (NOT (SIZEOF(QUERY ( fcs <* csh\
|
|
connected_face_set.cfs_faces | (NOT (SIZEOF(
|
|
QUERY ( elp_fbnds <* QUERY ( bnds <* fcs.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.
|
|
edge_list | (NOT (('ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN
|
|
TYPEOF(oe.edge_start)) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN
|
|
TYPEOF(oe.edge_end)))) ))
|
|
= 0)) )) = 0)) )) = 0)) )) = 0)) )) = 0;
|
|
wr8 : SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(QUERY ( csh <* msb_shells(msb,
|
|
'ASSOCIATIVE_DRAUGHTING') | (NOT (SIZEOF(QUERY ( fcs <* csh\
|
|
connected_face_set.cfs_faces | (NOT (SIZEOF(
|
|
QUERY ( elp_fbnds <* QUERY ( bnds <* fcs.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| ('ASSOCIATIVE_DRAUGHTING.ORIENTED_PATH' IN TYPEOF(
|
|
elp_fbnds.bound)) )) = 0)) )) = 0)) )) = 0)) )) = 0;
|
|
wr9 : SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) )
|
|
| ('ASSOCIATIVE_DRAUGHTING.ORIENTED_CLOSED_SHELL' IN
|
|
TYPEOF(msb\manifold_solid_brep.outer)) )) = 0;
|
|
wr10: SIZEOF(QUERY ( brv <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.BREP_WITH_VOIDS' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(QUERY ( csh <* brv\brep_with_voids.voids |
|
|
csh\oriented_closed_shell.orientation )) = 0)) )) = 0;
|
|
wr11: SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(it)) ) | (
|
|
NOT
|
|
('ASSOCIATIVE_DRAUGHTING.ELEMENTARY_BREP_SHAPE_REPRESENTATION'
|
|
IN TYPEOF(mi\mapped_item.mapping_source.
|
|
mapped_representation))) )) = 0;
|
|
wr12: SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(QUERY ( csh <* msb_shells(msb,
|
|
'ASSOCIATIVE_DRAUGHTING') | (NOT (SIZEOF(QUERY ( fcs <* csh\
|
|
connected_face_set.cfs_faces | (NOT (SIZEOF(
|
|
QUERY ( vlp_fbnds <* QUERY ( bnds <* fcs.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT (('ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN TYPEOF(
|
|
vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.CARTESIAN_POINT' IN TYPEOF(
|
|
vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\
|
|
vertex_point.vertex_geometry)))) )) = 0)) )) = 0)) )) = 0)) ))
|
|
= 0;
|
|
END_ENTITY; -- elementary_brep_shape_representation
|
|
|
|
ENTITY elementary_surface
|
|
SUPERTYPE OF (ONEOF (plane,cylindrical_surface,conical_surface,
|
|
spherical_surface,toroidal_surface))
|
|
SUBTYPE OF (surface);
|
|
position : axis2_placement_3d;
|
|
END_ENTITY; -- elementary_surface
|
|
|
|
ENTITY ellipse
|
|
SUBTYPE OF (conic);
|
|
semi_axis_1 : positive_length_measure;
|
|
semi_axis_2 : positive_length_measure;
|
|
END_ENTITY; -- ellipse
|
|
|
|
ENTITY evaluated_degenerate_pcurve
|
|
SUBTYPE OF (degenerate_pcurve);
|
|
equivalent_point : cartesian_point;
|
|
END_ENTITY; -- evaluated_degenerate_pcurve
|
|
|
|
ENTITY external_source;
|
|
source_id : source_item;
|
|
END_ENTITY; -- external_source
|
|
|
|
ENTITY externally_defined_curve_font
|
|
SUBTYPE OF (externally_defined_item);
|
|
END_ENTITY; -- externally_defined_curve_font
|
|
|
|
ENTITY externally_defined_hatch_style
|
|
SUBTYPE OF (externally_defined_item, geometric_representation_item);
|
|
END_ENTITY; -- externally_defined_hatch_style
|
|
|
|
ENTITY externally_defined_item;
|
|
item_id : source_item;
|
|
source : external_source;
|
|
END_ENTITY; -- externally_defined_item
|
|
|
|
ENTITY externally_defined_symbol
|
|
SUBTYPE OF (externally_defined_item);
|
|
END_ENTITY; -- externally_defined_symbol
|
|
|
|
ENTITY externally_defined_text_font
|
|
SUBTYPE OF (externally_defined_item);
|
|
END_ENTITY; -- externally_defined_text_font
|
|
|
|
ENTITY externally_defined_tile_style
|
|
SUBTYPE OF (externally_defined_item, geometric_representation_item);
|
|
END_ENTITY; -- externally_defined_tile_style
|
|
|
|
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 | (
|
|
'ASSOCIATIVE_DRAUGHTING.FACE_OUTER_BOUND' IN TYPEOF(temp)) ))
|
|
<= 1;
|
|
END_ENTITY; -- face
|
|
|
|
ENTITY face_bound
|
|
SUBTYPE OF (topological_representation_item);
|
|
bound : loop;
|
|
orientation : BOOLEAN;
|
|
END_ENTITY; -- face_bound
|
|
|
|
ENTITY face_outer_bound
|
|
SUBTYPE OF (face_bound);
|
|
END_ENTITY; -- face_outer_bound
|
|
|
|
ENTITY face_surface
|
|
SUBTYPE OF (face, geometric_representation_item);
|
|
face_geometry : surface;
|
|
same_sense : BOOLEAN;
|
|
END_ENTITY; -- face_surface
|
|
|
|
ENTITY faceted_brep
|
|
SUBTYPE OF (manifold_solid_brep);
|
|
END_ENTITY; -- faceted_brep
|
|
|
|
ENTITY faceted_brep_shape_representation
|
|
SUBTYPE OF (shape_representation);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.FACETED_BREP',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) =
|
|
1)) )) = 0;
|
|
wr2: SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.FACETED_BREP',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM'] * TYPEOF(it)) = 1) ))
|
|
> 0;
|
|
wr3: SIZEOF(QUERY ( fbrep <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.FACETED_BREP' IN TYPEOF(it)) ) | (
|
|
NOT (SIZEOF(QUERY ( csh <* msb_shells(fbrep,
|
|
'ASSOCIATIVE_DRAUGHTING') | (NOT (SIZEOF(QUERY ( fcs <* csh.
|
|
cfs_faces | (NOT (('ASSOCIATIVE_DRAUGHTING.FACE_SURFACE' IN
|
|
TYPEOF(fcs)) AND ('ASSOCIATIVE_DRAUGHTING.PLANE' IN TYPEOF(
|
|
fcs\face_surface.face_geometry)) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.CARTESIAN_POINT' IN TYPEOF(fcs\
|
|
face_surface.face_geometry\elementary_surface.position.
|
|
location)))) )) = 0)) )) = 0)) )) = 0;
|
|
wr4: SIZEOF(QUERY ( fbrep <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.FACETED_BREP' IN TYPEOF(it)) ) | (
|
|
NOT (SIZEOF(QUERY ( csh <* msb_shells(fbrep,
|
|
'ASSOCIATIVE_DRAUGHTING') | (NOT (SIZEOF(QUERY ( fcs <* csh.
|
|
cfs_faces | (NOT (SIZEOF(QUERY ( bnds <* fcs.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.FACE_OUTER_BOUND' IN TYPEOF(bnds)) ))
|
|
= 1)) )) = 0)) )) = 0)) )) = 0;
|
|
wr5: SIZEOF(QUERY ( msb <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) )
|
|
| ('ASSOCIATIVE_DRAUGHTING.ORIENTED_CLOSED_SHELL' IN
|
|
TYPEOF(msb\manifold_solid_brep.outer)) )) = 0;
|
|
wr6: SIZEOF(QUERY ( brv <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.BREP_WITH_VOIDS' IN TYPEOF(it)) ) |
|
|
(NOT (SIZEOF(QUERY ( csh <* brv\brep_with_voids.voids | csh\
|
|
oriented_closed_shell.orientation )) = 0)) )) = 0;
|
|
wr7: SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(it)) ) | (
|
|
NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.FACETED_BREP_SHAPE_REPRESENTATION'
|
|
IN TYPEOF(mi\mapped_item.mapping_source.
|
|
mapped_representation))) )) = 0;
|
|
END_ENTITY; -- faceted_brep_shape_representation
|
|
|
|
ENTITY fill_area_style;
|
|
name : label;
|
|
fill_styles : SET [1:?] OF fill_style_select;
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( fill_style <* SELF.fill_styles | ((
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'FILL_AREA_STYLE_COLOUR') IN
|
|
TYPEOF(fill_style)) )) <= 1;
|
|
END_ENTITY; -- fill_area_style
|
|
|
|
ENTITY fill_area_style_colour;
|
|
name : label;
|
|
fill_colour : colour;
|
|
END_ENTITY; -- fill_area_style_colour
|
|
|
|
ENTITY fill_area_style_hatching
|
|
SUBTYPE OF (geometric_representation_item);
|
|
hatch_line_appearance : curve_style;
|
|
start_of_next_hatch_line : one_direction_repeat_factor;
|
|
point_of_reference_hatch_line : cartesian_point;
|
|
pattern_start : cartesian_point;
|
|
hatch_line_angle : plane_angle_measure;
|
|
END_ENTITY; -- fill_area_style_hatching
|
|
|
|
ENTITY fill_area_style_tile_symbol_with_style
|
|
SUBTYPE OF (geometric_representation_item);
|
|
symbol : annotation_symbol_occurrence;
|
|
END_ENTITY; -- fill_area_style_tile_symbol_with_style
|
|
|
|
ENTITY fill_area_style_tiles
|
|
SUBTYPE OF (geometric_representation_item);
|
|
tiling_pattern : two_direction_repeat_factor;
|
|
tiles : SET [1:?] OF fill_area_style_tile_shape_select;
|
|
tiling_scale : positive_ratio_measure;
|
|
END_ENTITY; -- fill_area_style_tiles
|
|
|
|
ENTITY functionally_defined_transformation;
|
|
name : label;
|
|
description : text;
|
|
END_ENTITY; -- functionally_defined_transformation
|
|
|
|
ENTITY geometric_curve_set
|
|
SUBTYPE OF (geometric_set);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( temp <* SELF\geometric_set.elements | (
|
|
'ASSOCIATIVE_DRAUGHTING.SURFACE' IN TYPEOF(temp)) )) = 0;
|
|
END_ENTITY; -- geometric_curve_set
|
|
|
|
ENTITY geometric_representation_context
|
|
SUBTYPE OF (representation_context);
|
|
coordinate_space_dimension : dimension_count;
|
|
END_ENTITY; -- geometric_representation_context
|
|
|
|
ENTITY geometric_representation_item
|
|
SUPERTYPE OF (ONEOF (point,direction,vector,placement,
|
|
cartesian_transformation_operator,curve,surface,edge_curve,
|
|
face_surface,poly_loop,vertex_point,solid_model,
|
|
shell_based_surface_model,shell_based_wireframe_model,
|
|
edge_based_wireframe_model,geometric_set))
|
|
SUBTYPE OF (representation_item);
|
|
DERIVE
|
|
dim : dimension_count := dimension_of(SELF);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( using_rep <* using_representations(SELF) | (NOT
|
|
('ASSOCIATIVE_DRAUGHTING.GEOMETRIC_REPRESENTATION_CONTEXT'
|
|
IN TYPEOF(using_rep.context_of_items))) )) = 0;
|
|
END_ENTITY; -- geometric_representation_item
|
|
|
|
ENTITY geometric_set
|
|
SUPERTYPE OF (geometric_curve_set)
|
|
SUBTYPE OF (geometric_representation_item);
|
|
elements : SET [1:?] OF geometric_set_select;
|
|
END_ENTITY; -- geometric_set
|
|
|
|
ENTITY geometrical_tolerance_callout
|
|
SUBTYPE OF (draughting_callout);
|
|
END_ENTITY; -- geometrical_tolerance_callout
|
|
|
|
ENTITY geometrically_bounded_2d_wireframe_representation
|
|
SUBTYPE OF (shape_representation);
|
|
WHERE
|
|
wr1: SELF.context_of_items\geometric_representation_context.
|
|
coordinate_space_dimension = 2;
|
|
wr2: SIZEOF(QUERY ( item <* SELF.items | (NOT (SIZEOF(TYPEOF(item) *
|
|
['ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_2D',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM']) = 1)) )) = 0;
|
|
wr3: SIZEOF(QUERY ( item <* SELF.items | (SIZEOF(TYPEOF(item) * [
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM']) = 1) )) >= 1;
|
|
wr4: SIZEOF(QUERY ( mi <* QUERY ( item <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(item)) ) | (
|
|
NOT (('ASSOCIATIVE_DRAUGHTING.' +
|
|
'GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION') IN
|
|
TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))
|
|
)) = 0;
|
|
wr5: SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET' IN TYPEOF(item)) )
|
|
| (NOT (SIZEOF(QUERY ( elem <* gcs\geometric_set.elements
|
|
| (NOT (SIZEOF(TYPEOF(elem) * [
|
|
'ASSOCIATIVE_DRAUGHTING.B_SPLINE_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.CIRCLE',
|
|
'ASSOCIATIVE_DRAUGHTING.COMPOSITE_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.ELLIPSE',
|
|
'ASSOCIATIVE_DRAUGHTING.OFFSET_CURVE_2D',
|
|
'ASSOCIATIVE_DRAUGHTING.POINT',
|
|
'ASSOCIATIVE_DRAUGHTING.POLYLINE',
|
|
'ASSOCIATIVE_DRAUGHTING.TRIMMED_CURVE']) = 1)) )) = 0)) )) =
|
|
0;
|
|
wr6: SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET' IN TYPEOF(item)) )
|
|
| (NOT (SIZEOF(QUERY ( crv <* QUERY ( elem <* gcs\
|
|
geometric_set.elements | ('ASSOCIATIVE_DRAUGHTING.CURVE' IN
|
|
TYPEOF(elem)) ) | (NOT valid_basis_curve_in_2d_wireframe(crv,
|
|
'ASSOCIATIVE_DRAUGHTING')) )) = 0)) )) = 0;
|
|
wr7: SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET' IN TYPEOF(item)) )
|
|
| (NOT (SIZEOF(QUERY ( pnt <* QUERY ( elem <* gcs\
|
|
geometric_set.elements | ('ASSOCIATIVE_DRAUGHTING.POINT' IN
|
|
TYPEOF(elem)) ) | (NOT (SIZEOF(TYPEOF(pnt) * [
|
|
'ASSOCIATIVE_DRAUGHTING.CARTESIAN_POINT',
|
|
'ASSOCIATIVE_DRAUGHTING.POINT_ON_CURVE']) = 1)) )) = 0)) ))
|
|
= 0;
|
|
wr8: SIZEOF(QUERY ( gcs <* QUERY ( item <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET' IN TYPEOF(item)) )
|
|
| (NOT (SIZEOF(QUERY ( pl <* QUERY ( elem <* gcs\
|
|
geometric_set.elements | ('ASSOCIATIVE_DRAUGHTING.POLYLINE'
|
|
IN TYPEOF(elem)) ) | (NOT (SIZEOF(pl\polyline.points) > 2)) ))
|
|
= 0)) )) = 0;
|
|
END_ENTITY; -- geometrically_bounded_2d_wireframe_representation
|
|
|
|
ENTITY geometrically_bounded_surface_shape_representation
|
|
SUBTYPE OF (shape_representation);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_SET',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) =
|
|
1)) )) = 0;
|
|
wr2: SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_SET',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM'] * TYPEOF(it)) = 1) ))
|
|
> 0;
|
|
wr3: SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(it)) ) | (
|
|
NOT (('ASSOCIATIVE_DRAUGHTING.' +
|
|
'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION') IN
|
|
TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))
|
|
)) = 0;
|
|
wr4: SIZEOF(QUERY ( gs <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_SET' IN TYPEOF(it)) ) | (
|
|
NOT (SIZEOF(QUERY ( pnt <* QUERY ( gsel <* gs\geometric_set.
|
|
elements | ('ASSOCIATIVE_DRAUGHTING.POINT' IN TYPEOF(gsel)) )
|
|
| (NOT gbsf_check_point(pnt)) )) = 0)) )) = 0;
|
|
wr5: SIZEOF(QUERY ( gs <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_SET' IN TYPEOF(it)) ) | (
|
|
NOT (SIZEOF(QUERY ( cv <* QUERY ( gsel <* gs\geometric_set.
|
|
elements | ('ASSOCIATIVE_DRAUGHTING.CURVE' IN TYPEOF(gsel)) )
|
|
| (NOT gbsf_check_curve(cv)) )) = 0)) )) = 0;
|
|
wr6: SIZEOF(QUERY ( gs <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_SET' IN TYPEOF(it)) ) | (
|
|
NOT (SIZEOF(QUERY ( sf <* QUERY ( gsel <* gs\geometric_set.
|
|
elements | ('ASSOCIATIVE_DRAUGHTING.SURFACE' IN TYPEOF(gsel)) )
|
|
| (NOT gbsf_check_surface(sf)) )) = 0)) )) = 0;
|
|
END_ENTITY; -- geometrically_bounded_surface_shape_representation
|
|
|
|
ENTITY geometrically_bounded_wireframe_shape_representation
|
|
SUBTYPE OF (shape_representation);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF(TYPEOF(it) * [
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_3D',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM']) = 1)) )) = 0;
|
|
wr2: SIZEOF(QUERY ( it <* SELF.items | (SIZEOF(TYPEOF(it) * [
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM']) = 1) )) >= 1;
|
|
wr3: SIZEOF(QUERY ( gcs <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(QUERY ( crv <* QUERY ( elem <* gcs\
|
|
geometric_set.elements | ('ASSOCIATIVE_DRAUGHTING.CURVE' IN
|
|
TYPEOF(elem)) ) | (NOT valid_geometrically_bounded_wf_curve(
|
|
crv,'ASSOCIATIVE_DRAUGHTING')) )) = 0)) )) = 0;
|
|
wr4: SIZEOF(QUERY ( gcs <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(QUERY ( pnts <* QUERY ( elem <* gcs\
|
|
geometric_set.elements | ('ASSOCIATIVE_DRAUGHTING.POINT' IN
|
|
TYPEOF(elem)) ) | (NOT valid_geometrically_bounded_wf_point(
|
|
pnts,'ASSOCIATIVE_DRAUGHTING')) )) = 0)) )) = 0;
|
|
wr5: SIZEOF(QUERY ( gcs <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(QUERY ( cnc <* QUERY ( elem <* gcs\
|
|
geometric_set.elements | ('ASSOCIATIVE_DRAUGHTING.CONIC' IN
|
|
TYPEOF(elem)) ) | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_3D' IN TYPEOF(cnc\
|
|
conic.position))) )) = 0)) )) = 0;
|
|
wr6: SIZEOF(QUERY ( gcs <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_CURVE_SET' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(QUERY ( pline <* QUERY ( elem <* gcs\
|
|
geometric_set.elements | ('ASSOCIATIVE_DRAUGHTING.POLYLINE'
|
|
IN TYPEOF(elem)) ) | (NOT (SIZEOF(pline\polyline.points) > 2))
|
|
)) = 0)) )) = 0;
|
|
wr7: SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(it)) ) | (
|
|
NOT (('ASSOCIATIVE_DRAUGHTING.' +
|
|
'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION') IN
|
|
TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))
|
|
)) = 0;
|
|
wr8: SELF.context_of_items\geometric_representation_context.
|
|
coordinate_space_dimension = 3;
|
|
END_ENTITY; -- geometrically_bounded_wireframe_shape_representation
|
|
|
|
ENTITY global_uncertainty_assigned_context
|
|
SUBTYPE OF (representation_context);
|
|
uncertainty : SET [1:?] OF uncertainty_measure_with_unit;
|
|
END_ENTITY; -- global_uncertainty_assigned_context
|
|
|
|
ENTITY global_unit_assigned_context
|
|
SUBTYPE OF (representation_context);
|
|
units : SET [1:?] OF unit;
|
|
END_ENTITY; -- global_unit_assigned_context
|
|
|
|
ENTITY group;
|
|
name : label;
|
|
description : text;
|
|
END_ENTITY; -- group
|
|
|
|
ENTITY group_assignment
|
|
ABSTRACT SUPERTYPE;
|
|
assigned_group : group;
|
|
END_ENTITY; -- group_assignment
|
|
|
|
ENTITY group_relationship;
|
|
name : label;
|
|
description : text;
|
|
relating_group : group;
|
|
related_group : group;
|
|
END_ENTITY; -- group_relationship
|
|
|
|
ENTITY hyperbola
|
|
SUBTYPE OF (conic);
|
|
semi_axis : positive_length_measure;
|
|
semi_imag_axis : positive_length_measure;
|
|
END_ENTITY; -- hyperbola
|
|
|
|
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; -- intersection_curve
|
|
|
|
ENTITY invisibility;
|
|
invisible_items : SET [1:?] OF invisible_item;
|
|
END_ENTITY; -- invisibility
|
|
|
|
ENTITY leader_curve
|
|
SUBTYPE OF (annotation_curve_occurrence);
|
|
WHERE
|
|
wr1: SIZEOF(USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'LEADER_DIRECTED_CALLOUT.CONTENTS')) >= 1;
|
|
END_ENTITY; -- leader_curve
|
|
|
|
ENTITY leader_directed_callout
|
|
SUBTYPE OF (draughting_callout);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( l_1 <* SELF\draughting_callout.contents | (
|
|
'ASSOCIATIVE_DRAUGHTING.LEADER_CURVE' IN TYPEOF(l_1)) )) >=
|
|
1;
|
|
wr2: SIZEOF(SELF\draughting_callout.contents) >= 2;
|
|
END_ENTITY; -- leader_directed_callout
|
|
|
|
ENTITY leader_directed_dimension
|
|
SUBTYPE OF (leader_directed_callout);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( con <* SELF.contents | (
|
|
'ASSOCIATIVE_DRAUGHTING.LEADER_CURVE' IN TYPEOF(con)) )) = 1;
|
|
END_ENTITY; -- leader_directed_dimension
|
|
|
|
ENTITY leader_terminator
|
|
SUBTYPE OF (terminator_symbol);
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.LEADER_CURVE' IN TYPEOF(SELF\
|
|
terminator_symbol.annotated_curve);
|
|
END_ENTITY; -- leader_terminator
|
|
|
|
ENTITY length_measure_with_unit
|
|
SUBTYPE OF (measure_with_unit);
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.LENGTH_UNIT' IN TYPEOF(SELF\
|
|
measure_with_unit.unit_component);
|
|
END_ENTITY; -- length_measure_with_unit
|
|
|
|
ENTITY length_unit
|
|
SUBTYPE OF (named_unit);
|
|
WHERE
|
|
wr1: (SELF\named_unit.dimensions.length_exponent = 1) AND (SELF\
|
|
named_unit.dimensions.mass_exponent = 0) AND (SELF\
|
|
named_unit.dimensions.time_exponent = 0) AND (SELF\
|
|
named_unit.dimensions.electric_current_exponent = 0) AND (
|
|
SELF\named_unit.dimensions.
|
|
thermodynamic_temperature_exponent = 0) AND (SELF\named_unit
|
|
.dimensions.amount_of_substance_exponent = 0) AND (SELF\
|
|
named_unit.dimensions.luminous_intensity_exponent = 0);
|
|
END_ENTITY; -- length_unit
|
|
|
|
ENTITY line
|
|
SUBTYPE OF (curve);
|
|
pnt : cartesian_point;
|
|
dir : vector;
|
|
WHERE
|
|
wr1: dir.dim = pnt.dim;
|
|
END_ENTITY; -- line
|
|
|
|
ENTITY linear_dimension
|
|
SUBTYPE OF (dimension_curve_directed_callout);
|
|
END_ENTITY; -- linear_dimension
|
|
|
|
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; -- local_time
|
|
|
|
ENTITY loop
|
|
SUPERTYPE OF (ONEOF (vertex_loop,edge_loop,poly_loop))
|
|
SUBTYPE OF (topological_representation_item);
|
|
END_ENTITY; -- loop
|
|
|
|
ENTITY manifold_solid_brep
|
|
SUBTYPE OF (solid_model);
|
|
outer : closed_shell;
|
|
END_ENTITY; -- manifold_solid_brep
|
|
|
|
ENTITY manifold_surface_shape_representation
|
|
SUBTYPE OF (shape_representation);
|
|
WHERE
|
|
wr1 : SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_SURFACE_MODEL',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_3D'] * TYPEOF(it))
|
|
= 1)) )) = 0;
|
|
wr2 : SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_SURFACE_MODEL',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM'] * TYPEOF(it)) = 1) ))
|
|
> 0;
|
|
wr3 : SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(it)) ) | (
|
|
NOT
|
|
('ASSOCIATIVE_DRAUGHTING.MANIFOLD_SURFACE_SHAPE_REPRESENTATION'
|
|
IN TYPEOF(mi\mapped_item.mapping_source.
|
|
mapped_representation))) )) = 0;
|
|
wr4 : SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_SURFACE_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( sh <* sbsm\
|
|
shell_based_surface_model.sbsm_boundary | (NOT (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.OPEN_SHELL',
|
|
'ASSOCIATIVE_DRAUGHTING.CLOSED_SHELL'] * TYPEOF(sh)) = 1)) ))
|
|
= 0)) )) = 0;
|
|
wr5 : SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.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 (
|
|
SIZEOF(['ASSOCIATIVE_DRAUGHTING.FACE_SURFACE',
|
|
'ASSOCIATIVE_DRAUGHTING.ORIENTED_FACE'] * TYPEOF(fa)) = 1)) ))
|
|
|
|
= 0)) )) = 0)) )) = 0;
|
|
wr6 : SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_SURFACE_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( cfs <* sbsm\
|
|
shell_based_surface_model.sbsm_boundary | (NOT (SIZEOF(
|
|
QUERY ( f_sf <* QUERY ( fa <* cfs\connected_face_set.
|
|
cfs_faces | ('ASSOCIATIVE_DRAUGHTING.FACE_SURFACE' IN
|
|
TYPEOF(fa)) ) | (NOT ((
|
|
'ASSOCIATIVE_DRAUGHTING.ADVANCED_FACE' IN TYPEOF(f_sf)) OR
|
|
(SIZEOF(['ASSOCIATIVE_DRAUGHTING.OFFSET_SURFACE',
|
|
'ASSOCIATIVE_DRAUGHTING.SURFACE_REPLICA'] * TYPEOF(f_sf\
|
|
face_surface.face_geometry)) = 1))) )) = 0)) )) = 0)) )) =
|
|
0;
|
|
wr7 : SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.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 ((
|
|
'ASSOCIATIVE_DRAUGHTING.ADVANCED_FACE' IN TYPEOF(fa)) OR
|
|
basis_surface_check(fa\face_surface.face_geometry))) )) = 0))
|
|
)) = 0)) )) = 0;
|
|
wr8 : SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.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 ((
|
|
'ASSOCIATIVE_DRAUGHTING.ADVANCED_FACE' IN TYPEOF(fa)) OR (
|
|
SIZEOF(QUERY ( bnds <* fa.bounds | (NOT (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP',
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_LOOP'] * TYPEOF(bnds.bound))
|
|
= 1)) )) = 0))) )) = 0)) )) = 0)) )) = 0;
|
|
wr9 : SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.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 ((
|
|
'ASSOCIATIVE_DRAUGHTING.ADVANCED_FACE' IN TYPEOF(fa)) OR (
|
|
SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN TYPEOF(bnds)) ) | (
|
|
NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.edge_list |
|
|
(NOT ('ASSOCIATIVE_DRAUGHTING.EDGE_CURVE' IN TYPEOF(oe.
|
|
edge_element))) )) = 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0;
|
|
wr10: SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.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 ((
|
|
'ASSOCIATIVE_DRAUGHTING.ADVANCED_FACE' IN TYPEOF(fa)) OR (
|
|
SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT (SIZEOF(QUERY ( oe_cv <* QUERY ( oe <* elp_fbnds.
|
|
bound\path.edge_list | ('ASSOCIATIVE_DRAUGHTING.EDGE_CURVE'
|
|
IN TYPEOF(oe.edge_element)) ) | (NOT (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.CURVE_REPLICA',
|
|
'ASSOCIATIVE_DRAUGHTING.OFFSET_CURVE_3D',
|
|
'ASSOCIATIVE_DRAUGHTING.PCURVE'] * TYPEOF(oe_cv.
|
|
edge_element\edge_curve.edge_geometry)) = 1)) )) = 0)) )) =
|
|
0))) )) = 0)) )) = 0)) )) = 0;
|
|
wr11: SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.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 ((
|
|
'ASSOCIATIVE_DRAUGHTING.ADVANCED_FACE' IN TYPEOF(fa)) OR (
|
|
SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.
|
|
edge_list | (NOT basis_curve_check(oe.edge_element\
|
|
edge_curve.edge_geometry)) )) = 0)) )) = 0))) )) = 0)) )) =
|
|
0)) )) = 0;
|
|
wr12: SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.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 ((
|
|
'ASSOCIATIVE_DRAUGHTING.ADVANCED_FACE' IN TYPEOF(fa)) OR (
|
|
SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN TYPEOF(bnds)) ) | (
|
|
NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.edge_list |
|
|
(NOT (('ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN TYPEOF(oe.
|
|
edge_element.edge_start)) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN TYPEOF(oe.
|
|
edge_element.edge_end)))) )) = 0)) )) = 0))) )) = 0)) )) =
|
|
0)) )) = 0;
|
|
wr13: SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.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 ((
|
|
'ASSOCIATIVE_DRAUGHTING.ADVANCED_FACE' IN TYPEOF(fa)) OR (
|
|
SIZEOF(QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT (SIZEOF(QUERY ( oe <* elp_fbnds.bound\path.
|
|
edge_list | (NOT ((SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.CARTESIAN_POINT',
|
|
'ASSOCIATIVE_DRAUGHTING.DEGENERATE_PCURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.POINT_ON_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.POINT_ON_SURFACE'] * TYPEOF(oe.
|
|
edge_element.edge_start\vertex_point.vertex_geometry)) = 1)
|
|
AND (SIZEOF(['ASSOCIATIVE_DRAUGHTING.CARTESIAN_POINT',
|
|
'ASSOCIATIVE_DRAUGHTING.DEGENERATE_PCURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.POINT_ON_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.POINT_ON_SURFACE'] * TYPEOF(oe.
|
|
edge_element.edge_end\vertex_point.vertex_geometry)) = 1))) ))
|
|
= 0)) )) = 0))) )) = 0)) )) = 0)) )) = 0;
|
|
wr14: SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.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 ((
|
|
'ASSOCIATIVE_DRAUGHTING.ADVANCED_FACE' IN TYPEOF(fa)) OR (
|
|
SIZEOF(QUERY ( vlp_fbnds <* QUERY ( bnds <* fa.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT ('ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN TYPEOF(
|
|
vlp_fbnds.bound\vertex_loop.loop_vertex))) )) = 0))) )) = 0))
|
|
)) = 0)) )) = 0;
|
|
wr15: SIZEOF(QUERY ( sbsm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.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 ((
|
|
'ASSOCIATIVE_DRAUGHTING.ADVANCED_FACE' IN TYPEOF(fa)) OR (
|
|
SIZEOF(QUERY ( vlp_fbnds <* QUERY ( bnds <* fa.bounds | (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_LOOP' IN TYPEOF(bnds.bound)) )
|
|
| (NOT (SIZEOF(['ASSOCIATIVE_DRAUGHTING.CARTESIAN_POINT',
|
|
'ASSOCIATIVE_DRAUGHTING.DEGENERATE_PCURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.POINT_ON_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.POINT_ON_SURFACE'] * TYPEOF(
|
|
vlp_fbnds.bound\vertex_loop.loop_vertex\vertex_point.
|
|
vertex_geometry)) = 1)) )) = 0))) )) = 0)) )) = 0)) )) = 0;
|
|
END_ENTITY; -- manifold_surface_shape_representation
|
|
|
|
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; -- mapped_item
|
|
|
|
ENTITY measure_representation_item
|
|
SUBTYPE OF (representation_item, measure_with_unit);
|
|
END_ENTITY; -- measure_representation_item
|
|
|
|
ENTITY measure_with_unit
|
|
SUPERTYPE OF (ONEOF (length_measure_with_unit,
|
|
plane_angle_measure_with_unit,solid_angle_measure_with_unit));
|
|
value_component : measure_value;
|
|
unit_component : unit;
|
|
WHERE
|
|
wr1: valid_units(SELF);
|
|
END_ENTITY; -- measure_with_unit
|
|
|
|
ENTITY named_unit
|
|
SUPERTYPE OF (ONEOF (si_unit,conversion_based_unit) ANDOR ONEOF (
|
|
length_unit,plane_angle_unit,solid_angle_unit));
|
|
dimensions : dimensional_exponents;
|
|
END_ENTITY; -- named_unit
|
|
|
|
ENTITY offset_curve_2d
|
|
SUBTYPE OF (curve);
|
|
basis_curve : curve;
|
|
distance : length_measure;
|
|
self_intersect : LOGICAL;
|
|
WHERE
|
|
wr1: basis_curve.dim = 2;
|
|
END_ENTITY; -- offset_curve_2d
|
|
|
|
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; -- offset_curve_3d
|
|
|
|
ENTITY offset_surface
|
|
SUBTYPE OF (surface);
|
|
basis_surface : surface;
|
|
distance : length_measure;
|
|
self_intersect : LOGICAL;
|
|
END_ENTITY; -- offset_surface
|
|
|
|
ENTITY one_direction_repeat_factor
|
|
SUBTYPE OF (geometric_representation_item);
|
|
repeat_factor : vector;
|
|
END_ENTITY; -- one_direction_repeat_factor
|
|
|
|
ENTITY open_shell
|
|
SUBTYPE OF (connected_face_set);
|
|
END_ENTITY; -- open_shell
|
|
|
|
ENTITY ordinate_dimension
|
|
SUBTYPE OF (projection_directed_callout);
|
|
END_ENTITY; -- ordinate_dimension
|
|
|
|
ENTITY organization;
|
|
id : OPTIONAL identifier;
|
|
name : label;
|
|
description : text;
|
|
END_ENTITY; -- organization
|
|
|
|
ENTITY organization_assignment
|
|
ABSTRACT SUPERTYPE;
|
|
assigned_organization : organization;
|
|
role : organization_role;
|
|
END_ENTITY; -- organization_assignment
|
|
|
|
ENTITY organization_role;
|
|
name : label;
|
|
END_ENTITY; -- organization_role
|
|
|
|
ENTITY organizational_address
|
|
SUBTYPE OF (address);
|
|
organizations : SET [1:?] OF organization;
|
|
description : text;
|
|
END_ENTITY; -- organizational_address
|
|
|
|
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 ('ASSOCIATIVE_DRAUGHTING.ORIENTED_CLOSED_SHELL' IN TYPEOF(
|
|
SELF.closed_shell_element));
|
|
END_ENTITY; -- oriented_closed_shell
|
|
|
|
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 ('ASSOCIATIVE_DRAUGHTING.ORIENTED_EDGE' IN TYPEOF(SELF.
|
|
edge_element));
|
|
END_ENTITY; -- oriented_edge
|
|
|
|
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 ('ASSOCIATIVE_DRAUGHTING.ORIENTED_FACE' IN TYPEOF(SELF.
|
|
face_element));
|
|
END_ENTITY; -- oriented_face
|
|
|
|
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 ('ASSOCIATIVE_DRAUGHTING.ORIENTED_OPEN_SHELL' IN TYPEOF(
|
|
SELF.open_shell_element));
|
|
END_ENTITY; -- oriented_open_shell
|
|
|
|
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 ('ASSOCIATIVE_DRAUGHTING.ORIENTED_PATH' IN TYPEOF(SELF.
|
|
path_element));
|
|
END_ENTITY; -- oriented_path
|
|
|
|
ENTITY outer_boundary_curve
|
|
SUBTYPE OF (boundary_curve);
|
|
END_ENTITY; -- outer_boundary_curve
|
|
|
|
ENTITY over_riding_styled_item
|
|
SUBTYPE OF (styled_item);
|
|
over_ridden_style : styled_item;
|
|
END_ENTITY; -- over_riding_styled_item
|
|
|
|
ENTITY parabola
|
|
SUBTYPE OF (conic);
|
|
focal_dist : length_measure;
|
|
WHERE
|
|
wr1: focal_dist <> 0;
|
|
END_ENTITY; -- parabola
|
|
|
|
ENTITY parametric_representation_context
|
|
SUBTYPE OF (representation_context);
|
|
END_ENTITY; -- parametric_representation_context
|
|
|
|
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; -- path
|
|
|
|
ENTITY pcurve
|
|
SUBTYPE OF (curve);
|
|
basis_surface : surface;
|
|
reference_to_curve : definitional_representation;
|
|
WHERE
|
|
wr1: SIZEOF(reference_to_curve\representation.items) = 1;
|
|
wr2: 'ASSOCIATIVE_DRAUGHTING.CURVE' IN TYPEOF(reference_to_curve\
|
|
representation.items[1]);
|
|
wr3: reference_to_curve\representation.items[1]\
|
|
geometric_representation_item.dim = 2;
|
|
END_ENTITY; -- pcurve
|
|
|
|
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;
|
|
UNIQUE
|
|
ur1 : id;
|
|
WHERE
|
|
wr1: EXISTS(last_name) OR EXISTS(first_name);
|
|
END_ENTITY; -- person
|
|
|
|
ENTITY person_and_organization;
|
|
the_person : person;
|
|
the_organization : organization;
|
|
END_ENTITY; -- person_and_organization
|
|
|
|
ENTITY person_and_organization_assignment
|
|
ABSTRACT SUPERTYPE;
|
|
assigned_person_and_organization : person_and_organization;
|
|
role : person_and_organization_role;
|
|
END_ENTITY; -- person_and_organization_assignment
|
|
|
|
ENTITY person_and_organization_role;
|
|
name : label;
|
|
END_ENTITY; -- person_and_organization_role
|
|
|
|
ENTITY person_assignment
|
|
ABSTRACT SUPERTYPE;
|
|
assigned_person : person;
|
|
role : person_role;
|
|
END_ENTITY; -- person_assignment
|
|
|
|
ENTITY person_role;
|
|
name : label;
|
|
END_ENTITY; -- person_role
|
|
|
|
ENTITY personal_address
|
|
SUBTYPE OF (address);
|
|
people : SET [1:?] OF person;
|
|
description : text;
|
|
END_ENTITY; -- personal_address
|
|
|
|
ENTITY placement
|
|
SUPERTYPE OF (ONEOF (axis1_placement,axis2_placement_2d,
|
|
axis2_placement_3d))
|
|
SUBTYPE OF (geometric_representation_item);
|
|
location : cartesian_point;
|
|
END_ENTITY; -- placement
|
|
|
|
ENTITY planar_box
|
|
SUBTYPE OF (planar_extent);
|
|
placement : axis2_placement;
|
|
END_ENTITY; -- planar_box
|
|
|
|
ENTITY planar_extent
|
|
SUBTYPE OF (geometric_representation_item);
|
|
size_in_x : length_measure;
|
|
size_in_y : length_measure;
|
|
END_ENTITY; -- planar_extent
|
|
|
|
ENTITY plane
|
|
SUBTYPE OF (elementary_surface);
|
|
END_ENTITY; -- plane
|
|
|
|
ENTITY plane_angle_measure_with_unit
|
|
SUBTYPE OF (measure_with_unit);
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.PLANE_ANGLE_UNIT' IN TYPEOF(SELF\
|
|
measure_with_unit.unit_component);
|
|
END_ENTITY; -- plane_angle_measure_with_unit
|
|
|
|
ENTITY plane_angle_unit
|
|
SUBTYPE OF (named_unit);
|
|
WHERE
|
|
wr1: (SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
|
|
named_unit.dimensions.mass_exponent = 0) AND (SELF\
|
|
named_unit.dimensions.time_exponent = 0) AND (SELF\
|
|
named_unit.dimensions.electric_current_exponent = 0) AND (
|
|
SELF\named_unit.dimensions.
|
|
thermodynamic_temperature_exponent = 0) AND (SELF\named_unit
|
|
.dimensions.amount_of_substance_exponent = 0) AND (SELF\
|
|
named_unit.dimensions.luminous_intensity_exponent = 0);
|
|
END_ENTITY; -- plane_angle_unit
|
|
|
|
ENTITY plus_minus_tolerance;
|
|
range : tolerance_method_definition;
|
|
toleranced_dimension : dimensional_characteristic;
|
|
UNIQUE
|
|
ur1 : toleranced_dimension;
|
|
END_ENTITY; -- plus_minus_tolerance
|
|
|
|
ENTITY point
|
|
SUPERTYPE OF (ONEOF (cartesian_point,point_on_curve,point_on_surface,
|
|
point_replica,degenerate_pcurve))
|
|
SUBTYPE OF (geometric_representation_item);
|
|
END_ENTITY; -- point
|
|
|
|
ENTITY point_on_curve
|
|
SUBTYPE OF (point);
|
|
basis_curve : curve;
|
|
point_parameter : parameter_value;
|
|
END_ENTITY; -- point_on_curve
|
|
|
|
ENTITY point_on_surface
|
|
SUBTYPE OF (point);
|
|
basis_surface : surface;
|
|
point_parameter_u : parameter_value;
|
|
point_parameter_v : parameter_value;
|
|
END_ENTITY; -- point_on_surface
|
|
|
|
ENTITY point_replica
|
|
SUBTYPE OF (point);
|
|
parent_pt : point;
|
|
transformation : cartesian_transformation_operator;
|
|
WHERE
|
|
wr1: transformation.dim = parent_pt.dim;
|
|
wr2: acyclic_point_replica(SELF,parent_pt);
|
|
END_ENTITY; -- point_replica
|
|
|
|
ENTITY poly_loop
|
|
SUBTYPE OF (loop, geometric_representation_item);
|
|
polygon : LIST [3:?] OF UNIQUE cartesian_point;
|
|
END_ENTITY; -- poly_loop
|
|
|
|
ENTITY polyline
|
|
SUBTYPE OF (bounded_curve);
|
|
points : LIST [2:?] OF cartesian_point;
|
|
END_ENTITY; -- polyline
|
|
|
|
ENTITY pre_defined_colour
|
|
SUBTYPE OF (pre_defined_item, colour);
|
|
END_ENTITY; -- pre_defined_colour
|
|
|
|
ENTITY pre_defined_curve_font
|
|
SUBTYPE OF (pre_defined_item);
|
|
END_ENTITY; -- pre_defined_curve_font
|
|
|
|
ENTITY pre_defined_dimension_symbol
|
|
SUBTYPE OF (pre_defined_symbol);
|
|
WHERE
|
|
wr1: SELF.name IN ['arc length','conical taper','counterbore',
|
|
'countersink','depth','diameter','plus minus','radius',
|
|
'slope','spherical diameter','spherical radius','square'];
|
|
END_ENTITY; -- pre_defined_dimension_symbol
|
|
|
|
ENTITY pre_defined_geometrical_tolerance_symbol
|
|
SUBTYPE OF (pre_defined_symbol);
|
|
WHERE
|
|
wr1: SELF.name IN ['angularity','circular runout','circularity',
|
|
'concentricity','cylindricity','diameter','flatness',
|
|
'least material condition','maximum material condition',
|
|
'parallelism','perpendicularity','position',
|
|
'profile of a line','profile of a surface',
|
|
'projected tolerance zone','regardless of feature size',
|
|
'straightness','symmetry','target point','total runout'];
|
|
END_ENTITY; -- pre_defined_geometrical_tolerance_symbol
|
|
|
|
ENTITY pre_defined_item;
|
|
name : label;
|
|
END_ENTITY; -- pre_defined_item
|
|
|
|
ENTITY pre_defined_marker
|
|
SUBTYPE OF (pre_defined_item);
|
|
END_ENTITY; -- pre_defined_marker
|
|
|
|
ENTITY pre_defined_point_marker_symbol
|
|
SUBTYPE OF (pre_defined_symbol, pre_defined_marker);
|
|
WHERE
|
|
wr1: SELF.name IN ['asterisk','circle','dot','plus','square',
|
|
'triangle','x'];
|
|
END_ENTITY; -- pre_defined_point_marker_symbol
|
|
|
|
ENTITY pre_defined_symbol
|
|
SUBTYPE OF (pre_defined_item);
|
|
END_ENTITY; -- pre_defined_symbol
|
|
|
|
ENTITY pre_defined_terminator_symbol
|
|
SUBTYPE OF (pre_defined_symbol);
|
|
WHERE
|
|
wr1: SELF.name IN ['blanked arrow','blanked box','blanked dot',
|
|
'dimension origin','filled arrow','filled box','filled dot',
|
|
'integral symbol','open arrow','slash','unfilled arrow'];
|
|
END_ENTITY; -- pre_defined_terminator_symbol
|
|
|
|
ENTITY pre_defined_text_font
|
|
SUBTYPE OF (pre_defined_item);
|
|
END_ENTITY; -- pre_defined_text_font
|
|
|
|
ENTITY presentation_area
|
|
SUBTYPE OF (presentation_representation);
|
|
WHERE
|
|
wr1: (SIZEOF(QUERY ( ais <* USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'AREA_IN_SET.AREA') | (SIZEOF(USEDIN(ais,
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'PRESENTATION_SIZE.UNIT')) = 1) ))
|
|
> 0) OR (SIZEOF(USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PRESENTATION_SIZE.UNIT')) = 1);
|
|
END_ENTITY; -- presentation_area
|
|
|
|
ENTITY presentation_layer_assignment;
|
|
name : label;
|
|
description : text;
|
|
assigned_items : SET [1:?] OF layered_item;
|
|
END_ENTITY; -- presentation_layer_assignment
|
|
|
|
ENTITY presentation_layer_usage;
|
|
assignment : presentation_layer_assignment;
|
|
presentation : presentation_representation;
|
|
UNIQUE
|
|
ur1 : assignment, presentation;
|
|
END_ENTITY; -- presentation_layer_usage
|
|
|
|
ENTITY presentation_representation
|
|
SUBTYPE OF (representation);
|
|
WHERE
|
|
wr1: SELF\representation.context_of_items\
|
|
geometric_representation_context.coordinate_space_dimension
|
|
= 2;
|
|
wr2: 'ASSOCIATIVE_DRAUGHTING.GEOMETRIC_REPRESENTATION_CONTEXT' IN
|
|
TYPEOF(SELF\representation.context_of_items);
|
|
END_ENTITY; -- presentation_representation
|
|
|
|
ENTITY presentation_set;
|
|
INVERSE
|
|
areas : SET [1:?] OF area_in_set FOR in_set;
|
|
END_ENTITY; -- presentation_set
|
|
|
|
ENTITY presentation_size;
|
|
unit : presentation_size_assignment_select;
|
|
size : planar_box;
|
|
WHERE
|
|
wr1: (('ASSOCIATIVE_DRAUGHTING.PRESENTATION_REPRESENTATION' IN
|
|
TYPEOF(SELF.unit)) AND item_in_context(SELF.size,SELF.unit\
|
|
representation.context_of_items)) OR ((
|
|
'ASSOCIATIVE_DRAUGHTING.AREA_IN_SET' IN TYPEOF(SELF.unit))
|
|
AND (SIZEOF(QUERY ( ais <* SELF.unit\area_in_set.in_set.
|
|
areas | (NOT item_in_context(SELF.size,ais.area\
|
|
representation.context_of_items)) )) = 0));
|
|
END_ENTITY; -- presentation_size
|
|
|
|
ENTITY presentation_style_assignment;
|
|
styles : SET [1:?] OF presentation_style_select;
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( style1 <* SELF.styles | (NOT (SIZEOF(
|
|
QUERY ( style2 <* (SELF.styles - style1) | (NOT ((TYPEOF(
|
|
style1) <> TYPEOF(style2)) OR (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'SURFACE_STYLE_USAGE',
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'EXTERNALLY_DEFINED_STYLE'] *
|
|
TYPEOF(style1)) = 1))) )) = 0)) )) = 0;
|
|
wr2: SIZEOF(QUERY ( style1 <* SELF.styles | (
|
|
'ASSOCIATIVE_DRAUGHTING.SURFACE_STYLE_USAGE' IN TYPEOF(
|
|
style1)) )) <= 2;
|
|
END_ENTITY; -- presentation_style_assignment
|
|
|
|
ENTITY presentation_style_by_context
|
|
SUBTYPE OF (presentation_style_assignment);
|
|
style_context : style_context_select;
|
|
END_ENTITY; -- presentation_style_by_context
|
|
|
|
ENTITY presentation_view
|
|
SUBTYPE OF (presentation_representation);
|
|
END_ENTITY; -- presentation_view
|
|
|
|
ENTITY presented_item
|
|
ABSTRACT SUPERTYPE;
|
|
END_ENTITY; -- presented_item
|
|
|
|
ENTITY presented_item_representation;
|
|
presentation : presentation_representation_select;
|
|
item : presented_item;
|
|
END_ENTITY; -- presented_item_representation
|
|
|
|
ENTITY product;
|
|
id : identifier;
|
|
name : label;
|
|
description : text;
|
|
frame_of_reference : SET [1:?] OF product_context;
|
|
UNIQUE
|
|
ur1 : id;
|
|
END_ENTITY; -- product
|
|
|
|
ENTITY product_context
|
|
SUBTYPE OF (application_context_element);
|
|
discipline_type : label;
|
|
END_ENTITY; -- product_context
|
|
|
|
ENTITY product_definition;
|
|
id : identifier;
|
|
description : text;
|
|
formation : product_definition_formation;
|
|
frame_of_reference : product_definition_context;
|
|
END_ENTITY; -- product_definition
|
|
|
|
ENTITY product_definition_context
|
|
SUBTYPE OF (application_context_element);
|
|
life_cycle_stage : label;
|
|
END_ENTITY; -- product_definition_context
|
|
|
|
ENTITY product_definition_formation;
|
|
id : identifier;
|
|
description : text;
|
|
of_product : product;
|
|
UNIQUE
|
|
ur1 : id, of_product;
|
|
END_ENTITY; -- product_definition_formation
|
|
|
|
ENTITY product_definition_shape
|
|
SUBTYPE OF (property_definition);
|
|
UNIQUE
|
|
ur1 : definition;
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.CHARACTERIZED_PRODUCT_DEFINITION' IN
|
|
TYPEOF(SELF\property_definition.definition);
|
|
END_ENTITY; -- product_definition_shape
|
|
|
|
ENTITY product_definition_with_associated_documents
|
|
SUBTYPE OF (product_definition);
|
|
documentation_ids : SET [1:?] OF document;
|
|
END_ENTITY; -- product_definition_with_associated_documents
|
|
|
|
ENTITY projection_curve
|
|
SUBTYPE OF (annotation_curve_occurrence);
|
|
END_ENTITY; -- projection_curve
|
|
|
|
ENTITY projection_directed_callout
|
|
SUBTYPE OF (draughting_callout);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( p_1 <* SELF\draughting_callout.contents | (
|
|
'ASSOCIATIVE_DRAUGHTING.PROJECTION_CURVE' IN TYPEOF(p_1)) ))
|
|
= 1;
|
|
wr2: SIZEOF(SELF\draughting_callout.contents) >= 2;
|
|
END_ENTITY; -- projection_directed_callout
|
|
|
|
ENTITY property_definition;
|
|
name : label;
|
|
description : text;
|
|
definition : characterized_definition;
|
|
END_ENTITY; -- property_definition
|
|
|
|
ENTITY property_definition_representation;
|
|
definition : property_definition;
|
|
used_representation : representation;
|
|
END_ENTITY; -- property_definition_representation
|
|
|
|
ENTITY quasi_uniform_curve
|
|
SUBTYPE OF (b_spline_curve);
|
|
END_ENTITY; -- quasi_uniform_curve
|
|
|
|
ENTITY quasi_uniform_surface
|
|
SUBTYPE OF (b_spline_surface);
|
|
END_ENTITY; -- quasi_uniform_surface
|
|
|
|
ENTITY radius_dimension
|
|
SUBTYPE OF (dimension_curve_directed_callout);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( con <* SELF.contents | (
|
|
'ASSOCIATIVE_DRAUGHTING.PROJECTION_CURVE' IN TYPEOF(con)) ))
|
|
<= 1;
|
|
END_ENTITY; -- radius_dimension
|
|
|
|
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; -- rational_b_spline_curve
|
|
|
|
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; -- rational_b_spline_surface
|
|
|
|
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: [] = QUERY ( s <* segments | (n_v <> SIZEOF(s)) );
|
|
wr2: constraints_rectangular_composite_surface(SELF);
|
|
END_ENTITY; -- rectangular_composite_surface
|
|
|
|
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: (('ASSOCIATIVE_DRAUGHTING.ELEMENTARY_SURFACE' IN TYPEOF(
|
|
basis_surface)) AND (NOT ('ASSOCIATIVE_DRAUGHTING.PLANE' IN
|
|
TYPEOF(basis_surface)))) OR (
|
|
'ASSOCIATIVE_DRAUGHTING.SURFACE_OF_REVOLUTION' IN TYPEOF(
|
|
basis_surface)) OR (usense = (u2 > u1));
|
|
wr4: ('ASSOCIATIVE_DRAUGHTING.SPHERICAL_SURFACE' IN TYPEOF(
|
|
basis_surface)) OR (
|
|
'ASSOCIATIVE_DRAUGHTING.TOROIDAL_SURFACE' IN TYPEOF(
|
|
basis_surface)) OR (vsense = (v2 > v1));
|
|
END_ENTITY; -- rectangular_trimmed_surface
|
|
|
|
ENTITY reparametrised_composite_curve_segment
|
|
SUBTYPE OF (composite_curve_segment);
|
|
param_length : parameter_value;
|
|
WHERE
|
|
wr1: param_length > 0;
|
|
END_ENTITY; -- reparametrised_composite_curve_segment
|
|
|
|
ENTITY representation;
|
|
name : label;
|
|
items : SET [1:?] OF representation_item;
|
|
context_of_items : representation_context;
|
|
END_ENTITY; -- representation
|
|
|
|
ENTITY representation_context;
|
|
context_identifier : identifier;
|
|
context_type : text;
|
|
INVERSE
|
|
representations_in_context : SET [1:?] OF representation FOR
|
|
context_of_items;
|
|
END_ENTITY; -- representation_context
|
|
|
|
ENTITY representation_item;
|
|
name : label;
|
|
WHERE
|
|
wr1: SIZEOF(using_representations(SELF)) > 0;
|
|
END_ENTITY; -- representation_item
|
|
|
|
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; -- representation_map
|
|
|
|
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: 'ASSOCIATIVE_DRAUGHTING.PCURVE' IN TYPEOF(SELF\surface_curve.
|
|
associated_geometry[1]);
|
|
wr4: 'ASSOCIATIVE_DRAUGHTING.PCURVE' IN TYPEOF(SELF\surface_curve.
|
|
associated_geometry[2]);
|
|
END_ENTITY; -- seam_curve
|
|
|
|
ENTITY security_classification;
|
|
name : label;
|
|
purpose : text;
|
|
security_level : security_classification_level;
|
|
END_ENTITY; -- security_classification
|
|
|
|
ENTITY security_classification_assignment
|
|
ABSTRACT SUPERTYPE;
|
|
assigned_security_classification : security_classification;
|
|
END_ENTITY; -- security_classification_assignment
|
|
|
|
ENTITY security_classification_level;
|
|
name : label;
|
|
END_ENTITY; -- security_classification_level
|
|
|
|
ENTITY shape_aspect;
|
|
name : label;
|
|
description : text;
|
|
of_shape : product_definition_shape;
|
|
product_definitional : LOGICAL;
|
|
END_ENTITY; -- shape_aspect
|
|
|
|
ENTITY shape_aspect_associativity
|
|
SUBTYPE OF (shape_aspect_relationship);
|
|
WHERE
|
|
wr1: SELF.relating_shape_aspect.product_definitional;
|
|
wr2: NOT SELF.related_shape_aspect.product_definitional;
|
|
wr3: SIZEOF(QUERY ( pd <* USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(
|
|
QUERY ( sdr <* QUERY ( pdr <* USEDIN(pd,
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_DEFINITION_REPRESENTATION' IN
|
|
TYPEOF(pdr)) ) | (NOT (SIZEOF(QUERY ( it <* sdr.
|
|
used_representation.items | ((NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.CURVE' IN TYPEOF(it))) AND ((SIZEOF(
|
|
QUERY ( aco <* USEDIN(it,
|
|
'ASSOCIATIVE_DRAUGHTING.STYLED_ITEM.ITEM') | (SIZEOF(TYPEOF(
|
|
aco) * ['ASSOCIATIVE_DRAUGHTING.LEADER_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.PROJECTION_CURVE']) = 1) )) +
|
|
SIZEOF(USEDIN(it,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'ANNOTATION_FILL_AREA.BOUNDARIES'))) >= 1)) )) = 1)) )) = 0))
|
|
)) = 0;
|
|
wr4: SIZEOF(QUERY ( pd <* USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(
|
|
QUERY ( sdr <* QUERY ( pdr <* USEDIN(pd,
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_DEFINITION_REPRESENTATION' IN
|
|
TYPEOF(pdr)) ) | (NOT check_associative_shape_aspects(sdr)) ))
|
|
= 0)) )) = 0;
|
|
END_ENTITY; -- shape_aspect_associativity
|
|
|
|
ENTITY shape_aspect_deriving_relationship
|
|
SUBTYPE OF (shape_aspect_relationship);
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.DERIVED_SHAPE_ASPECT' IN TYPEOF(SELF\
|
|
shape_aspect_relationship.relating_shape_aspect);
|
|
END_ENTITY; -- shape_aspect_deriving_relationship
|
|
|
|
ENTITY shape_aspect_relationship;
|
|
name : label;
|
|
description : text;
|
|
relating_shape_aspect : shape_aspect;
|
|
related_shape_aspect : shape_aspect;
|
|
END_ENTITY; -- shape_aspect_relationship
|
|
|
|
ENTITY shape_definition_representation
|
|
SUBTYPE OF (property_definition_representation);
|
|
WHERE
|
|
wr1: ('ASSOCIATIVE_DRAUGHTING.SHAPE_DEFINITION' IN TYPEOF(SELF.
|
|
definition.definition)) OR (
|
|
'ASSOCIATIVE_DRAUGHTING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(
|
|
SELF.definition));
|
|
wr2: 'ASSOCIATIVE_DRAUGHTING.SHAPE_REPRESENTATION' IN TYPEOF(SELF.
|
|
used_representation);
|
|
END_ENTITY; -- shape_definition_representation
|
|
|
|
ENTITY shape_dimension_representation
|
|
SUBTYPE OF (shape_representation);
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( temp <* SELF.items | NOT
|
|
('ASSOCIATIVE_DRAUGHTING.MEASURE_REPRESENTATION_ITEM' IN
|
|
TYPEOF(temp)) )) = 0;
|
|
wr2: SIZEOF(SELF.items) <= 2;
|
|
wr3: SIZEOF(QUERY ( pos_mri <* QUERY ( real_mri <* SELF.items | (
|
|
'REAL' IN TYPEOF(real_mri\measure_with_unit.value_component)) )
|
|
| (NOT (pos_mri\measure_with_unit.value_component > 0)) ))
|
|
= 0;
|
|
END_ENTITY; -- shape_dimension_representation
|
|
|
|
ENTITY shape_representation
|
|
SUBTYPE OF (representation);
|
|
END_ENTITY; -- shape_representation
|
|
|
|
ENTITY shell_based_2d_wireframe_shape_representation
|
|
SUBTYPE OF (shape_representation);
|
|
WHERE
|
|
wr1 : SIZEOF(QUERY ( it <* SELF\representation.items | (NOT (SIZEOF(
|
|
['ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_2D'] * TYPEOF(it))
|
|
= 1)) )) = 0;
|
|
wr2 : SIZEOF(QUERY ( it <* SELF\representation.items | (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM'] * TYPEOF(it)) = 1) ))
|
|
>= 1;
|
|
wr3 : SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN
|
|
TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( el <* eloop\path.
|
|
edge_list | (NOT ('ASSOCIATIVE_DRAUGHTING.EDGE_CURVE' IN
|
|
TYPEOF(el.edge_element))) )) = 0)) )) = 0)) )) = 0)) )) = 0;
|
|
wr4 : SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN
|
|
TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( pline_el <*
|
|
QUERY ( el <* eloop\path.edge_list | (
|
|
'ASSOCIATIVE_DRAUGHTING.POLYLINE' IN TYPEOF(el.edge_element
|
|
\edge_curve.edge_geometry)) ) | (NOT (SIZEOF(pline_el.
|
|
edge_element\edge_curve.edge_geometry\polyline.points) > 2))
|
|
)) = 0)) )) = 0)) )) = 0)) )) = 0;
|
|
wr5 : SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN
|
|
TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( el <* eloop\path.
|
|
edge_list | (NOT valid_2d_wireframe_edge_curve(el.
|
|
edge_element\edge_curve.edge_geometry,
|
|
'ASSOCIATIVE_DRAUGHTING')) )) = 0)) )) = 0)) )) = 0)) )) =
|
|
0;
|
|
wr6 : SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN
|
|
TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( el <* eloop\path.
|
|
edge_list | (NOT (('ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN
|
|
TYPEOF(el.edge_element.edge_start)) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN TYPEOF(el.
|
|
edge_element.edge_end)))) )) = 0)) )) = 0)) )) = 0)) )) = 0;
|
|
wr7 : SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN
|
|
TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( el <* eloop\path.
|
|
edge_list | (NOT (valid_wireframe_vertex_point(el.
|
|
edge_element.edge_start\vertex_point.vertex_geometry,
|
|
'ASSOCIATIVE_DRAUGHTING') AND valid_wireframe_vertex_point(
|
|
el.edge_element.edge_end\vertex_point.vertex_geometry,
|
|
'ASSOCIATIVE_DRAUGHTING'))) )) = 0)) )) = 0)) )) = 0)) )) =
|
|
0;
|
|
wr8 : SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN
|
|
TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( con_edges <*
|
|
QUERY ( el <* eloop\path.edge_list | (
|
|
'ASSOCIATIVE_DRAUGHTING.CONIC' IN TYPEOF(el.edge_element\
|
|
edge_curve.edge_geometry)) ) | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_2D' IN TYPEOF(
|
|
con_edges.edge_element\edge_curve.edge_geometry\conic.
|
|
position))) )) = 0)) )) = 0)) )) = 0)) )) = 0;
|
|
wr9 : SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( vloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.VERTEX_LOOP'
|
|
IN TYPEOF(wsb)) ) | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN TYPEOF(vloop\
|
|
vertex_loop.loop_vertex))) )) = 0)) )) = 0)) )) = 0;
|
|
wr10: SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( vloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.VERTEX_LOOP'
|
|
IN TYPEOF(wsb)) ) | (NOT valid_wireframe_vertex_point(vloop
|
|
\vertex_loop.loop_vertex\vertex_point.vertex_geometry,
|
|
'ASSOCIATIVE_DRAUGHTING')) )) = 0)) )) = 0)) )) = 0;
|
|
wr11: SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( vs <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT ('ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN TYPEOF(vs\
|
|
vertex_shell.vertex_shell_extent.loop_vertex))) )) = 0)) ))
|
|
= 0;
|
|
wr12: SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( vs <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT valid_wireframe_vertex_point(vs\vertex_shell.
|
|
vertex_shell_extent.loop_vertex\vertex_point.
|
|
vertex_geometry,'ASSOCIATIVE_DRAUGHTING')) )) = 0)) )) = 0;
|
|
wr13: SIZEOF(QUERY ( mi <* QUERY ( it <* SELF\representation.items
|
|
| ('ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(it)) )
|
|
| (NOT (('ASSOCIATIVE_DRAUGHTING.' +
|
|
'SHELL_BASED_2D_WIREFRAME_SHAPE_REPRESENTATION') IN TYPEOF(
|
|
mi\mapped_item.mapping_source.mapped_representation))) )) =
|
|
0;
|
|
wr14: SELF.context_of_items\geometric_representation_context.
|
|
coordinate_space_dimension = 2;
|
|
END_ENTITY; -- shell_based_2d_wireframe_shape_representation
|
|
|
|
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; -- shell_based_surface_model
|
|
|
|
ENTITY shell_based_wireframe_model
|
|
SUBTYPE OF (geometric_representation_item);
|
|
sbwm_boundary : SET [1:?] OF shell;
|
|
WHERE
|
|
wr1: constraints_geometry_shell_based_wireframe_model(SELF);
|
|
END_ENTITY; -- shell_based_wireframe_model
|
|
|
|
ENTITY shell_based_wireframe_shape_representation
|
|
SUBTYPE OF (shape_representation);
|
|
WHERE
|
|
wr1 : SIZEOF(QUERY ( it <* SELF.items | (NOT (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_3D'] * TYPEOF(it))
|
|
= 1)) )) = 0;
|
|
wr2 : SIZEOF(QUERY ( it <* SELF.items | (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL',
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM'] * TYPEOF(it)) = 1) ))
|
|
>= 1;
|
|
wr3 : SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN
|
|
TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( el <* eloop\path.
|
|
edge_list | (NOT ('ASSOCIATIVE_DRAUGHTING.EDGE_CURVE' IN
|
|
TYPEOF(el.edge_element))) )) = 0)) )) = 0)) )) = 0)) )) = 0;
|
|
wr4 : SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN
|
|
TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( pline_el <*
|
|
QUERY ( el <* eloop\path.edge_list | (
|
|
'ASSOCIATIVE_DRAUGHTING.POLYLINE' IN TYPEOF(el.edge_element
|
|
\edge_curve.edge_geometry)) ) | (NOT (SIZEOF(pline_el.
|
|
edge_element\edge_curve.edge_geometry\polyline.points) > 2))
|
|
)) = 0)) )) = 0)) )) = 0)) )) = 0;
|
|
wr5 : SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN
|
|
TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( el <* eloop\path.
|
|
edge_list | (NOT valid_wireframe_edge_curve(el.edge_element
|
|
\edge_curve.edge_geometry,'ASSOCIATIVE_DRAUGHTING')) ))
|
|
= 0)) )) = 0)) )) = 0)) )) = 0;
|
|
wr6 : SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN
|
|
TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( el <* eloop\path.
|
|
edge_list | (NOT (('ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN
|
|
TYPEOF(el.edge_element.edge_start)) AND (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN TYPEOF(el.
|
|
edge_element.edge_end)))) )) = 0)) )) = 0)) )) = 0)) )) = 0;
|
|
wr7 : SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN
|
|
TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( el <* eloop\path.
|
|
edge_list | (NOT (valid_wireframe_vertex_point(el.
|
|
edge_element.edge_start\vertex_point.vertex_geometry,
|
|
'ASSOCIATIVE_DRAUGHTING') AND
|
|
valid_wireframe_vertex_point(el.edge_element.edge_end\
|
|
vertex_point.vertex_geometry,'ASSOCIATIVE_DRAUGHTING'))) ))
|
|
= 0)) )) = 0)) )) = 0)) )) = 0;
|
|
wr8 : SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.EDGE_LOOP' IN
|
|
TYPEOF(wsb)) ) | (NOT (SIZEOF(QUERY ( con_edges <*
|
|
QUERY ( el <* eloop\path.edge_list | (
|
|
'ASSOCIATIVE_DRAUGHTING.CONIC' IN TYPEOF(el.edge_element\
|
|
edge_curve.edge_geometry)) ) | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_3D' IN TYPEOF(
|
|
con_edges.edge_element\edge_curve.edge_geometry\conic.
|
|
position))) )) = 0)) )) = 0)) )) = 0)) )) = 0;
|
|
wr9 : SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( vloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.VERTEX_LOOP'
|
|
IN TYPEOF(wsb)) ) | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN TYPEOF(vloop\
|
|
vertex_loop.loop_vertex))) )) = 0)) )) = 0)) )) = 0;
|
|
wr10: SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( ws <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT (SIZEOF(QUERY ( vloop <* QUERY ( wsb <* ws\wire_shell.
|
|
wire_shell_extent | ('ASSOCIATIVE_DRAUGHTING.VERTEX_LOOP'
|
|
IN TYPEOF(wsb)) ) | (NOT valid_wireframe_vertex_point(vloop
|
|
\vertex_loop.loop_vertex\vertex_point.vertex_geometry,
|
|
'ASSOCIATIVE_DRAUGHTING')) )) = 0)) )) = 0)) )) = 0;
|
|
wr11: SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( vs <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT ('ASSOCIATIVE_DRAUGHTING.VERTEX_POINT' IN TYPEOF(vs\
|
|
vertex_shell.vertex_shell_extent.loop_vertex))) )) = 0)) ))
|
|
= 0;
|
|
wr12: SIZEOF(QUERY ( sbwm <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHELL_BASED_WIREFRAME_MODEL' IN
|
|
TYPEOF(it)) ) | (NOT (SIZEOF(QUERY ( vs <* QUERY ( sb <*
|
|
sbwm\shell_based_wireframe_model.sbwm_boundary | (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_SHELL' IN TYPEOF(sb)) ) | (
|
|
NOT valid_wireframe_vertex_point(vs\vertex_shell.
|
|
vertex_shell_extent.loop_vertex\vertex_point.
|
|
vertex_geometry,'ASSOCIATIVE_DRAUGHTING')) )) = 0)) )) =
|
|
0;
|
|
wr13: SIZEOF(QUERY ( mi <* QUERY ( it <* SELF.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(it)) ) | (
|
|
NOT (('ASSOCIATIVE_DRAUGHTING.' +
|
|
'SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION') IN TYPEOF(mi\
|
|
mapped_item.mapping_source.mapped_representation))) )) = 0;
|
|
wr14: SELF.context_of_items\geometric_representation_context.
|
|
coordinate_space_dimension = 3;
|
|
END_ENTITY; -- shell_based_wireframe_shape_representation
|
|
|
|
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(SELF.name);
|
|
END_ENTITY; -- si_unit
|
|
|
|
ENTITY solid_angle_measure_with_unit
|
|
SUBTYPE OF (measure_with_unit);
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.SOLID_ANGLE_UNIT' IN TYPEOF(SELF\
|
|
measure_with_unit.unit_component);
|
|
END_ENTITY; -- solid_angle_measure_with_unit
|
|
|
|
ENTITY solid_angle_unit
|
|
SUBTYPE OF (named_unit);
|
|
WHERE
|
|
wr1: (SELF\named_unit.dimensions.length_exponent = 0) AND (SELF\
|
|
named_unit.dimensions.mass_exponent = 0) AND (SELF\
|
|
named_unit.dimensions.time_exponent = 0) AND (SELF\
|
|
named_unit.dimensions.electric_current_exponent = 0) AND (
|
|
SELF\named_unit.dimensions.
|
|
thermodynamic_temperature_exponent = 0) AND (SELF\named_unit
|
|
.dimensions.amount_of_substance_exponent = 0) AND (SELF\
|
|
named_unit.dimensions.luminous_intensity_exponent = 0);
|
|
END_ENTITY; -- solid_angle_unit
|
|
|
|
ENTITY solid_model
|
|
SUPERTYPE OF (manifold_solid_brep)
|
|
SUBTYPE OF (geometric_representation_item);
|
|
END_ENTITY; -- solid_model
|
|
|
|
ENTITY spherical_surface
|
|
SUBTYPE OF (elementary_surface);
|
|
radius : positive_length_measure;
|
|
END_ENTITY; -- spherical_surface
|
|
|
|
ENTITY structured_dimension_callout
|
|
SUBTYPE OF (draughting_callout);
|
|
WHERE
|
|
wr1: SIZEOF(TYPEOF(SELF) * [
|
|
'ASSOCIATIVE_DRAUGHTING.DATUM_FEATURE_CALLOUT',
|
|
'ASSOCIATIVE_DRAUGHTING.DATUM_TARGET_CALLOUT',
|
|
'ASSOCIATIVE_DRAUGHTING.GEOMETRICAL_TOLERANCE_CALLOUT',
|
|
'ASSOCIATIVE_DRAUGHTING.LEADER_DIRECTED_CALLOUT',
|
|
'ASSOCIATIVE_DRAUGHTING.PROJECTION_DIRECTED_CALLOUT',
|
|
'ASSOCIATIVE_DRAUGHTING.DIMENSION_CURVE_DIRECTED_CALLOUT'])
|
|
= 0;
|
|
wr2: SIZEOF(QUERY ( ato <* QUERY ( con <* SELF.contents | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(con)) ) | (NOT (ato.name IN ['dimension value',
|
|
'tolerance value','unit text','prefix text','suffix text'])) ))
|
|
|
|
= 0;
|
|
wr3: SIZEOF(QUERY ( ato <* QUERY ( con <* SELF.contents | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(con)) ) | (ato.name = 'dimension value') )) >= 1;
|
|
wr4: SIZEOF(QUERY ( dcr <* USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP.' +
|
|
'RELATING_DRAUGHTING_CALLOUT') | (dcr.name = 'prefix') )) <=
|
|
1;
|
|
wr5: SIZEOF(QUERY ( dcr <* USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP.' +
|
|
'RELATING_DRAUGHTING_CALLOUT') | (dcr.name = 'suffix') )) <=
|
|
1;
|
|
wr6: (SIZEOF(QUERY ( ato <* QUERY ( con <* SELF.contents | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(con)) ) | (ato.name = 'prefix text') )) > 0) AND (
|
|
SIZEOF(QUERY ( dcr <* USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.'
|
|
+ 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP.' +
|
|
'RELATING_DRAUGHTING_CALLOUT') | (dcr.name = 'prefix') )) =
|
|
1);
|
|
wr7: (SIZEOF(QUERY ( ato <* QUERY ( con <* SELF.contents | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT_OCCURRENCE' IN
|
|
TYPEOF(con)) ) | (ato.name = 'suffix text') )) > 0) AND (
|
|
SIZEOF(QUERY ( dcr <* USEDIN(SELF,'ASSOCIATIVE_DRAUGHTING.'
|
|
+ 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP.' +
|
|
'RELATING_DRAUGHTING_CALLOUT') | (dcr.name = 'suffix') )) =
|
|
1);
|
|
END_ENTITY; -- structured_dimension_callout
|
|
|
|
ENTITY styled_item
|
|
SUBTYPE OF (representation_item);
|
|
styles : SET [1:?] OF presentation_style_assignment;
|
|
item : representation_item;
|
|
WHERE
|
|
wr1: (SIZEOF(SELF.styles) = 1) XOR (SIZEOF(QUERY ( pres_style <*
|
|
SELF.styles | (NOT (('ASSOCIATIVE_DRAUGHTING.' +
|
|
'PRESENTATION_STYLE_BY_CONTEXT') IN TYPEOF(pres_style))) ))
|
|
= 0);
|
|
END_ENTITY; -- styled_item
|
|
|
|
ENTITY surface
|
|
SUPERTYPE OF (ONEOF (elementary_surface,swept_surface,bounded_surface,
|
|
offset_surface,surface_replica))
|
|
SUBTYPE OF (geometric_representation_item);
|
|
END_ENTITY; -- surface
|
|
|
|
ENTITY surface_curve
|
|
SUPERTYPE OF (ONEOF (intersection_curve,seam_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: ('ASSOCIATIVE_DRAUGHTING.PCURVE' IN TYPEOF(associated_geometry[
|
|
1])) OR (master_representation <> pcurve_s1);
|
|
wr3: ('ASSOCIATIVE_DRAUGHTING.PCURVE' IN TYPEOF(associated_geometry[
|
|
2])) OR (master_representation <> pcurve_s2);
|
|
wr4: NOT ('ASSOCIATIVE_DRAUGHTING.PCURVE' IN TYPEOF(curve_3d));
|
|
END_ENTITY; -- surface_curve
|
|
|
|
ENTITY surface_of_linear_extrusion
|
|
SUBTYPE OF (swept_surface);
|
|
extrusion_axis : vector;
|
|
END_ENTITY; -- surface_of_linear_extrusion
|
|
|
|
ENTITY surface_of_revolution
|
|
SUBTYPE OF (swept_surface);
|
|
axis_position : axis1_placement;
|
|
DERIVE
|
|
axis_line : line := line(axis_position.location,vector(axis_position
|
|
.z,1));
|
|
END_ENTITY; -- surface_of_revolution
|
|
|
|
ENTITY surface_patch;
|
|
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 ('ASSOCIATIVE_DRAUGHTING.CURVE_BOUNDED_SURFACE' IN TYPEOF(
|
|
parent_surface));
|
|
END_ENTITY; -- surface_patch
|
|
|
|
ENTITY surface_replica
|
|
SUBTYPE OF (surface);
|
|
parent_surface : surface;
|
|
transformation : cartesian_transformation_operator_3d;
|
|
WHERE
|
|
wr1: acyclic_surface_replica(SELF,parent_surface);
|
|
END_ENTITY; -- surface_replica
|
|
|
|
ENTITY swept_surface
|
|
SUPERTYPE OF (ONEOF (surface_of_linear_extrusion,surface_of_revolution))
|
|
SUBTYPE OF (surface);
|
|
swept_curve : curve;
|
|
END_ENTITY; -- swept_surface
|
|
|
|
ENTITY symbol_colour;
|
|
colour_of_symbol : colour;
|
|
END_ENTITY; -- symbol_colour
|
|
|
|
ENTITY symbol_representation
|
|
SUBTYPE OF (representation);
|
|
END_ENTITY; -- symbol_representation
|
|
|
|
ENTITY symbol_representation_map
|
|
SUBTYPE OF (representation_map);
|
|
WHERE
|
|
wr1: 'ASSOCIATIVE_DRAUGHTING.SYMBOL_REPRESENTATION' IN TYPEOF(SELF\
|
|
representation_map.mapped_representation);
|
|
wr2: 'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT' IN TYPEOF(SELF\
|
|
representation_map.mapping_origin);
|
|
END_ENTITY; -- symbol_representation_map
|
|
|
|
ENTITY symbol_style;
|
|
name : label;
|
|
style_of_symbol : symbol_style_select;
|
|
END_ENTITY; -- symbol_style
|
|
|
|
ENTITY symbol_target
|
|
SUBTYPE OF (geometric_representation_item);
|
|
placement : axis2_placement;
|
|
x_scale : positive_ratio_measure;
|
|
y_scale : positive_ratio_measure;
|
|
END_ENTITY; -- symbol_target
|
|
|
|
ENTITY tangent
|
|
SUBTYPE OF (derived_shape_aspect);
|
|
WHERE
|
|
wr1: SIZEOF(SELF\derived_shape_aspect.deriving_relationships) = 1;
|
|
END_ENTITY; -- tangent
|
|
|
|
ENTITY terminator_symbol
|
|
SUBTYPE OF (annotation_symbol_occurrence);
|
|
annotated_curve : annotation_curve_occurrence;
|
|
END_ENTITY; -- terminator_symbol
|
|
|
|
ENTITY text_literal
|
|
SUBTYPE OF (geometric_representation_item);
|
|
literal : presentable_text;
|
|
placement : axis2_placement;
|
|
alignment : text_alignment;
|
|
path : text_path;
|
|
font : font_select;
|
|
END_ENTITY; -- text_literal
|
|
|
|
ENTITY text_literal_with_associated_curves
|
|
SUBTYPE OF (text_literal);
|
|
associated_curves : SET [1:?] OF curve;
|
|
END_ENTITY; -- text_literal_with_associated_curves
|
|
|
|
ENTITY text_literal_with_blanking_box
|
|
SUBTYPE OF (text_literal);
|
|
blanking : planar_box;
|
|
END_ENTITY; -- text_literal_with_blanking_box
|
|
|
|
ENTITY text_literal_with_delineation
|
|
SUBTYPE OF (text_literal);
|
|
delineation : text_delineation;
|
|
END_ENTITY; -- text_literal_with_delineation
|
|
|
|
ENTITY text_literal_with_extent
|
|
SUBTYPE OF (text_literal);
|
|
extent : planar_extent;
|
|
END_ENTITY; -- text_literal_with_extent
|
|
|
|
ENTITY text_style;
|
|
name : label;
|
|
character_appearance : character_style_select;
|
|
END_ENTITY; -- text_style
|
|
|
|
ENTITY text_style_for_defined_font;
|
|
text_colour : colour;
|
|
END_ENTITY; -- text_style_for_defined_font
|
|
|
|
ENTITY text_style_with_box_characteristics
|
|
SUBTYPE OF (text_style);
|
|
characteristics : SET [1:4] OF box_characteristic_select;
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( c1 <* SELF.characteristics | (SIZEOF(
|
|
QUERY ( c2 <* (SELF.characteristics - c1) | (TYPEOF(c1) =
|
|
TYPEOF(c2)) )) > 0) )) = 0;
|
|
END_ENTITY; -- text_style_with_box_characteristics
|
|
|
|
ENTITY text_style_with_mirror
|
|
SUBTYPE OF (text_style);
|
|
mirror_placement : axis2_placement;
|
|
END_ENTITY; -- text_style_with_mirror
|
|
|
|
ENTITY text_style_with_spacing
|
|
SUBTYPE OF (text_style);
|
|
character_spacing : character_spacing_select;
|
|
END_ENTITY; -- text_style_with_spacing
|
|
|
|
ENTITY tolerance_value;
|
|
lower_bound : measure_with_unit;
|
|
upper_bound : measure_with_unit;
|
|
WHERE
|
|
wr1: upper_bound.value_component > lower_bound.value_component;
|
|
wr2: upper_bound.unit_component = lower_bound.unit_component;
|
|
END_ENTITY; -- tolerance_value
|
|
|
|
ENTITY topological_representation_item
|
|
SUPERTYPE OF (ONEOF (vertex,edge,face_bound,face,vertex_shell,
|
|
wire_shell,connected_edge_set,connected_face_set,loop ANDOR path))
|
|
SUBTYPE OF (representation_item);
|
|
END_ENTITY; -- topological_representation_item
|
|
|
|
ENTITY toroidal_surface
|
|
SUBTYPE OF (elementary_surface);
|
|
major_radius : positive_length_measure;
|
|
minor_radius : positive_length_measure;
|
|
END_ENTITY; -- toroidal_surface
|
|
|
|
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) XOR (TYPEOF(trim_1[1]) <> TYPEOF(trim_1[2]));
|
|
wr2: (HIINDEX(trim_2) = 1) XOR (TYPEOF(trim_2[1]) <> TYPEOF(trim_2[2]));
|
|
END_ENTITY; -- trimmed_curve
|
|
|
|
ENTITY two_direction_repeat_factor
|
|
SUBTYPE OF (one_direction_repeat_factor);
|
|
second_repeat_factor : vector;
|
|
END_ENTITY; -- two_direction_repeat_factor
|
|
|
|
ENTITY uncertainty_measure_with_unit
|
|
SUBTYPE OF (measure_with_unit);
|
|
name : label;
|
|
description : text;
|
|
WHERE
|
|
wr1: (NOT ('NUMBER' IN TYPEOF(SELF\measure_with_unit.value_component)))
|
|
OR (SELF\measure_with_unit.value_component >= 0);
|
|
END_ENTITY; -- uncertainty_measure_with_unit
|
|
|
|
ENTITY uniform_curve
|
|
SUBTYPE OF (b_spline_curve);
|
|
END_ENTITY; -- uniform_curve
|
|
|
|
ENTITY uniform_surface
|
|
SUBTYPE OF (b_spline_surface);
|
|
END_ENTITY; -- uniform_surface
|
|
|
|
ENTITY vector
|
|
SUBTYPE OF (geometric_representation_item);
|
|
orientation : direction;
|
|
magnitude : length_measure;
|
|
WHERE
|
|
wr1: magnitude >= 0;
|
|
END_ENTITY; -- vector
|
|
|
|
ENTITY vertex
|
|
SUBTYPE OF (topological_representation_item);
|
|
END_ENTITY; -- vertex
|
|
|
|
ENTITY vertex_loop
|
|
SUBTYPE OF (loop);
|
|
loop_vertex : vertex;
|
|
END_ENTITY; -- vertex_loop
|
|
|
|
ENTITY vertex_point
|
|
SUBTYPE OF (vertex, geometric_representation_item);
|
|
vertex_geometry : point;
|
|
END_ENTITY; -- vertex_point
|
|
|
|
ENTITY vertex_shell
|
|
SUBTYPE OF (topological_representation_item);
|
|
vertex_shell_extent : vertex_loop;
|
|
END_ENTITY; -- vertex_shell
|
|
|
|
ENTITY view_volume;
|
|
projection_type : central_or_parallel;
|
|
projection_point : cartesian_point;
|
|
view_plane_distance : length_measure;
|
|
front_plane_distance : length_measure;
|
|
front_plane_clipping : BOOLEAN;
|
|
back_plane_distance : length_measure;
|
|
back_plane_clipping : BOOLEAN;
|
|
view_volume_sides_clipping : BOOLEAN;
|
|
view_window : planar_box;
|
|
END_ENTITY; -- view_volume
|
|
|
|
ENTITY wire_shell
|
|
SUBTYPE OF (topological_representation_item);
|
|
wire_shell_extent : SET [1:?] OF loop;
|
|
WHERE
|
|
wr1: NOT mixed_loop_type_set(wire_shell_extent);
|
|
END_ENTITY; -- wire_shell
|
|
|
|
RULE application_context_requires_ap_definition FOR (application_context,
|
|
application_protocol_definition);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( ac <* application_context | (NOT (SIZEOF(
|
|
QUERY ( apd <* application_protocol_definition | ((ac :=: apd.
|
|
application) AND (apd.
|
|
application_interpreted_model_schema_name =
|
|
'ASSOCIATIVE_DRAUGHTING') AND (ac.application = 'draughting')) ))
|
|
|
|
= 1)) )) = 0;
|
|
|
|
END_RULE; -- application_context_requires_ap_definition
|
|
|
|
RULE approval_date_time_constraints FOR (approval_date_time);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( adt <* approval_date_time | (NOT (SIZEOF(TYPEOF(
|
|
adt.date_time) * ['ASSOCIATIVE_DRAUGHTING.DATE_AND_TIME',
|
|
'ASSOCIATIVE_DRAUGHTING.DATE']) = 1)) )) = 0;
|
|
|
|
END_RULE; -- approval_date_time_constraints
|
|
|
|
RULE approvals_are_assigned FOR (approval);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( a <* approval | (NOT (SIZEOF(USEDIN(a,
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'APPROVAL_ASSIGNMENT.' +
|
|
'ASSIGNED_APPROVAL')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- approvals_are_assigned
|
|
|
|
RULE calendar_date_instantiation FOR (calendar_date);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* calendar_date | (NOT (SIZEOF(USEDIN(each,
|
|
'')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- calendar_date_instantiation
|
|
|
|
RULE camera_usage_mapped_representation FOR (camera_usage);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( cu <* camera_usage | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_MODEL' IN TYPEOF(cu.
|
|
mapped_representation))) )) = 0;
|
|
|
|
END_RULE; -- camera_usage_mapped_representation
|
|
|
|
RULE colour_rgb_instantiation FOR (colour_rgb);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* colour_rgb | (NOT (SIZEOF(USEDIN(each,''))
|
|
>= 1)) )) = 0;
|
|
|
|
END_RULE; -- colour_rgb_instantiation
|
|
|
|
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; -- compatible_dimension
|
|
|
|
RULE curve_font_usage FOR (curve_style_font, pre_defined_curve_font,
|
|
externally_defined_curve_font);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( csf <* curve_style_font | (NOT (SIZEOF(USEDIN(csf,
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'CURVE_STYLE.CURVE_FONT')) >= 1)) ))
|
|
= 0;
|
|
wr2: SIZEOF(QUERY ( pdcf <* pre_defined_curve_font | (NOT (SIZEOF(
|
|
USEDIN(pdcf,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'CURVE_STYLE.CURVE_FONT')) >= 1)) )) = 0;
|
|
wr3: SIZEOF(QUERY ( edcf <* externally_defined_curve_font | (NOT (
|
|
SIZEOF(USEDIN(edcf,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'CURVE_STYLE.CURVE_FONT')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- curve_font_usage
|
|
|
|
RULE curve_style_instantiation FOR (curve_style);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* curve_style | (NOT (SIZEOF(USEDIN(each,''))
|
|
>= 1)) )) = 0;
|
|
|
|
END_RULE; -- curve_style_instantiation
|
|
|
|
RULE derived_unit_instantiation FOR (derived_unit);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( du <* derived_unit | (NOT (SIZEOF(USEDIN(du,''))
|
|
>= 1)) )) = 0;
|
|
|
|
END_RULE; -- derived_unit_instantiation
|
|
|
|
RULE dimensional_size_instantiation FOR (dimensional_size);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* dimensional_size | (NOT (SIZEOF(USEDIN(
|
|
each,'')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- dimensional_size_instantiation
|
|
|
|
RULE dimensionality_is_two_or_three FOR (
|
|
geometric_representation_context);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( g <* geometric_representation_context | (NOT ((g.
|
|
coordinate_space_dimension = 2) OR (g.
|
|
coordinate_space_dimension = 3))) )) = 0;
|
|
|
|
END_RULE; -- dimensionality_is_two_or_three
|
|
|
|
RULE dimensions_are_represented FOR (dimensional_location,
|
|
dimensional_size);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( dl <* dimensional_location | (NOT ((SIZEOF(USEDIN(
|
|
dl,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DIMENSIONAL_CHARACTERISTIC_REPRESENTATION.DIMENSION')) >= 1)
|
|
AND (SIZEOF(QUERY ( pd <* USEDIN(dl,'ASSOCIATIVE_DRAUGHTING.'
|
|
+ 'PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(
|
|
QUERY ( sdr <* USEDIN(pd,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
|
|
'SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(sdr)) )) = 1)) ))
|
|
= 0))) )) = 0;
|
|
wr2: SIZEOF(QUERY ( ds <* dimensional_size | (NOT ((SIZEOF(USEDIN(ds,
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DIMENSIONAL_CHARACTERISTIC_REPRESENTATION.DIMENSION')) >= 1)
|
|
AND (SIZEOF(QUERY ( pd <* USEDIN(ds.applies_to,
|
|
'ASSOCIATIVE_DRAUGHTING.PROPERTY_DEFINITION.DEFINITION') | (
|
|
NOT (SIZEOF(QUERY ( sdr <* USEDIN(pd,'ASSOCIATIVE_DRAUGHTING.'
|
|
+ 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
|
|
'SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(sdr)) )) = 1)) ))
|
|
= 0))) )) = 0;
|
|
|
|
END_RULE; -- dimensions_are_represented
|
|
|
|
RULE draughting_model_annotation_layers FOR (draughting_model);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( dm <* draughting_model | (NOT (SIZEOF(
|
|
QUERY ( ao <* QUERY ( it <* dm\representation.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_OCCURRENCE' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(USEDIN(ao,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PRESENTATION_LAYER_ASSIGNMENT.' + 'ASSIGNED_ITEMS')) >= 1)) ))
|
|
= 0)) )) = 0;
|
|
|
|
END_RULE; -- draughting_model_annotation_layers
|
|
|
|
RULE draughting_sub_model_mapped_item FOR (mapped_item);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( sr <* QUERY ( mi <* mapped_item | ((
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_REPRESENTATION' IN TYPEOF(mi.
|
|
mapping_source.mapped_representation)) AND (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_DIMENSION_REPRESENTATION' IN
|
|
TYPEOF(mi.mapping_source.mapped_representation)))) ) | (NOT (
|
|
SIZEOF(USEDIN(sr,'')) = SIZEOF(QUERY ( mr <* USEDIN(sr,
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'REPRESENTATION.ITEMS') | (SIZEOF(
|
|
['ASSOCIATIVE_DRAUGHTING.DRAUGHTING_MODEL',
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_REPRESENTATION'] * TYPEOF(mr)) =
|
|
1) )))) )) = 0;
|
|
|
|
END_RULE; -- draughting_sub_model_mapped_item
|
|
|
|
RULE draughting_subfigure_representation_layers FOR (
|
|
draughting_subfigure_representation);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( dsr <* draughting_subfigure_representation | (NOT
|
|
(SIZEOF(QUERY ( item <* dsr\representation.items | ((
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_OCCURRENCE' IN TYPEOF(item))
|
|
AND (SIZEOF(USEDIN(item,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PRESENTATION_LAYER_ASSIGNMENT.' + 'ASSIGNED_ITEMS')) = 0)) ))
|
|
= 0)) )) = 0;
|
|
|
|
END_RULE; -- draughting_subfigure_representation_layers
|
|
|
|
RULE drawing_sheet_annotation_layers FOR (drawing_sheet_revision);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( dsr <* drawing_sheet_revision | (NOT (SIZEOF(
|
|
QUERY ( ao <* QUERY ( it <* dsr\representation.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_OCCURRENCE' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(USEDIN(ao,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PRESENTATION_LAYER_ASSIGNMENT.' + 'ASSIGNED_ITEMS')) >= 1)) ))
|
|
= 0)) )) = 0;
|
|
|
|
END_RULE; -- drawing_sheet_annotation_layers
|
|
|
|
RULE drawing_sheet_layout_usage FOR (mapped_item);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( dsl <* QUERY ( mi <* mapped_item | (
|
|
'ASSOCIATIVE_DRAUGHTING.DRAWING_SHEET_LAYOUT' IN TYPEOF(mi.
|
|
mapping_source.mapped_representation)) ) | (NOT (SIZEOF(
|
|
USEDIN(dsl,'')) = SIZEOF(QUERY ( dsr <* USEDIN(dsl,
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'REPRESENTATION.ITEMS') | (
|
|
'ASSOCIATIVE_DRAUGHTING.DRAWING_SHEET_REVISION' IN TYPEOF(dsr))
|
|
)))) ))
|
|
= 0;
|
|
|
|
END_RULE; -- drawing_sheet_layout_usage
|
|
|
|
RULE drawing_view_annotation_layers FOR (presentation_view);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( pv <* presentation_view | (NOT (SIZEOF(
|
|
QUERY ( ao <* QUERY ( it <* pv\representation.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_OCCURRENCE' IN TYPEOF(it)) )
|
|
| (NOT (SIZEOF(USEDIN(ao,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PRESENTATION_LAYER_ASSIGNMENT.' + 'ASSIGNED_ITEMS')) >= 1)) ))
|
|
= 0)) )) = 0;
|
|
|
|
END_RULE; -- drawing_view_annotation_layers
|
|
|
|
RULE externally_defined_symbol_instantiation FOR (
|
|
externally_defined_symbol);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* externally_defined_symbol | (NOT (SIZEOF(
|
|
USEDIN(each,'')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- externally_defined_symbol_instantiation
|
|
|
|
RULE fill_area_style_colour_instantiation FOR (fill_area_style_colour);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* fill_area_style_colour | (NOT (SIZEOF(
|
|
USEDIN(each,'')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- fill_area_style_colour_instantiation
|
|
|
|
RULE fill_area_style_instantiation FOR (fill_area_style);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* fill_area_style | (NOT (SIZEOF(USEDIN(each,
|
|
'')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- fill_area_style_instantiation
|
|
|
|
RULE fill_area_style_tile_symbol_constraint FOR (
|
|
fill_area_style_tile_symbol_with_style);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( fast <* fill_area_style_tile_symbol_with_style | (
|
|
('ASSOCIATIVE_DRAUGHTING.DEFINED_SYMBOL' IN TYPEOF(fast.symbol
|
|
\styled_item.item)) AND (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.EXTERNALLY_DEFINED_SYMBOL' IN TYPEOF(
|
|
fast.symbol\styled_item.item\defined_symbol.definition)))) ))
|
|
= 0;
|
|
|
|
END_RULE; -- fill_area_style_tile_symbol_constraint
|
|
|
|
RULE geometric_elements_belong_to_layers FOR (point, curve, surface);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( geo_pt <* QUERY ( pt <* point | (SIZEOF(
|
|
QUERY ( rep <* USEDIN(pt,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'REPRESENTATION.ITEMS') | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_REPRESENTATION' IN TYPEOF(rep)) ))
|
|
> 0) ) | (NOT (SIZEOF(USEDIN(geo_pt,'ASSOCIATIVE_DRAUGHTING.'
|
|
+ 'PRESENTATION_LAYER_ASSIGNMENT.ASSIGNED_ITEMS')) >= 1)) )) =
|
|
0;
|
|
wr2: SIZEOF(QUERY ( geo_cv <* QUERY ( cv <* curve | (SIZEOF(
|
|
QUERY ( rep <* USEDIN(cv,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'REPRESENTATION.ITEMS') | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_REPRESENTATION' IN TYPEOF(rep)) ))
|
|
> 0) ) | (NOT (SIZEOF(USEDIN(geo_cv,'ASSOCIATIVE_DRAUGHTING.'
|
|
+ 'PRESENTATION_LAYER_ASSIGNMENT.ASSIGNED_ITEMS')) >= 1)) )) =
|
|
0;
|
|
wr3: SIZEOF(QUERY ( geo_sf <* QUERY ( sf <* surface | (SIZEOF(
|
|
QUERY ( rep <* USEDIN(sf,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'REPRESENTATION.ITEMS') | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_REPRESENTATION' IN TYPEOF(rep)) ))
|
|
> 0) ) | (NOT (SIZEOF(USEDIN(geo_sf,'ASSOCIATIVE_DRAUGHTING.'
|
|
+ 'PRESENTATION_LAYER_ASSIGNMENT.ASSIGNED_ITEMS')) >= 1)) )) =
|
|
0;
|
|
|
|
END_RULE; -- geometric_elements_belong_to_layers
|
|
|
|
RULE global_length_and_angle_units_2d_or_3d FOR (
|
|
global_unit_assigned_context);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( guac <* global_unit_assigned_context | (NOT (
|
|
SIZEOF(guac.units) <= 3)) )) = 0;
|
|
wr2: SIZEOF(QUERY ( guac <* global_unit_assigned_context | (NOT ((
|
|
SIZEOF(QUERY ( x <* guac.units | (
|
|
'ASSOCIATIVE_DRAUGHTING.LENGTH_UNIT' IN TYPEOF(x)) )) = 1) AND
|
|
(SIZEOF(QUERY ( x <* guac.units | (
|
|
'ASSOCIATIVE_DRAUGHTING.PLANE_ANGLE_UNIT' IN TYPEOF(x)) )) = 1)
|
|
AND (SIZEOF(QUERY ( x <* guac.units | (
|
|
'ASSOCIATIVE_DRAUGHTING.SOLID_ANGLE_UNIT' IN TYPEOF(x)) )) <=
|
|
1))) )) = 0;
|
|
|
|
END_RULE; -- global_length_and_angle_units_2d_or_3d
|
|
|
|
RULE groups_contain_elements FOR (group, group_assignment,
|
|
group_relationship);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( g <* group | (NOT ((SIZEOF(QUERY ( ga <*
|
|
group_assignment | (g :=: ga.assigned_group) )) = 1) OR ((
|
|
SIZEOF(QUERY ( ga <* group_assignment | (g :=: ga.
|
|
assigned_group) )) = 0) AND (SIZEOF(QUERY ( gr <*
|
|
group_relationship | (g :=: gr.relating_group) )) >= 1)))) ))
|
|
= 0;
|
|
|
|
END_RULE; -- groups_contain_elements
|
|
|
|
RULE measure_with_unit_instantiation FOR (measure_with_unit);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( m <* measure_with_unit | (NOT (SIZEOF(USEDIN(m,''))
|
|
>= 1)) )) = 0;
|
|
wr2: SIZEOF(QUERY ( m <* measure_with_unit | (NOT (SIZEOF(TYPEOF(m) *
|
|
['ASSOCIATIVE_DRAUGHTING.LENGTH_MEASURE_WITH_UNIT',
|
|
'ASSOCIATIVE_DRAUGHTING.PLANE_ANGLE_MEASURE_WITH_UNIT',
|
|
'ASSOCIATIVE_DRAUGHTING.SOLID_ANGLE_MEASURE_WITH_UNIT']) = 1)) ))
|
|
|
|
= 0;
|
|
|
|
END_RULE; -- measure_with_unit_instantiation
|
|
|
|
RULE named_unit_instantiation FOR (named_unit);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( n <* named_unit | (NOT (SIZEOF(USEDIN(n,'')) >= 1)) ))
|
|
|
|
= 0;
|
|
wr2: SIZEOF(QUERY ( n <* named_unit | (NOT (SIZEOF(TYPEOF(n) * [
|
|
'ASSOCIATIVE_DRAUGHTING.CONVERSION_BASED_UNIT',
|
|
'ASSOCIATIVE_DRAUGHTING.LENGTH_UNIT',
|
|
'ASSOCIATIVE_DRAUGHTING.PLANE_ANGLE_UNIT',
|
|
'ASSOCIATIVE_DRAUGHTING.SOLID_ANGLE_UNIT',
|
|
'ASSOCIATIVE_DRAUGHTING.SI_UNIT']) = 2)) )) = 0;
|
|
|
|
END_RULE; -- named_unit_instantiation
|
|
|
|
RULE pre_defined_colour_instantiation FOR (pre_defined_colour);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* pre_defined_colour | (NOT (SIZEOF(USEDIN(
|
|
each,'')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- pre_defined_colour_instantiation
|
|
|
|
RULE pre_defined_symbol_instantiation FOR (pre_defined_symbol);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* pre_defined_symbol | (NOT (SIZEOF(USEDIN(
|
|
each,'')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- pre_defined_symbol_instantiation
|
|
|
|
RULE presentation_layer_assignment_constraint_2d_or_3d FOR (
|
|
presentation_layer_assignment);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( pla <* presentation_layer_assignment | (NOT (
|
|
SIZEOF(QUERY ( item <* pla.assigned_items | (NOT (SIZEOF(
|
|
TYPEOF(item) * ['ASSOCIATIVE_DRAUGHTING.POINT',
|
|
'ASSOCIATIVE_DRAUGHTING.CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.SURFACE',
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_OCCURRENCE']) = 1)) )) = 0))))
|
|
= 0;
|
|
wr2: SIZEOF(QUERY ( pla <* presentation_layer_assignment | (NOT (
|
|
SIZEOF(QUERY ( pnt <* QUERY ( item <* pla.assigned_items | (
|
|
'ASSOCIATIVE_DRAUGHTING.POINT' IN TYPEOF(item)) ) | (NOT (
|
|
SIZEOF(QUERY ( rep <* USEDIN(pnt,
|
|
'ASSOCIATIVE_DRAUGHTING.REPRESENTATION.ITEMS') | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_REPRESENTATION' IN TYPEOF(rep)) ))
|
|
= 0)) )) = 0)) )) = 0;
|
|
wr3: SIZEOF(QUERY ( pla <* presentation_layer_assignment | (NOT (
|
|
SIZEOF(QUERY ( crv <* QUERY ( item <* pla.assigned_items | (
|
|
'ASSOCIATIVE_DRAUGHTING.CURVE' IN TYPEOF(item)) ) | (NOT (
|
|
SIZEOF(QUERY ( rep <* USEDIN(crv,
|
|
'ASSOCIATIVE_DRAUGHTING.REPRESENTATION.ITEMS') | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_REPRESENTATION' IN TYPEOF(rep)) ))
|
|
= 0)) )) = 0)) )) = 0;
|
|
wr4: SIZEOF(QUERY ( pla <* presentation_layer_assignment | (NOT (
|
|
SIZEOF(QUERY ( srf <* QUERY ( item <* pla.assigned_items | (
|
|
'ASSOCIATIVE_DRAUGHTING.SURFACE' IN TYPEOF(item)) ) | (NOT (
|
|
SIZEOF(QUERY ( rep <* USEDIN(srf,
|
|
'ASSOCIATIVE_DRAUGHTING.REPRESENTATION.ITEMS') | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_REPRESENTATION' IN TYPEOF(rep)) ))
|
|
= 0)) )) = 0)) )) = 0;
|
|
wr5: SIZEOF(QUERY ( pla <* presentation_layer_assignment | (NOT (
|
|
SIZEOF(QUERY ( ao <* QUERY ( item <* pla.assigned_items | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_OCCURRENCE' IN TYPEOF(item)) )
|
|
| (NOT (SIZEOF(QUERY ( ur <* using_representations(ao) | (
|
|
NOT (SIZEOF(TYPEOF(ur) * ['ASSOCIATIVE_DRAUGHTING.' +
|
|
'DRAUGHTING_SUBFIGURE_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_MODEL',
|
|
'ASSOCIATIVE_DRAUGHTING.DRAWING_SHEET_REVISION',
|
|
'ASSOCIATIVE_DRAUGHTING.PRESENTATION_VIEW']) = 1)) )) = 0)) ))
|
|
= 0)) )) = 0;
|
|
|
|
END_RULE; -- presentation_layer_assignment_constraint_2d_or_3d
|
|
|
|
RULE presentation_layer_assignment_requires_usage FOR (
|
|
presentation_layer_assignment, presentation_layer_usage);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( e <* presentation_layer_assignment | (NOT (SIZEOF(
|
|
QUERY ( s <* presentation_layer_usage | (e :=: s.assignment) ))
|
|
= 1)) )) = 0;
|
|
|
|
END_RULE; -- presentation_layer_assignment_requires_usage
|
|
|
|
RULE presentation_of_product_definition_formation FOR (
|
|
product_definition_formation);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( pdf <* product_definition_formation | (NOT ((
|
|
SIZEOF(USEDIN(pdf,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'DRAUGHTING_PRESENTED_ITEM.ITEMS')) >= 1) OR (SIZEOF(
|
|
QUERY ( pd <* USEDIN(pdf,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PRODUCT_DEFINITION.FORMATION') | (NOT (SIZEOF(QUERY ( pds <*
|
|
QUERY ( prop_def <* USEDIN(pd,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PROPERTY_DEFINITION.DEFINITION') | (
|
|
'ASSOCIATIVE_DRAUGHTING.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(
|
|
prop_def)) ) | (NOT (SIZEOF(QUERY ( pdr <* USEDIN(pds,
|
|
'ASSOCIATIVE_DRAUGHTING.PROPERTY_' +
|
|
'DEFINITION_REPRESENTATION.DEFINITION') | (
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_DEFINITION_REPRESENTATION' IN
|
|
TYPEOF(pdr)) )) >= 1)) )) = 0)) )) = 0))) )) = 0;
|
|
|
|
END_RULE; -- presentation_of_product_definition_formation
|
|
|
|
RULE presentation_size_constraint FOR (presentation_size);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( ps <* presentation_size | (NOT ((
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'DRAWING_SHEET_REVISION') IN
|
|
TYPEOF(ps.unit))) )) = 0;
|
|
|
|
END_RULE; -- presentation_size_constraint
|
|
|
|
RULE presentation_style_by_context_constraint FOR (
|
|
presentation_style_by_context);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( psbc <* presentation_style_by_context | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.PRESENTATION_VIEW' IN TYPEOF(psbc.
|
|
style_context))) )) = 0;
|
|
wr2: SIZEOF(QUERY ( psbc <* presentation_style_by_context | (NOT (
|
|
SIZEOF(psbc\presentation_style_assignment.styles) = 1)) )) = 0;
|
|
|
|
END_RULE; -- presentation_style_by_context_constraint
|
|
|
|
RULE presentation_style_by_context_instantiation FOR (
|
|
presentation_style_by_context);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* presentation_style_by_context | (NOT (
|
|
SIZEOF(USEDIN(each,'')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- presentation_style_by_context_instantiation
|
|
|
|
RULE presentation_view_presented_once FOR (presentation_view,
|
|
drawing_sheet_revision);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( pv <* presentation_view | (NOT (SIZEOF(
|
|
QUERY ( rm <* USEDIN(pv,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'REPRESENTATION_MAP.MAPPED_REPRESENTATION') | (NOT (SIZEOF(
|
|
QUERY ( mi <* rm.map_usage | (NOT (SIZEOF(QUERY ( dsr <*
|
|
drawing_sheet_revision | (mi IN dsr\representation.items) )) =
|
|
1)) )) = 0)) )) = 0)) )) = 0;
|
|
|
|
END_RULE; -- presentation_view_presented_once
|
|
|
|
RULE product_definition_has_one_shape FOR (product_definition);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( pd <* product_definition | (NOT (SIZEOF(
|
|
QUERY ( prop_def <* USEDIN(pd,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PROPERTY_DEFINITION.DEFINITION') | (NOT (SIZEOF(
|
|
QUERY ( pdr <* USEDIN(prop_def,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | (
|
|
'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_MODEL' IN TYPEOF(pdr.
|
|
used_representation)) )) <= 1)) )) = 0)) )) = 0;
|
|
|
|
END_RULE; -- product_definition_has_one_shape
|
|
|
|
RULE product_definition_instantiation FOR (product_definition);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* product_definition | (NOT (SIZEOF(USEDIN(
|
|
each,'')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- product_definition_instantiation
|
|
|
|
RULE product_requires_version FOR (product, product_definition_formation);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( e <* product | (NOT (SIZEOF(QUERY ( s <*
|
|
product_definition_formation | (e :=: s.of_product) )) >= 1)) ))
|
|
= 0;
|
|
|
|
END_RULE; -- product_requires_version
|
|
|
|
RULE product_shape_has_representations FOR (product_definition_shape);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( pds <* product_definition_shape | (NOT (SIZEOF(
|
|
USEDIN(pds,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PROPERTY_DEFINITION_REPRESENTATION.' + 'DEFINITION')) >= 1)) ))
|
|
= 0;
|
|
|
|
END_RULE; -- product_shape_has_representations
|
|
|
|
RULE product_version_requires_definition FOR (
|
|
product_definition_formation, product_definition);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( pdf <* product_definition_formation | (NOT (
|
|
SIZEOF(QUERY ( pd <* product_definition | (pdf :=: pd.
|
|
formation) )) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- product_version_requires_definition
|
|
|
|
RULE representation_context_global_units FOR (representation_context);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( rc <* representation_context | (NOT ((
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'GLOBAL_UNIT_ASSIGNED_CONTEXT') IN
|
|
TYPEOF(rc))) )) = 0;
|
|
|
|
END_RULE; -- representation_context_global_units
|
|
|
|
RULE representation_instantiation FOR (representation);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* representation | (NOT (SIZEOF(USEDIN(each,
|
|
'')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- representation_instantiation
|
|
|
|
RULE restrict_product_definition_document_type FOR (
|
|
product_definition_with_associated_documents);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( pd <* product_definition_with_associated_documents
|
|
| (NOT (SIZEOF(QUERY ( doc <* pd.documentation_ids | (NOT ((
|
|
doc.kind.product_data_type = 'CAD filename') OR (doc.kind.
|
|
product_data_type = 'drawing'))) )) = 0)) )) = 0;
|
|
|
|
END_RULE; -- restrict_product_definition_document_type
|
|
|
|
RULE shape_aspect_instantiation FOR (shape_aspect);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* shape_aspect | (NOT (SIZEOF(USEDIN(each,''))
|
|
>= 1)) )) = 0;
|
|
|
|
END_RULE; -- shape_aspect_instantiation
|
|
|
|
RULE sheets_belong_to_one_drawing FOR (drawing_sheet_revision,
|
|
drawing_sheet_revision_usage);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( dsr <* drawing_sheet_revision | (NOT (SIZEOF(
|
|
QUERY ( usage <* drawing_sheet_revision_usage | (dsr :=: usage
|
|
.area) )) = 1)) )) = 0;
|
|
|
|
END_RULE; -- sheets_belong_to_one_drawing
|
|
|
|
RULE styled_curve FOR (styled_item);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( crv <* QUERY ( si <* styled_item | (
|
|
'ASSOCIATIVE_DRAUGHTING.CURVE' IN TYPEOF(si.item)) ) | (NOT (
|
|
SIZEOF(QUERY ( sty <* crv.styles | (NOT ((SIZEOF(sty.styles) =
|
|
1) AND ('ASSOCIATIVE_DRAUGHTING.CURVE_STYLE' IN TYPEOF(sty.
|
|
styles[1])))) )) = 0)) )) = 0;
|
|
|
|
END_RULE; -- styled_curve
|
|
|
|
RULE subtype_mandatory_annotation_occurrence FOR (annotation_occurrence);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( ao <* annotation_occurrence | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_ANNOTATION_OCCURRENCE' IN
|
|
TYPEOF(ao))) )) = 0;
|
|
|
|
END_RULE; -- subtype_mandatory_annotation_occurrence
|
|
|
|
RULE subtype_mandatory_camera_image_2d_or_3d FOR (camera_image);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( ci <* camera_image | (NOT (SIZEOF(TYPEOF(ci) * [
|
|
'ASSOCIATIVE_DRAUGHTING.CAMERA_IMAGE_2D_WITH_SCALE',
|
|
'ASSOCIATIVE_DRAUGHTING.CAMERA_IMAGE_3D_WITH_SCALE']) = 1)) ))
|
|
= 0;
|
|
|
|
END_RULE; -- subtype_mandatory_camera_image_2d_or_3d
|
|
|
|
RULE subtype_mandatory_camera_model_2d_or_3d FOR (camera_model);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( cm <* camera_model | (NOT (SIZEOF(TYPEOF(cm) * [
|
|
'ASSOCIATIVE_DRAUGHTING.CAMERA_MODEL_D2',
|
|
'ASSOCIATIVE_DRAUGHTING.CAMERA_MODEL_D3']) = 1)) )) = 0;
|
|
|
|
END_RULE; -- subtype_mandatory_camera_model_2d_or_3d
|
|
|
|
RULE subtype_mandatory_draughting_callout FOR (draughting_callout);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( dc <* draughting_callout | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_ELEMENTS' IN TYPEOF(dc))) ))
|
|
= 0;
|
|
|
|
END_RULE; -- subtype_mandatory_draughting_callout
|
|
|
|
RULE subtype_mandatory_drawing_revision FOR (drawing_revision);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( dr <* drawing_revision | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_DRAWING_REVISION' IN
|
|
TYPEOF(dr))) )) = 0;
|
|
|
|
END_RULE; -- subtype_mandatory_drawing_revision
|
|
|
|
RULE subtype_mandatory_pre_defined_colour FOR (pre_defined_colour);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( pdc <* pre_defined_colour | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_PRE_DEFINED_COLOUR' IN
|
|
TYPEOF(pdc))) )) = 0;
|
|
|
|
END_RULE; -- subtype_mandatory_pre_defined_colour
|
|
|
|
RULE subtype_mandatory_pre_defined_curve_font FOR (
|
|
pre_defined_curve_font);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( pdcf <* pre_defined_curve_font | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_PRE_DEFINED_CURVE_FONT' IN
|
|
TYPEOF(pdcf))) )) = 0;
|
|
|
|
END_RULE; -- subtype_mandatory_pre_defined_curve_font
|
|
|
|
RULE subtype_mandatory_pre_defined_symbol FOR (pre_defined_symbol);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( pds <* pre_defined_symbol | (NOT (SIZEOF(TYPEOF(
|
|
pds) * ['ASSOCIATIVE_DRAUGHTING.' +
|
|
'PRE_DEFINED_GEOMETRICAL_TOLERANCE_SYMBOL',
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'PRE_DEFINED_DIMENSION_SYMBOL',
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'PRE_DEFINED_POINT_MARKER_SYMBOL',
|
|
'ASSOCIATIVE_DRAUGHTING.' + 'PRE_DEFINED_TERMINATOR_SYMBOL'])
|
|
= 1)) )) = 0;
|
|
|
|
END_RULE; -- subtype_mandatory_pre_defined_symbol
|
|
|
|
RULE subtype_mandatory_pre_defined_text_font FOR (pre_defined_text_font);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( pdtf <* pre_defined_text_font | (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_PRE_DEFINED_TEXT_FONT' IN
|
|
TYPEOF(pdtf))) )) = 0;
|
|
|
|
END_RULE; -- subtype_mandatory_pre_defined_text_font
|
|
|
|
RULE subtype_mandatory_shape_representation_2d_or_3d FOR (
|
|
shape_representation);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( sr <* shape_representation | (NOT ((SIZEOF(TYPEOF(
|
|
sr) * ['ASSOCIATIVE_DRAUGHTING.' +
|
|
'GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'ELEMENTARY_2D_GEOMETRIC_CURVE_SET_SHAPE_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'EDGE_BASED_2D_WIREFRAME_SHAPE_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'SHELL_BASED_2D_WIREFRAME_SHAPE_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.' +
|
|
'MANIFOLD_SURFACE_SHAPE_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.ADVANCED_BREP_SHAPE_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.ELEMENTARY_BREP_SHAPE_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.FACETED_BREP_SHAPE_REPRESENTATION',
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_DIMENSION_REPRESENTATION']) = 1)
|
|
OR (SIZEOF(QUERY ( it <* sr\representation.items | (NOT (
|
|
SIZEOF(TYPEOF(it) * [
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_2D',
|
|
'ASSOCIATIVE_DRAUGHTING.AXIS2_PLACEMENT_3D']) = 1)) )) = 0) OR
|
|
(SIZEOF(QUERY ( pdr <* USEDIN(sr,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') | (
|
|
NOT (SIZEOF(TYPEOF(pdr\property_definition_representation.
|
|
definition.definition) * [
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_ASPECT_RELATIONSHIP',
|
|
'ASSOCIATIVE_DRAUGHTING.SHAPE_ASPECT']) = 1)) )) = 0))) )) = 0;
|
|
|
|
END_RULE; -- subtype_mandatory_shape_representation_2d_or_3d
|
|
|
|
RULE symbol_colour_instantiation FOR (symbol_colour);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* symbol_colour | (NOT (SIZEOF(USEDIN(each,
|
|
'')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- symbol_colour_instantiation
|
|
|
|
RULE terminator_symbol_constraint FOR (terminator_symbol);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( ts <* terminator_symbol | ((
|
|
'ASSOCIATIVE_DRAUGHTING.DEFINED_SYMBOL' IN TYPEOF(ts.item))
|
|
AND (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.PRE_DEFINED_TERMINATOR_SYMBOL' IN
|
|
TYPEOF(ts.item\defined_symbol.definition)))) )) = 0;
|
|
|
|
END_RULE; -- terminator_symbol_constraint
|
|
|
|
RULE text_font_usage FOR (pre_defined_text_font,
|
|
externally_defined_text_font);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( pdtf <* pre_defined_text_font | (NOT (SIZEOF(
|
|
USEDIN(pdtf,'ASSOCIATIVE_DRAUGHTING.' + 'TEXT_LITERAL.FONT'))
|
|
>= 1)) )) = 0;
|
|
wr2: SIZEOF(QUERY ( edtf <* externally_defined_text_font | (NOT (
|
|
SIZEOF(USEDIN(edtf,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'TEXT_LITERAL.FONT')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- text_font_usage
|
|
|
|
RULE text_style_for_defined_font_instantiation FOR (
|
|
text_style_for_defined_font);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* text_style_for_defined_font | (NOT (
|
|
SIZEOF(USEDIN(each,'')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- text_style_for_defined_font_instantiation
|
|
|
|
RULE text_style_instantiation FOR (text_style);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* text_style | (NOT (SIZEOF(USEDIN(each,''))
|
|
>= 1)) )) = 0;
|
|
|
|
END_RULE; -- text_style_instantiation
|
|
|
|
RULE tolerance_value_instantiation FOR (tolerance_value);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( each <* tolerance_value | (NOT (SIZEOF(USEDIN(each,
|
|
'')) >= 1)) )) = 0;
|
|
|
|
END_RULE; -- tolerance_value_instantiation
|
|
|
|
RULE units_name_and_prefix_constraint FOR (si_unit);
|
|
|
|
WHERE
|
|
wr1: SIZEOF(QUERY ( su <* si_unit | (NOT ((su.name = 'metre') XOR (su.
|
|
name = 'radian') XOR (su.name = 'steradian'))) )) = 0;
|
|
wr2: SIZEOF(QUERY ( lu <* QUERY ( su <* si_unit | (su.name = 'metre') )
|
|
| (NOT ((NOT EXISTS(lu.prefix)) XOR (lu.prefix = 'micro') XOR
|
|
(lu.prefix = 'milli') XOR (lu.prefix = 'centi') XOR (lu.
|
|
prefix = 'kilo'))) )) = 0;
|
|
wr3: SIZEOF(QUERY ( pau <* QUERY ( su <* si_unit | (su.name = 'radian') )
|
|
| EXISTS(pau.prefix) )) = 0;
|
|
wr4: SIZEOF(QUERY ( sau <* QUERY ( su <* si_unit | (su.name =
|
|
'steradian') ) | EXISTS(sau.prefix) )) = 0;
|
|
|
|
END_RULE; -- units_name_and_prefix_constraint
|
|
|
|
FUNCTION acyclic_composite_text(
|
|
start_composite: composite_text;
|
|
child_text: SET [1:?] OF text_or_character
|
|
): LOGICAL;
|
|
LOCAL
|
|
i : INTEGER;
|
|
local_annotation_text : SET [0:?] OF annotation_text;
|
|
local_composite_text : SET [0:?] OF composite_text;
|
|
local_children : SET [0:?] OF text_or_character;
|
|
END_LOCAL;
|
|
local_composite_text := QUERY ( child <* child_text | (
|
|
'ASSOCIATIVE_DRAUGHTING.COMPOSITE_TEXT' IN TYPEOF(child)) );
|
|
IF SIZEOF(local_composite_text) > 0 THEN
|
|
REPEAT i := 1 TO HIINDEX(local_composite_text) BY 1;
|
|
IF start_composite :=: local_composite_text[i] THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
END_REPEAT;
|
|
END_IF;
|
|
local_children := child_text;
|
|
IF SIZEOF(local_composite_text) > 0 THEN
|
|
REPEAT i := 1 TO HIINDEX(local_composite_text) BY 1;
|
|
local_children := local_children + local_composite_text[i].
|
|
collected_text;
|
|
END_REPEAT;
|
|
END_IF;
|
|
local_annotation_text := QUERY ( child <* child_text | (
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT' IN TYPEOF(child)) );
|
|
IF SIZEOF(local_annotation_text) > 0 THEN
|
|
REPEAT i := 1 TO HIINDEX(local_annotation_text) BY 1;
|
|
local_children := local_children + QUERY ( item <*
|
|
local_annotation_text[i]\mapped_item.mapping_source.
|
|
mapped_representation.items | (SIZEOF([
|
|
'ASSOCIATIVE_DRAUGHTING.ANNOTATION_TEXT',
|
|
'ASSOCIATIVE_DRAUGHTING.COMPOSITE_TEXT'] * TYPEOF(item)) > 0) );
|
|
END_REPEAT;
|
|
END_IF;
|
|
IF local_children :<>: child_text THEN
|
|
RETURN(acyclic_composite_text(start_composite,local_children));
|
|
ELSE
|
|
RETURN(TRUE);
|
|
END_IF;
|
|
|
|
END_FUNCTION; -- acyclic_composite_text
|
|
|
|
FUNCTION acyclic_curve_replica(
|
|
rep: curve_replica;
|
|
parent: curve
|
|
): BOOLEAN;
|
|
IF NOT ('ASSOCIATIVE_DRAUGHTING.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; -- acyclic_curve_replica
|
|
|
|
FUNCTION acyclic_mapped_item_usage(
|
|
rep: representation
|
|
): BOOLEAN;
|
|
LOCAL
|
|
i : INTEGER;
|
|
items : SET OF representation_item;
|
|
END_LOCAL;
|
|
items := QUERY ( item <* rep.items | (
|
|
'ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM' IN TYPEOF(item)) );
|
|
IF SIZEOF(items) = 0 THEN
|
|
RETURN(FALSE);
|
|
ELSE
|
|
REPEAT i := 1 TO HIINDEX(items) BY 1;
|
|
IF items[i]\mapped_item.mapping_source.mapped_representation :=:
|
|
rep THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
RETURN(acyclic_mapped_item_usage(items[i]\mapped_item.
|
|
mapping_source.mapped_representation));
|
|
END_IF;
|
|
END_REPEAT;
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
|
|
END_FUNCTION; -- acyclic_mapped_item_usage
|
|
|
|
FUNCTION acyclic_mapped_representation(
|
|
parent_set: SET OF representation;
|
|
children_set: SET OF representation_item
|
|
): BOOLEAN;
|
|
LOCAL
|
|
i : INTEGER;
|
|
x : SET OF representation_item;
|
|
y : SET OF representation_item;
|
|
END_LOCAL;
|
|
x := QUERY ( z <* children_set | ('ASSOCIATIVE_DRAUGHTING.MAPPED_ITEM'
|
|
IN TYPEOF(z)) );
|
|
IF SIZEOF(x) > 0 THEN
|
|
REPEAT i := 1 TO HIINDEX(x) BY 1;
|
|
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) BY 1;
|
|
y := QUERY ( z <* bag_to_set(USEDIN(x[i],'')) | (
|
|
'ASSOCIATIVE_DRAUGHTING.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; -- acyclic_mapped_representation
|
|
|
|
FUNCTION acyclic_point_replica(
|
|
rep: point_replica;
|
|
parent: point
|
|
): BOOLEAN;
|
|
IF NOT ('ASSOCIATIVE_DRAUGHTING.POINT_REPLICA' IN TYPEOF(parent))
|
|
THEN
|
|
RETURN(TRUE);
|
|
END_IF;
|
|
IF parent :=: rep THEN
|
|
RETURN(FALSE);
|
|
ELSE
|
|
RETURN(acyclic_point_replica(rep,parent\point_replica.parent_pt));
|
|
END_IF;
|
|
|
|
END_FUNCTION; -- acyclic_point_replica
|
|
|
|
FUNCTION acyclic_surface_replica(
|
|
rep: surface_replica;
|
|
parent: surface
|
|
): BOOLEAN;
|
|
IF NOT ('ASSOCIATIVE_DRAUGHTING.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; -- acyclic_surface_replica
|
|
|
|
FUNCTION aspect_ratio(
|
|
p: planar_box
|
|
): positive_ratio_measure;
|
|
RETURN(p.size_in_x / p.size_in_y);
|
|
|
|
END_FUNCTION; -- aspect_ratio
|
|
|
|
FUNCTION associated_surface(
|
|
arg: pcurve_or_surface
|
|
): surface;
|
|
LOCAL
|
|
surf : surface;
|
|
END_LOCAL;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.PCURVE' IN TYPEOF(arg) THEN
|
|
surf := arg.basis_surface;
|
|
ELSE
|
|
surf := arg;
|
|
END_IF;
|
|
RETURN(surf);
|
|
|
|
END_FUNCTION; -- associated_surface
|
|
|
|
FUNCTION bag_to_set(
|
|
the_bag: BAG OF GENERIC:intype
|
|
): SET OF GENERIC:intype;
|
|
LOCAL
|
|
i : INTEGER;
|
|
the_set : SET OF GENERIC:intype := [];
|
|
END_LOCAL;
|
|
IF SIZEOF(the_bag) > 0 THEN
|
|
REPEAT i := 1 TO HIINDEX(the_bag) BY 1;
|
|
the_set := the_set + the_bag[i];
|
|
END_REPEAT;
|
|
END_IF;
|
|
RETURN(the_set);
|
|
|
|
END_FUNCTION; -- bag_to_set
|
|
|
|
FUNCTION base_axis(
|
|
dim: INTEGER;
|
|
axis1, axis2, axis3: direction
|
|
): LIST [2:3] OF direction;
|
|
LOCAL
|
|
u : LIST [2:3] OF direction;
|
|
vec : direction;
|
|
factor : REAL;
|
|
END_LOCAL;
|
|
IF dim = 3 THEN
|
|
u[3] := NVL(normalise(axis3),direction([0,0,1]));
|
|
u[1] := first_proj_axis(u[3],axis1);
|
|
u[2] := second_proj_axis(u[3],u[1],axis2);
|
|
ELSE
|
|
u[3] := ?;
|
|
IF EXISTS(axis1) THEN
|
|
u[1] := normalise(axis1);
|
|
u[2] := orthogonal_complement(u[1]);
|
|
IF EXISTS(axis2) THEN
|
|
factor := dot_product(axis2,u[2]);
|
|
IF factor < 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
|
|
u[2] := normalise(axis2);
|
|
u[1] := orthogonal_complement(u[2]);
|
|
u[1].direction_ratios[1] := -u[1].direction_ratios[1];
|
|
u[1].direction_ratios[2] := -u[1].direction_ratios[2];
|
|
ELSE
|
|
u[1].direction_ratios[1] := 1;
|
|
u[1].direction_ratios[2] := 0;
|
|
u[2].direction_ratios[1] := 0;
|
|
u[2].direction_ratios[2] := 1;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(u);
|
|
|
|
END_FUNCTION; -- base_axis
|
|
|
|
FUNCTION basis_curve_check(
|
|
cv: curve
|
|
): BOOLEAN;
|
|
IF ('ASSOCIATIVE_DRAUGHTING.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\
|
|
b_spline_curve.self_intersect = FALSE) THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.CONIC','ASSOCIATIVE_DRAUGHTING.LINE'] *
|
|
TYPEOF(cv)) = 1 THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.CURVE_REPLICA'] * TYPEOF(cv)) = 1 THEN
|
|
RETURN(basis_curve_check(cv\curve_replica.parent_curve));
|
|
ELSE
|
|
IF (SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.OFFSET_CURVE_3D'] * TYPEOF(cv)) = 1)
|
|
AND (cv\offset_curve_3d.self_intersect = FALSE) THEN
|
|
RETURN(basis_curve_check(cv\offset_curve_3d.basis_curve));
|
|
ELSE
|
|
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.PCURVE'] * TYPEOF(cv)) = 1 THEN
|
|
RETURN(basis_curve_check(cv\pcurve.reference_to_curve\
|
|
representation.items[1]) AND basis_surface_check(cv\
|
|
pcurve.basis_surface));
|
|
ELSE
|
|
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.SURFACE_CURVE'] * TYPEOF(cv)) = 1
|
|
THEN
|
|
IF basis_curve_check(cv\surface_curve.curve_3d) THEN
|
|
REPEAT i := 1 TO SIZEOF(cv\surface_curve.
|
|
associated_geometry) BY 1;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.SURFACE' IN TYPEOF(cv\
|
|
surface_curve.associated_geometry[i]) THEN
|
|
IF NOT basis_surface_check(cv\surface_curve.
|
|
associated_geometry[i]) THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.PCURVE' IN TYPEOF(cv\
|
|
surface_curve.associated_geometry[i]) THEN
|
|
IF NOT basis_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 'ASSOCIATIVE_DRAUGHTING.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; -- basis_curve_check
|
|
|
|
FUNCTION basis_surface_check(
|
|
surf: surface
|
|
): BOOLEAN;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.SWEPT_SURFACE' IN TYPEOF(surf) THEN
|
|
RETURN(basis_curve_check(surf\swept_surface.swept_curve));
|
|
ELSE
|
|
IF ('ASSOCIATIVE_DRAUGHTING.OFFSET_SURFACE' IN TYPEOF(surf)) AND (
|
|
surf\offset_surface.self_intersect = FALSE) THEN
|
|
RETURN(basis_surface_check(surf\offset_surface.basis_surface));
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.SURFACE REPLICA' IN TYPEOF(surf)
|
|
THEN
|
|
RETURN(basis_surface_check(surf\surface_replica.parent_surface));
|
|
ELSE
|
|
IF ('ASSOCIATIVE_DRAUGHTING.B_SPLINE_SURFACE' IN TYPEOF(surf))
|
|
AND (surf\b_spline_surface.self_intersect = FALSE) THEN
|
|
RETURN(TRUE);
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(FALSE);
|
|
|
|
END_FUNCTION; -- basis_surface_check
|
|
|
|
FUNCTION boolean_choose(
|
|
b: BOOLEAN;
|
|
choice1, choice2: GENERIC:item
|
|
): GENERIC:item;
|
|
IF b THEN
|
|
RETURN(choice1);
|
|
ELSE
|
|
RETURN(choice2);
|
|
END_IF;
|
|
|
|
END_FUNCTION; -- boolean_choose
|
|
|
|
FUNCTION build_2axes(
|
|
ref_direction: direction
|
|
): LIST [2:2] OF direction;
|
|
LOCAL
|
|
u : LIST [2:2] OF direction;
|
|
END_LOCAL;
|
|
u[1] := NVL(normalise(ref_direction),direction([1,0]));
|
|
u[2] := orthogonal_complement(u[1]);
|
|
RETURN(u);
|
|
|
|
END_FUNCTION; -- build_2axes
|
|
|
|
FUNCTION build_axes(
|
|
axis, ref_direction: direction
|
|
): LIST [3:3] OF direction;
|
|
LOCAL
|
|
u : LIST [3:3] OF direction;
|
|
END_LOCAL;
|
|
u[3] := NVL(normalise(axis),direction([0,0,1]));
|
|
u[1] := first_proj_axis(u[3],ref_direction);
|
|
u[2] := normalise(cross_product(u[3],u[1])).orientation;
|
|
RETURN(u);
|
|
|
|
END_FUNCTION; -- build_axes
|
|
|
|
FUNCTION check_associative_shape_aspects(
|
|
sdr: shape_definition_representation
|
|
): BOOLEAN;
|
|
LOCAL
|
|
sr1 : SET OF representation;
|
|
sr2 : SET OF representation;
|
|
i : INTEGER;
|
|
j : INTEGER;
|
|
k : INTEGER;
|
|
dm : SET OF representation;
|
|
pv : SET OF representation;
|
|
END_LOCAL;
|
|
IF SIZEOF(sdr.used_representation.items) <> 2 THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
sr1 := using_representations(sdr.used_representation.items[1]);
|
|
sr2 := using_representations(sdr.used_representation.items[2]);
|
|
REPEAT i := 1 TO HIINDEX(sr1) BY 1;
|
|
dm := representations_mapped_into(sr1[i]);
|
|
REPEAT j := 1 TO HIINDEX(dm) BY 1;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_MODEL' IN TYPEOF(dm[j])
|
|
THEN
|
|
IF dm[j] IN sr2 THEN
|
|
RETURN(TRUE);
|
|
END_IF;
|
|
pv := representations_mapped_into(dm[j]);
|
|
REPEAT k := 1 TO HIINDEX(pv) BY 1;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.PRESENTATION_VIEW' IN TYPEOF(pv[k])
|
|
THEN
|
|
IF pv[k] IN sr2 THEN
|
|
RETURN(TRUE);
|
|
END_IF;
|
|
END_IF;
|
|
END_REPEAT;
|
|
END_IF;
|
|
END_REPEAT;
|
|
END_REPEAT;
|
|
REPEAT i := 1 TO HIINDEX(sr2) BY 1;
|
|
dm := representations_mapped_into(sr2[i]);
|
|
REPEAT j := 1 TO HIINDEX(dm) BY 1;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.DRAUGHTING_MODEL' IN TYPEOF(dm[j])
|
|
THEN
|
|
IF dm[j] IN sr1 THEN
|
|
RETURN(TRUE);
|
|
END_IF;
|
|
pv := representations_mapped_into(dm[j]);
|
|
REPEAT k := 1 TO HIINDEX(pv) BY 1;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.PRESENTATION_VIEW' IN TYPEOF(pv[k])
|
|
THEN
|
|
IF pv[k] IN sr1 THEN
|
|
RETURN(TRUE);
|
|
END_IF;
|
|
END_IF;
|
|
END_REPEAT;
|
|
END_IF;
|
|
END_REPEAT;
|
|
END_REPEAT;
|
|
RETURN(FALSE);
|
|
|
|
END_FUNCTION; -- check_associative_shape_aspects
|
|
|
|
FUNCTION check_text_alignment(
|
|
ct: composite_text
|
|
): BOOLEAN;
|
|
LOCAL
|
|
a : SET OF text_alignment := [];
|
|
i : INTEGER;
|
|
END_LOCAL;
|
|
REPEAT i := 1 TO HIINDEX(ct.collected_text) BY 1;
|
|
a := a + [ct.collected_text[i]\text_literal.alignment];
|
|
END_REPEAT;
|
|
RETURN(SIZEOF(a) = 1);
|
|
|
|
END_FUNCTION; -- check_text_alignment
|
|
|
|
FUNCTION check_text_font(
|
|
ct: composite_text
|
|
): BOOLEAN;
|
|
LOCAL
|
|
f : SET OF font_select := [];
|
|
i : INTEGER;
|
|
END_LOCAL;
|
|
REPEAT i := 1 TO HIINDEX(ct.collected_text) BY 1;
|
|
f := f + [ct.collected_text[i]\text_literal.font];
|
|
END_REPEAT;
|
|
RETURN(SIZEOF(f) <= 1);
|
|
|
|
END_FUNCTION; -- check_text_font
|
|
|
|
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; -- conditional_reverse
|
|
|
|
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 BY 1;
|
|
IF (NOT ('ASSOCIATIVE_DRAUGHTING.PCURVE' IN TYPEOF(c\composite_curve
|
|
.segments[k].parent_curve))) AND (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.SURFACE_CURVE' IN TYPEOF(c\
|
|
composite_curve.segments[k].parent_curve))) AND (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c\
|
|
composite_curve.segments[k].parent_curve))) THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
END_REPEAT;
|
|
RETURN(TRUE);
|
|
|
|
END_FUNCTION; -- constraints_composite_curve_on_surface
|
|
|
|
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) BY 1;
|
|
IF (NOT ('ASSOCIATIVE_DRAUGHTING.OPEN_SHELL' IN TYPEOF(m.
|
|
sbsm_boundary[j]))) AND (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.CLOSED_SHELL' IN
|
|
TYPEOF(m.sbsm_boundary[j])))
|
|
THEN
|
|
result := FALSE;
|
|
RETURN(result);
|
|
END_IF;
|
|
END_REPEAT;
|
|
RETURN(result);
|
|
|
|
END_FUNCTION; -- constraints_geometry_shell_based_surface_model
|
|
|
|
FUNCTION constraints_geometry_shell_based_wireframe_model(
|
|
m: shell_based_wireframe_model
|
|
): BOOLEAN;
|
|
LOCAL
|
|
result : BOOLEAN := TRUE;
|
|
END_LOCAL;
|
|
REPEAT j := 1 TO SIZEOF(m.sbwm_boundary) BY 1;
|
|
IF (NOT ('ASSOCIATIVE_DRAUGHTING.WIRE_SHELL' IN TYPEOF(m.
|
|
sbwm_boundary[j]))) AND (NOT (
|
|
'ASSOCIATIVE_DRAUGHTING.VERTEX_SHELL' IN
|
|
TYPEOF(m.sbwm_boundary[j])))
|
|
THEN
|
|
result := FALSE;
|
|
RETURN(result);
|
|
END_IF;
|
|
END_REPEAT;
|
|
RETURN(result);
|
|
|
|
END_FUNCTION; -- constraints_geometry_shell_based_wireframe_model
|
|
|
|
FUNCTION constraints_param_b_spline(
|
|
degree, up_knots, up_cp: INTEGER;
|
|
knot_mult: LIST OF INTEGER;
|
|
knots: LIST OF parameter_value
|
|
): BOOLEAN;
|
|
LOCAL
|
|
k : INTEGER;
|
|
l : INTEGER;
|
|
sum : INTEGER;
|
|
result : BOOLEAN := TRUE;
|
|
END_LOCAL;
|
|
sum := knot_mult[1];
|
|
REPEAT i := 2 TO up_knots BY 1;
|
|
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 BY 1;
|
|
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; -- constraints_param_b_spline
|
|
|
|
FUNCTION constraints_rectangular_composite_surface(
|
|
s: rectangular_composite_surface
|
|
): BOOLEAN;
|
|
REPEAT i := 1 TO s.n_u BY 1;
|
|
REPEAT j := 1 TO s.n_v BY 1;
|
|
IF NOT (('ASSOCIATIVE_DRAUGHTING.B_SPLINE_SURFACE' IN TYPEOF(s.
|
|
segments[i][j].parent_surface)) OR (
|
|
'ASSOCIATIVE_DRAUGHTING.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 BY 1;
|
|
REPEAT j := 1 TO s.n_v BY 1;
|
|
IF s.segments[i][j].u_transition = discontinuous THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
END_REPEAT;
|
|
END_REPEAT;
|
|
REPEAT i := 1 TO s.n_u BY 1;
|
|
REPEAT j := 1 TO s.n_v - 1 BY 1;
|
|
IF s.segments[i][j].v_transition = discontinuous THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
END_REPEAT;
|
|
END_REPEAT;
|
|
RETURN(TRUE);
|
|
|
|
END_FUNCTION; -- constraints_rectangular_composite_surface
|
|
|
|
FUNCTION cross_product(
|
|
arg1, arg2: direction
|
|
): vector;
|
|
LOCAL
|
|
v2 : LIST [3:3] OF REAL;
|
|
v1 : LIST [3:3] OF REAL;
|
|
mag : REAL;
|
|
res : direction;
|
|
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.direction_ratios[1] := (v1[2] * v2[3]) - (v1[3] * v2[2]);
|
|
res.direction_ratios[2] := (v1[3] * v2[1]) - (v1[1] * v2[3]);
|
|
res.direction_ratios[3] := (v1[1] * v2[2]) - (v1[2] * v2[1]);
|
|
mag := 0;
|
|
REPEAT i := 1 TO 3 BY 1;
|
|
mag := mag + (res.direction_ratios[i] * res.direction_ratios[i]);
|
|
END_REPEAT;
|
|
IF mag > 0 THEN
|
|
result.orientation := res;
|
|
result.magnitude := SQRT(mag);
|
|
ELSE
|
|
result.orientation := arg1;
|
|
result.magnitude := 0;
|
|
END_IF;
|
|
RETURN(result);
|
|
END;
|
|
END_IF;
|
|
|
|
END_FUNCTION; -- cross_product
|
|
|
|
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 BY 1;
|
|
IF b.weights[i] <= 0 THEN
|
|
result := FALSE;
|
|
RETURN(result);
|
|
END_IF;
|
|
END_REPEAT;
|
|
RETURN(result);
|
|
|
|
END_FUNCTION; -- curve_weights_positive
|
|
|
|
FUNCTION derive_dimensional_exponents(
|
|
x: unit
|
|
): dimensional_exponents;
|
|
LOCAL
|
|
i : INTEGER;
|
|
result : dimensional_exponents := dimensional_exponents(0,0,0,0,0,0,
|
|
0);
|
|
END_LOCAL;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.DERIVED_UNIT' IN TYPEOF(x) THEN
|
|
REPEAT i := LOINDEX(x.elements) TO HIINDEX(x.elements) BY 1;
|
|
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; -- derive_dimensional_exponents
|
|
|
|
FUNCTION dimension_of(
|
|
item: geometric_representation_item
|
|
): dimension_count;
|
|
LOCAL
|
|
x : SET OF representation;
|
|
y : representation_context;
|
|
END_LOCAL;
|
|
x := using_representations(item);
|
|
y := x[1].context_of_items;
|
|
RETURN(y\geometric_representation_context.coordinate_space_dimension);
|
|
|
|
END_FUNCTION; -- dimension_of
|
|
|
|
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));
|
|
gram : RETURN(dimensional_exponents(0,1,0,0,0,0,0));
|
|
second : RETURN(dimensional_exponents(0,0,1,0,0,0,0));
|
|
ampere : RETURN(dimensional_exponents(0,0,0,1,0,0,0));
|
|
kelvin : RETURN(dimensional_exponents(0,0,0,0,1,0,0));
|
|
mole : RETURN(dimensional_exponents(0,0,0,0,0,1,0));
|
|
candela : RETURN(dimensional_exponents(0,0,0,0,0,0,1));
|
|
radian : RETURN(dimensional_exponents(0,0,0,0,0,0,0));
|
|
steradian : RETURN(dimensional_exponents(0,0,0,0,0,0,0));
|
|
hertz : RETURN(dimensional_exponents(0,0,-1,0,0,0,0));
|
|
newton : RETURN(dimensional_exponents(1,1,-2,0,0,0,0));
|
|
pascal : RETURN(dimensional_exponents(-1,1,-2,0,0,0,0));
|
|
joule : RETURN(dimensional_exponents(2,1,-2,0,0,0,0));
|
|
watt : RETURN(dimensional_exponents(2,1,-3,0,0,0,0));
|
|
coulomb : RETURN(dimensional_exponents(0,0,1,1,0,0,0));
|
|
volt : RETURN(dimensional_exponents(2,1,-3,-1,0,0,0));
|
|
farad : RETURN(dimensional_exponents(-2,-1,4,1,0,0,0));
|
|
ohm : RETURN(dimensional_exponents(2,1,-3,-2,0,0,0));
|
|
siemens : RETURN(dimensional_exponents(-2,-1,3,2,0,0,0));
|
|
weber : RETURN(dimensional_exponents(2,1,-2,-1,0,0,0));
|
|
tesla : RETURN(dimensional_exponents(0,1,-2,-1,0,0,0));
|
|
henry : RETURN(dimensional_exponents(2,1,-2,-2,0,0,0));
|
|
degree_celsius : RETURN(dimensional_exponents(0,0,0,0,1,0,0));
|
|
lumen : RETURN(dimensional_exponents(0,0,0,0,0,0,1));
|
|
lux : RETURN(dimensional_exponents(-2,0,0,0,0,0,1));
|
|
becquerel : RETURN(dimensional_exponents(0,0,-1,0,0,0,0));
|
|
gray : RETURN(dimensional_exponents(2,0,-2,0,0,0,0));
|
|
sievert : RETURN(dimensional_exponents(2,0,-2,0,0,0,0));
|
|
END_CASE;
|
|
|
|
END_FUNCTION; -- dimensions_for_si_unit
|
|
|
|
FUNCTION dot_product(
|
|
arg1, arg2: direction
|
|
): REAL;
|
|
LOCAL
|
|
ndim : INTEGER;
|
|
scalar : REAL;
|
|
vec1 : direction;
|
|
vec2 : direction;
|
|
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;
|
|
REPEAT i := 1 TO ndim BY 1;
|
|
scalar := scalar + (vec1.direction_ratios[i] * vec2.
|
|
direction_ratios[i]);
|
|
END_REPEAT;
|
|
END;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(scalar);
|
|
|
|
END_FUNCTION; -- dot_product
|
|
|
|
FUNCTION edge_reversed(
|
|
an_edge: edge
|
|
): edge;
|
|
LOCAL
|
|
the_reverse : edge;
|
|
END_LOCAL;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.ORIENTED_EDGE' IN TYPEOF(an_edge) THEN
|
|
the_reverse := oriented_edge(an_edge\oriented_edge.edge_element,NOT
|
|
an_edge\oriented_edge.orientation);
|
|
ELSE
|
|
the_reverse := oriented_edge(an_edge,FALSE);
|
|
END_IF;
|
|
RETURN(the_reverse);
|
|
|
|
END_FUNCTION; -- edge_reversed
|
|
|
|
FUNCTION face_bound_reversed(
|
|
a_face_bound: face_bound
|
|
): face_bound;
|
|
LOCAL
|
|
the_reverse : face_bound;
|
|
END_LOCAL;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.FACE_OUTER_BOUND' IN TYPEOF(a_face_bound)
|
|
THEN
|
|
the_reverse := face_bound(a_face_bound\face_bound.bound,NOT
|
|
a_face_bound\face_bound.orientation);
|
|
ELSE
|
|
the_reverse := face_bound(a_face_bound.bound,NOT a_face_bound.
|
|
orientation);
|
|
END_IF;
|
|
RETURN(the_reverse);
|
|
|
|
END_FUNCTION; -- face_bound_reversed
|
|
|
|
FUNCTION face_reversed(
|
|
a_face: face
|
|
): face;
|
|
LOCAL
|
|
the_reverse : face;
|
|
END_LOCAL;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.ORIENTED_FACE' IN TYPEOF(a_face) THEN
|
|
the_reverse := oriented_face(a_face\oriented_face.face_element,NOT
|
|
a_face\oriented_face.orientation);
|
|
ELSE
|
|
the_reverse := oriented_face(a_face,FALSE);
|
|
END_IF;
|
|
RETURN(the_reverse);
|
|
|
|
END_FUNCTION; -- face_reversed
|
|
|
|
FUNCTION first_proj_axis(
|
|
z_axis, arg: direction
|
|
): direction;
|
|
LOCAL
|
|
x_vec : vector;
|
|
v : direction;
|
|
z : direction;
|
|
x_axis : direction;
|
|
END_LOCAL;
|
|
IF (NOT EXISTS(z_axis)) OR (NOT EXISTS(arg)) OR (arg.dim <> 3) THEN
|
|
x_axis := ?;
|
|
ELSE
|
|
z_axis := normalise(z_axis);
|
|
IF NOT EXISTS(arg) THEN
|
|
IF z_axis <> direction([1,0,0]) THEN
|
|
v := direction([1,0,0]);
|
|
ELSE
|
|
v := direction([0,1,0]);
|
|
END_IF;
|
|
ELSE
|
|
IF cross_product(arg,z).magnitude = 0 THEN
|
|
RETURN(?);
|
|
ELSE
|
|
v := normalise(arg);
|
|
END_IF;
|
|
END_IF;
|
|
x_vec := scalar_times_vector(dot_product(v,z),z_axis);
|
|
x_axis := vector_difference(v,x_vec).orientation;
|
|
x_axis := normalise(x_axis);
|
|
END_IF;
|
|
RETURN(x_axis);
|
|
|
|
END_FUNCTION; -- first_proj_axis
|
|
|
|
FUNCTION gbsf_check_curve(
|
|
cv: curve
|
|
): BOOLEAN;
|
|
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.CIRCLE','ASSOCIATIVE_DRAUGHTING.ELLIPSE'] *
|
|
TYPEOF(cv)) = 1 THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
IF ('ASSOCIATIVE_DRAUGHTING.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\
|
|
b_spline_curve.self_intersect = FALSE) THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
IF ('ASSOCIATIVE_DRAUGHTING.COMPOSITE_CURVE' IN TYPEOF(cv)) AND (
|
|
cv\composite_curve.self_intersect = FALSE) THEN
|
|
RETURN(SIZEOF(QUERY ( seg <* cv\composite_curve.segments | (NOT
|
|
gbsf_check_curve(seg.parent_curve)) )) = 0);
|
|
ELSE
|
|
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.CURVE_REPLICA'] * TYPEOF(cv)) = 1
|
|
THEN
|
|
RETURN(gbsf_check_curve(cv\curve_replica.parent_curve));
|
|
ELSE
|
|
IF (SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.OFFSET_CURVE_3D'] * TYPEOF(cv)) = 1)
|
|
AND (cv\offset_curve_3d.self_intersect = FALSE) THEN
|
|
RETURN(gbsf_check_curve(cv\offset_curve_3d.basis_curve));
|
|
ELSE
|
|
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.PCURVE'] * TYPEOF(cv)) = 1 THEN
|
|
RETURN(gbsf_check_curve(cv\pcurve.reference_to_curve.items
|
|
[1]) AND gbsf_check_surface(cv\pcurve.basis_surface));
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.POLYLINE' IN TYPEOF(cv) THEN
|
|
IF (SIZEOF(cv\polyline.points) >= 3) AND (SIZEOF(
|
|
bag_to_set(USEDIN(cv,'')) - bag_to_set(USEDIN(cv,
|
|
'ASSOCIATIVE_DRAUGHTING.INTERSECTION_CURVE.CURVE_3D')))
|
|
=
|
|
0) THEN
|
|
RETURN(TRUE);
|
|
END_IF;
|
|
ELSE
|
|
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.SURFACE_CURVE'] * TYPEOF(cv))
|
|
= 1 THEN
|
|
IF gbsf_check_curve(cv\surface_curve.curve_3d) THEN
|
|
REPEAT i := 1 TO SIZEOF(cv\surface_curve.
|
|
associated_geometry) BY 1;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.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 'ASSOCIATIVE_DRAUGHTING.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;
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.TRIMMED_CURVE' IN TYPEOF(cv)
|
|
THEN
|
|
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.BOUNDED_CURVE',
|
|
'ASSOCIATIVE_DRAUGHTING.LINE',
|
|
'ASSOCIATIVE_DRAUGHTING.PARABOLA',
|
|
'ASSOCIATIVE_DRAUGHTING.HYPERBOLA'] * TYPEOF(cv\
|
|
trimmed_curve.basis_curve)) = 1 THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
RETURN(gbsf_check_curve(cv\trimmed_curve.
|
|
basis_curve));
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(FALSE);
|
|
|
|
END_FUNCTION; -- gbsf_check_curve
|
|
|
|
FUNCTION gbsf_check_point(
|
|
pnt: point
|
|
): BOOLEAN;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.CARTESIAN_POINT' IN TYPEOF(pnt) THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.POINT_ON_CURVE' IN TYPEOF(pnt) THEN
|
|
RETURN(gbsf_check_curve(pnt\point_on_curve.basis_curve));
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.POINT_ON_SURFACE' IN TYPEOF(pnt) THEN
|
|
RETURN(gbsf_check_surface(pnt\point_on_surface.basis_surface));
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.DEGENERATE_PCURVE' IN TYPEOF(pnt)
|
|
THEN
|
|
RETURN(gbsf_check_curve(pnt\degenerate_pcurve.
|
|
reference_to_curve.items[1]) AND gbsf_check_surface(pnt\
|
|
degenerate_pcurve.basis_surface));
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(FALSE);
|
|
|
|
END_FUNCTION; -- gbsf_check_point
|
|
|
|
FUNCTION gbsf_check_surface(
|
|
sf: surface
|
|
): BOOLEAN;
|
|
IF ('ASSOCIATIVE_DRAUGHTING.B_SPLINE_SURFACE' IN TYPEOF(sf)) AND (sf\
|
|
b_spline_surface.self_intersect = FALSE) THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.SPHERICAL_SURFACE',
|
|
'ASSOCIATIVE_DRAUGHTING.TOROIDAL_SURFACE'] * TYPEOF(sf)) = 1
|
|
THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.CURVE_BOUNDED_SURFACE' IN TYPEOF(sf)
|
|
THEN
|
|
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.CONICAL_SURFACE',
|
|
'ASSOCIATIVE_DRAUGHTING.CYLINDRICAL_SURFACE',
|
|
'ASSOCIATIVE_DRAUGHTING.PLANE'] * TYPEOF(sf\
|
|
curve_bounded_surface.basis_surface)) = 1 THEN
|
|
RETURN(SIZEOF(QUERY ( bcurve <* sf\curve_bounded_surface.
|
|
boundaries | (NOT gbsf_check_curve(bcurve)) )) = 0);
|
|
ELSE
|
|
IF gbsf_check_surface(sf\curve_bounded_surface.basis_surface)
|
|
THEN
|
|
RETURN(SIZEOF(QUERY ( bcurve <* sf\curve_bounded_surface.
|
|
boundaries | (NOT gbsf_check_curve(bcurve)) )) = 0);
|
|
END_IF;
|
|
END_IF;
|
|
ELSE
|
|
IF ('ASSOCIATIVE_DRAUGHTING.OFFSET_SURFACE' IN TYPEOF(sf)) AND (
|
|
sf\offset_surface.self_intersect = FALSE) THEN
|
|
RETURN(gbsf_check_surface(sf\offset_surface.basis_surface));
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.RECTANGULAR_COMPOSITE_SURFACE' IN
|
|
TYPEOF(sf) THEN
|
|
REPEAT i := 1 TO SIZEOF(sf\rectangular_composite_surface.
|
|
segments) BY 1;
|
|
REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface.
|
|
segments[i]) BY 1;
|
|
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 'ASSOCIATIVE_DRAUGHTING.RECTANGULAR_TRIMMED_SURFACE' IN
|
|
TYPEOF(sf) THEN
|
|
IF SIZEOF(['ASSOCIATIVE_DRAUGHTING.CONICAL_SURFACE',
|
|
'ASSOCIATIVE_DRAUGHTING.CYLINDRICAL_SURFACE',
|
|
'ASSOCIATIVE_DRAUGHTING.PLANE'] * TYPEOF(sf\
|
|
rectangular_trimmed_surface.basis_surface)) = 1 THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
RETURN(gbsf_check_surface(sf\rectangular_trimmed_surface
|
|
.basis_surface));
|
|
END_IF;
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.SURFACE_REPLICA' IN TYPEOF(sf)
|
|
THEN
|
|
RETURN(gbsf_check_surface(sf\surface_replica.
|
|
parent_surface));
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.SWEPT_SURFACE' 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;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(FALSE);
|
|
|
|
END_FUNCTION; -- gbsf_check_surface
|
|
|
|
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 'ASSOCIATIVE_DRAUGHTING.PCURVE' IN TYPEOF(c) THEN
|
|
surfs := [c\pcurve.basis_surface];
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.SURFACE_CURVE' IN TYPEOF(c) THEN
|
|
n := SIZEOF(c\surface_curve.associated_geometry);
|
|
REPEAT i := 1 TO n BY 1;
|
|
surfs := surfs + associated_surface(c\surface_curve.
|
|
associated_geometry[i]);
|
|
END_REPEAT;
|
|
END_IF;
|
|
END_IF;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF(c)
|
|
THEN
|
|
-- n := SIZEOF(c\composite_curve_on_surface.segments);
|
|
n := SIZEOF(c\composite_curve.segments);
|
|
-- surfs := get_basis_surface(c\composite_curve_on_surface.segments[1].
|
|
surfs := get_basis_surface(c\composite_curve.segments[1].
|
|
parent_curve);
|
|
IF n > 1 THEN
|
|
REPEAT i := 2 TO n BY 1;
|
|
-- surfs := surfs * get_basis_surface(c\composite_curve_on_surface.
|
|
surfs := surfs * get_basis_surface(c\composite_curve.
|
|
segments[i].parent_curve);
|
|
END_REPEAT;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(surfs);
|
|
|
|
END_FUNCTION; -- get_basis_surface
|
|
|
|
FUNCTION item_in_context(
|
|
item: representation_item;
|
|
cntxt: representation_context
|
|
): BOOLEAN;
|
|
LOCAL
|
|
i : INTEGER;
|
|
y : BAG OF representation_item;
|
|
END_LOCAL;
|
|
IF SIZEOF(USEDIN(item,'ASSOCIATIVE_DRAUGHTING.REPRESENTATION.ITEMS') *
|
|
cntxt.representations_in_context) > 0 THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
y := QUERY ( z <* USEDIN(item,'') | (
|
|
'ASSOCIATIVE_DRAUGHTING.REPRESENTATION_ITEM' IN TYPEOF(z)) );
|
|
IF SIZEOF(y) > 0 THEN
|
|
REPEAT i := 1 TO HIINDEX(y) BY 1;
|
|
IF item_in_context(y[i],cntxt) THEN
|
|
RETURN(TRUE);
|
|
END_IF;
|
|
END_REPEAT;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(FALSE);
|
|
|
|
END_FUNCTION; -- item_in_context
|
|
|
|
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; -- leap_year
|
|
|
|
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) BY 1;
|
|
loops := loops + f.bounds[i].bound;
|
|
END_REPEAT;
|
|
RETURN(loops);
|
|
|
|
END_FUNCTION; -- list_face_loops
|
|
|
|
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) BY 1;
|
|
the_reverse := topology_reversed(a_list[i]) + the_reverse;
|
|
END_REPEAT;
|
|
RETURN(the_reverse);
|
|
|
|
END_FUNCTION; -- list_of_topology_reversed
|
|
|
|
FUNCTION list_to_array(
|
|
lis: LIST [0:?] OF GENERIC:t;
|
|
low, 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
|
|
REPEAT i := 1 TO n BY 1;
|
|
res[(low + i) - 1] := lis[i];
|
|
END_REPEAT;
|
|
RETURN(res);
|
|
END_IF;
|
|
|
|
END_FUNCTION; -- list_to_array
|
|
|
|
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) BY 1;
|
|
s := s + l[i];
|
|
END_REPEAT;
|
|
RETURN(s);
|
|
|
|
END_FUNCTION; -- list_to_set
|
|
|
|
FUNCTION make_array_of_array(
|
|
lis: LIST [1:?] OF LIST [1:?] OF GENERIC:t;
|
|
low1, u1, low2, u2: INTEGER
|
|
): ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC:t;
|
|
LOCAL
|
|
n2 : INTEGER;
|
|
n1 : INTEGER;
|
|
res : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC:t;
|
|
resl : LIST [1:?] OF ARRAY [low2:u2] OF GENERIC:t;
|
|
END_LOCAL;
|
|
n1 := SIZEOF(lis);
|
|
n2 := SIZEOF(lis[1]);
|
|
IF (n1 <> ((u1 - low1) + 1)) AND (n2 <> ((u2 - low2) + 1)) THEN
|
|
RETURN(?);
|
|
END_IF;
|
|
REPEAT i := 1 TO n1 BY 1;
|
|
IF SIZEOF(lis[i]) <> n2 THEN
|
|
RETURN(?);
|
|
END_IF;
|
|
END_REPEAT;
|
|
REPEAT i := 1 TO n1 BY 1;
|
|
resl[i] := list_to_array(lis[i],low2,u2);
|
|
END_REPEAT;
|
|
res := list_to_array(resl,low1,u1);
|
|
RETURN(res);
|
|
|
|
END_FUNCTION; -- make_array_of_array
|
|
|
|
FUNCTION mixed_loop_type_set(
|
|
l: SET [0:?] OF loop
|
|
): LOGICAL;
|
|
LOCAL
|
|
i : INTEGER;
|
|
poly_loop_type : LOGICAL;
|
|
END_LOCAL;
|
|
IF SIZEOF(l) <= 1 THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
poly_loop_type := 'ASSOCIATIVE_DRAUGHTING.POLY_LOOP' IN TYPEOF(l[1]);
|
|
REPEAT i := 2 TO SIZEOF(l) BY 1;
|
|
IF ('ASSOCIATIVE_DRAUGHTING.POLY_LOOP' IN TYPEOF(l[i])) <>
|
|
poly_loop_type THEN
|
|
RETURN(TRUE);
|
|
END_IF;
|
|
END_REPEAT;
|
|
RETURN(FALSE);
|
|
|
|
END_FUNCTION; -- mixed_loop_type_set
|
|
|
|
FUNCTION msb_shells(
|
|
brep: manifold_solid_brep;
|
|
schema_name: STRING
|
|
): SET [1:?] OF closed_shell;
|
|
IF (schema_name + '.BREP_WITH_VOIDS') IN TYPEOF(brep) THEN
|
|
RETURN(brep\brep_with_voids.voids + brep.outer);
|
|
ELSE
|
|
RETURN([brep.outer]);
|
|
END_IF;
|
|
|
|
END_FUNCTION; -- msb_shells
|
|
|
|
FUNCTION normalise(
|
|
arg: vector_or_direction
|
|
): vector_or_direction;
|
|
LOCAL
|
|
ndim : INTEGER;
|
|
v : direction;
|
|
vec : vector;
|
|
mag : REAL;
|
|
result : vector_or_direction;
|
|
END_LOCAL;
|
|
IF NOT EXISTS(arg) THEN
|
|
result := ?;
|
|
ELSE
|
|
ndim := arg.dim;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.VECTOR' IN TYPEOF(arg) THEN
|
|
BEGIN
|
|
vec := arg;
|
|
v := arg.orientation;
|
|
IF arg.magnitude = 0 THEN
|
|
RETURN(?);
|
|
ELSE
|
|
vec.magnitude := 1;
|
|
END_IF;
|
|
END;
|
|
ELSE
|
|
v := arg;
|
|
END_IF;
|
|
mag := 0;
|
|
REPEAT i := 1 TO ndim BY 1;
|
|
mag := mag + (v.direction_ratios[i] * v.direction_ratios[i]);
|
|
END_REPEAT;
|
|
IF mag > 0 THEN
|
|
mag := SQRT(mag);
|
|
REPEAT i := 1 TO ndim BY 1;
|
|
v.direction_ratios[i] := v.direction_ratios[i] / mag;
|
|
END_REPEAT;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.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; -- normalise
|
|
|
|
FUNCTION orthogonal_complement(
|
|
vec: direction
|
|
): direction;
|
|
LOCAL
|
|
result : direction;
|
|
END_LOCAL;
|
|
IF (vec.dim <> 2) OR (NOT EXISTS(vec)) THEN
|
|
RETURN(?);
|
|
ELSE
|
|
result.direction_ratios[1] := -vec.direction_ratios[2];
|
|
result.direction_ratios[2] := vec.direction_ratios[1];
|
|
RETURN(result);
|
|
END_IF;
|
|
|
|
END_FUNCTION; -- orthogonal_complement
|
|
|
|
FUNCTION path_head_to_tail(
|
|
a_path: path
|
|
): LOGICAL;
|
|
LOCAL
|
|
n : INTEGER;
|
|
p : BOOLEAN := TRUE;
|
|
END_LOCAL;
|
|
n := SIZEOF(a_path.edge_list);
|
|
REPEAT i := 2 TO n BY 1;
|
|
p := p AND (a_path.edge_list[i - 1].edge_end :=: a_path.edge_list[i]
|
|
.edge_start);
|
|
END_REPEAT;
|
|
RETURN(p);
|
|
|
|
END_FUNCTION; -- path_head_to_tail
|
|
|
|
FUNCTION path_reversed(
|
|
a_path: path
|
|
): path;
|
|
LOCAL
|
|
the_reverse : path;
|
|
END_LOCAL;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.ORIENTED_PATH' IN TYPEOF(a_path) THEN
|
|
the_reverse := oriented_path(a_path\oriented_path.path_element,NOT
|
|
a_path\oriented_path.orientation);
|
|
ELSE
|
|
the_reverse := oriented_path(a_path,FALSE);
|
|
END_IF;
|
|
RETURN(the_reverse);
|
|
|
|
END_FUNCTION; -- path_reversed
|
|
|
|
FUNCTION representations_mapped_into(
|
|
rep: representation
|
|
): SET OF representation;
|
|
LOCAL
|
|
results : SET OF representation := [];
|
|
i : INTEGER;
|
|
j : INTEGER;
|
|
mi : SET OF mapped_item;
|
|
rm : SET OF representation_map;
|
|
END_LOCAL;
|
|
rm := USEDIN(rep,'ASSOCIATIVE_DRAUGHTING.' +
|
|
'REPRESENTATION_MAP.MAPPED_REPRESENTATION');
|
|
REPEAT i := 1 TO HIINDEX(rm) BY 1;
|
|
mi := mi + rm[i].map_usage;
|
|
END_REPEAT;
|
|
REPEAT j := 1 TO HIINDEX(mi) BY 1;
|
|
results := results + USEDIN(mi[j],'ASSOCIATIVE_DRAUGHTING.' +
|
|
'REPRESENTATION.ITEMS');
|
|
END_REPEAT;
|
|
RETURN(results);
|
|
|
|
END_FUNCTION; -- representations_mapped_into
|
|
|
|
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
|
|
result := ?;
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.VECTOR' IN TYPEOF(vec) THEN
|
|
v := vec.orientation;
|
|
mag := scalar * vec.magnitude;
|
|
ELSE
|
|
v := vec;
|
|
mag := scalar;
|
|
END_IF;
|
|
IF mag < 0 THEN
|
|
REPEAT i := 1 TO SIZEOF(v.direction_ratios) BY 1;
|
|
v.direction_ratios[i] := -v.direction_ratios[i];
|
|
END_REPEAT;
|
|
mag := -mag;
|
|
END_IF;
|
|
result.orientation := normalise(v);
|
|
result.magnitude := mag;
|
|
END_IF;
|
|
RETURN(result);
|
|
|
|
END_FUNCTION; -- scalar_times_vector
|
|
|
|
FUNCTION second_proj_axis(
|
|
z_axis, x_axis, arg: direction
|
|
): direction;
|
|
LOCAL
|
|
temp : vector;
|
|
v : direction;
|
|
y_axis : vector;
|
|
END_LOCAL;
|
|
IF NOT EXISTS(arg) THEN
|
|
v := direction([0,1,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; -- second_proj_axis
|
|
|
|
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) BY 1;
|
|
the_reverse := the_reverse + topology_reversed(a_set[i]);
|
|
END_REPEAT;
|
|
RETURN(the_reverse);
|
|
|
|
END_FUNCTION; -- set_of_topology_reversed
|
|
|
|
FUNCTION shell_reversed(
|
|
a_shell: shell
|
|
): shell;
|
|
LOCAL
|
|
the_reverse : shell;
|
|
END_LOCAL;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.ORIENTED_OPEN_SHELL' IN TYPEOF(a_shell)
|
|
THEN
|
|
the_reverse := oriented_open_shell(a_shell\oriented_open_shell.
|
|
open_shell_element,NOT a_shell\oriented_open_shell.orientation);
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.OPEN_SHELL' IN TYPEOF(a_shell) THEN
|
|
the_reverse := oriented_open_shell(a_shell,FALSE);
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.ORIENTED_CLOSED_SHELL' IN TYPEOF(
|
|
a_shell) THEN
|
|
the_reverse := oriented_closed_shell(a_shell\
|
|
oriented_closed_shell.closed_shell_element,NOT a_shell\
|
|
oriented_closed_shell.orientation);
|
|
ELSE
|
|
IF 'ASSOCIATIVE_DRAUGHTING.CLOSED_SHELL' IN TYPEOF(a_shell)
|
|
THEN
|
|
the_reverse := oriented_closed_shell(a_shell,FALSE);
|
|
ELSE
|
|
the_reverse := ?;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(the_reverse);
|
|
|
|
END_FUNCTION; -- shell_reversed
|
|
|
|
FUNCTION surface_weights_positive(
|
|
b: rational_b_spline_surface
|
|
): BOOLEAN;
|
|
LOCAL
|
|
result : BOOLEAN := TRUE;
|
|
END_LOCAL;
|
|
REPEAT i := 0 TO b.u_upper BY 1;
|
|
REPEAT j := 0 TO b.v_upper BY 1;
|
|
IF b.weights[i][j] <= 0 THEN
|
|
result := FALSE;
|
|
RETURN(result);
|
|
END_IF;
|
|
END_REPEAT;
|
|
END_REPEAT;
|
|
RETURN(result);
|
|
|
|
END_FUNCTION; -- surface_weights_positive
|
|
|
|
FUNCTION topology_reversed(
|
|
an_item: reversible_topology
|
|
): reversible_topology;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.EDGE' IN TYPEOF(an_item) THEN
|
|
RETURN(edge_reversed(an_item));
|
|
END_IF;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.PATH' IN TYPEOF(an_item) THEN
|
|
RETURN(path_reversed(an_item));
|
|
END_IF;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.FACE_BOUND' IN TYPEOF(an_item) THEN
|
|
RETURN(face_bound_reversed(an_item));
|
|
END_IF;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.FACE' IN TYPEOF(an_item) THEN
|
|
RETURN(face_reversed(an_item));
|
|
END_IF;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.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; -- topology_reversed
|
|
|
|
FUNCTION using_representations(
|
|
item: representation_item
|
|
): SET OF representation;
|
|
LOCAL
|
|
results : SET OF representation;
|
|
i : INTEGER;
|
|
intermediate_items : SET OF representation_item;
|
|
result_bag : BAG OF representation;
|
|
END_LOCAL;
|
|
result_bag := USEDIN(item,
|
|
'ASSOCIATIVE_DRAUGHTING.REPRESENTATION.ITEMS');
|
|
IF SIZEOF(result_bag) > 0 THEN
|
|
REPEAT i := 1 TO HIINDEX(result_bag) BY 1;
|
|
results := results + result_bag[i];
|
|
END_REPEAT;
|
|
END_IF;
|
|
intermediate_items := QUERY ( z <* bag_to_set(USEDIN(item,'')) | (
|
|
'ASSOCIATIVE_DRAUGHTING.REPRESENTATION_ITEM' IN TYPEOF(z)) );
|
|
IF SIZEOF(intermediate_items) > 0 THEN
|
|
REPEAT i := 1 TO HIINDEX(intermediate_items) BY 1;
|
|
results := results + using_representations(intermediate_items[i]);
|
|
END_REPEAT;
|
|
END_IF;
|
|
RETURN(results);
|
|
|
|
END_FUNCTION; -- using_representations
|
|
|
|
FUNCTION valid_2d_wireframe_edge_curve(
|
|
crv: curve;
|
|
schma: STRING
|
|
): BOOLEAN;
|
|
IF SIZEOF([schma + '.LINE',schma + '.B_SPLINE_CURVE',schma + '.CIRCLE',
|
|
schma + '.HYPERBOLA',schma + '.ELLIPSE',schma + '.PARABOLA',schma +
|
|
'.POLYLINE'] * TYPEOF(crv)) = 1 THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
IF (schma + '.CURVE_REPLICA') IN TYPEOF(crv) THEN
|
|
RETURN(valid_2d_wireframe_edge_curve(crv\curve_replica.
|
|
parent_curve,schma));
|
|
ELSE
|
|
IF (schma + '.OFFSET_CURVE_2D') IN TYPEOF(crv) THEN
|
|
RETURN(valid_2d_wireframe_edge_curve(crv\offset_curve_2d.
|
|
basis_curve,schma));
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(FALSE);
|
|
|
|
END_FUNCTION; -- valid_2d_wireframe_edge_curve
|
|
|
|
FUNCTION valid_basis_curve_in_2d_wireframe(
|
|
crv: curve;
|
|
schma: STRING
|
|
): BOOLEAN;
|
|
IF (schma + '.TRIMMED_CURVE') IN TYPEOF(crv) THEN
|
|
RETURN(valid_basis_curve_in_2d_wireframe(crv\trimmed_curve.
|
|
basis_curve,schma));
|
|
ELSE
|
|
IF (schma + '.COMPOSITE_CURVE') IN TYPEOF(crv) THEN
|
|
RETURN(SIZEOF(QUERY ( ccs <* crv\composite_curve.segments | (NOT
|
|
valid_basis_curve_in_2d_wireframe(ccs.parent_curve,schma)) )) =
|
|
0);
|
|
ELSE
|
|
IF (schma + '.OFFSET_CURVE_2D') IN TYPEOF(crv) THEN
|
|
RETURN(valid_basis_curve_in_2d_wireframe(crv\offset_curve_2d.
|
|
basis_curve,schma));
|
|
ELSE
|
|
IF SIZEOF([schma + '.LINE',schma + '.B_SPLINE_CURVE',schma +
|
|
'.CIRCLE',schma + '.ELLIPSE',schma + '.HYPERBOLA',schma +
|
|
'.PARABOLA',schma + '.POLYLINE'] * TYPEOF(crv)) = 1 THEN
|
|
RETURN(TRUE);
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(FALSE);
|
|
|
|
END_FUNCTION; -- valid_basis_curve_in_2d_wireframe
|
|
|
|
FUNCTION valid_calendar_date(
|
|
date: calendar_date
|
|
): LOGICAL;
|
|
IF NOT ((1 <= date.day_component) AND (date.day_component <= 31))
|
|
THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
CASE date.month_component OF
|
|
4 : RETURN((1 <= date.day_component) AND (date.day_component
|
|
<= 30));
|
|
6 : RETURN((1 <= date.day_component) AND (date.day_component
|
|
<= 30));
|
|
9 : RETURN((1 <= date.day_component) AND (date.day_component
|
|
<= 30));
|
|
11 : RETURN((1 <= date.day_component) AND (date.
|
|
day_component <= 30));
|
|
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;
|
|
END_CASE;
|
|
|
|
END_FUNCTION; -- valid_calendar_date
|
|
|
|
FUNCTION valid_elementary_trimmed_curves_in_set(
|
|
crv: curve;
|
|
schma: STRING
|
|
): BOOLEAN;
|
|
IF (schma + '.TRIMMED_CURVE') IN TYPEOF(crv) THEN
|
|
RETURN(valid_elementary_trimmed_curves_in_set(crv\trimmed_curve.
|
|
basis_curve,schma));
|
|
ELSE
|
|
IF (schma + '.COMPOSITE_CURVE') IN TYPEOF(crv) THEN
|
|
RETURN(SIZEOF(QUERY ( ccs <* crv\composite_curve.segments | (NOT
|
|
valid_elementary_trimmed_curves_in_set(ccs.parent_curve,schma)) ))
|
|
= 0);
|
|
ELSE
|
|
IF SIZEOF([schma + '.LINE',schma + '.CIRCLE',schma + '.ELLIPSE',
|
|
schma + '.PARABOLA',schma + '.HYPERBOLA',schma + '.POLYLINE'] *
|
|
TYPEOF(crv)) = 1 THEN
|
|
RETURN(TRUE);
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(FALSE);
|
|
|
|
END_FUNCTION; -- valid_elementary_trimmed_curves_in_set
|
|
|
|
FUNCTION valid_geometrically_bounded_wf_curve(
|
|
crv: curve;
|
|
schma: STRING
|
|
): BOOLEAN;
|
|
IF SIZEOF([schma + '.POLYLINE',schma + '.B_SPLINE_CURVE',schma +
|
|
'.ELLIPSE',schma + '.CIRCLE'] * TYPEOF(crv)) = 1 THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
IF (schma + '.TRIMMED_CURVE') IN TYPEOF(crv) THEN
|
|
IF SIZEOF([schma + '.LINE',schma + '.PARABOLA',schma +
|
|
'.HYPERBOLA'] * TYPEOF(crv\trimmed_curve.basis_curve)) = 1
|
|
THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
RETURN(valid_geometrically_bounded_wf_curve(crv\trimmed_curve.
|
|
basis_curve,schma));
|
|
END_IF;
|
|
ELSE
|
|
IF (schma + '.OFFSET_CURVE_3D') IN TYPEOF(crv) THEN
|
|
RETURN(valid_geometrically_bounded_wf_curve(crv\offset_curve_3d.
|
|
basis_curve,schma));
|
|
ELSE
|
|
IF (schma + '.CURVE_REPLICA') IN TYPEOF(crv) THEN
|
|
RETURN(valid_geometrically_bounded_wf_curve(crv\curve_replica.
|
|
parent_curve,schma));
|
|
ELSE
|
|
IF (schma + '.COMPOSITE_CURVE') IN TYPEOF(crv) THEN
|
|
RETURN(SIZEOF(QUERY ( ccs <* crv\composite_curve.segments |
|
|
(NOT valid_geometrically_bounded_wf_curve(ccs.
|
|
parent_curve,schma)) )) = 0);
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(FALSE);
|
|
|
|
END_FUNCTION; -- valid_geometrically_bounded_wf_curve
|
|
|
|
FUNCTION valid_geometrically_bounded_wf_point(
|
|
pnt: point;
|
|
schma: STRING
|
|
): BOOLEAN;
|
|
IF (schma + '.CARTESIAN_POINT') IN TYPEOF(pnt) THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
IF (schma + '.POINT_ON_CURVE') IN TYPEOF(pnt) THEN
|
|
RETURN(valid_geometrically_bounded_wf_curve(pnt\point_on_curve.
|
|
basis_curve,schma));
|
|
ELSE
|
|
IF (schma + '.POINT_REPLICA') IN TYPEOF(pnt) THEN
|
|
RETURN(valid_geometrically_bounded_wf_point(pnt\point_replica.
|
|
parent_pt,schma));
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(FALSE);
|
|
|
|
END_FUNCTION; -- valid_geometrically_bounded_wf_point
|
|
|
|
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; -- valid_time
|
|
|
|
FUNCTION valid_units(
|
|
m: measure_with_unit
|
|
): BOOLEAN;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.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 'ASSOCIATIVE_DRAUGHTING.MASS_MEASURE' IN TYPEOF(m.value_component)
|
|
THEN
|
|
IF derive_dimensional_exponents(m.unit_component) <>
|
|
dimensional_exponents(0,1,0,0,0,0,0) THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
END_IF;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.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 'ASSOCIATIVE_DRAUGHTING.ELECTRIC_CURRENT_MEASURE' IN TYPEOF(m.
|
|
value_component) THEN
|
|
IF derive_dimensional_exponents(m.unit_component) <>
|
|
dimensional_exponents(0,0,0,1,0,0,0) THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
END_IF;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.THERMODYNAMIC_TEMPERATURE_MEASURE' IN
|
|
TYPEOF(m.value_component) THEN
|
|
IF derive_dimensional_exponents(m.unit_component) <>
|
|
dimensional_exponents(0,0,0,0,1,0,0) THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
END_IF;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.AMOUNT_OF_SUBSTANCE_MEASURE' IN TYPEOF(m.
|
|
value_component) THEN
|
|
IF derive_dimensional_exponents(m.unit_component) <>
|
|
dimensional_exponents(0,0,0,0,0,1,0) THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
END_IF;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF(m.
|
|
value_component) THEN
|
|
IF derive_dimensional_exponents(m.unit_component) <>
|
|
dimensional_exponents(0,0,0,0,0,0,1) THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
END_IF;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.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 'ASSOCIATIVE_DRAUGHTING.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 'ASSOCIATIVE_DRAUGHTING.AREA_MEASURE' IN TYPEOF(m.value_component)
|
|
THEN
|
|
IF derive_dimensional_exponents(m.unit_component) <>
|
|
dimensional_exponents(2,0,0,0,0,0,0) THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
END_IF;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.VOLUME_MEASURE' IN TYPEOF(m.value_component)
|
|
THEN
|
|
IF derive_dimensional_exponents(m.unit_component) <>
|
|
dimensional_exponents(3,0,0,0,0,0,0) THEN
|
|
RETURN(FALSE);
|
|
END_IF;
|
|
END_IF;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.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 'ASSOCIATIVE_DRAUGHTING.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 'ASSOCIATIVE_DRAUGHTING.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; -- valid_units
|
|
|
|
FUNCTION valid_wireframe_edge_curve(
|
|
crv: curve;
|
|
schma: STRING
|
|
): BOOLEAN;
|
|
IF SIZEOF([schma + '.LINE',schma + '.CIRCLE',schma + '.ELLIPSE',schma
|
|
+ '.PARABOLA',schma + '.HYPERBOLA',schma + '.B_SPLINE_CURVE',schma
|
|
+ '.POLYLINE'] * TYPEOF(crv)) = 1 THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
IF (schma + '.CURVE_REPLICA') IN TYPEOF(crv) THEN
|
|
RETURN(valid_wireframe_edge_curve(crv\curve_replica.parent_curve,
|
|
schma));
|
|
ELSE
|
|
IF (schma + '.OFFSET_CURVE_3D') IN TYPEOF(crv) THEN
|
|
RETURN(valid_wireframe_edge_curve(crv\offset_curve_3d.
|
|
basis_curve,schma));
|
|
END_IF;
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(FALSE);
|
|
|
|
END_FUNCTION; -- valid_wireframe_edge_curve
|
|
|
|
FUNCTION valid_wireframe_vertex_point(
|
|
pnt: point;
|
|
schma: STRING
|
|
): BOOLEAN;
|
|
IF (schma + '.CARTESIAN_POINT') IN TYPEOF(pnt) THEN
|
|
RETURN(TRUE);
|
|
ELSE
|
|
IF (schma + '.POINT_REPLICA') IN TYPEOF(pnt) THEN
|
|
RETURN(valid_wireframe_vertex_point(pnt\point_replica.parent_pt,
|
|
schma));
|
|
END_IF;
|
|
END_IF;
|
|
RETURN(FALSE);
|
|
|
|
END_FUNCTION; -- valid_wireframe_vertex_point
|
|
|
|
FUNCTION vector_difference(
|
|
arg1, arg2: vector_or_direction
|
|
): vector;
|
|
LOCAL
|
|
ndim : INTEGER;
|
|
mag2 : REAL;
|
|
mag1 : REAL;
|
|
mag : REAL;
|
|
res : direction;
|
|
vec1 : direction;
|
|
vec2 : direction;
|
|
result : vector;
|
|
END_LOCAL;
|
|
IF (NOT EXISTS(arg1)) OR (NOT EXISTS(arg2)) OR (arg1.dim <> arg2.dim)
|
|
THEN
|
|
result := ?;
|
|
ELSE
|
|
BEGIN
|
|
IF 'ASSOCIATIVE_DRAUGHTING.VECTOR' IN TYPEOF(arg1) THEN
|
|
mag1 := arg1.magnitude;
|
|
vec1 := arg1.orientation;
|
|
ELSE
|
|
mag1 := 1;
|
|
vec1 := arg1;
|
|
END_IF;
|
|
IF 'ASSOCIATIVE_DRAUGHTING.VECTOR' IN TYPEOF(arg2) THEN
|
|
mag2 := arg2.magnitude;
|
|
vec2 := arg2.orientation;
|
|
ELSE
|
|
mag2 := 1;
|
|
vec2 := arg2;
|
|
END_IF;
|
|
vec1 := normalise(vec1);
|
|
vec2 := normalise(vec2);
|
|
ndim := SIZEOF(vec1.direction_ratios);
|
|
mag := 0;
|
|
REPEAT i := 1 TO ndim BY 1;
|
|
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 THEN
|
|
result.magnitude := SQRT(mag);
|
|
result.orientation := res;
|
|
ELSE
|
|
result.magnitude := 0;
|
|
result.orientation := vec1;
|
|
END_IF;
|
|
END;
|
|
END_IF;
|
|
RETURN(result);
|
|
|
|
END_FUNCTION; -- vector_difference
|
|
|
|
END_SCHEMA; -- associative_draughting
|