FUNCTION edge_curve_pcurves
(an_edge : edge_curve, the_surface_curves : SET [0:?] OF surface_curve) : SET [0:?] OF pcurve;
LOCAL a_curve : curve; result : SET OF pcurve; the_geometry : LIST[1:2] OF pcurve_or_surface; END_LOCAL; a_curve := an_edge.edge_geometry; result := []; IF 'GEOMETRY_SCHEMA.PCURVE' IN TYPEOF(a_curve) THEN result := result + a_curve; ELSE IF 'GEOMETRY_SCHEMA.SURFACE_CURVE' IN TYPEOF(a_curve) THEN the_geometry := a_curve\surface_curve.associated_geometry; REPEAT k := 1 TO SIZEOF(the_geometry); IF 'GEOMETRY_SCHEMA.PCURVE' IN TYPEOF (the_geometry[k]) THEN result := result + the_geometry[k]; END_IF; END_REPEAT; ELSE REPEAT j := 1 TO SIZEOF(the_surface_curves); the_geometry := the_surface_curves[j].associated_geometry; IF the_surface_curves[j].curve_3d :=: a_curve THEN REPEAT k := 1 TO SIZEOF(the_geometry); IF 'GEOMETRY_SCHEMA.PCURVE' IN TYPEOF (the_geometry[k]) THEN result := result + the_geometry[k]; END_IF; END_REPEAT; END_IF; END_REPEAT; END_IF; END_IF;
RETURN (result); END_FUNCTION; -- edge_curve_pcurves
|