Статус документа
Статус документа

ГОСТ Р ИСО 10303-511-2006 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 511. Прикладные интерпретированные конструкции. Топологически ограниченная поверхность (Переиздание)

     4.2 Определение объекта advanced_face схемы aic_topologically_bounded_surface


Объект advanced_face является специальным типом объекта face_surface, который имеет дополнительные ограничения с тем, чтобы гарантировать то, что геометрия прямо и полностью определена. Объект advanced_face является объектом верхнего уровня, который используется для формулировки точного смысла топологически ограниченной поверхности, соответствующей области применения данной ПИК.

Требуется, чтобы объект advanced_face был полностью ограничен посредством объектов edge_loop или vertex_loop.

Тип face_outer_bound может иметь не более одной границы (объект bound) грани.

Примечание - Для некоторых типов замкнутых или частично замкнутых поверхностей может оказаться невозможным установить единственную внешнюю границу.


Примеры
     


    1 Любой объект edge_loop на плоской поверхности может использоваться для определения объекта face_outer_bound при условии, что он не заключен в какой-либо другой замкнутой цепи на грани.
     


    2 Окружная замкнутая петля вокруг цилиндрической поверхности (объект cylindrical_surfасе) не может определять объект face_outer_bound, так как она не окружает замкнутую область поверхности.


EXPRESS-спецификация

  *)

ENTITY advanced_face

SUBTYPE OF (face_surface);

WHERE

WR1 : SIZEOF (['AIC_TOPOLOGICALLY_BOUNDED_SURFACE.ELEMENTARY_SURFACE',

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.B_SPLINE_SURFACE",

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.SWEPT_SURFACE']*

TYPEOF (face_geometry)) = 1;

WR2 : SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* bounds |

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_LOOP' IN

TYPEOF (bnds.bound)) | NOT (SIZEOF (QUERY

(oe <* elp_fbnds. bound\path.edge_list|

NOT ('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_CURVE' IN

TYPEOF (oe\oriented_edge.edge_element)))) = 0))) = 0;

WR3 : SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds |

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_LOOP' IN

TYPEOF(bnds.bound)) I

NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list I

NOT (SIZEOF(['AIC_TOPOLOGICALLY_BOUNDED_SURFACE.LINE',

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.CONIC',

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.POLYLINE',

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.SURFACE_CURVE',

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.B_SPLINE_CURVE']*

TYPEOF (oe.edge_element\edge_curve.edge_geometry)) = 1)

             )) = 0))) = 0;

     WR4 : SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* bounds |

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_LOOP' IN

TYPEOF (bnds.bound)) |

NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |

NOT (((('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.VERTEX_POINT' IN

TYPEOF (oe\edge.edge_start)) AND

('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.CARTESIAN_POINT' IN

TYPEOF (oe\edge.edge_start\vertex_point.vertex_geometry)))) AND

(('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.VERTEX_POINT' IN

TYPEOF (oe\edge.edge_end)) AND

('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.CARTESIAN_POlNT' IN

TYPEOF (oe\edge.edge_end\vertex_point.vertex_geometry)))

))) = 0))) = 0;

WR5 : SlZEOF (QUERY (elp_fbnds <* QUERY (bnds <* bounds |

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_LOOP' IN

TYPEOF (bnds.bound)) |

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.ORIENTED_PATH' IN

TYPEOF (elp_fbnds.bound))) =0;

WR6 : (NOT ('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.SWEPT_SURFACE' IN

TYPEOF(face_geometry))) OR

(SIZEOF (['AIC_TOPOLOGICALLY_BOUNDED_SURFACE.LINE',

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.CONIC',

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.POLYLINE',

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.B_SPLINE_CURVE']*

TYPEOF(face_geometry\swept_surface.swept_curve)) = 1);

WR7 : SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* bounds |

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.VERTEX_LOOP 'IN

TYPEOF (bnds.bound)) |

NOT (('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.VERTEX_POINT' IN

TYPEOF (vlp_fbnds\face_bound. bound\vertex_loop.loop_vertex))

AND ('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.CARTESIAN_POINT' IN

TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.

loop_vertex\vertex_point.vertex_geometry))

))) = 0;

WR8 : SIZEOF (QUERY (bnd <* bounds |

NOT (SIZEOF(['AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_LOOP',

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.VERTEX_LOOP']*

TYPEOF (bnd.bound)) = 1))) = 0;

WR9 : SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* bounds |

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_LOOP' IN

TYPEOF(bnds.bound)) |

NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |

('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.SURFACE_CURVE' IN

TYPEOF (oe\oriented_edge.edge element\edge_curve.edge_geometry))

AND (NOT (SIZEOF (QUERY (sc_ag <*

oe.edge_element\edge_curve.edge_geometry\

surface_curve.associated_geometry l

NOT ('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.PCURVE' IN

TYPEOF (sc_ag)))) = 0)))) = 0))) = 0;

WR10 : ((NOT('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.SWEPT_SURFACE' IN

TYPEOF (face_geometry))) OR

((NOT ('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.POLYLINE' IN

TYPEOF (face_geometry\swept_surface.swept_curve)))OR

(SIZEOF (face_geometry\swept_surface.swept_curve\polyline.points)

> = 3)))AND

(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* bounds |

'AIC_TOPOLOGICALLY_BOUNDED_SURFACE.EDGE_LOOP' IN

TYPEOF(bnds.bound)) |

NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list |

('AIC_TOPOLOGICALLY_BOUNDED_SURFACE.POLYLINE' IN

TYPEOF(oe\oriented_edge.edge_element\edge_curve.edge_geometry))

AND (NOT (SIZEOF (oe\oriented_edge.edge_element\

edge_curve.edge_geometry\polyline.points) > = 3)))) = 0))) = 0);

END_ENTITY;

(*


Формальные утверждения

WR1 - геометрия, используемая при определении грани, должна быть ограниченной. Тип геометрии грани должен быть elementary_surface, swept_surface или b_spline_surface.

WR2 - геометрия всех граничных ребер грани должна быть полностью определена через объекты edge_curve.

WR3 - типы линий, используемых для определения геометрии ребер, должны быть ограничены типами line, conic, polyline, surface_curve или b_splines_curve.

WR4 - вершины, используемые при определении грани, должны иметь тип vertex_point с геометрией, определенной объектом cartesian_point.

WR5 - запрещено использование ориентированных путей при определении объектов edge_loop объекта advanced_face.

WR6 - если геометрия грани имеет тип swept_surface, то используемый в ее определении объект swept_curve должен быть типа line, conic, polyline или b_splines_curve.

WR7 - для любого объекта vertex_loop, используемого для ограничения грани, объект loop_vertex должен иметь тип vertex_point, а геометрия должна быть определена посредством объекта cartesian_point.

WR8 - границы грани должны быть определены посредством объектов либо edge_loop, либо vertex_loop.

WR9 - если объект surface_curve используется как часть границы грани, то атрибут объекта associated_geometry должен ссылаться на объекты pcurve, но не на объекты surface.

WR10 - если объект polyline используется либо для определения объекта swept_surface, либо как часть границы грани, то он должен содержать, по крайней мере, три точки.

Неформальное утверждение

IР1 - любой экземпляр объекта advanced_face, который имеет геометрию полной сферической поверхности (объект spherical_surface), должен быть ограничен посредством объекта vertex_loop, расположенного в точке, где ось Z системы координат выходит за пределы поверхности сферы (то есть в точке "Северный Полюс" сферы).

EXPRESS-спецификация

*)

  END SCHEMA; -- конец схемы AIC_TOPOLOGICALLY_BOUNDED_SURFACE

(*