ГОСТ РИСО 10303-508— 2009
Объекты swept_surface ссылаются на объекты curve. Функция nmsf_curve_check вызывается
для проверкидопустимости этих объектов curve. Объект non_manifold_surface_shape_representation
требует таких же ограничений на допустимые ссылки на изогнутые кривые, которые определены в
ИСО 10303-42.Всеобъектыcurve,относящиесяк области определенияобъекта
non_manifold_surface_shape_reprosentation.допустимы какобъекты swept_surface.swopt_curve.
Атрибут selfjntersectдляби-сплайновыхи смещенных геометрических объектов должен иметьзна
чение FALSE илиUNKNOWN.
Данная функция возвращает значение TRUE, если типы всехссылочных геометрическихобъектов
принадлежат к области определения объекта non_manifold_surface_shape_representation и если все
ограничения выполнены, в противном случаефункция возвращает значение FALSE.
П р и м е ч а н и е — Данная функция не проверяет правильность ссылок относительно требований,
установленных в ИСО 10303-42. Проверяются только дополнительные требования, относящиеся к области
определения объекта non_manifold_surface_shape_representation.
EXPRESS-слецификаиия:
*)
FUNCTION nmsf_surface_check (surf: surface): BOOLEAN,
(*Даннаяфункция проверяет допустимостьобъекта surface в контексте модели многосвязной поверхности.
*>
(*объекты elementary surface являются допустимыми типами объекта surface
*)
IF’AIC_NON_MANIFOLD_SURFACE.ELEMENTARY_SURFACE‘INTYPEOF (surf) THEN
RETURN(TRUE);
ELSE
(*объект swept_surfaceдолжен иметь допустимую изогнутую кривую
*)
IF’AIC_NON_MANIFOLD_SURFACE.SWEPT_SURFACE’ INTYPEOF(surf) THEN
RETURN (nmsf_curve_check(surf\swept_surface.swept_curve));
ELSE
(*объект offset_surfaceнедолжен самопересекаться идолженссылаться наопустимый объект
surface
*)
IF((’AIC_NON_MANIFOLD_SURFACE.OFFSET_SURFACE’ INTYPEOF (surf)) AND
(surfVoffset_surface.self_intersect = FALSE) OR
(surf\offset_surface.se!f_intersect = UNKNOWN)) THEN
RETURN (nmsf_surface_check(surf.offset_surface.basis_surface));
ELSE
(*объектsurface_replica должен иметь допустимый порождающий объектsurface
*)
IF ’AJC_NON_MANIFOLD_SURFACE.SURFACE_REPLICA’ INTYPEOF(surf) THEN
RETURN(nmsf_surface_check(surf\surface_replica.parent_surface));
ELSE
(*объект b_spline_surface недолжен самопересекаться
*)
IF((’AIC_NON_MANIFOLD_SURFACE.B_SPLINE_SURFACE’ INTYPEOF(surf))
AND
(surf\b_spline_surface.selfJntersect = FALSE) OR
(surfvb spline_surface.self_intersect = UNKNOWN))THEN
RETURN(TRUE);
END IF;
END IF;
END IF;
END IF;
END IF;
RETURN(FALSE);
END_FUNCTION:
r
15