Настоящий подраздел описывает только сущности поверхностей, создаваемые непосредственно с помощью функций интерфейса прикладного программирования.
6.1.17.1 Сущность api_planar_surface
Сущность api_planar_surface задает только поверхности, создаваемые интерфейсом. Сущность api_planar_surface описывается сущностью api_contour, соответствующей внешней границе поверхности, а также перечнем контуров api_contour, соответствующих (возможным) внутренним границам поверхности. Максимальное количество внутренних границ определяется реализацией интерфейса. Оно должно быть не меньше величины, установленной в разделе 9. Все указанные контуры должны лежать в одной плоскости и не должны пересекаться. Все контуры, соответствующие внутренним границам, должны принадлежать ограниченной поверхности, определенной контуром api_contour, соответствующим внешней границе. Ни один из указанных контуров не должен принадлежать ограниченной поверхности, определенной другим контуром api_contour. Это означает, что плоская поверхность api_planar_surface образуется дугами. Если данное условие выполняется, то плоская поверхность api_planar_surface вычисляется интерфейсом прикладного программирования следующим образом:
1) плоскость поверхности вычисляется по ее положению. Атрибут position.location задает первую точку первого сегмента комбинированной кривой composite_curve_segment контура api_contour, соответствующего внешней границе. Ось Х, задаваемая ортогональным направлением position.р [1], касается данного сегмента комбинированной кривой composite_curve_segment. Положительное направление обхода контура определено атрибутом same_sense. Ось Z, задаваемая ортогональным направлением position.p [3], должна быть ортогональна плоскости, содержащей указанный контур api_contour, соответствующий внешней границе. Положительным направлением обхода контура api_contour является его обход против часовой стрелки по отношению к указанной ориентированной оси;
2) для каждого контура api_contour, определяющего плоскую поверхность api_planar_surface, создается экземпляр ограниченной кривой bounded_surface_curve. При этом каждый из них ссылается на контур api_contour как на кривую curve_3d. Атрибут associated_geometry указанной поверхности кривой surface_curve содержит только один элемент, который является плоскостью для поверхности api_planar_surface, описанной на этапе 1. Значение атрибута главного представления master_representation для поверхности кривой равно значению атрибута curve_3d;
3) для каждой вычисленной поверхности кривой создается экземпляр сегмента замкнутой комбинированной кривой composite_curve_segment. Данный сегмент:
- ссылается на поверхность кривой, которой он соответствует, как на первичную кривую parent_curve;
- содержит значение переменной перехода (для последнего сегмента комбинированной кривой composite_curve_segment контура api_contour, который описывается атрибутом curve_3d для соответствующей ЗD-кривой на поверхности кривой) как значение атрибута transition;
- содержит атрибут same_sense, значение которого равно "true" для composite_curve_segment, соответствующего внешней границе. Данное значение гарантирует, что все прочие сегменты замкнутой кривой composite_curve_segment ориентированы по часовой стрелке относительно оси Z плоскости для поверхности api_planar_surface (то есть относительно ортогонального направления position.р [3], см. этап 1);
4) создается экземпляр наружной ограниченной кривой outer_boundary_curve, сегменты которой содержат только один элемент composite_curve_segment, первичная кривая parent_curve которого ссылается (как на атрибут curve_3d) на контур api_contour, соответствующий внешней границе плоской поверхности api_planar_surface, создаваемой интерфейсом прикладного программирования;
5) для всех прочих сегментов замкнутой кривой создается экземпляр ограниченной кривой, сегменты которого содержат только указанные сегменты;
6) окончательно создается экземпляр поверхности api_planar_surface. Его базовой поверхностью basis_surface является поверхность api_planar_surface. Ее границами могут быть ограниченные кривые и наружная ограниченная кривая, вычисленная на этапах 4 и 5. Значение атрибута implicit_outer равно "false".
Спецификация на языке EXPRESS:
*)
ENTITY api_planar_surface
SUBTYPE OF (curve_bounded_surface) ;
WHERE
api_WR1: 'API_ABSTRACT_SCHEMA.PLANE' IN TYPEOF (SELF.basis_surface);
api_WR2: SIZEOF (QUERY ( temp <* SELF.boundaries |
'API_ABSTRACT_SCHEMA.OUTER_BOUNDARY_CURVE' IN
TYPEOF (temp) )) =1;
api_WR3: QUERY (temp <* SELF.boundaries | SIZEOF (temp.segments) <> 1) = [];
api_WR4: SELF.implicit outer = false;
END_ENTITY;
(*
Примечание 1 - Настоящая сущность интерфейса прикладного программирования задает диапазон значений некоторых функций интерфейса.
Примечание 2 - Настоящая сущность может быть применена как супертип curve_bounded_surface.
Определения атрибутов: