FUNCTION get_plane_of_implicit_geometry
(ps : positioned_sketch) : plane;
LOCAL sb : sketch_basis_select := ps.sketch_basis; result : plane := ?; END_LOCAL;
-- determine plane OF implicit geometry FROM the underlying ENTITY data -- TYPE OF its owning instance OF positioned_sketch_representation. If -- the sketch basis is OF TYPE planar_curve_select THEN the planarity -- OF the curve is guaranteed BY a WHERE RULE on the SELECT TYPE OF that -- name.
IF ('TOPOLOGY_SCHEMA.FACE_SURFACE' IN TYPEOF(sb)) THEN result := sb.face_geometry; ELSE IF ('GEOMETRY_SCHEMA.CURVE_BOUNDED_SURFACE' IN TYPEOF(sb)) THEN result := sb.basis_surface; ELSE IF ('SKETCH_SCHEMA.PLANAR_CURVE_SELECT' IN TYPEOF(sb)) THEN BEGIN IF ('GEOMETRY_SCHEMA.CONIC' IN TYPEOF(sb)) THEN result := dummy_gri || surface() || elementary_surface(sb.position) || plane(); END_IF;
IF ('GEOMETRY_SCHEMA.TRIMMED_CURVE' IN TYPEOF(sb)) THEN BEGIN result := get_plane_of_implicit_geometry( dummy_gri || positioned_sketch(sb.basis_curve,[])); END; END_IF;
IF ('GEOMETRY_SCHEMA.PCURVE' IN TYPEOF(sb)) THEN result := sb.basis_surface; END_IF;
IF ('GEOMETRY_SCHEMA.SURFACE_CURVE' IN TYPEOF(sb)) THEN BEGIN IF ((SIZEOF(sb.basis_surface) = 1) -- CASE OF one basis surface AND ('GEOMETRY_SCHEMA.PLANE' IN TYPEOF(sb.basis_surface[1]))) THEN result := sb.basis_surface[1]; ELSE -- CASE OF two basis surfaces IF (('GEOMETRY_SCHEMA.PLANE' IN TYPEOF(sb.basis_surface[1])) AND ('GEOMETRY_SCHEMA.PLANE' IN TYPEOF(sb.basis_surface[2]))) THEN result := ?; -- both basis surfaces are planes, their intersection curve -- is a line, AND no UNIQUE plane is defined ELSE -- only one OF the two basis surfaces is a plane IF ('GEOMETRY_SCHEMA.PLANE' IN TYPEOF(sb.basis_surface[1])) THEN result := sb.basis_surface[1]; ELSE result := sb.basis_surface[2]; END_IF; END_IF; END_IF; END; END_IF; END; END_IF; END_IF; END_IF;
RETURN(result); END_FUNCTION; -- get_plane_of_implicit_geometry
|