ГОСТ РИС010303-507—2009
EXPRESS-спецификация:
*)
FUNCTION gbsf_check_curve (cv:representationjtem):BOOLEAN;
(* Данная функция проверяетдопустимость кривой вконтексте модели геометрически ограниченных по
верхностей. Объекты representationjtem допустимы в качестве входных аргументов, однако предпо
лагается, что они должны быть объектами curve; в противном случае данная функция возвращает
результат FALSE.
*)
(* сложные подтипы кривой, которые одновременно являются объектом boundedj^urve и одним изобъек
тов conic, curve jeplica. line, илиoffset_curve_3d. являются недопустимыми
*)
IF SIZEOF (rAIC_GEOMETRICALLY_BOUNDED_SURFACE.BOUNDED_CURVE\
’AIC_GEOMETRICALLY_BOUNDED_SURFACE.CONIC’,
’AlC_GEOMETRICALLY BOUNDED_SURFACE.CURVE_REPLICA\
’AlC.GEOMETRICALLY_BOUNDED_SURFACE.LINE’.
’AIC_GEOMETRICALLY_BOUNDED_SURFACE.OFFSET_CURVE_3D’]
*TYPEOF(cv)) > 1THEN RETURN (FALSE):
ENDJF;
(* объектыcircle, ellipse иtrimmed_curve являютсядопустимыми кривыми; они являются ограниченными
поопределению
*)
IFSIZEOF ([AIC_GEOMETRICALLY_BOUNDED_SURFACE.CIRCLE\
’AIC_GEOMETRICALLY_BOUNDED_SURFACE.ELLIPSE’.
’AIC_GEOMETRICALLY_BOUNDED_SURFACE.TRIMMED_CURVE1
*TYPEOF (cv)) = 1
THEN RETURN (TRUE);
ELSE
(* объект b_spline_curves недолженсодержать самопересечений
*)
IF ((’AIC_GEOMETRICALLY_BOUNDED_SURFACE.B_SPLINE_CURVE-
IN TYPEOF (cv)) AND
(cv\b_spline_curve.selfjntersect = FALSE) OR
(cv\b_spline_curve.selfJntersect = UNKNOWN))
THEN RETURN(TRUE);
ELSE
(* объект composite_curve недолжен содержатьсамопересечений, и все егосегментыдолжны ссы
латься на допустимые кривые
*)
IF ((’AIC_GEOMETRICALLY_BOUNDED_SURFACE.COMPOSITE_CURVE’
IN TYPEOF(cv)) AND
(cv\composite_curve.self Jntersect = FALSE) OR
(cv\composite_curve.selfJntersect = UNKNOWN))
THEN
RETURN (SIZEOF (QUERY (seg <*cv\composite_curve.segments |
NOT (gbsf_check_curve(seg.parent_curve)))) =0);
ELSE
(*объект curve_replica должен ссылаться надопустимую кривую
*)
IF’AIC_GEOMETRICALLY_BOUNDED_SURFACE.CURVE_REPLICA’
INTYPEOF(cv) THEN
RETURN (gbsf_check_curve (cv\curve_replica.parent_curve));
ELSE
(* объект offset_curve_3d недолжен содержать самопересечений идолжен ссылаться на допус
тимыекривые; полилиния неявляется допустимым объектом basis_curve
11