ГОСТ Р ИСО 10303-510—2006
IF ((’AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.TRIMMED_CURVE’) IN TYPEOF (crv)) THEN
- если прямая, парабола или гиперболаобрезана, то онадопустима
IF SIZEOF (fAIC_GEOMETRICALLY_BOUNDED_WIREFRAME.LINE‘,
’AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.PARABOLA,
’AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.HYPERBOLA’]*
TYPEOF(crv\trimmed_curve.basis_cun/e)) = 1
THEN RETURN (TRUE);
- в противном случае рекурсивная проверка basis_curve
ELSE RETURN (valid_geometrically_bounded_wf_curve
END IF;
(crv\tnmmed_curve.basis_curve));
ELSE
-- рекурсивная проверка базовой линии offset curve
IF((’AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.OFFSET_CURVE_3D’)
IN TYPEOF (crv))
THEN RETURN (valid_geometrically_bounded_wf_curve
(crv\offset_curve_3d.basis_curve));
ELSE
- рекурсивная проверка порождающейлинии curve_replica
IF((’AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.CURVE_REPLICA’)
IN TYPEOF (crv))
THEN RETURN (valid_geometrically_bounded_wf_curve
(crv\curve_replica.parent_curve));
ELSE
- рекурсивная проверка сегментов composite_curve
IF((’AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.COMPOSITE_CURVE’)
IN TYPEOF (crv)) THEN
RETURN (SIZEOF (QUERY (ccs <* crv\composite_curve.segments |
NОТ(valid_geometrically_bounded_wf_curve
(ccs.parent_curve)))) =0):
ENDJF;
ENDJF;
ENDJF;
ENDJF;
ENDJF;
RETURN (FALSE);
ENDJUNCTION;
(‘
Определение аргумента
crv — заданная линия (объектcurve), котораядолжна быть проверена.
4.4.2 Функция valid_geometrically_bounded_wf_point определяет, является ли заданная аргу
ментом точка допустимой для использования в представлении формы, определенной геометрически
ограниченным каркасом. Это нужнодлятого, чтобы убедиться, чтолюбая точка, представленная объек
том point_on_curve. должна лежать на линии ограниченного типа, а это осуществляется с помощью
предыдущей функции valid_geomotrically_boundod_wf_curv
0
.Функция имеет рекурсивную структуру
для того, чтобы осуществлятьпроверку на различную глубину вложенности.
EXPRESS спецификация
*)
FUNCTION valid_geometrically_bounded_wf_point
(pnt: point); BOOLEAN;
- проверка допустимых основных типов
IF((•AIC_GEOMETRICALLY_BOUNDED_WIREFRAME.CARTESIAN_POINT’) IN TYPEOF (pnt))
THEN RETURN (TRUE);
ELSE
6