SCHEMA aic_topologically_bounded_surface; USE FROM geometry_schema (axis2_placement_2d, axis2_placement_3d, bezier_curve, bezier_surface, b_spline_curve_with_knots, b_spline_surface_with_knots, cartesian_point, circle, composite_curve_on_surface, conical_surface, cylindrical_surface, degenerate_toroidal_surface, direction, ellipse, geometric_representation_context, hyperbola, line, parabola, pcurve, plane, polyline, quasi_uniform_curve, quasi_uniform_surface, rational_b_spline_curve, rational_b_spline_surface, spherical_surface, surface_curve, surface_of_linear_extrusion, surface_of_revolution, swept_surface, toroidal_surface, uniform_curve, uniform_surface, vector); USE FROM topology_schema (edge, edge_curve, edge_loop, face_bound, face_outer_bound, face_surface, oriented_edge, path, vertex_loop, vertex_point); USE FROM representation_schema (definitional_representation, parametric_representation_context); USE FROM measure_schema (parameter_value); ENTITY advanced_face SUBTYPE OF (face_surface); WHERE WR1 : SIZEOF (['AIC_TOPOLOGICALLY_BOUNDED_SURFACE.ELEMENTARY_SURFACE', 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.B_SPLINE_SURFACE', 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.SWEPT_SURFACE'] * TYPEOF(face_geometry)) = 1; WR2 : SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds | 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | NOT('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_CURVE' IN TYPEOF(oe\oriented_edge.edge_element)))) = 0))) = 0; WR3 : SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds | 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | NOT (SIZEOF (['AIC_TOPOLOGICALLY_BOUNDED_SURFACE.LINE', 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.CONIC', 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.POLYLINE', 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.SURFACE_CURVE', 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.B_SPLINE_CURVE'] * TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1 ) )) = 0))) = 0; WR4 : SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds | 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT(SIZEOF(QUERY (oe <* elp_fbnds.bound\path.edge_list | NOT(((('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.VERTEX_POINT' IN TYPEOF(oe\edge.edge_start)) AND ( 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.CARTESIAN_POINT' IN TYPEOF(oe\edge.edge_start\vertex_point.vertex_geometry)))) AND (('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.VERTEX_POINT' IN TYPEOF(oe\edge.edge_end)) AND ( 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.CARTESIAN_POINT' IN TYPEOF(oe\edge.edge_end\vertex_point.vertex_geometry))) ))) = 0))) = 0; WR5 : SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds | 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_LOOP' IN TYPEOF(bnds.bound)) | 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.ORIENTED_PATH' IN TYPEOF(elp_fbnds.bound))) = 0; WR6 : (NOT ('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.SWEPT_SURFACE' IN TYPEOF(face_geometry))) OR (SIZEOF (['AIC_TOPOLOGICALLY_BOUNDED_SURFACE.LINE', 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.CONIC', 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.POLYLINE', 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.B_SPLINE_CURVE'] * TYPEOF(face_geometry\swept_surface.swept_curve)) = 1); WR7 : SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* bounds | 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.VERTEX_LOOP' IN TYPEOF(bnds.bound)) | NOT(('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.VERTEX_POINT' IN TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND ('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.CARTESIAN_POINT' IN TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop. loop_vertex\vertex_point.vertex_geometry)) ))) = 0; WR8 : SIZEOF (QUERY (bnd <* bounds | NOT (SIZEOF(['AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_LOOP', 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.VERTEX_LOOP'] * TYPEOF(bnd.bound)) = 1))) = 0; WR9 : SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds | 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | ('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.SURFACE_CURVE' IN TYPEOF(oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND (NOT (SIZEOF (QUERY (sc_ag <* oe.edge_element\edge_curve.edge_geometry\ surface_curve.associated_geometry | NOT ('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.PCURVE' IN TYPEOF(sc_ag)))) = 0)))) = 0))) = 0; WR10 : ((NOT ('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.SWEPT_SURFACE' IN TYPEOF(face_geometry))) OR ((NOT ('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.POLYLINE' IN TYPEOF(face_geometry\swept_surface.swept_curve))) OR (SIZEOF(face_geometry\swept_surface.swept_curve\polyline.points) >= 3))) AND (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* bounds | 'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_LOOP' IN TYPEOF(bnds.bound)) | NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | ('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.POLYLINE' IN TYPEOF(oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND (NOT (SIZEOF (oe\oriented_edge.edge_element\ edge_curve.edge_geometry\polyline.points) >= 3)))) = 0))) = 0); END_ENTITY; END_SCHEMA; -- end AIC_TOPOLOGICALLY_BOUNDED_SURFACE SCHEMA