Source : ISO 10303-515
SCHEMA aic_csg;
USE FROM
aic_advanced_brep;
-- ISO 10303-514
USE FROM
aic_faceted_brep;
-- ISO 10303-512
USE FROM
geometric_model_schema -- ISO 10303-42
(block,
boolean_operand,
boolean_operator,
boolean_result,
box_domain,
boxed_half_space,
convex_hexahedron,
csg_primitive,
csg_select,
csg_solid,
cyclide_segment_solid,
eccentric_cone,
ellipsoid,
extruded_face_solid,
faceted_primitive,
half_space_solid,
rectangular_pyramid,
revolved_face_solid,
right_angular_wedge,
right_circular_cone,
right_circular_cylinder,
solid_replica,
sphere,
tetrahedron,
torus);
ENTITY csg_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3;
WR2: SIZEOF(QUERY(it <* SELF.items | (SIZEOF(['AIC_CSG.CSG_SOLID',
'AIC_CSG.MAPPED_ITEM',
'AIC_CSG.AXIS2_PLACEMENT_3D',
'AIC_CSG.SOLID_REPLICA',
'AIC_CSG.REVOLVED_FACE_SOLID',
'AIC_CSG.EXTRUDED_FACE_SOLID'] * TYPEOF(it)) <> 1))) = 0;
WR3: SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | ('AIC_CSG.MAPPED_ITEM' IN TYPEOF(it))) | NOT ('AIC_CSG.CSG_SHAPE_REPRESENTATION'
IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)))) = 0;
WR4: SIZEOF(QUERY(sr <* QUERY(it <* SELF.items | ('AIC_CSG.SOLID_REPLICA' IN TYPEOF(it))) | (SIZEOF(['AIC_CSG.CSG_SOLID',
'AIC_CSG.REVOLVED_FACE_SOLID',
'AIC_CSG.EXTRUDED_FACE_SOLID'] * TYPEOF(sr\solid_replica.parent_solid)) = 0))) = 0;
WR5: SIZEOF(QUERY(it <* SELF.items | NOT ('AIC_CSG.AXIS2_PLACEMENT_3D' IN TYPEOF(it)))) > 0;
END_ENTITY;
END_SCHEMA; -- aic_csg