---
title: "\"ГОСТ Р ИСО 10303-513-2009. Национальный стандарт Российской Федерации. Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 513. Прикладные интерпретированные конструкции. Элементарное граничное представление\""
number: "ГОСТ Р ИСО 10303-513-2009"
issuer: "Федеральное агентство по техническому регулированию и метрологии"
status: действует
canonical: "https://bukva.ai/docs/standart-gost-r-iso-10303-513-2009"
---

## "ГОСТ Р ИСО 10303-513-2009. Национальный стандарт Российской Федерации. Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 513. Прикладные интерпретированные конструкции. Элементарное граничное представление"

# "ГОСТ Р ИСО 10303-513-2009. Национальный стандарт Российской Федерации. Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 513. Прикладные интерпретированные конструкции. Элементарное граничное представление"

(утв. и введен в действие Приказом Ростехрегулирования от 14.09.2009 N 367-ст)

> [!IMPORTANT]
> Документ [введен](#p100013) в действие с 01.07.2010.


<a id="p100001"></a>Утвержден и введен в действие

<div align="right">

Приказом Федерального<br>
агентства по техническому<br>
регулированию и метрологии<br>
от 14 сентября 2009 г. N 367-ст

<a id="p100002"></a>НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

</div>


<a id="p100003"></a>СИСТЕМЫ АВТОМАТИЗАЦИИ ПРОИЗВОДСТВА И ИХ ИНТЕГРАЦИЯ

<div align="center">

<a id="p100004"></a>**ПРЕДСТАВЛЕНИЕ ДАННЫХ ОБ ИЗДЕЛИИ И ОБМЕН ЭТИМИ ДАННЫМИ**

<a id="p100005"></a>**ЧАСТЬ 513**

<a id="p100006"></a>**ПРИКЛАДНЫЕ ИНТЕРПРЕТИРОВАННЫЕ КОНСТРУКЦИИ.**<br>
**ЭЛЕМЕНТАРНОЕ ГРАНИЧНОЕ ПРЕДСТАВЛЕНИЕ**

<a id="p100007"></a>**Industrial automation systems and integration. Product data**<br>
**representation and exchange. Part 513. Application**<br>
**interpreted construct. Elementary boundary representation**

<a id="p100008"></a>**ISO 10303-513:2000**<br>
**Industrial automation systems and integration - Product data**<br>
**representation and exchange - Part 513: Application**<br>
**interpreted construct: Elementary boundary representation**<br>
**(IDT)**

<a id="p100009"></a>**ГОСТ Р ИСО 10303-513-2009**

<a id="p100010"></a>**Группа П87**

<a id="p100011"></a>**ОКС 25.040.40**

<a id="p100012"></a>**ОКСТУ 4002**

</div>


<a id="p100013"></a>Дата введения
1 июля 2010 года

<div align="right">

<a id="p100014"></a>Предисловие

</div>


<a id="p100015"></a>Цели и принципы стандартизации в Российской Федерации установлены Федеральным законом от 27 декабря 2002 г. N 184-ФЗ "О техническом регулировании", а правила применения национальных стандартов Российской Федерации - ГОСТ Р 1.0-2001 "Стандартизация в Российской Федерации. Основные положения"

<div align="right">

<a id="p100016"></a>Сведения о стандарте

</div>


<a id="p100017"></a>1 ПОДГОТОВЛЕН Государственным научным учреждением "Центральный научно-исследовательский и опытно-конструкторский институт робототехники и технической кибернетики" на основе собственного аутентичного перевода на русский язык стандарта, указанного в [пункте 4](#p100020)

<div align="right">

<a id="p100018"></a>2 ВНЕСЕН Техническим комитетом по стандартизации ТК 459 "Информационная поддержка жизненного цикла изделий"

</div>

<a id="p100019"></a>3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 14 сентября 2009 г. N 367-ст
<a id="p100020"></a>4 Настоящий стандарт идентичен международному стандарту ИСО 10303-513:2000 "Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 513. Прикладные интерпретированные конструкции. Элементарное граничное представление" (ISO 10303-513:2000 "Industrial automation systems and integration - Product data representation and exchange - Part 513: Application interpreted construct: Elementary boundary representation").
<a id="p100021"></a>При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов соответствующие им национальные стандарты Российской Федерации, сведения о которых приведены в дополнительном [приложении ДА](#p101156)

<div align="right">

<a id="p100022"></a>5 ВВЕДЕН ВПЕРВЫЕ

</div>


<a id="p100023"></a>Информация об изменениях к настоящему стандарту публикуется в ежегодно издаваемом информационном указателе "Национальные стандарты", а текст изменений и поправок - в ежемесячно издаваемых информационных указателях "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ежемесячно издаваемом информационном указателе "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет

<div align="center">

<a id="p100024"></a>**Введение**

</div>


<a id="p100025"></a>Стандарты комплекса ИСО 10303 распространяются на компьютерное представление информации об изделиях и обмен данными об изделиях. Их целью является обеспечение нейтрального механизма, способного описывать изделия на всем протяжении их жизненного цикла. Этот механизм применим не только для обмена файлами в нейтральном формате, но является также основой для реализации и совместного доступа к базам данных об изделиях и организации архивирования.
<a id="p100026"></a>Стандарты комплекса ИСО 10303 представляют собой набор отдельно издаваемых стандартов (частей). Стандарты данного комплекса относятся к одной из следующих тематических групп: "Методы описания", "Методы реализации", "Методология и основы аттестационного тестирования", "Интегрированные обобщенные ресурсы", "Интегрированные прикладные ресурсы", "Прикладные протоколы", "Комплекты абстрактных тестов", "Прикладные интерпретированные конструкции" и "Прикладные модули". Настоящий стандарт входит в группу "Прикладные интерпретированные конструкции".
<a id="p100027"></a>Прикладная интерпретированная конструкция (ПИК) обеспечивает логическую группировку интерпретированных конструкций, поддерживающих конкретную функциональность для использования данных об изделии в разнообразных прикладных контекстах. Интерпретированная конструкция представляет собой обычную интерпретацию интегрированных ресурсов, поддерживающую требования совместного использования информации прикладными протоколами.
<a id="p100028"></a>Настоящий стандарт определяет прикладную интерпретированную конструкцию для определения граничного представления твердого тела с элементарной геометрией и явной топологией.

<a id="p100029"></a>**1 Область применения**

<a id="p100030"></a>Настоящий стандарт определяет интерпретацию обобщенных ресурсов, обеспечивающую соответствие требованиям к определению модели элементарного граничного представления.
<a id="p100031"></a>Требования настоящего стандарта распространяются на:
- <a id="p100032"></a>определение объекта elementary_brep_shape_representation, являющегося представлением, образованным одним или несколькими объектами manifold_solid_brep, каждый из которых определен элементарной геометрией и полностью явной топологией;
- <a id="p100033"></a>определение неограниченной геометрии кривых и поверхностей, используемых для определения граней B-rep модели;
- <a id="p100034"></a>определение топологической структуры B-rep модели;
- <a id="p100035"></a>трехмерную геометрию;
- <a id="p100036"></a>B-rep модели (модели граничного представления);
- <a id="p100037"></a>элементарные кривые, представляемые объектами line и conic;
- <a id="p100038"></a>объекты elementary_surface;
- <a id="p100039"></a>геометрические преобразования;

<div align="center">

<a id="p100040"></a>**- объекты polyline;**<br>
<a id="p100041"></a>**- неограниченную геометрию;**<br>
<a id="p100042"></a>**- использование топологии для ограничения геометрических объектов.**

</div>

<a id="p100043"></a>Требования настоящего стандарта не распространяются на:
- <a id="p100044"></a>двумерную геометрию;
- <a id="p100045"></a>ограниченные кривые, кроме объектов polyline;
- <a id="p100046"></a>ограниченные поверхности;
- <a id="p100047"></a>смещенные кривые и поверхности.
<a id="p100048"></a>ПИК, определенная настоящим стандартом, не зависит от какой-либо промышленной прикладной области.

<a id="p100049"></a>2 Нормативные ссылки

<a id="p100050"></a>**В настоящем стандарте использованы ссылки на следующие международные стандарты:**
<a id="p100051"></a>**ИСО/МЭК 8824-1:1995 Информационные технологии. Взаимосвязь открытых систем. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 1. Спецификация основной нотации (ISO/IEC 8824-1:1995, Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation)**
<a id="p100052"></a>**ИСО 10303-1:1994 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 1. Общие представления и основополагающие принципы (ISO 10303-1:1994, Industrial automation systems and integration - Product data representation and exchange - Part 1: Overview and fundamental principles)**
<a id="p100053"></a>ИСО 10303-11:1994 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 11. Методы описания. Справочное руководство по языку EXPRESS (ISO 10303-11:2004, Industrial automation systems and integration - Product data representation and exchange - Part 11: Description methods: The EXPRESS language reference manual)
<a id="p100054"></a>ИСО/ТО 10303-12:1997 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-I (ISO/TR 10303-12:1997, Industrial automation systems and integration - Product data representation and exchange - Part 12: Description methods: The EXPRESS-I language reference manual)
<a id="p100055"></a>ИСО 10303-41:1994 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 41. Интегрированные обобщенные ресурсы. Основы описания и поддержки изделий (ISO 10303-41:1994, Industrial automation systems and integration - Product data representation and exchange - Part 41: Integrated generic resource: Fundamentals of product description and support)
<a id="p100056"></a>ИСО 10303-42:1994 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 42. Интегрированные обобщенные ресурсы. Геометрическое и топологическое представление (ISO 10303-42:2003, Industrial automation systems and integration - Product data representation and exchange - Part 42: Integrated generic resource: Geometric and topological representation)
<a id="p100057"></a>ИСО 10303-43:1994 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 43. Интегрированные обобщенные ресурсы. Структуры представлений (ISO 10303-43:1994, Industrial automation systems and integration - Product data representation and exchange - Part 43: Integrated generic resources: Representation structures)
<a id="p100058"></a>ИСО 10303-202:1996 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 202. Прикладные протоколы. Ассоциативные чертежи (ISO 10303-202:1996, Industrial automation systems and integration - Product data representation and exchange - Part 202: Application protocol: Associative draughting)
<a id="p100059"></a>ИСО 10303-514:1999 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 514. Прикладные интерпретированные конструкции. Расширенное граничное представление (ISO 10303-514:1999, Industrial automation systems and integration - Product data representation and exchange - Part 514: Application interpreted construct: Advanced boundary representation)

<a id="p100060"></a>3 Термины и определения


#### <a id="p100061"></a>3.1 Термины, определенные в ИСО 10303-1

<a id="p100062"></a>В настоящем стандарте применены следующие термины:
- <a id="p100063"></a>приложение (application);
- <a id="p100064"></a>прикладной контекст (application context);
- <a id="p100065"></a>прикладной протокол; ПП (application protocol; AP);
- <a id="p100066"></a>метод реализации (implementation method);
- <a id="p100067"></a>интегрированный ресурс (integrated resource);
- <a id="p100068"></a>интерпретация (interpretation);
- <a id="p100069"></a>данные об изделии (product data).

#### <a id="p100070"></a>3.2 Термины, определенные в ИСО 10303-42

<a id="p100071"></a>В настоящем стандарте применены следующие термины:
- <a id="p100072"></a>линейно связный (arcwise connected);
- <a id="p100073"></a>граница (boundary);
<a id="p100074"></a>**- ограничения (bounds);**
<a id="p100075"></a>**- координатное пространство (coordinate space);**
<a id="p100076"></a>**- кривая (curve);**
- <a id="p100077"></a>незамкнутая кривая (open curve);
- <a id="p100078"></a>ориентируемый (orientable);
- <a id="p100079"></a>поверхность (surface);
- <a id="p100080"></a>топологическое значение (topological sense).

#### <a id="p100081"></a>3.3 Термин, определенный в ИСО 10303-202

<a id="p100082"></a>В настоящем стандарте применен следующий термин:
<a id="p100083"></a>прикладная интерпретированная конструкция (ПИК) (application interpreted construct; AIC).

#### <a id="p100084"></a>3.4 Термин, определенный в ИСО 10303-514

<a id="p100085"></a>В настоящем стандарте применен следующий термин:
<a id="p100086"></a>односвязное твердое тело (manifold solid).

#### <a id="p100087"></a>3.5 Другие определения

<a id="p100088"></a>В настоящем стандарте также применены следующие термины с соответствующими определениями:
<a id="p100089"></a>3.5.1 представление формы элементарными B-rep моделями (elementary B-rep shape representation): Представление формы, состоящее из одной или более B-rep моделей односвязных твердых тел. Каждая составляющая B-rep модели должна иметь грани и ребра, определенные посредством элементарной геометрии.
<a id="p100090"></a>3.5.2 элементарная геометрия (elementary geometry): Геометрия, образованная линиями, полилиниями, линиями второго порядка и элементарными поверхностями.

<a id="p100091"></a>**4 Сокращенный листинг на языке EXPRESS**

<a id="p100092"></a>В настоящем разделе определена EXPRESS-схема, в которой используются элементы интегрированных ресурсов и содержатся типы, конкретизации объектов и функции, относящиеся к настоящему стандарту.
<a id="p100093"></a>*Примечание* - В интегрированных ресурсах допускается существование подтипов и элементов списков выбора, не импортированных в данную ПИК. Такие конструкции исключают из дерева подтипов или из списка выбора посредством правил неявного интерфейса, определенных в ИСО 10303-11. Ссылки на исключенные конструкции находятся вне области применения данной ПИК. В некоторых случаях исключаются все элементы списка выбора. Поскольку ПИК предназначены для реализации в контексте прикладного протокола, элементы списка выбора будут определяться областью применения прикладного протокола.

<a id="p100094"></a>**Данная прикладная интерпретированная конструкция предоставляет непротиворечивое множество геометрических и топологических объектов для определения моделей односвязных твердых тел с гранями, имеющими элементарную геометрию и явно определенными ребрами и вершинами. Грани B-rep моделей ограничены полилиниями, линиями или кривыми второго порядка.**
<a id="p100095"></a>**Объектом самого верхнего уровня в данной ПИК является объект elementary_brep_shape_representation. Этот объект является конкретизацией объекта shape_representation (см. ИСО 10303-41), состоящей из объектов manifold_solid_brep и mapped_item, определенных как поступательно перемещенные или преобразованные копии объектов manifold_solid_brep с элементарной геометрией.**
<a id="p100096"></a>**EXPRESS-спецификация**


| <a id="p100097"></a>*)<br>SCHEMA aic_elementary_brep;<br>USE FROM geometry_schema(axis2_placement_3d,<br>cartesian_point,<br>cartesian_transformation_operator_3d,<br>circle,<br>conical_surface,<br>cylindrical_surface,<br>degenerate_toroidal_surface,<br>direction,<br>ellipse,<br>hyperbola,<br>line,<br>parabola,<br>plane,<br>polyline,<br>spherical_surface,<br>vector);<br>USE FROM geometric_model_schema(manifold_solid_brep,<br>brep_with_voids);<br>REFERENCE FROM geometric_model_schema(msb_shells);<br>USE FROM topology_schema(closed_shell,<br>connected_face_set,<br>edge_curve,<br>edge_loop,<br>face_bound,<br>face_outer_bound,<br>face_surface,<br>oriented_closed_shell,<br>vertex_loop,<br>vertex_point);<br>USE FROM representation_schema(mapped_item);<br>USE FROM product_property_representation_schema(shape_representation);<br>(* |
| --- |


<a id="p100098"></a>Примечания
<a id="p100099"></a>1 Для объекта connected_face_set установлены явные интерфейсы (т.е. они включены в списки оператора USE FROM), чтобы разрешить правилам, определенным для объекта elementary_brep_shape_representation, доступ к атрибутам этого объекта. При использовании данной ПИК данный объект должен быть реализован в виде одного из своих подтипов.
<a id="p100100"></a>2 Схемы, на которые выше даны ссылки, можно найти в следующих стандартах комплекса ИСО 10303:


| <a id="p100101"></a>geometry_schema | <a id="p100102"></a>- ИСО 10303-42; |
| --- | --- |
| <a id="p100103"></a>geometric_model_schema | <a id="p100104"></a>- ИСО 10303-42; |
| <a id="p100105"></a>representation_schema | <a id="p100106"></a>- ИСО 10303-43; |
| <a id="p100107"></a>product_property_representation_schema | <a id="p100108"></a>- ИСО 10303-41. |



#### <a id="p100109"></a>4.1 Основные понятия и допущения

<a id="p100110"></a>Для независимой реализации в схемах прикладных протоколов, использующих данную ПИК, предназначены следующие объекты:
- <a id="p100111"></a>axis2_placement_3d;
- <a id="p100112"></a>brep_with_voids;
- <a id="p100113"></a>cartesian_point;
- <a id="p100114"></a>cartesian_transformation_operator_3d;
- <a id="p100115"></a>circle;
- <a id="p100116"></a>closed_shell;
- <a id="p100117"></a>conical_surface;
- <a id="p100118"></a>cylindrical_surface;
- <a id="p100119"></a>degenerate_toroidal_surface;
- <a id="p100120"></a>direction;
- <a id="p100121"></a>edge_curve;
- <a id="p100122"></a>edge_loop;
- <a id="p100123"></a>elementary_face;
- <a id="p100124"></a>ellipse;
- <a id="p100125"></a>face_bound;
- <a id="p100126"></a>face_outer_bound;
- <a id="p100127"></a>face_surface;
- <a id="p100128"></a>hyperbola;
- <a id="p100129"></a>line;
- <a id="p100130"></a>manifold_solid_brep;
- <a id="p100131"></a>mapped_item;
- <a id="p100132"></a>oriented_closed_shell;
- <a id="p100133"></a>parabola;
- <a id="p100134"></a>plane;
- <a id="p100135"></a>polyline;
- <a id="p100136"></a>representation_map;
- <a id="p100137"></a>spherical_surface;
- <a id="p100138"></a>toroidal_surface;
- <a id="p100139"></a>vector;
- <a id="p100140"></a>vertex_loop;
- <a id="p100141"></a>vertex_point.
<a id="p100142"></a>Прикладной протокол, использующий данную ПИК, должен обеспечивать поддержку всех вышеперечисленных объектов.
<a id="p100143"></a>Прикладной протокол, использующий данную ПИК, должен допускать реализацию объекта shape_representation как объекта elementary_brep_shape_representation.

#### <a id="p100144"></a>4.2 Определения объекта elementary_brep_shape_representation схемы aic_elementary_brep

<a id="p100145"></a>Объект elementary_brep_shape_representation является подтипом объекта shape_representation, в котором элементы представления являются конкретизациями объектов manifold_solid_brep. Эти конкретизации отличаются от более общей B-rep модели тем, что для представления граней и ребер используются только явные геометрические формы. Геометрия граней ограничена объектами elementary_surface и линиями ребер, которые могут быть представлены объектами line, polyline или conic.
<a id="p100146"></a>EXPRESS-спецификация


| <a id="p100147"></a>*)<br>ENTITY elementary_brep_shape_representation<br>SUBTYPE OF (shape_representation);<br>WHERE<br>WR1 : SIZEOF (QUERY (it <* SELF.items \|<br>NOT (SIZEOF (['AIC_ELEMENTARY_BREP.MANIFOLD_SOLID_BREP',<br>'AIC_ELEMENTARY_BREP.FACETED_BREP',<br>'AIC_ELEMENTARY_BREP.MAPPED_ITEM',<br>'AIC_ELEMENTARY_BREP.AXIS2_PLACEMENT_3D'] *<br>TYPEOF(it)) = 1))) = 0;<br>WR2 : SIZEOF (QUERY (it <* SELF.items \|<br>SIZEOF(['AIC_ELEMENTARY_BREP.MANIFOLD_SOLID_BREP',<br>'AIC_ELEMENTARY_BREP.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0;<br>WR3 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items \|<br>'AIC_ELEMENTARY_BREP.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) \|<br>NOT (SIZEOF (QUERY (csh <* msb_shells(msb) \|<br>NOT (SIZEOF (QUERY(fcs <* csh.cfs_faces \|<br>NOT('AIC_ELEMENTARY_BREP.FACE_SURFACE' IN TYPEOF(fcs)))) = 0<br>))) = 0<br>))) = 0;<br>WR4 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items \|<br>'AIC_ELEMENTARY_BREP.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) \|<br>NOT (SIZEOF (QUERY (csh <* msb_shells(msb) \|<br>NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces \| |
| --- |
| <a id="p100148"></a>NOT(('AIC_ELEMENTARY_BREP.ELEMENTARY_SURFACE' IN<br>TYPEOF(fcs\face_surface.face_geometry))<br>))) = 0<br>))) = 0<br>))) = 0;<br>WR5 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items \|<br>'AIC_ELEMENTARY_BREP.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) \|<br>NOT (SIZEOF (QUERY (csh <* msb_shells(msb) \|<br>NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces \|<br>NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds \|<br>'AIC_ELEMENTARY_BREP.EDGE_LOOP' IN TYPEOF(bnds.bound)) \|<br>NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list \|<br>NOT('AIC_ELEMENTARY_BREP.EDGE_CURVE' IN<br>TYPEOF(oe.edge_element)))) = 0<br>))) = 0<br>))) = 0<br>))) = 0<br>))) = 0;<br>WR6 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items \|<br>'AIC_ELEMENTARY_BREP.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) \|<br>NOT (SIZEOF (QUERY (csh <* msb_shells(msb) \|<br>NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces \|<br>NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <*fcs.bounds \|<br>'AIC_ELEMENTARY_BREP.EDGE_LOOP' IN TYPEOF(bnds.bound)) \|<br>NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list \|<br>NOT (SIZEOF (['AIC_ELEMENTARY_BREP.LINE', |
| <a id="p100149"></a>'AIC_ELEMENTARY_BREP.CONIC',<br>'AIC_ELEMENTARY_BREP.POLYLINE'] *<br>TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1 )<br>)) = 0<br>))) = 0<br>))) = 0<br>))) = 0<br>))) = 0;<br>WR7 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items \|<br>'AIC_ELEMENTARY_BREP.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) \|<br>NOT (SIZEOF (QUERY (csh <* msb_shells(msb) \|<br>NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces \|<br>NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <*fcs.bounds \|<br>'AIC_ELEMENTARY_BREP.EDGE_LOOP' IN TYPEOF(bnds.bound)) \|<br>NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list \|<br>NOT(('AIC_ELEMENTARY_BREP.VERTEX_POINT' IN TYPEOF(oe.edge_start))<br>AND ('AIC_ELEMENTARY_BREP.VERTEX_POINT' IN<br>TYPEOF(oe.edge_end))<br>))) = 0<br>))) = 0<br>))) = 0<br>))) = 0<br>))) = 0;<br>WR8 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items \|<br>'AIC_ELEMENTARY_BREP.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) \|<br>NOT (SIZEOF (QUERY (csh <* msb_shells(msb) \| |
| <a id="p100150"></a>NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces \|<br>NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds \|<br>'AIC_ELEMENTARY_BREP.EDGE_LOOP' IN TYPEOF(bnds.bound)) \|<br>NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list \|<br>('AIC_ELEMENTARY_BREP.POLYLINE' IN<br>TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND<br>(NOT (SIZEOF (oe\oriented_edge.edge_element\<br>edge_curve.edge_geometry\polyline.points) >= 3))<br>)) = 0<br>))) = 0<br>))) = 0<br>))) = 0<br>))) = 0;<br>WR9 : SIZEOF (QUERY (msb <* QUERY (it <* items \|<br>'AIC_ELEMENTARY_BREP.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) \|<br>'AIC_ELEMENTARY_BREP.ORIENTED_CLOSED_SHELL' IN TYPEOF<br>(msb\manifold_solid_brep.outer)))<br>= 0;<br>WR10 : SIZEOF (QUERY (brv <* QUERY (it <* items \|<br>'AIC_ELEMENTARY_BREP.BREP_WITH_VOIDS' IN TYPEOF(it)) \|<br>NOT (SIZEOF (QUERY (csh <* brv\brep_with_voids. voids \|<br>csh\oriented_closed_shell.orientation)) = 0))) = 0;<br>WR11 : SIZEOF (QUERY (mi <* QUERY (it <* items \|<br>'AIC_ELEMENTARY_BREP.MAPPED_ITEM' IN TYPEOF(it)) \| |
| <a id="p100151"></a>NOT ('AIC_ELEMENTARY_BREP.ELEMENTARY_BREP_SHAPE_REPRESENTATION' IN<br>TYPEOF(mi\mapped_item.mapping_source.<br>mapped_representation)))) = 0;<br>WR12 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items \|<br>'AIC_ELEMENTARY_BREP.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) \|<br>NOT (SIZEOF (QUERY (csh <* msb_shells(msb) \|<br>NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces \|<br>NOT (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fcs.bounds \|<br>'AIC_ELEMENTARY_BREP.VERTEX_LOOP' IN TYPEOF(bnds.bound)) \|<br>NOT (('AIC_ELEMENTARY_BREP.VERTEX_POINT' IN<br>TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND<br>('AIC_ELEMENTARY_BREP.CARTESIAN_POINT' IN<br>TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.<br>loop_vertex\vertex_point.vertex_geometry))<br>))) = 0))) = 0))) = 0))) = 0;<br>END_ENTITY;<br>(* |


<a id="p100152"></a>Формальные утверждения
<a id="p100153"></a>WR1 - атрибут items, супертипа representation должен содержать только объекты manifold_solid_brep, mapped_item и axis2_placement_3d. Согласно этому правилу, использование объектов faceted_brep недопустимо, поскольку экземпляр объекта faceted_brep также имел бы тип manifold_solid_brep.
<a id="p100154"></a>WR2 - по крайней мере один элемент из множества элементов items должен быть объектом manifold_solid_brep или mapped_item (см. также [WR11](#p100164)).
<a id="p100155"></a>WR3 - Все грани, используемые для построения объекта manifold_solid_brep должны иметь тип face_surface.
<a id="p100156"></a>*Примечание* - Вызов функции msb_shells в WR3 и последующих утверждениях является корректным, так как, хотя обобщенным типом аргумента 'msb' является representation_item, но оператором QUERY для него был определен тип manifold_solid_brep.

<a id="p100157"></a>WR4 - для каждого объекта manifold_solid_brep из множества элементов items, ассоциированная поверхность для каждой грани должна быть объектом elementary_surface.
<a id="p100158"></a>WR5 - для каждого объекта manifold_solid_brep из множества элементов items, ребра, используемые для определения границ, должны иметь тип edge_curve.
<a id="p100159"></a>WR6 - для каждого объекта manifold_solid_brep из множества элементов items, каждая кривая, используемая для определения ограничений граней, должна быть объектом conic, line или polyline.
<a id="p100160"></a>WR7 - для каждого объекта manifold_solid_brep из множества элементов items, все ребра, используемые для определения границ, должны быть обрезаны вершинами, имеющими тип vertex_point.
<a id="p100161"></a>WR8 - для каждого объекта manifold_solid_brep из множества элементов items, каждый объект polyline, используемый для определения части ограничений грани, должен содержать три или более точек.
<a id="p100162"></a>WR9 - для каждого объекта manifold_solid_brep из множества элементов items, атрибут внешней оболочки не должен иметь тип oriented_closed_shell.
<a id="p100163"></a>WR10 - если объект brep_with_voids включены в множество элементов items, то каждая оболочка в множестве voids должна быть объектом oriented_closed_shell со значением ориентации FALSE.
<a id="p100164"></a>WR11 - если объект mapped_item включен в множество элементов items, то объект mapped_representation атрибута mapping_source должен быть объектом elementary_brep_shape_representation.
<a id="p100165"></a>*Примечание* - Если объект cartesian_transformation_operator_3d включен как объект mapped_item.mapping_target с объектом axis2_placement_3d, который соответствует в исходной системе координат объекту mapped_representation.mapping_origin, то результирующий объект mapped_item является преобразованной копией объекта elementary_brep_shape_representation. Точное определение данного преобразования, включая поступательное перемещение, вращение, масштабирование и, при необходимости, зеркалирование, задается оператором преобразования.

<a id="p100166"></a>WR12 - для каждого объекта manifold_solid_brep из множества элементов items любой объект vertex_loop, используемый для определения ограничения грани, должен ссылаться на объект vertex_point с геометрией, определяемой объектом cartesian_point.
<a id="p100167"></a>EXPRESS-спецификация


| <a id="p100168"></a>*)<br>END_SCHEMA; - конец схемы AIC_ELEMENTARY_BREP<br>(* |
| --- |






<a id="p100169"></a>Приложение A
(обязательное)

<a id="p100170"></a>СОКРАЩЕННОЕ НАИМЕНОВАНИЕ ОБЪЕКТА

<a id="p100171"></a>Сокращенное наименование объекта, установленного в настоящем стандарте, приведено в [таблице A.1](#p100173). Требования к использованию сокращенных наименований объектов содержатся в стандартах тематической группы "Методы реализации" комплекса ИСО 10303.

<a id="p100172"></a>Таблица A.1

<a id="p100173"></a>Сокращенное наименование объекта


| <a id="p100174"></a>Полное наименование | <a id="p100175"></a>Сокращенное наименование |
| --- | --- |
| <a id="p100176"></a>ELEMENTARY_BREP_SHAPE_REPRESENTATION | <a id="p100177"></a>EBSR |






<a id="p100178"></a>Приложение B
(обязательное)

<a id="p100179"></a>РЕГИСТРАЦИЯ ИНФОРМАЦИОННОГО ОБЪЕКТА

<a id="p100180"></a>B.1 Обозначение документа
<a id="p100181"></a>Для обеспечения однозначного обозначения информационного объекта в открытой системе настоящему стандарту присвоен следующий идентификатор объекта:
<a id="p100182"></a>{ iso standard 10303 part(513) version(1) }
<a id="p100183"></a>Смысл данного обозначения установлен в ИСО/МЭК 8824-1 и описан в ИСО 10303-1.
<a id="p100184"></a>B.2 Обозначение схемы
<a id="p100185"></a>Для обеспечения однозначного обозначения в открытой информационной системе схеме aic_elementary_brep (см. [раздел 4](#p100091)) присвоен следующий идентификатор объекта:
<a id="p100186"></a>{ iso standard 10303 part(513) version(1) object(1) aic-elementary-brep(1) }
<a id="p100187"></a>Смысл данного обозначения установлен в ИСО/МЭК 8824-1 и описан в ИСО 10303-1.





<a id="p100188"></a>Приложение C
(справочное)

<a id="p100189"></a>МАШИННО-ИНТЕРПРЕТИРУЕМЫЕ ЛИСТИНГИ

<a id="p100190"></a>В данном приложении приведены ссылки на сайты, на которых находятся листинги наименований объектов на языке EXPRESS и соответствующих сокращенных наименований, установленных в настоящем стандарте. На этих же сайтах находятся листинги всех EXPRESS-схем, установленных или на которые даются ссылки в настоящем стандарте, без комментариев и другого поясняющего текста. Эти листинги доступны в машинно-интерпретируемой форме и могут быть получены по следующим адресам URL:
<a id="p100191"></a>Сокращенные наименования: http://www.mel.nist.gov/div826/subject/apde/snr/
<a id="p100192"></a>EXPRESS: http://www.mel.nist.gov/step/parts/part513/is/
<a id="p100193"></a>При невозможности доступа к этим сайтам, необходимо обратиться в центральный секретариат ИСО или непосредственно в секретариат ИСО ТК184/ПК4 по адресу электронной почты: sc4sec@cme.nist.gov.
<a id="p100194"></a>*Примечание* - Информация, представленная в машинно-интерпретируемой форме по указанным выше адресам URL, является справочной. Обязательным является текст настоящего стандарта.





<a id="p100195"></a>Приложение D
(справочное)

<a id="p100196"></a>EXPRESS-G ДИАГРАММЫ

<a id="p100197"></a>Диаграммы, приведенные на [рисунках D.1](#p100210) - [D.4](#p100218) получены из сокращенного листинга ПЭМ на языке EXPRESS, определенного в [разделе 4](#p100091). В диаграммах использована графическая нотация EXPRESS-G языка EXPRESS. Описание EXPRESS-G установлено в ИСО 10303-11, приложение D.
<a id="p100198"></a>Примечания
<a id="p100199"></a>1 Приведенные ниже выбранные типы импортируются в расширенный листинг ПИК в соответствии с правилами неявных интерфейсов по ИСО 10303-11. В настоящем стандарте эти выбранные типы в других объектах не используются:
- <a id="p100200"></a>geometric_set_select;
- <a id="p100201"></a>pcurve_or_surface;
- <a id="p100202"></a>reversible_topology;
- <a id="p100203"></a>shell;
- <a id="p100204"></a>trimming_select;
- <a id="p100205"></a>vector_or_direction.
<a id="p100206"></a>2 Правила неявных интерфейсов, определенные в ИСО 10303-11, вводят также некоторые объекты, реализация которых запрещена правилами, относящимися к объекту elementary_brep_shape_representation. Эти объекты отмечены на EXPRESS-G диаграммах символом "*".

<a id="p100207"></a> ![рис. 1](https://i.bukva.ai/ZgVOHkf8/img_0.png) 


<a id="p100208"></a>

---

<a id="p100209"></a><*> excluded by rule on elementary_brep_shape_representation

<a id="p100210"></a>Рисунок D.1 - ПИК elementary_boundary_representation
в формате EXPRESS-G (диаграмма 1 из 4)



<a id="p100211"></a> ![рис. 2](https://i.bukva.ai/ZgVOHkf8/img_1.png) 


<a id="p100212"></a>

---

<a id="p100213"></a><*> entity is implicily interfaced but excluded by rules

<a id="p100214"></a>Рисунок D.2 - ПИК elementary_boundary_representation
в формате EXPRESS-G (диаграмма 2 из 4)



<a id="p100215"></a> ![рис. 3](https://i.bukva.ai/ZgVOHkf8/img_2.png) 

<a id="p100216"></a>Рисунок D.3 - ПИК elementary_boundary_representation
в формате EXPRESS-G (диаграмма 3 из 4)



<a id="p100217"></a> ![рис. 4](https://i.bukva.ai/ZgVOHkf8/img_3.png) 

<a id="p100218"></a>Рисунок D.4 - ПИК elementary_boundary_representation
в формате EXPRESS-G (диаграмма 4 из 4)





<a id="p100219"></a>Приложение E
(справочное)

<a id="p100220"></a>ТРЕБОВАНИЯ СООТВЕТСТВИЯ И ЦЕЛИ ТЕСТИРОВАНИЯ ПИК

<a id="p100221"></a>E.1 Требования соответствия ПИК: элементарная B-rep модель
<a id="p100222"></a>Любой прикладной протокол, использующий данную ПИК, может потребовать согласования с определенными ниже требованиями соответствия ПИК при реализации объекта elementary_brep_shape_representation.
<a id="p100223"></a>Соответствие данной ПИК означает, что должны поддерживаться все типы данных и типы объектов, определенные в листинге на языке EXPRESS. Единственным допустимым использованием экземпляра геометрического или топологического объекта в контексте данной ПИК является его использование для определения объекта elementary_brep_shape_representation.
<a id="p100224"></a>Указанные ниже объекты могут быть реализованы как часть определения объекта elementary_brep_shape_representation:
- <a id="p100225"></a>axis2_placement_3d;
- <a id="p100226"></a>brep_with_voids;
- <a id="p100227"></a>cartesian_point;
- <a id="p100228"></a>cartesian_transformation_operator_3d;
- <a id="p100229"></a>circle;
- <a id="p100230"></a>closed_shell;
- <a id="p100231"></a>conical_surface;
- <a id="p100232"></a>cylindrical_surface;
- <a id="p100233"></a>degenerate_toroidal_surface;
- <a id="p100234"></a>direction;
- <a id="p100235"></a>edge_curve;
- <a id="p100236"></a>edge_loop;
- <a id="p100237"></a>elementary_face;
- <a id="p100238"></a>ellipse;
- <a id="p100239"></a>face_bound;
- <a id="p100240"></a>face_outer_bound;
- <a id="p100241"></a>face_surface;
- <a id="p100242"></a>hyperbola;
- <a id="p100243"></a>line;
- <a id="p100244"></a>manifold_solid_brep;
- <a id="p100245"></a>mapped_item;
- <a id="p100246"></a>oriented_closed_shell;
- <a id="p100247"></a>parabola;
- <a id="p100248"></a>plane;
- <a id="p100249"></a>polyline;
- <a id="p100250"></a>representation_map;
- <a id="p100251"></a>spherical_surface;
- <a id="p100252"></a>toroidal_surface;
- <a id="p100253"></a>vector;
- <a id="p100254"></a>vertex_loop;
- <a id="p100255"></a>vertex_point.
<a id="p100256"></a>E.2 Цели тестирования ПИК элементарной B-rep модели
<a id="p100257"></a>В настоящем разделе определены цели тестирования для ПИК элементарной B-rep модели. Цели тестирования основаны на конструкциях, определенных в [разделе 4](#p100091).
<a id="p100258"></a>E.2.1 Объект elementary_brep_shape_representation
<a id="p100259"></a>На основании определения данного объекта сформулированы следующие цели тестирования:
<a id="p100260"></a>EB1 - проверка объекта representation как объекта shape_representation и как объекта elementary_brep_shape_representation (см. [E.3.1](#p100335)).
<a id="p100261"></a>EB2 - проверка объекта elementary_brep_shape_representation с атрибутом context, представленным как объект geometric_context с атрибутом items, представленным как объект manifold_solid_brep (см. [E.3.1](#p100335)).
<a id="p100262"></a>EB3 - проверка объекта elementary_brep_shape_representation с атрибутом context, представленным как объект geometric_context с атрибутом items, представленным как объект mapped_item (см. [E.3.6](#p100467)).
<a id="p100263"></a>EB4 - проверка объекта elementary_brep_shape_representation с атрибутом context, представленным как объект geometric_context с атрибутом items, представленным двумя или более элементами, представленными как объекты manifold_solid_brep, или mapped_item, или axis2_placement_3d. При этом по меньшей мере один из них должен быть объектом axis2_placement_3d (см. [E.3.6](#p100467)).
<a id="p100264"></a>E.2.2 Объект manifold_solid_brep
<a id="p100265"></a>На основании определения данного объекта сформулированы следующие цели тестирования:
<a id="p100266"></a>EB5 - проверка объекта manifold_solid_brep с атрибутом outer (атрибут voids отсутствует), представленным как объект closed_shell (но не как подтип oriented_closed_shell) (см. [E.3.1](#p100335)).
<a id="p100267"></a>EB6 - проверка объекта manifold_solid_brep как подтипа brep_with_voids с атрибутом outer, представленным как объект closed_shell, и атрибутом voids, представленным множеством, состоящим из одного объекта oriented_closed_shell (атрибут voids присутствует) (см. [E.3.2](#p100386)).
<a id="p100268"></a>EB7 - проверка объекта manifold_solid_brep как подтипа brep_with_voids с атрибутом outer, представленным как объект closed_shell, и атрибутом voids, представленным множеством, состоящим из более чем одного объекта oriented_closed_shell (атрибут voids присутствует) (см. [E.3.2](#p100386)).
<a id="p100269"></a>E.2.3 Объект oriented_closed_shell
<a id="p100270"></a>На основании определения данного объекта и ограничений, наложенных на объект elementary_brep_shape_representation, сформулирована следующая цель тестирования:
<a id="p100271"></a>EB8 - проверка объекта oriented_closed_shell с атрибутом orientation, имеющим значение FALSE (см. [E.3.2](#p100386)).
<a id="p100272"></a>E.2.4 Объект closed_shell
<a id="p100273"></a>На основании определения данного объекта и ограничений, наложенных на объект elementary_brep_shape_representation, сформулированы следующие цели тестирования:
<a id="p100274"></a>EB9 - проверка объекта closed_shell с атрибутом cfs_faces, представленным множеством, состоящим из одного объекта face_surface (см. [E.3.2](#p100386)).
<a id="p100275"></a>EB10 - проверка объекта closed_shell с атрибутом cfs_faces, представленным множеством, состоящим из более чем одного объекта face_surface (см. [E.3.1](#p100335)).
<a id="p100276"></a>E.2.5 Объект face
<a id="p100277"></a>На основании определения данного объекта и ограничений, наложенных на объект elementary_brep_shape_representation, сформулированы следующие цели тестирования:
<a id="p100278"></a>EB11 - проверка объекта face как объекта face_surface с атрибутом bounds, представленным множеством, состоящим из одного объекта face_bound, представленного как объект face_outer_bound с атрибутом orientation, имеющим значение TRUE (см. [E.3.1](#p100335)).
<a id="p100279"></a>EB12 - проверка объекта face как объекта face_surface с атрибутом bounds, представленным множеством, состоящим из одного объекта face_bound, представленного как объект face_outer_bound с атрибутом bound, представленным объектом edge_loop (но не oriented_path) и атрибутом orientation, имеющим значение FALSE (см. [E.3.1](#p100335)).
<a id="p100280"></a>EB13 - проверка объекта face как объекта face_surface с атрибутом bounds, представленным множеством, состоящим, по меньшей мере, из двух объектов face_bound с атрибутом bound, представленным объектом edge_loop и атрибутом orientation, имеющим значение TRUE (см. [E.3.1](#p100335)).
<a id="p100281"></a>EB14 - проверка объекта face как объекта face_surface с атрибутом bounds, представленным множеством, состоящим, по меньшей мере, из двух объектов face_bound с атрибутом bound, представленным объектом edge_loop и атрибутом orientation, имеющим значение FALSE (см. [E.3.1](#p100335)).
<a id="p100282"></a>EB15 - проверка объекта face как объекта face_surface с атрибутом bounds, представленным множеством, состоящим, по меньшей мере, из двух объектов face_bound (включая один объект vertex_loop) (см. [E.3.5](#p100445)).
<a id="p100283"></a>E.2.6 Объект face_surface
<a id="p100284"></a>На основании определения данного объекта и ограничений, наложенных на объект elementary_brep_shape_representation, сформулированы следующие цели тестирования:
<a id="p100285"></a>EB16 - проверка объекта face_surface с атрибутом face_geometry, представленным как объект surface (см. [E.3.1](#p100335)).
<a id="p100286"></a>EB17 - проверка объекта face_surface с атрибутом same_sense, имеющим значение TRUE (см. [E.3.1](#p100335)).
<a id="p100287"></a>EB18 - проверка объекта face_surface с атрибутом same_sense, имеющим значение FALSE (см. [E.3.5](#p100445)).
<a id="p100288"></a>E.2.7 Объект surface
<a id="p100289"></a>На основании определения данного объекта и ограничений, наложенных на объект face_surface, сформулирована следующая цель тестирования:
<a id="p100290"></a>EB19 - проверка объекта surface как объекта elementary_surface (см. [E.3.1](#p100335)).
<a id="p100291"></a>E.2.8 Объект elementary_surface
<a id="p100292"></a>На основании определения данного объекта и ограничений, наложенных на объект face_surface, сформулированы следующие цели тестирования:
<a id="p100293"></a>EB20 - проверка объекта elementary_surface с атрибутом position, представленным как объект axis2_placement_3d с присутствием атрибута axis (см. [E.3.1](#p100335)).
<a id="p100294"></a>EB21 - проверка объекта elementary_surface с атрибутом position, представленным как объект axis2_placement_3d с отсутствием атрибута axis (см. [E.3.4](#p100429)).
<a id="p100295"></a>EB22 - проверка объекта elementary_surface с атрибутом position, представленным как объект axis2_placement_3d с присутствием атрибута ref_direction (см. [E.3.1](#p100335)).
<a id="p100296"></a>EB23 - проверка объекта elementary_surface с атрибутом position, представленным как объект axis2_placement_3d с отсутствием атрибута ref_direction (см. [E.3.4](#p100429)).
<a id="p100297"></a>EB24 - проверка объекта elementary_surface как объекта plane (см. [E.3.1](#p100335)).
<a id="p100298"></a>EB25 - проверка объекта elementary_surface как объекта cylindrical_surface (см. [E.3.1](#p100335)).
<a id="p100299"></a>EB26 - проверка объекта elementary_surface как объекта conical_surface (см. [E.3.5](#p100445)).
<a id="p100300"></a>EB27 - проверка объекта elementary_surface как объекта spherical_surface (см. [E.3.1](#p100335)).
<a id="p100301"></a>EB28 - проверка объекта elementary_surface как объекта toroidal_surface (см. [E.3.3](#p100411)).
<a id="p100302"></a>E.2.9 Объект loop
<a id="p100303"></a>На основании определения данного объекта и ограничений, наложенных на объект face_surface, сформулированы следующие цели тестирования:
<a id="p100304"></a>EB29 - проверка объекта loop как объекта edge_loop (см. [E.3.1](#p100335)).
<a id="p100305"></a>EB30 - проверка объекта loop как объекта vertex_loop с атрибутом loop_vertex, представленным как объект vertex_point с атрибутом vertex_geometry, представленным как объект cartesian_point (см. [E.3.2](#p100386)).
<a id="p100306"></a>E.2.10 Объект edge
<a id="p100307"></a>На основании определения данного объекта и ограничений, наложенных на объект face_surface, сформулированы следующие цели тестирования:
<a id="p100308"></a>EB31 - проверка объекта edge как объекта edge_curve с атрибутами edge_start и edge_end, представленными объектом vertex_point (см.[E.3.1](#p100335)).
<a id="p100309"></a>EB32 - проверка объекта edge как объекта oriented_edge с атрибутом orientation, имеющим значение TRUE (см. [E.3.1](#p100335)).
<a id="p100310"></a>EB33 - проверка объекта edge как объекта oriented_edge с атрибутом orientation, имеющим значение FALSE (см. [E.3.3](#p100411)).
<a id="p100311"></a>E.2.11 Объект edge_curve
<a id="p100312"></a>На основании определения данного объекта и ограничений, наложенных на объект face_surface, сформулированы следующие цели тестирования:
<a id="p100313"></a>EB34 - проверка объекта edge_curve с атрибутом edge_geometry, представленным как объект line (см. [E.3.3](#p100411)).
<a id="p100314"></a>EB35 - проверка объекта edge_curve с атрибутом edge_geometry, представленным как объект polyline (см. [E.3.4](#p100429)).
<a id="p100315"></a>EB36 - проверка объекта edge_curve с атрибутом edge_geometry, представленным как объект conic (см. [E.3.1](#p100335)).
<a id="p100316"></a>EB37 - проверка объекта edge_curve с атрибутом same_sense, имеющим значение TRUE (см. [E.3.1](#p100335)).
<a id="p100317"></a>EB38 - проверка объекта edge_curve с атрибутом same_sense, имеющим значение FALSE (см. [E.3.5](#p100445)).
<a id="p100318"></a>E.2.12 Объект conic
<a id="p100319"></a>На основании определения данного объекта и ограничений, наложенных на объект face_surface, сформулированы следующие цели тестирования:
<a id="p100320"></a>EB39 - проверка объекта conic как объекта circle (см. [E.3.1](#p100335)).
<a id="p100321"></a>EB40 - проверка объекта conic как объекта ellipse (см. [E.3.1](#p100335)).
<a id="p100322"></a>EB41 - проверка объекта conic как объекта hyperbola (см. [E.3.5](#p100445)).
<a id="p100323"></a>EB42 - проверка объекта conic как объекта parabola (см. [E.3.5](#p100445)).
<a id="p100324"></a>E.2.13 Объект polyline
<a id="p100325"></a>На основании определения данного объекта и ограничений, наложенных на объект face_surface, сформулирована следующая цель тестирования:
<a id="p100326"></a>EB43 - проверка объекта polyline с атрибутом points, представленным списком из трех или более объектов cartesian_point (см. [E.3.4](#p100429)).
<a id="p100327"></a>E.2.14 Объект cartesian_transformation_operator_3d
<a id="p100328"></a>На основании определения данного объекта, объекта mapped_item и ограничений, наложенных на объект elementary_brep_shape_representation, сформулированы следующие цели тестирования:
<a id="p100329"></a>EB44 - проверка объекта mapped_item с атрибутом mapping_target, представленным как объект cartesian_transformation_operator_3d (см. [E.3.7](#p100487)).
<a id="p100330"></a>EB45 - проверка объекта cartesian_transformation_operator как объекта cartesian_transformation_operator_3d с масштабом, представленным значением типа REAL, не равным 1,0 (см. [E.3.7](#p100487)).
<a id="p100331"></a>E.3 Абстрактные контрольные примеры для модели элементарного граничного представления
<a id="p100332"></a>Абстрактные контрольные примеры для постпроцессора представлены в настоящем разделе на языке EXPRESS-I.
<a id="p100333"></a>Для каждого контрольного примера для препроцессора приведено простое текстовое описание, чтобы обеспечить возможность создания модели, подобной той, которая представлена на языке EXPRESS-I для тестирования постпроцессора. Для каждого контрольного примера определен ряд относящихся к нему целей тестирования.
<a id="p100334"></a>*Примечание* - Многие из целей тестирования применимы к нескольким контрольным примерам, но критерии определены только для первого из них. В частности, это относится ко многим целям, приведенным в контрольном примере eb1.

<a id="p100335"></a>E.3.1 Контрольный пример eb1
<a id="p100336"></a>Контрольный пример eb1 является наиболее фундаментальным контрольным примером, описывающим грани, необходимые для определения одиночного сплошного цилиндра с полусферическим основанием и эллиптической верхней гранью. Вся геометрия задана в явной форме без значений, принимаемых по умолчанию, и без необходимости изменения направлений на обратные. Определение граней обеспечивается контекстом объекта cylinder_sphere_shell с использованием исходных параметров.
<a id="p100337"></a>E.3.1.1 Цели тестирования
<a id="p100338"></a>Ниже перечислены цели тестирования прикладной интерпретированной модели, охватываемые данным контрольным примером.
<a id="p100339"></a>EB1 - проверка объекта representation как объекта shape_representation и как объекта elementary_brep_shape_representation.
<a id="p100340"></a>EB2 - проверка объекта elementary_brep_shape_representation с атрибутом context, представленным как объект geometric_representation_context с атрибутом items, представленным как объект manifold_solid_brep.
<a id="p100341"></a>EB5 - проверка объекта manifold_solid_brep с атрибутом outer (атрибут voids отсутствует), представленным как объект closed_shell (но не как подтип oriented_closed_shell).
<a id="p100342"></a>EB10 - проверка объекта closed_shell с атрибутом cfs_faces, представленным множеством, состоящим из более чем одного объекта face_surface.
<a id="p100343"></a>EB11 - проверка объекта face как объекта face_surface с атрибутом bounds, представленным множеством, состоящим из одного объекта face_bound, представленного как объект face_outer_bound с атрибутом orientation, имеющим значение TRUE.
<a id="p100344"></a>EB12 - проверка объекта face как объекта face_surface с атрибутом bounds, представленным множеством, состоящим из одного объекта face_bound, представленного как объект face_outer_bound с атрибутом orientation, имеющим значение FALSE.
<a id="p100345"></a>EB13 - проверка объекта face как объекта face_surface с атрибутом bounds, представленным множеством, состоящим, по меньшей мере, из двух объектов face_bound с атрибутом bound, представленным объектом edge_loop и атрибутом orientation, имеющим значение TRUE.
<a id="p100346"></a>EB14 - проверка объекта face как объекта face_surface с атрибутом bounds, представленным множеством, состоящим, по меньшей мере, из двух объектов face_bound с атрибутом bound, представленным объектом edge_loop и атрибутом orientation, имеющим значение FALSE.
<a id="p100347"></a>EB16 - проверка объекта face_surface с атрибутом face_geometry, представленным как объект surface.
<a id="p100348"></a>EB17 - проверка объекта face_surface с атрибутом same_sense, имеющим значение TRUE.
<a id="p100349"></a>EB19 - проверка объекта surface как объекта elementary_surface.
<a id="p100350"></a>EB20 - проверка объекта elementary_surface с атрибутом position, представленным как объект axis2_placement_3d с присутствием атрибута axis.
<a id="p100351"></a>EB22 - проверка объекта elementary_surface с атрибутом position, представленным как объект axis2_placement_3d с присутствием атрибута ref_direction.
<a id="p100352"></a>EB24 - проверка объекта elementary_surface как объекта plane.
<a id="p100353"></a>EB25 - проверка объекта elementary_surface как объекта cylindrical_surface.
<a id="p100354"></a>EB27 - проверка объекта elementary_surface как объекта spherical_surface.
<a id="p100355"></a>EB29 - проверка объекта loop как объекта edge_loop.
<a id="p100356"></a>EB31 - проверка объекта edge как объекта edge_curve с атрибутами edge_start и edge_end, представленными объектом vertex_point.
<a id="p100357"></a>EB32 - проверка объекта edge как объекта oriented_edge с атрибутом orientation, имеющим значение TRUE.
<a id="p100358"></a>EB36 - проверка объекта edge_curve с атрибутом edge_geometry, представленным как объект conic.
<a id="p100359"></a>EB37 - проверка объекта edge_curve с атрибутом same_sense, имеющим значение TRUE.
<a id="p100360"></a>EB39 - проверка объекта conic как объекта circle.
<a id="p100361"></a>EB40 - проверка объекта conic как объекта ellipse.
<a id="p100362"></a>E.3.1.2 Спецификация входа в препроцессор
<a id="p100363"></a>Создается объект elementary_brep_shape_representation, состоящий из единственного объекта manifold_solid_brep. Объект manifold_solid_brep должен иметь форму сплошного цилиндра с полусферическим основанием и плоской наклонной верхней гранью. Центр полусферы находится в начале координат, а ось Z является осью цилиндра. B-rep модель представлена одной замкнутой оболочкой с тремя гранями. Соответствующее множество размеров определено в приведенной ниже спецификации на языке EXPRESS-I.
<a id="p100364"></a>*Примечание* - Для определения граней B-rep модели использован контекст объекта cylinder_sphere_shell в своей простейшей форме с параметрами, заданными по умолчанию.

<div align="right">

<a id="p100365"></a>E.3.1.3 Спецификация входа в постпроцессор

</div>



| <a id="p100366"></a>*)<br>TEST_CASE example_ebrep_1; WITH aic_elementary_brep;<br>REALIZATION<br>LOCAL<br>shell_object : closed_shell ;<br>cysp_solid : manifold_solid_brep ;<br>ebsr : elementary_brep_shape_representation ;<br>its_units : named_unit ;<br>its_context : representation_context ;<br>END_LOCAL;<br>CALL cylinder_sphere_shell; -- используются значения по умолчанию<br>IMPORT (shell_object := @cyspshell; ) ;<br>END_CALL;<br>cysp_solid := manifold_solid_brep ('cysp_solid', shell_object) ;<br>its_units := length_unit() \|\| si_unit ('milli', 'metre') ;<br>its_context := geometric_representation_context<br>('context_1', 'context_for_cylinder_sphere', 3) \|\|<br>global_unit_assigned_context ( [its_units] ) ;<br>ebsr := elementary_brep_shape_representation<br>( 'ebsr', [cysp_solid], its_context );<br>END_REALIZATION;<br>END_TEST_CASE;<br>(* |
| --- |


<a id="p100367"></a>E.3.1.4 Критерии решения постпроцессора
<a id="p100368"></a>EB1 - все формальные утверждения для объекта elementary_brep_shape_representation должны быть проверены.
<a id="p100369"></a>EB2 - единицы длины должны быть правильно интерпретированы, воссозданная модель не должна содержать объекты polyloop или vertex_loop.

<div align="center">

<a id="p100370"></a>**EB5 - перпендикуляры к оболочке должны быть направлены от нее.**

</div>

<a id="p100371"></a>EB10 - грани должны быть соединены вдоль ребер, другие пересечения граней недопустимы.
<a id="p100372"></a>EB11 - геометрия граней должна быть правильно обрезана объектом face_bound.
<a id="p100373"></a>EB12 - объекты face_bound с значением атрибута orientation FALSE должны быть правильно интерпретированы, чтобы определить правильную часть поверхности грани.
<a id="p100374"></a>EB13 - Множество ограничений должно быть правильно обработано, чтобы обрезать грань.
<a id="p100375"></a>EB14 - объекты face_bound с разными значениями атрибута orientation должны быть правильно интерпретированы.
<a id="p100376"></a>EB16 - объекты edge_curve и вершины, ограничивающие объекты edge_loop, должны лежать на поверхности, определяющей объект face_geometry.
<a id="p100377"></a>EB20 - объект axis2_placement с атрибутом axis должен быть правильно интерпретирован, чтобы определить положение поверхности.
<a id="p100378"></a>EB22 - объект axis2_placement с атрибутом ref_direction должен быть правильно интерпретирован, чтобы определить положение поверхности.
<a id="p100379"></a>EB24 - ограничивающие контуры грани с объектом face_geometry, представленным как объект plane, должны быть копланарны.
<a id="p100380"></a>EB25 - неограниченный объект cylindrical_surface должен быть ограничен объектами edge_loop.
<a id="p100381"></a>EB27 - правильная часть объекта spherical_surface должна быть определена объектами edge_loop.
<a id="p100382"></a>EB31 - все объекты vertex_point должны принадлежать объектам edge_curve.
<a id="p100383"></a>EB36 - объект edge с идентичными начальной и конечной вершинами и объект edge_geometry, представленный эллипсом, должны быть правильно интерпретированы как замкнутый эллипс.
<a id="p100384"></a>EB39 - объект edge с идентичными начальной и конечной вершинами и объект edge_geometry, представленный окружностью, должны быть правильно интерпретированы как замкнутая окружность.

<div align="right">

<a id="p100385"></a>EB40 - подтип ellipse объекта conic должен быть правильно интерпретирован.<br>
<a id="p100386"></a>E.3.2 Контрольный пример eb2

</div>

<a id="p100387"></a>Контрольный пример eb2 разработан для проверки определения элементарного граничного представления, содержащего одну или несколько пустот. Контекст объекта cylinder_sphere_shell используется с различными параметрами для определения внешней оболочки и оболочек пустот. Результатом является полый сплошной цилиндр с расположенной внутри пустотой (или пустотами) той же или сферической формы.
<a id="p100388"></a>*Примечание* - При необходимости данный тест может быть легко модифицирован для проверки геометрической точности путем изменения параметров, определяющих пустоты, расположенных очень близко друг к другу или к внешней оболочке. В текущей версии данного контрольного примера возможность такого вмешательства не предусмотрена.

<div align="center">

<a id="p100389"></a>**E.3.2.1 Цели тестирования**

</div>

<a id="p100390"></a>Ниже перечислены цели тестирования, охватываемые данным контрольным примером.
<a id="p100391"></a>EB6 - проверка объекта manifold_solid_brep как подтипа brep_with_voids с атрибутом outer, представленным как объект closed_shell, и атрибутом voids, представленным множеством, состоящим из одного объекта oriented_closed_shell (атрибут voids присутствует).
<a id="p100392"></a>EB7 - проверка объекта manifold_solid_brep как подтипа brep_with_voids с атрибутом outer, представленным как объект closed_shell, и атрибутом voids, представленным множеством, состоящим из более чем одного объекта oriented_closed_shell.
<a id="p100393"></a>EB8 - проверка объекта oriented_closed_shell с атрибутом orientation, имеющим значение FALSE.
<a id="p100394"></a>EB9 - проверка объекта closed_shell с атрибутом cfs_faces, представленным множеством, состоящим из одного объекта face_surface.
<a id="p100395"></a>EB30 - проверка объекта loop как объекта vertex_loop.
<a id="p100396"></a>E.3.2.2 Спецификация входа в препроцессор
<a id="p100397"></a>Создается объект elementary_brep_shape_representation, состоящий из единственного объекта manifold_solid_brep. Объект manifold_solid_brep должен иметь форму сплошного цилиндра с полусферическим основанием и плоской наклонной верхней гранью. Одно такое граничное представление должно содержать пустоту такой же формы и ориентации. Второй пример должен содержать две непересекающиеся пустоты: одну - такой же формы, вторую - сферической формы. Пустота сферической формы должна быть определена одним объектом face_surface с использованием объекта vertex_loop. Центр полусферы для внешней оболочки находится в начале координат, а ось Z является осью цилиндра. Каждая оболочка определена как единая замкнутая оболочка с тремя гранями. Соответствующее множество размеров определено в приведенной ниже спецификации на языке EXPRESS-I.
<a id="p100398"></a>E.3.2.3 Спецификация входа в постпроцессор
<a id="p100399"></a>Примечания
<a id="p100400"></a>1 Контекст объекта cylinder_sphere_shell с соответствующими параметрами используется для определения граней внешней оболочки B-rep модели и для определения оболочек пустот.
<a id="p100401"></a>2 Внешняя оболочка объекта brep_with_voids является объектом closed_shell, но не объектом oriented_closed_shell. Объект oriented_closed_shell используется для определения оболочек пустот, при этом атрибут orientation должно иметь значение FALSE.


| <a id="p100402"></a>*)<br>TEST_CASE example_ebrep_2;WITHaic_elementary_brep;<br>REALIZATION<br>LOCAL<br>shell_object, hollow1, hollow2 : closed_shell ;<br>void1, void2 : oriented_closed_shell;<br>cylsp_with_void : brep_with_voids ;<br>cylsp_with_voids : brep_with_voids ;<br>ebsr1, ebsr2 : elementary_brep_shape_representation ;<br>its_units : named_unit;<br>context1, context2 : representation_context ;<br>sph2 : spherical_surface ;<br>I1, I2 : length_measure;<br>top_pt : cartesian_point;<br>top_vert : vertex_point;<br>v_loop : vertex_loop;<br>s_bound : face_outer_bound ;<br>sp_face : face_surface ;<br>sp_shell : closed_shell ;<br>END_LOCAL;<br>CALL cylinder_sphere_shell ; -- используются значения по умолчанию<br>IMPORT (shell_object := @cyspshell; ); |
| --- |
| <a id="p100403"></a>END_CALL;<br>CALL cylinder_sphere_shell; -- переустанавливаются параметры размеров<br>IMPORT (hollow1 := @cyspshell; ); -- большая пустота<br>WITH (orc := 10; rad := 12; ht := 50; );<br>END_CALL;<br>CALL cylinder_sphere_shell; - переустанавливаются параметры размеров<br>(сфера для сферической пустоты)<br>IMPORT (sph2 := @sphere;<br>I1 := @orc;<br>I2 := @rad ;);<br>WITH (orc := -5; rad := 10 ;);<br>END_CALL;<br>void1 := oriented_closed_shell ('void1', hollow1, FALSE) ;<br>top_pt := cartesian_point ('top_pt', [I1, I1, (I1 + I2) ]) ;<br>top_v := vertex_point ('top_v', top_pt) ;<br>v_loop := vertex_loop ('v_loop', top_v) ;<br>s_bound := face_outer_bound ('s_bound', v_loop, TRUE ) ;<br>sp_face := face_surface ('sp_face', [s_bound], sph2, TRUE );<br>sp_shell := closed_shell ('sp_shell', [sp_face] );<br>void2 := oriented_closed_shell ('void2', sp_shell, FALSE) ;<br>cylsp_with_void := |
| <a id="p100404"></a>manifold_solid_brep ('cylsp_w_v', shell_object) \|\|<br>brep_with_voids ([void1]) ;<br>cylsp_with_voids :=<br>manifold_solid_brep ('cylsp_w_vs', shell_object)\|\|<br>brep_with_voids ([void1, void2]) ;<br>its_units := length_unit() \|\| si_unit ('milli', 'metre');<br>context1 := geometric_representation_context,<br>('context_1', 'context_for_cylsp_with_void', 3) \|\|<br>global_unit_assigned_context ( [its_units] ) ;<br>context2 := geometric_representation_context ,<br>('context_1', 'context_for_cylsp_with_voids', 3) \|\|<br>global_unit_assigned_context ( [its_units] ) ;<br>ebsr1 := elementary_brep_shape_representation<br>( 'ebsr1', [cylsp_with_void], context1 ) ;<br>ebsr2 := elementary_brep_shape_representation<br>('ebsr2', [cylsp_with_voids], context2 ) ;<br>END_REALIZATION;<br>END_TEST_CASE;<br>(* |


<div align="center">

<a id="p100405"></a>**E.3.2.4 Критерии решения постпроцессора**

</div>

<a id="p100406"></a>EB6 - оболочка пустоты не должна пересекаться с внешней оболочкой; оболочка пустоты должна полностью находиться внутри внешней оболочки.
<a id="p100407"></a>EB7 - оболочки пустот не должны пересекаться с внешней оболочкой или друг с другом; каждая оболочка пустоты должна полностью находиться внутри внешней оболочки, два объекта elementary_brep_shape_representation ebsr1 и ebsr2 не должны быть пространственно связаны.
<a id="p100408"></a>EB8 - перпендикуляры к оболочкам пустот должны быть направлены внутрь пустот.
<a id="p100409"></a>EB9 - объект closed_shell с единственной гранью, геометрия которой определена объектом spherical_surface, должен быть правильно обработан.
<a id="p100410"></a>EB30 - объект vertex_loop должен быть корректно обработан как объект face_bound, чтобы определить грань как полностью сферическую поверхность.
<a id="p100411"></a>E.3.3 Контрольный пример eb3
<a id="p100412"></a>Контрольный пример eb3 является простым контрольным примером, определяющим грани, необходимые для определения одиночного сплошного сегмента тора, ограниченного плоскостями. Одно из пересечений плоскости с тором представлено плоской полилинией. Определение оболочки обеспечивается контекстом объекта toroidal_segment с использованием исходных параметров.
<a id="p100413"></a>E.3.3.1 Цели тестирования
<a id="p100414"></a>Ниже перечислены цели тестирования, охватываемые данным контрольным примером.
<a id="p100415"></a>EB28 - проверка объекта elementary_surface как объекта toroidal_surface.
<a id="p100416"></a>EB33 - проверка объекта edge как объекта oriented_edge с атрибутом orientation, имеющим значение FALSE.
<a id="p100417"></a>EB34 - проверка объекта edge_curve с атрибутом edge_geometry, представленным как объект line.
<a id="p100418"></a>EB35 - проверка объекта edge_curve с атрибутом edge_geometry, представленным как объект polyline.
<a id="p100419"></a>E.3.3.2 Спецификация входа в препроцессор
<a id="p100420"></a>Создается объект elementary_brep_shape_representation, состоящей из единственного объекта manifold_solid_brep. Объект manifold_solid_brep должен иметь форму тороидального сегмента с центром, расположенным в начале координат, и центральной осью, направленной по оси Z. Сегмент создан сечением тора тремя плоскостями, одна из которых (z = 0) проходит через центр и перпендикулярна к центральной оси. Две другие плоскости параллельны друг другу, причем одна из них (x = 0) проходит через центр. Линии пересечений являются дугами окружностей или полилинией. B-rep модель определена одной замкнутой оболочкой с четырьмя гранями. Соответствующее множество размеров определено в приведенной ниже спецификации на языке EXPRESS-I.
<a id="p100421"></a>E.3.3.3 Спецификация входа в постпроцессор
<a id="p100422"></a>*Примечание* - Для определения граней и всей геометрии и топологии B-rep модели используется контекст объекта toroidal_segment с параметрами, заданными по умолчанию.


| <a id="p100423"></a>*)<br>TEST_CASE example_ebrep_3; WITH aic_elementary_brep;<br>REALISATION<br>LOCAL<br>shell_object : closed_shell ;<br>torus_solid : manifold_solid_brep ;<br>ebsr : elementary_brep_shape_representation ;<br>its_units : named_unit ;<br>its_context : representation_context ;<br>END_LOCAL;<br>CALL toroidal_segment ; -- используются значения по умолчанию<br>IMPORT (shell_object := @torshell; ) ;<br>END_CALL;<br>torus_solid := manifold_solid_brep ('torus_solid', shell_object) ;<br>its_units := length_unit() \|\| si_unit ('milli', 'metre') ;<br>its_context := geometric_representation_context<br>('context_1', 'context_for_torshell', 3) \|\|<br>global_unit_assigned_context ( [its_units] ) ;<br>ebsr := elementary_brep_shape_representation<br>('ebsr', [torus_solid], its_context );<br>END_REALIZATION;<br>END_TEST_CASE;<br>(* |
| --- |


<a id="p100424"></a>E.3.3.4 Критерии решения постпроцессора
<a id="p100425"></a>EB28 - грань объекта toroidal_surface должна быть обработана и ограничена правильно.
<a id="p100426"></a>EB33 - если объект edge с атрибутом orientation, имеющим значение FALSE, используется повторно, он должен быть интерпретирован правильно.
<a id="p100427"></a>EB34 - объект line должен быть правильно обрезан объектами vertice.
<a id="p100428"></a>EB35 - все точки объекта polyline должны принадлежать объекту toroidal_surface с допустимым отклонением менее чем 0,0000001. Точки полилинии должны быть копланарны.
<a id="p100429"></a>E.3.4 Контрольный пример eb4
<a id="p100430"></a>В контрольном примере eb4 определены грани, необходимые для определения одиночного сплошного тела, полученного путем объединения двух цилиндров разных радиусов с ортогональными осями. Линия пересечения является замкнутой трехмерной кривой, представленной полилинией. Определение оболочки обеспечивается контекстом объекта cylinder_union_polyline с использованием исходных параметров.
<a id="p100431"></a>E.3.4.1 Цели тестирования
<a id="p100432"></a>Ниже перечислены цели тестирования, охватываемые данным контрольным примером:
<a id="p100433"></a>EB21 - проверка объекта elementary_surface с атрибутом position, представленным как объект axis2_placement_3d с отсутствием атрибута axis.
<a id="p100434"></a>EB23 - проверка объекта elementary_surface с атрибутом position, представленным как объект axis2_placement_3d с отсутствием атрибута ref_direction.
<a id="p100435"></a>EB35 - проверка объекта edge_curve с атрибутом edge_geometry, представленным как объект polyline (замкнутая трехмерная полилиния).
<a id="p100436"></a>E.3.4.2 Спецификация входа в препроцессор
<a id="p100437"></a>Создается объект elementary_brep_shape_representation, состоящий из единственного объекта manifold_solid_brep. Объект manifold_solid_brep должен иметь форму двух перпендикулярных пересекающихся цилиндров. Для определения положения одного из этих цилиндров при определении объекта axis2_placement_3d должны быть использованы параметры, заданные по умолчанию. Линия пересечения должна быть представлена полилинией. Соответствующее множество размеров определено в приведенной ниже спецификации на языке EXPRESS-I.
<a id="p100438"></a>E.3.4.3 Спецификация входа в постпроцессор
<a id="p100439"></a>*Примечание* - Для определения граней и всей геометрии и топологии B-rep модели используется контекст объекта cylinder_union_polyline с параметрами, заданными по умолчанию.


| <a id="p100440"></a>*)<br>TEST_CASE example_ebrep_4; WITH aic_elementary_brep;<br>OBJECTIVE<br>REALIZATION<br>LOCAL<br>shell_object : closed_shell ;<br>cylxcyl_solid : manifold_solid_brep ;<br>ebsr : elementary_brep_shape_representation ;<br>its_units : named_unit ;<br>its_context : geometric_representation_context ;<br>END_LOCAL;<br>CALL cylinder_union_polyline ; -- используются значения по умолчанию<br>IMPORT (shell_object := @cxcshell ;) ;<br>END_CALL;<br>cylxcyl_solid := manifold_solid_brep ('cylxcyl_solid',<br>shell_object) ;<br>its_units := length_unit() \|\| si_unit ('milli', 'metre') ;<br>its_context := geometric_representation_context<br>('context_1', 'context_for_cylxcyl', 3) \|\|<br>global_unit_assigned_context ( [its_units] ) ;<br>ebsr := elementary_brep_shape_representation<br>('ebsr', [cylxcyl_solid], its_context );<br>END_REALIZATION;<br>END_TEST_CASE;<br>(* |
| --- |


<a id="p100441"></a>E.3.4.4 Критерии решения постпроцессора
<a id="p100442"></a>EB21 - значения по умолчанию атрибута axis должны быть заданы правильно.
<a id="p100443"></a>EB23 - значения по умолчанию атрибута ref_direction должны быть заданы правильно.
<a id="p100444"></a>EB35 - все точки полилинии должны принадлежать обоим объектам cylindrical_surface с допустимым отклонением менее чем 0,000001.
<a id="p100445"></a>E.3.5 Контрольный пример eb5
<a id="p100446"></a>В контрольном примере eb5 определены грани, необходимые для определения сплошных тел, полученных в результате пересечения наклонных плоскостей с конусом. Кривые, ограничивающие грани, могут быть эллипсами, гиперболами, параболами, дугами окружностей и сегментами прямых линий. Определение оболочек обеспечивается контекстом объекта cone_faces с использованием исходных параметров.
<a id="p100447"></a>E.3.5.1 Цели тестирования
<a id="p100448"></a>Ниже перечислены цели тестирования, охватываемые данным контрольным примером.
<a id="p100449"></a>EB2 - проверка объекта elementary_brep_shape_representation с атрибутом context, представленным как объект geometric_context с атрибутом items, представленным множеством, состоящим более чем из одного объекта manifold_solid_brep.
<a id="p100450"></a>EB15 - проверка объекта face как объекта face_surface с атрибутом bounds, представленным множеством, состоящим, по меньшей мере, из двух объектов face_bound, включая один объект vertex_loop.
<a id="p100451"></a>EB26 - проверка объекта elementary_surface как объекта conical_surface.
<a id="p100452"></a>EB40 - проверка объекта conic как объекта ellipse.
<a id="p100453"></a>EB41 - проверка объекта conic как объекта hyperbola.
<a id="p100454"></a>EB42 - проверка объекта conic как объекта parabola.
<a id="p100455"></a>E.3.5.2 Спецификация входа в препроцессор
<a id="p100456"></a>Создается объект elementary_brep_shape_representation, состоящий из двух объектов manifold_solid_brep. Объекты manifold_solid_brep должны иметь форму конусов, ограниченных наклонными плоскостями. Плоскости выбираются так, чтобы линии пересечения имели форму эллипса, параболы, гиперболы и дуг окружности. Первый конус имеет вершину, образованную объектом vertex_loop, и эллиптическое основание. У второго конуса вершина образована эллиптической кривой, как и его основание. Соответствующее множество размеров определено в приведенной ниже спецификации на языке EXPRESS-I.
<a id="p100457"></a>E.3.5.3 Спецификация входа в постпроцессор
<a id="p100458"></a>*Примечание* - Для определения граней и всей геометрии и топологии B-rep модели используется контекст объекта cone_shell с параметрами, заданными по умолчанию.


| <a id="p100459"></a>*)<br>TEST_CASE example_ebrep_5; WITH aic_elementary_brep;<br>REALIZATION<br>LOCAL<br>shell1, shell2 : closed_shell ;<br>cone1, cone2 : manifold_solid_brep ;<br>ebsr : elementary_brep_shape_representation ;<br>angle_u, len_u, angle_c_u : named_unit ;<br>ang_m_wu : plane_angle_measure_with_unit ;<br>its_context : geometric_representation_context ;<br>END_LOCAL;<br>CALL cone_shell ; -- используются значения по умолчанию<br>IMPORT(shell1 := @vconeshell ;<br>shell2 := @con4fshell ; ) ;<br>END_CALL;<br>cone1 := manifold_solid_brep ('cone1', shell1) ;<br>cone2 := manifold_solid_brep ('cone2', shell2) ;<br>angle_c_u := plane_angle_unit() \|\| si_unit ( , 'radian' ) ;<br>ang_m_wu := plane_angle_measure_with_unit(.017453293, angle_c_u);<br>angle_u := plane_angle_unit() \|\|<br>conversion_based_unit('degree', ang_m_wu) ;<br>len_u := length_unit() \|\| si_unit ('milli', 'metre') ;<br>its_context := geometric_representation_context<br>('context_1', 'context_for_cones', 3) \|\|<br>global_unit_assigned_context ([len_u, angle_u]) ;<br>ebsr := elementary_brep_shape_representation<br>('ebsr',[cone1, cone2], its_context );<br>END_REALIZATION;<br>END_TEST_CASE;<br>(* |
| --- |


<a id="p100460"></a>E.3.5.4 Критерии решения постпроцессора
<a id="p100461"></a>EB2 - две B-rep модели должны точно соприкасаться поверхностью общей грани, две B-rep модели не должны пересекаться.
<a id="p100462"></a>EB15 - объект face с атрибутом face_bound, представленным как объект vertex_loop, должен быть правильно обработан.
<a id="p100463"></a>EB26 - объекты conical_surface должны быть правильно обрезаны ограничивающими ребрами.
<a id="p100464"></a>EB40 - все точки на эллипсе должны быть расположены точно на обоих объектах conical_surface и на объекте plane, пересекающем их.
<a id="p100465"></a>EB41 - все точки гиперболических ребер должны одновременно принадлежать объектам conical_surface и пересекающему объекту plane, а объект hyperbola должен быть правильно обрезан посредством объектов vertex_point.
<a id="p100466"></a>EB42 - все точки параболических ребер должны одновременно принадлежать объектам conical_surface и пересекающему объекту plane, а объект parabola должен быть правильно обрезан посредством объектов vertex_point.
<a id="p100467"></a>E.3.6 Контрольный пример eb6
<a id="p100468"></a>Контрольный пример eb6 разработан для проверки использования объектов mapped_item при создании простой сборки из элементарных B-rep моделей. Он также обеспечивает проверку непротиворечивости объектов geometric_representation_context для разных координатных пространств. Данный тест использует контекст объекта cylinder_union_polyline для определения геометрии и топологии.
<a id="p100469"></a>E.3.6.1 Область охвата целей тестирования
<a id="p100470"></a>Ниже перечислены цели тестирования, охватываемые данным контрольным примером:
<a id="p100471"></a>EB3 - проверка объекта elementary_brep_shape_representation с атрибутом context, представленным как объект geometric_representation_context с атрибутом items, представленным как объект mapped_item.
<a id="p100472"></a>EB4 - проверка объекта elementary_brep_shape_representation с атрибутом context, представленным как объект geometric_representation_context с двумя или более элементами, представленными как объекты manifold_solid_brep, или mapped_item, или axis2_placement_3d. При этом по меньшей мере один из них должен быть объектом axis2_placement_3d.
<a id="p100473"></a>E.3.6.2 Спецификация входа в препроцессор
<a id="p100474"></a>Создается основной объект elementary_brep_shape_representation, состоящий из объекта manifold_solid_brep в форме двух пересекающихся цилиндров, определенных в контрольном примере eb4. Затем определяется объект mapped_item как поступательно перемещенная и повернутая копия данного представления. После этого определяются два следующих объекта elementary_brep_shape_representation; один, определенный в том же контексте, состоит только из объекта mapped_item, а другой, определенный в другом контексте, содержит исходные объекты manifold_solid_brep, mapped_item и axis2_placement_3d. Полные сведения о размерах и отображении определены в приведенной ниже спецификации на языке EXPRESS-I.
<a id="p100475"></a>E.3.6.3 Спецификация входа в постпроцессор
<a id="p100476"></a>Примечания
<a id="p100477"></a>1 В приведенной ниже спецификации два разных объекта geometric_representation_context созданы для геометрических определений.
<a id="p100478"></a>2 Для определения граней и всей геометрии и топологии B-rep модели используется контекст объекта cylinder_union_polyline с параметрами, заданными по умолчанию.
<a id="p100479"></a>3 Объект ebsr1 должен быть повернутой и поступательно перемещенной копией объекта ebsr.
<a id="p100480"></a>4 Объект ebsrass должен быть эквивалентен двум копиям объекта ebsr, "склеенным" вместе.


| <a id="p100481"></a>*)<br>TEST_CASE example_ebrep_6; WITH aic_elementary_brep;<br>REALIZATION<br>LOCAL<br>Origin : cartesian_point ;<br>pos_z, neg_y : direction ;<br>refaxes, topaxes, baseaxes : axis_placement_3d;<br>shell_object : closed_shell ;<br>cylxcyl : manifold_solid_brep ;<br>ebsr, ebsr1, ebsrass : elementary_brep_shape_representation ;<br>grc1, grc2 : geometric_representation_context ;<br>transrot1, trans2 : mapped_item ;<br>mapping1, mapping2 :representation_map ;<br>END_LOCAL;<br>CALL cylinder_union_polyline ; -- используются значения по умолчанию<br>IMPORT (shell_object := @cycshell;<br>origin := @origin;<br>baseaxes := @ ab; refaxes := @ar; topaxes := @at; );<br>END_CALL;<br>cylxcyl := manifold_solid_brep ('cylxcyl', shell_object) ;<br>grc1 = geometric_representation_context ('ctx1',<br>'context' for cylinder union', 3) ;<br>grc2 = geometric_representation_context ('ctx2',<br>'context for rotated cylinder union', 3) ;<br>ebsr := elementary_brep_shape_representation ('ebsr', [cylxcyl], grc1);<br>mapping1 := representation_map (baseaxes, ebsr);<br>transrot1 := mapped_item ('transrot1', mapping1, refaxes ); |
| --- |
| <a id="p100482"></a>(* Определить представление только с использованием transrot1 *)<br>ebsr1 := elementary_brep_shape_representation ('ebsr1',<br>[transrot1], grc1) ;<br>(* Определить представление, являющееся сборкой пересекающихся цилиндров и отображенной (перемещенной) копии.<br>*)<br>mapping2 := representation_map (baseaxes, ebsr );<br>trans2 := mapped_item ('trans2', mapping2, topaxes );<br>ebsrass := elementary_brep_shape_representation<br>('ebsrass', [ebsr1, ebsrot2, baseaxes], grc2 ) ;<br>END_REALIZATION;<br>END_TEST_CASE;<br>(* |


<a id="p100483"></a>E.3.6.4 Критерии решения постпроцессора
<a id="p100484"></a>EB3 - после обработки объект mapped_item должен быть правильно интерпретирован, результатом является повернутая и поступательно перемещенная копия исходной B-rep модели.
<a id="p100485"></a>EB4 - объект elementary_brep_shape_representation, содержащий объект mapped_item, B-rep модель и объект axis2_placement_3d должны быть правильно интерпретированы, результатом является исходная B-rep модель и повернутая и поступательно перемещенная копия исходной B-rep модели, которая касается грани.
<a id="p100486"></a>EB3 и EB4 - два разных объекта elementary_brep_shape_representation не должны быть пространственно связаны.
<a id="p100487"></a>E.3.7 Контрольный пример eb7
<a id="p100488"></a>Контрольный пример eb7 разработан для проверки использования объектов mapped_item совместно с объектом cartesian_transformation_operator при создании простой сборки из многогранных B-rep моделей. Проверяется использование коэффициента масштабирования. В данном тесте используется контекст объекта cylinder_sphere_shell для определения геометрии и топологии.
<a id="p100489"></a>E.3.7.1 Цели тестирования
<a id="p100490"></a>Ниже перечислены цели тестирования, охватываемые данным контрольным примером:
<a id="p100491"></a>EB44 - проверка объекта mapped_item с атрибутом mapping_target, представленным как объект cartesian_transformation_operator_3d.
<a id="p100492"></a>EB45 - проверка объекта cartesian_transformation_operator как объекта cartesian_transformation_operator_3d с масштабом, представленным значением типа REAL, не равным 1,0.
<a id="p100493"></a>E.3.7.2 Спецификация входа в препроцессор
<a id="p100494"></a>Создается объект elementary_brep_shape_representation, состоящий из единственного объекта manifold_solid_brep. B-rep модель должна иметь форму сплошного цилиндра с полусферическим основанием и плоским наклонным верхом. Центр полусферы находится в начале координат, а ось цилиндра должна располагаться вдоль оси Z. Затем данное представление используется совместно с объектами mapped_item и cartesian_transformation_operator для создания в том же контексте объекта representation_context представления, состоящего из повернутой, поступательно перемещенной и масштабированной (но не с коэффициентом 1,0) копии исходного представления и исходной B-rep модели. Поступательное перемещение и значение коэффициента масштабирования выбираются так, чтобы цилиндры из двух B-rep моделей соприкасались, но не пересекались.
<a id="p100495"></a>E.3.7.3 Спецификация входа в постпроцессор
<a id="p100496"></a>*Примечание* - Для определения граней и всей геометрии и топологии B-rep модели используется контекст объекта cylinder_sphere_shell с параметрами, заданными по умолчанию. Объект csrans должен быть повернутой, масштабированной и поступательно перемещенной копией объекта cysp_solid.


| <a id="p100497"></a>*)<br>TEST_CASE example_ebrep_7; WITH elementary_brep_aic;<br>REALIZATION<br>LOCAL<br>radius : length_measure ;<br>origin, neworigin : cartesian_point ;<br>pos_x, pos_y, pos_z, neg_z : direction ;<br>oldaxes : axis_placement_3d;<br>transform : cartesian_transformation_operator_3d;<br>shell_object : closed_shell ;<br>cysp_solid : manifold_solid_brep ;<br>ebsr, ebsrass : elementary_brep_shape_representation ;<br>its_units : named_unit ;<br>grc1, grc2 : representation_context ;<br>cstrans : mapped_item ;<br>mapping1 : representation_map ;<br>END_LOCAL;<br>CALL cylinder_sphere_shell ; -- используются значения по умолчанию<br>IMPORT (shell_object := @cyspshell;<br>pos_x : = @pos_x ;<br>pos_y : = @pos_y ;<br>pos_z : = @pos_z ;<br>origin : = @origin ;<br>radius : = @rad ; ) ;<br>END_CALL;<br>cysp_solid := manifold_solid_brep ('cysp_solid', shell_object);<br>its_units := length_unit() \|\| si_unit ('milli', 'metre') ;<br>grc1 = geometric_representation_context ('ctx1',<br>'context for cysp_solid', 3) \|\|<br>global_unit_assigned_context ( [its_units] ) ; |
| --- |
| <a id="p100498"></a>grc2 = geometric_representation_context ('ctx2',<br>'context for assembly', 3) \|\|<br>global_unit_assigned_context ( [its_units] ) ;<br>(* Определяются axis_placement и cartesian_transformation_operator<br>для использования при отображении *)<br>neworigin := cartesian_point ([1.8*radius, 0.0, 0.0] );<br>neg_z := direction ([0.0, 0.0, -1.0] );<br>oldaxes := axis2_placement_3d ('oldaxes', origin, pos_z, pos_x) ;<br>transform := cartesian_transformation_operator_3d ('transform',<br>pos_x, neg_z, neworigin, 0.8, pos_y);<br>ebsr := elementary_brep_shape_representation ('ebsr',<br>[cysp_solid, oldaxes], grc1 ) ;<br>mapping1 := representation_map (oldaxes, ebsr );<br>(* Объект cysptrans является 80-процентной копией исходного объекта,<br>повернутой вокруг оси X и смещенной вдоль этой оси *)<br>cstrans := mapped_item ('cstrans', mapping1, transform );<br>(* Определяется представление, являющееся сборкой исходной B-rep<br>модели и ее преобразованной копии (масштабированной, смещенной и<br>повернутой). *)<br>ebsrass := elementary_brep_shape_representation<br>('ebsrass', [cysp_solid, cstrans], grc2 ) ;<br>END_REALIZATION;<br>END_TEST_CASE;<br>(* |


<a id="p100499"></a>E.3.7.4 Критерии решения постпроцессора
<a id="p100500"></a>EB44 - после обработки, сплошная B-rep модель, определенная посредством объекта mapped_item, должна быть корректно масштабирована и размещена.
<a id="p100501"></a>EB45 - после обработки объект absrass должен состоять из двух сплошных B-rep моделей цилиндрической формы с полусферическим основанием, которые касаются друг друга в плоскости x = 25. Одна из них является копией масштаба 4/5 другой модели, полученной после поступательного перемещения и поворота.
<a id="p100502"></a>E.4 Контексты, определенные для контрольных примеров элементарных B-rep моделей
<a id="p100503"></a>Приведенные ниже контексты на языке EXPRESS-I использованы в контрольных примерах [раздела E.3](#p100331).
<a id="p100504"></a>E.4.1 Контекст объекта cylinder_sphere_shell
<a id="p100505"></a>Данный контекст описывает грани, необходимые для определения простого объекта closed_shell цилиндрической формы с полусферическим основанием, имеющим центр, расположенный в точке (orc,orc,orc), радиус rad и осевую высоту к наклонной грани h.
<a id="p100506"></a>Все границы определены посредством объектов edge_loop и conic.


<table>
<colgroup><col width="10%"><col width="90%"></colgroup>
<tr><td colspan="2"><a id="p100507"></a>*)<br>CONTEXT cylinder_sphere_shell ;<br>WITH aic_elementary_brep;<br>PARAMETER</td></tr>
<tr><td><a id="p100508"></a>orc</td><td><a id="p100509"></a>: length_measure := 0.0;</td></tr>
<tr><td><a id="p100510"></a>h</td><td><a id="p100511"></a>: length_measure := 100.0;</td></tr>
<tr><td><a id="p100512"></a>rad</td><td><a id="p100513"></a>: length_measure := 25.0;</td></tr>
<tr><td><a id="p100514"></a>majrad</td><td><a id="p100515"></a>: length_measure := rad*rt2;</td></tr>
<tr><td><a id="p100516"></a>origin</td><td><a id="p100517"></a>: cartesian_point := cartesian_point ('origin', [orc, orc, orc]);</td></tr>
<tr><td><a id="p100518"></a>ctop</td><td><a id="p100519"></a>: cartesian_point := cartesian_point ('ctop', [orc, orc,<br>orc+h]);</td></tr>
<tr><td><a id="p100520"></a>pos_x</td><td><a id="p100521"></a>: direction := direction ('pos_x', [1, 0, 0]);</td></tr>
<tr><td><a id="p100522"></a>pos_y</td><td><a id="p100523"></a>: direction := direction ('pos_y', [0, 1, 0]);</td></tr>
<tr><td><a id="p100524"></a>pos_z</td><td><a id="p100525"></a>: direction := direction ('pos_z', [0, 0, 1]);</td></tr>
<tr><td><a id="p100526"></a>dslope</td><td><a id="p100527"></a>: direction := direction ('dslope', [1, 0, -1]);</td></tr>
<tr><td><a id="p100528"></a>dperp</td><td><a id="p100529"></a>: direction := direction ('dperp', [1, 0, 1]);</td></tr>
<tr><td><a id="p100530"></a>a1</td><td><a id="p100531"></a>: axis2_placement_3d := axis2_placement_3d ('a1', origin,<br>pos_z, pos_x) ;</td></tr>
<tr><td><a id="p100532"></a>a2</td><td><a id="p100533"></a>: axis2_placement_3d := axis2_placement_3d ('a2', ctop,<br>dperp, dslope) ;</td></tr>
<tr><td><a id="p100534"></a>pl</td><td><a id="p100535"></a>: plane := plane ('pl', a2) ;</td></tr>
<tr><td><a id="p100536"></a>cyl</td><td><a id="p100537"></a>: cylindrical_surface := cylindrical_surface ('cyl', a1, rad);</td></tr>
<tr><td><a id="p100538"></a>sphere</td><td><a id="p100539"></a>: spherical_surface := spherical_surface ('sphere', a1, rad);</td></tr>
<tr><td><a id="p100540"></a>circ</td><td><a id="p100541"></a>: circle := circle ('circ', a1, rad);</td></tr>
<tr><td><a id="p100542"></a>elli</td><td><a id="p100543"></a>: ellipse := ellipse('elli', a2, majrad, rad);</td></tr>
<tr><td><a id="p100544"></a>cpoint</td><td><a id="p100545"></a>: cartesian_point :=cartesian_point ('cpoint', [(orc + rad),<br>orc, orc]);</td></tr>
<tr><td><a id="p100546"></a>epoint</td><td><a id="p100547"></a>: cartesian_point :=<br>cartesian_point ('epoint', [(orc + rad), orc,<br>(orc + h - rad)]);</td></tr>
<tr><td><a id="p100548"></a>vertc</td><td><a id="p100549"></a>: vertex_point := vertex_point ('vertc', cpoint);</td></tr>
<tr><td><a id="p100550"></a>verte</td><td><a id="p100551"></a>: vertex_point := vertex_point ('verte', epoint);</td></tr>
<tr><td><a id="p100552"></a>edge1</td><td><a id="p100553"></a>: edge_curve := edge_curve ('edge1', vertc, vertc, circ, TRUE);</td></tr>
<tr><td><a id="p100554"></a>edge2</td><td><a id="p100555"></a>: edge_curve := edge_curve ('edge2', verte, verte, elli, TRUE);</td></tr>
<tr><td><a id="p100556"></a>oe1</td><td><a id="p100557"></a>: oriented_edge := oriented_edge('oe1', edge1, TRUE);</td></tr>
<tr><td><a id="p100558"></a>oe2</td><td><a id="p100559"></a>: oriented_edge := oriented_edge ('oe2', edge2, TRUE);</td></tr>
<tr><td><a id="p100560"></a>loopc</td><td><a id="p100561"></a>: edge_loop := edge_loop ('loopc', ['oe1']);</td></tr>
<tr><td><a id="p100562"></a>loope</td><td><a id="p100563"></a>: edge_loop := edge_loop ('loope', [oe2]);</td></tr>
<tr><td><a id="p100564"></a>bc</td><td><a id="p100565"></a>: face_outer_bound := face_outer_bound ('bc', loopc, FALSE) ;</td></tr>
<tr><td><a id="p100566"></a>be</td><td><a id="p100567"></a>: face_outer_bound := face_outer_bound ('be', loope, TRUE) ;</td></tr>
<tr><td><a id="p100568"></a>bcylbot</td><td><a id="p100569"></a>: face_bound := face_bound ('bcylbot', loopc, TRUE);</td></tr>
<tr><td><a id="p100570"></a>bcyltop</td><td><a id="p100571"></a>: face_bound := face_bound ('bcyltop', loope, FALSE);</td></tr>
<tr><td colspan="2"><a id="p100572"></a>curved_face : face_surface := face_surface('curved_face', [bcylbot,<br>bcyltop], cyl, TRUE);<br>top_face : face_surface := face_surface ('top_face', [be], pi, TRUE);<br>bottom_face : face_surface := face_surface ('bottom_face', [bc],<br>sphere, TRUE);<br>END_PARAMETER;<br>SCHEMA_DATAcyl_sph_shell_ctxt;<br>CONSTANT<br>rt2 == sqrt(2.0);<br>rt3 == sqrt(3.0);<br>END_CONSTANT;<br>cfs = connected_face_set {SUBOF(@tri);<br>cfs_faces -&gt; (@curved_face, @top_face, @bottom_face);<br>SUPOF(@cyspshell);} ;<br>tri = topological_representation_item {SUBOF(@ri); SUPOF(@cfs);} ;<br>ri = representation_item {name -&gt; 'cyspshell'; SUPOF(@tri); };<br>cyspshell = closed_shell {SUBOF(@cfs); };<br>END_SCHEMA_DATA;<br>END_CONTEXT ;<br>(*</td></tr>
</table>


<a id="p100573"></a>E.4.2 Контекст объекта cone_shell
<a id="p100574"></a>Данный контекст описывает грани, необходимые для определения замкнутых оболочек конической формы с круглыми, эллиптическими, гиперболическими или параболическими гранями. Конус имеет вершину с координатами (orc,orc,orc), половинный угол при вершине 30° и ось, параллельную оси z. Перпендикуляр к каждой плоской грани ортогонален к направлению оси y и расположен под фиксированным углом.
<a id="p100575"></a>*Примечание* - Объекты plane_angle_unit должны быть определены в градусах.

<a id="p100576"></a>Размеры результирующей оболочки должны регулироваться изменением значений расстояний dc, de, dh, dp от вершины конуса до точек пересечения с осью конуса плоскостей окружности, гиперболы, параболы соответственно.
<a id="p100577"></a>Две смежные оболочки могут быть определены простой конической оболочкой с эллиптическим основанием и более сложной конической формой с плоскими гранями эллиптической вершины, круглого основания и гиперболической и параболической сторонами. У основания есть два прямых ребра, параллельных оси y.
<a id="p100578"></a>Все границы определены посредством объектов edge_loop с использованием объектов line или conic или посредством объекта vertex_loop.


<table>
<colgroup><col width="16%"><col width="84%"></colgroup>
<tr><td colspan="2"><a id="p100579"></a>*)<br>CONTEXT cone_shell ;<br>WITH aic_elementary_brep;<br>PARAMETER</td></tr>
<tr><td><a id="p100580"></a>orc</td><td><a id="p100581"></a>: length_measure := 0.0;</td></tr>
<tr><td><a id="p100582"></a>dc</td><td><a id="p100583"></a>: length_measure := 200.0;</td></tr>
<tr><td><a id="p100584"></a>de</td><td><a id="p100585"></a>: length_measure := 20.0;</td></tr>
<tr><td colspan="2"><a id="p100586"></a>(* Примечание: dp и dh должны быть больше чем расстояние dc<br>до базовой окружности. Во избежание пересечений с верхним эллипсом,<br>должны выполняться соотношения dh &gt; 7.47 de, и dp &gt; 1.27 de *)</td></tr>
<tr><td><a id="p100587"></a>dh</td><td><a id="p100588"></a>: length_measure := 300.0;</td></tr>
<tr><td><a id="p100589"></a>dp</td><td><a id="p100590"></a>: length_measure := 250.0;</td></tr>
<tr><td><a id="p100591"></a>emaj</td><td><a id="p100592"></a>: length_measure := de*(rt3/rt2);</td></tr>
<tr><td><a id="p100593"></a>emin</td><td><a id="p100594"></a>: length_measure := de*(rt2/2.0);</td></tr>
<tr><td><a id="p100595"></a>haxis</td><td><a id="p100596"></a>: length_measure := 0.5*dh*rt3/rt2;</td></tr>
<tr><td><a id="p100597"></a>himag</td><td><a id="p100598"></a>: length_measure := dh*sqrt((rt3 - 1.0)/8.0);</td></tr>
<tr><td><a id="p100599"></a>yh</td><td><a id="p100600"></a>: length_measure := sqrt((rt3 - 1.0)*((2.5-1.5*rt3)*dh*dh +<br>dc*dh*(3.0*rt3 - 5.0) + 4.0*dc*dc*(2.0 - rt3)/3.0));</td></tr>
<tr><td colspan="2"><a id="p100601"></a>(* размещение указано для конуса, базовой окружности, эллипса, параболы и гиперболы, соответственно:<br>*)</td></tr>
<tr><td><a id="p100602"></a>origin</td><td><a id="p100603"></a>: cartesian_point := cartesian_point('origin',[orc, orc, orc]);</td></tr>
<tr><td><a id="p100604"></a>cbase</td><td><a id="p100605"></a>: cartesian_point := cartesian_point ('cbase',<br>[orc, orc, orc - dc]);</td></tr>
<tr><td><a id="p100606"></a>ecent</td><td><a id="p100607"></a>: cartesian_point := cartesian_point('ecent',<br>[orc+0.5*de, orc, orc-1.5*de]);</td></tr>
<tr><td><a id="p100608"></a>hcent</td><td><a id="p100609"></a>: cartesian_point := cartesian_point('hcent',<br>[orc+dh*(rt3 + 1,0)/8.0, orc, orc + dh*0.375*(rt3 - 1.0)]);</td></tr>
<tr><td><a id="p100610"></a>ppoint</td><td><a id="p100611"></a>: cartesian_point := cartesian_point('ppoint',<br>[(orc - 0.5*dp/rt3), orc,(orc - 0.5*dp)]);</td></tr>
<tr><td><a id="p100612"></a>epoint</td><td><a id="p100613"></a>: cartesian_point := cartesian_point('epoint',<br>[orc + 0.5*de*(rt3 + 1.0), orc, orc - 0.5*de*(3.0 + rt3)]);</td></tr>
<tr><td colspan="2"><a id="p100614"></a>(* точки пересечения кривых второго порядка с плоскостью основания: *)</td></tr>
<tr><td><a id="p100615"></a>ppb1</td><td><a id="p100616"></a>: cartesian_point := cartesian_point('ppb1',[orc +<br>(dc - dp)/rt3, orc - (0.5*dp/rt3)*sqrt(8.0*dc/dp - dp), orc - dc]);</td></tr>
<tr><td><a id="p100617"></a>ppb2</td><td><a id="p100618"></a>: cartesian_point := cartesian_point('ppb2',[orc + (dc - dp)/rt3,<br>orc + (0.5*dp/rt3)*sqrt(8.0*dc/dp - dp), orc - dc]);</td></tr>
<tr><td><a id="p100619"></a>phb1</td><td><a id="p100620"></a>: cartesian_point := cartesian_point('phb1',<br>[orc + (dp - dc)*(2.0 - rt3), orc - yh, orc - dc]);</td></tr>
<tr><td><a id="p100621"></a>phb2</td><td><a id="p100622"></a>: cartesian_point := cartesian_point('phb2',<br>[orc + (dp - dc)*(2.0 - rt3), orc + yh, orc - dc]);</td></tr>
<tr><td><a id="p100623"></a>pos_x</td><td><a id="p100624"></a>: direction := direction ('pos_x', [1, 0, 0]);</td></tr>
<tr><td><a id="p100625"></a>pos_y</td><td><a id="p100626"></a>: direction:= direction ('pos_y', [0, 1, 0]);</td></tr>
<tr><td><a id="p100627"></a>vec_y</td><td><a id="p100628"></a>: vector := vector ('vec_y', pos_y, 1.0);</td></tr>
<tr><td><a id="p100629"></a>pos_z</td><td><a id="p100630"></a>: direction := direction ('pos_z', [0, 0, 1]);</td></tr>
<tr><td><a id="p100631"></a>denorm</td><td><a id="p100632"></a>: direction := direction ('denorm', [1.0, 0, 1.0]);</td></tr>
<tr><td><a id="p100633"></a>dhnorm</td><td><a id="p100634"></a>: direction := direction ('dhnorm',<br>[(rt3 + 1.0), 0, -(rt3 - 1.0)]);</td></tr>
<tr><td><a id="p100635"></a>dpnorm</td><td><a id="p100636"></a>: direction := direction ('dpnorm', [rt3, 0, 1]);</td></tr>
<tr><td colspan="2"><a id="p100637"></a>(* плоскости эллипса, параболы, гиперболы расположены под углами 45°,<br>30° и 15° относительно оси конуса *)</td></tr>
<tr><td><a id="p100638"></a>dir_e</td><td><a id="p100639"></a>: direction := direction ('dir_e', [1.0, 0, -1.0]);</td></tr>
<tr><td><a id="p100640"></a>dir_h</td><td><a id="p100641"></a>: direction := direction ('dir_h',<br>[-(rt3 - 1.0), 0, -(rt3 + 1.0)]);</td></tr>
<tr><td><a id="p100642"></a>dir_p</td><td><a id="p100643"></a>: direction := direction ('dir_p', [1, 0, -rt3]);</td></tr>
<tr><td><a id="p100644"></a>a1</td><td><a id="p100645"></a>: axis2_placement_3d := axis2_placement_3d ('a1', origin,<br>pos_z, pos_x) ;</td></tr>
<tr><td><a id="p100646"></a>ac</td><td><a id="p100647"></a>: axis2_placement_3d := axis2_placement_3d ('ac', cbase, pos_z,<br>pos_x);</td></tr>
<tr><td><a id="p100648"></a>ae</td><td><a id="p100649"></a>: axis2_placement_3d := axis2_placement_3d ('ae', ecent, denorm,<br>dir_e);</td></tr>
<tr><td><a id="p100650"></a>ah</td><td><a id="p100651"></a>: axis2_placement_3d := axis2_placement_3d ('ah', hcent, dhnorm,<br>dir_h);</td></tr>
<tr><td><a id="p100652"></a>ap</td><td><a id="p100653"></a>: axis2_placement_3d := axis2_placement_3d ('ap', ppoint, dpnorm,<br>dir_p) ;</td></tr>
<tr><td><a id="p100654"></a>a2</td><td><a id="p100655"></a>: axis2_placement_3d := axis2_placement_3d ('a2', cbase, pos_z,<br>pos_x) ;</td></tr>
<tr><td><a id="p100656"></a>ple</td><td><a id="p100657"></a>: plane := plane ('ple', ae) ;</td></tr>
<tr><td><a id="p100658"></a>plc</td><td><a id="p100659"></a>: plane := plane ('plc', ac) ;</td></tr>
<tr><td><a id="p100660"></a>plh</td><td><a id="p100661"></a>: plane := plane ('plh', ah) ;</td></tr>
<tr><td><a id="p100662"></a>plp</td><td><a id="p100663"></a>: plane := plane ('plp', ap) ;</td></tr>
<tr><td><a id="p100664"></a>cone</td><td><a id="p100665"></a>: conical_surface := conical_surface ('cone', a1, 0.0, 30.0);</td></tr>
<tr><td><a id="p100666"></a>circ</td><td><a id="p100667"></a>: circle := circle ('circ', ac, (dc/rt3);</td></tr>
<tr><td><a id="p100668"></a>elli</td><td><a id="p100669"></a>: ellipse := ellipse('elli', ae, emaj, emin);</td></tr>
<tr><td><a id="p100670"></a>hyp</td><td><a id="p100671"></a>: hyperbola := hyperbola('hyp', ah, haxis, himag);</td></tr>
<tr><td><a id="p100672"></a>parab</td><td><a id="p100673"></a>: parabola := parabola('parab', ap, 0.25*dp/rt3);</td></tr>
<tr><td><a id="p100674"></a>linpb</td><td><a id="p100675"></a>: line := line('linpb', ppb1, vec_y);</td></tr>
<tr><td><a id="p100676"></a>linph</td><td><a id="p100677"></a>: line := line('linph', phb1, vec_y);</td></tr>
<tr><td><a id="p100678"></a>vertorc</td><td><a id="p100679"></a>: vertex_point := vertex_point ('vertorc', origin);</td></tr>
<tr><td><a id="p100680"></a>verte</td><td><a id="p100681"></a>: vertex point := vertex_point ('verte', epoint);</td></tr>
<tr><td><a id="p100682"></a>vertpb1</td><td><a id="p100683"></a>: vertex_point := vertex_point ('vertpb1', ppb1);</td></tr>
<tr><td><a id="p100684"></a>vertpb2</td><td><a id="p100685"></a>: vertex_point:= vertex_point ('vertpb', ppb2);</td></tr>
<tr><td><a id="p100686"></a>verthb1</td><td><a id="p100687"></a>: vertex_point:= vertex_point ('verthb1', phb1);</td></tr>
<tr><td><a id="p100688"></a>verthb2</td><td><a id="p100689"></a>: vertex_point := vertex_point ('verthb2', phb2);</td></tr>
<tr><td><a id="p100690"></a>edge1</td><td><a id="p100691"></a>: edge_curve := edge_curve ('edge1', verte, verte, elli, TRUE);</td></tr>
<tr><td><a id="p100692"></a>edge2</td><td><a id="p100693"></a>: edge_curve := edge_curve ('edge2', vertpb1, vertpb2,<br>parab, TRUE);</td></tr>
<tr><td><a id="p100694"></a>edge3</td><td><a id="p100695"></a>: edge_curve := edge_curve ('edge3', verthb1, verthb2, hyp, TRUE);</td></tr>
<tr><td><a id="p100696"></a>edgeb1</td><td><a id="p100697"></a>: edge_curve := edge_curve ('edgeb1', vertpb1, verthb1,<br>circ, TRUE);</td></tr>
<tr><td><a id="p100698"></a>edgeb2</td><td><a id="p100699"></a>: edge_curve := edge_curve('edgeb', verthb1, verthb2,<br>linph, TRUE);</td></tr>
<tr><td><a id="p100700"></a>edgeb3</td><td><a id="p100701"></a>: edge_curve := edge_curve ('edgeb3', verthb2, vertpb2,<br>circ, TRUE);</td></tr>
<tr><td><a id="p100702"></a>edgeb4</td><td><a id="p100703"></a>: edge_curve:= edge_curve ('edgeb4', vertpb2, vertpb1,<br>linpb, FALSE);</td></tr>
<tr><td><a id="p100704"></a>oe1</td><td><a id="p100705"></a>: oriented_edge := oriented_edge ('oe1', edge1, TRUE);</td></tr>
<tr><td><a id="p100706"></a>oe2t</td><td><a id="p100707"></a>: oriented_edge := oriented_edge ('oe2t', edge2, TRUE);</td></tr>
<tr><td><a id="p100708"></a>oe2f</td><td><a id="p100709"></a>: oriented_edge := oriented_edge ('oe2f', edge2, FALSE);</td></tr>
<tr><td><a id="p100710"></a>oe3t</td><td><a id="p100711"></a>: oriented_edge := oriented_edge ('oe3t', edge3, TRUE);</td></tr>
<tr><td><a id="p100712"></a>oe3f</td><td><a id="p100713"></a>: oriented_edge := oriented_edge ('oe3f', edge3, FALSE);</td></tr>
<tr><td><a id="p100714"></a>oeb1t</td><td><a id="p100715"></a>: oriented_edge := oriented_edge ('oeb1t', edgeb1, TRUE);</td></tr>
<tr><td><a id="p100716"></a>oeb1f</td><td><a id="p100717"></a>: oriented_edge := oriented_edge ('oeb1f', edgeb1, FALSE);</td></tr>
<tr><td><a id="p100718"></a>oeb2t</td><td><a id="p100719"></a>: oriented_edge := oriented_edge ('oeb2t', edgeb2, TRUE);</td></tr>
<tr><td><a id="p100720"></a>oeb2f</td><td><a id="p100721"></a>: oriented_edge := oriented_edge ('oeb2f', edgeb2, FALSE);</td></tr>
<tr><td><a id="p100722"></a>oeb3t</td><td><a id="p100723"></a>: oriented_edge := oriented_edge ('oeb3t', edgeb3, TRUE);</td></tr>
<tr><td><a id="p100724"></a>oeb3f</td><td><a id="p100725"></a>: oriented_edge := oriented_edge ('oeb3f', edgeb3, FALSE);</td></tr>
<tr><td><a id="p100726"></a>oeb4t</td><td><a id="p100727"></a>: oriented_edge := oriented_edge ('oeb4t', edgeb4, TRUE);</td></tr>
<tr><td><a id="p100728"></a>oeb4f</td><td><a id="p100729"></a>: oriented_edge := oriented_edge ('oeb4f', edgeb4, FALSE);</td></tr>
<tr><td><a id="p100730"></a>loope</td><td><a id="p100731"></a>: edge_loop := edge_loop ('loope', [oe1]);</td></tr>
<tr><td><a id="p100732"></a>looppar</td><td><a id="p100733"></a>: edge_loop := edge_loop ('looppar', [oeb4t, oe2t]);</td></tr>
<tr><td><a id="p100734"></a>loophyp</td><td><a id="p100735"></a>: edge_loop := edge_loop ('loophyp', [oeb2t, oe3f]);</td></tr>
<tr><td><a id="p100736"></a>loopbase</td><td><a id="p100737"></a>: edge_loop := edge_loop ('loopbase', [oeb4f, oeb3f,<br>oeb2f, oeb1f]);</td></tr>
<tr><td><a id="p100738"></a>loopcone</td><td><a id="p100739"></a>: edge_loop := edge_loop ('loopcone', [oe2f, oeb1t,<br>oe3t, oeb3t]);</td></tr>
<tr><td><a id="p100740"></a>apexloop</td><td><a id="p100741"></a>: vertex_loop := vertex_loop ('apexloop', vertorc) ;</td></tr>
<tr><td><a id="p100742"></a>bc1</td><td><a id="p100743"></a>: face_bound := face_bound ('bc1' loopcone, TRUE) ;</td></tr>
<tr><td><a id="p100744"></a>bc2</td><td><a id="p100745"></a>: face_bound := face_bound ('bc2', loope, FALSE) ;</td></tr>
<tr><td><a id="p100746"></a>be_t</td><td><a id="p100747"></a>: face_outer_bound := face_outer_bound ('be_t', loope, TRUE);</td></tr>
<tr><td><a id="p100748"></a>be_f</td><td><a id="p100749"></a>: face_bound := face_bound ('be_f', loope, FALSE) ;</td></tr>
<tr><td><a id="p100750"></a>bpar</td><td><a id="p100751"></a>: face_outer_bound := face_outer_bound ('bpar', looppar, TRUE);</td></tr>
<tr><td><a id="p100752"></a>bhyp</td><td><a id="p100753"></a>: face_outer_bound := face_outer_bound ('bhyp', loophyp, TRUE);</td></tr>
<tr><td><a id="p100754"></a>bbase</td><td><a id="p100755"></a>: face_outer_bound := face_outer_bound('bbase', loopbase, TRUE);</td></tr>
<tr><td><a id="p100756"></a>bcone</td><td><a id="p100757"></a>: face_bound := face_bound ('bcone', loopcone, TRUE) ;</td></tr>
<tr><td><a id="p100758"></a>vbound</td><td><a id="p100759"></a>: face_bound := face_bound ('vbound', apexloop, TRUE);</td></tr>
<tr><td colspan="2"><a id="p100760"></a>(* Четыре плоские грани конуса *)</td></tr>
<tr><td><a id="p100761"></a>curved_face</td><td><a id="p100762"></a>: face_surface := face_surface ('curved_face', [bcone,<br>be_f], cone, TRUE);</td></tr>
<tr><td><a id="p100763"></a>tope_face:</td><td><a id="p100764"></a>: face_surface := face_surface ('tope_face', [be_t],<br>ple, TRUE);</td></tr>
<tr><td><a id="p100765"></a>bottomc_face</td><td><a id="p100766"></a>: face_surface := face_surface<br>('bottomc_face', [bbase], plc, FALSE);</td></tr>
<tr><td><a id="p100767"></a>par_face</td><td><a id="p100768"></a>: face_surface :=<br>face_surface ('par_face', [bpar], plp, TRUE);</td></tr>
<tr><td><a id="p100769"></a>hyp_face</td><td><a id="p100770"></a>: face_surface :=<br>face_surface ('hyp_face', [bhyp], plh, TRUE);</td></tr>
<tr><td colspan="2"><a id="p100771"></a>(* Грани конуса с эллиптическим основанием и верхним контуром *)</td></tr>
<tr><td><a id="p100772"></a>top_face</td><td><a id="p100773"></a>: face_surface := face_surface<br>('top_face', [be_t, vbound], cone, TRUE);</td></tr>
<tr><td><a id="p100774"></a>bottome_face</td><td><a id="p100775"></a>: face_surface := face_surface ('bottome_face',<br>[be_f], ple, FALSE);</td></tr>
<tr><td colspan="2"><a id="p100776"></a>END_PARAMETER;<br>SCHEMA_DATA cone_shell_ctxt;<br>CONSTANT<br>rt2 == sqrt(2.0);<br>rt3 == sqrt(3.0);<br>END_CONSTANT;<br>ri1 = representation_item {name -&gt; 'vconeshell'; SUPOF(@tri1);} ;<br>tri1 = topological_representation_item {SUBOF(@ri1); SUPOF(@cfs1);} ;<br>cfs1 = connected_face_set{SUBOF(@tri);<br>cfs_faces -&gt; (@top_face, @bottome_face);<br>SUPOF(@vconeshell); } ;<br>ri2 = representation_item {name -&gt; 'con4fsheN'; SUPOF(@tri2);} ;<br>tri2 = topological_representation_item {SUBOF(@ri2); SUPOF(@cfs2);} ;<br>cfs2 = connected_face_set {SUBOF(@tri2);<br>cfs_faces -&gt; (@tope_face, @bottomc_face, curved_face, par_face,<br>hyp_face); SUPOF(@con4fshell); };<br>vconeshell = closed_shell {SUBOF(@cfs1); };<br>con4fshell = closed_shell {SUBOF(@cfs2); };<br>END_SCHEMA_DATA;<br>END_CONTEXT;<br>(*</td></tr>
</table>


<a id="p100777"></a>E.4.3 Контекст объекта toroidal_segment
<a id="p100778"></a>Данный контекст описывает грани, необходимые для определения сегмента тора, ограниченного плоскостями. Объектами edge_curve являются объекты line, circular arcpolyline.
<a id="p100779"></a>Центр тора расположен в начале координат, а его центральной осью является ось z; максимальный и минимальный радиусы тора равны 100 и 20. Ограничивающие плоскости заданы координатами z = 0, x = 0 и x = 50. Все точки полилиний расположены на поверхности тора с допустимым отклонением менее чем 10E(-6).
<a id="p100780"></a>Все границы определены посредством объектов edge_loop. Основные размеры не должны изменяться.


<table>
<colgroup><col width="16%"><col width="84%"></colgroup>
<tr><td colspan="2"><a id="p100781"></a>*)<br>CONTEXT toroidal_segment ;<br>WITH aic_elementary_brep;<br>PARAMETER</td></tr>
<tr><td><a id="p100782"></a>orc</td><td><a id="p100783"></a>: length_measure := 0.0;</td></tr>
<tr><td><a id="p100784"></a>rad1</td><td><a id="p100785"></a>: length_measure := 100.0;</td></tr>
<tr><td><a id="p100786"></a>rad2</td><td><a id="p100787"></a>: length_measure := 20.0;</td></tr>
<tr><td><a id="p100788"></a>rci</td><td><a id="p100789"></a>: length_measure := 80.0;</td></tr>
<tr><td><a id="p100790"></a>rco</td><td><a id="p100791"></a>: length_measure := 120.0;</td></tr>
<tr><td><a id="p100792"></a>origin</td><td><a id="p100793"></a>: cartesian_point := cartesian_point ('origin', [orc, orc,<br>orc]);</td></tr>
<tr><td><a id="p100794"></a>p1</td><td><a id="p100795"></a>: cartesian_point := cartesian_point ('p1', [50.0, 62.44998,<br>0.0]);</td></tr>
<tr><td><a id="p100796"></a>pcleft</td><td><a id="p100797"></a>: cartesian_point := cartesian_point ('pcleft', [0.0, 100.0,<br>0.0]);</td></tr>
<tr><td><a id="p100798"></a>pbleft</td><td><a id="p100799"></a>: cartesian_point := cartesian_point ('pbleft', [0.0, 80.0,<br>0.0]);</td></tr>
<tr><td><a id="p100800"></a>ptleft</td><td><a id="p100801"></a>: cartesian_point := cartesian_point ('ptleft', [0.0, 120.0,<br>0.0]);</td></tr>
<tr><td><a id="p100802"></a>pos_x</td><td><a id="p100803"></a>: direction := direction ('pos_x', [1, 0, 0]);</td></tr>
<tr><td><a id="p100804"></a>pos_y</td><td><a id="p100805"></a>: direction := direction ('pos_y', [0, 1, 0]);</td></tr>
<tr><td><a id="p100806"></a>pos_z</td><td><a id="p100807"></a>: direction := direction ('pos_z', [0, 0, 1]);</td></tr>
<tr><td><a id="p100808"></a>neg_x</td><td><a id="p100809"></a>: direction := direction ('neg_x', [-1, 0, 0]);</td></tr>
<tr><td><a id="p100810"></a>vec_y</td><td><a id="p100811"></a>: vector := vector ('vec_y', pos_y, 1.0) ;</td></tr>
<tr><td><a id="p100812"></a>a1</td><td><a id="p100813"></a>: axis2_placement_3d := axis2_placement_3d ('a1', origin,<br>pos_z, pos_x) ;</td></tr>
<tr><td><a id="p100814"></a>a2</td><td><a id="p100815"></a>: axis2_placement_3d := axis2_placement_3d ('a2', pcleft,<br>neg_x, pos_y) ;</td></tr>
<tr><td><a id="p100816"></a>a3</td><td><a id="p100817"></a>: axis2_placement_3d := axis2_placement_3d ('a3', p1,<br>pos_x, pos_z) ;</td></tr>
<tr><td><a id="p100818"></a>base</td><td><a id="p100819"></a>: plane := plane ('base', a1) ;</td></tr>
<tr><td><a id="p100820"></a>pleft</td><td><a id="p100821"></a>: plane := plane ('pleft', a2) ;</td></tr>
<tr><td><a id="p100822"></a>pright</td><td><a id="p100823"></a>: plane := plane ('pright', a3) ;</td></tr>
<tr><td><a id="p100824"></a>torus</td><td><a id="p100825"></a>: toroidal_surface := toroidal_surface ('torus', a1, rad1,<br>rad2);</td></tr>
<tr><td><a id="p100826"></a>circin</td><td><a id="p100827"></a>: circle := circle ('circin', a1, rci);</td></tr>
<tr><td><a id="p100828"></a>circout</td><td><a id="p100829"></a>: circle := circle ('circout', a1, rco);</td></tr>
<tr><td><a id="p100830"></a>circleft</td><td><a id="p100831"></a>: circle := circle ('circleft', a2, rad2);</td></tr>
<tr><td><a id="p100832"></a>p2</td><td><a id="p100833"></a>: cartesian_point :=<br>cartesian_point ('p2', [50.0, 62.633918, 2.392932]);</td></tr>
<tr><td><a id="p100834"></a>p3</td><td><a id="p100835"></a>: cartesian_point :=<br>cartesian_point ('p3', [50.0, 64.92632, 8.609]);</td></tr>
<tr><td><a id="p100836"></a>p4</td><td><a id="p100837"></a>: cartesian_point :=<br>cartesian_point ('p4', [50.0, 67.325057, 11.8123625]);</td></tr>
<tr><td><a id="p100838"></a>p5</td><td><a id="p100839"></a>: cartesian_point :=<br>cartesian_point ('p5', [50.0, 69.839261, 14.1766914]);</td></tr>
<tr><td><a id="p100840"></a>p6</td><td><a id="p100841"></a>: cartesian_point :=<br>cartesian_point ('p6', [50.0, 72.479126, 16.03916]);</td></tr>
<tr><td><a id="p100842"></a>p7</td><td><a id="p100843"></a>: cartesian_point :=<br>cartesian_point ('p7', [50.0, 75.25605, 17.518988]);</td></tr>
<tr><td><a id="p100844"></a>p8</td><td><a id="p100845"></a>: cartesian_point :=<br>cartesian_point ('p8', [50.0, 78.182821, 18.660529]);</td></tr>
<tr><td><a id="p100846"></a>p9</td><td><a id="p100847"></a>: cartesian_point :=<br>cartesian_point ('p9', [50.0, 81.27384, 19.469096]);</td></tr>
<tr><td><a id="p100848"></a>p10</td><td><a id="p100849"></a>: cartesian_point :=<br>cartesian_point ('p10', [50.0, 84.5453828, 19.920975]);</td></tr>
<tr><td><a id="p100850"></a>p11</td><td><a id="p100851"></a>: cartesian_point :=<br>cartesian_point ('p11', [50.0, 88.0159173, 19.9623578]);</td></tr>
<tr><td><a id="p100852"></a>p12</td><td><a id="p100853"></a>: cartesian_point :=<br>cartesian_point ('p12', [50.0, 91.706487, 19.498351]);</td></tr>
<tr><td><a id="p100854"></a>p13</td><td><a id="p100855"></a>: cartesian_point :=<br>cartesian_point ('p13', [50.0, 95.6411789, 18.343994]);</td></tr>
<tr><td><a id="p100856"></a>p14</td><td><a id="p100857"></a>: cartesian_point :=<br>cartesian_point ('p14', [50.0, 99.8476928, 16.24428]);</td></tr>
<tr><td><a id="p100858"></a>p15</td><td><a id="p100859"></a>: cartesian_point :=<br>cartesian_point ('p15', [50.0, 104.3580503, 12.3673625]);</td></tr>
<tr><td><a id="p100860"></a>p16</td><td><a id="p100861"></a>: cartesian_point :=<br>cartesian_point ('p16', [50.0, 107.225346, 8.046179]);</td></tr>
<tr><td><a id="p100862"></a>p17</td><td><a id="p100863"></a>: cartesian_point :=<br>cartesian_point ('p17', [50.0, 109.008344, 1.692583]);</td></tr>
<tr><td><a id="p100864"></a>p18</td><td><a id="p100865"></a>: cartesian_point :=<br>cartesian_point ('p18', [50.0, 109.0871212, 0.0]);</td></tr>
<tr><td><a id="p100866"></a>poly</td><td><a id="p100867"></a>: polyline := polyline('poly', [p1, p2, p3,<br>p4, p5, p6, p7, p8, p9,<br>p10, p11, p12, p13, p14, p15, p16, p17, p18]);</td></tr>
<tr><td><a id="p100868"></a>l1</td><td><a id="p100869"></a>: line := line ('l1', p1, vec_y);</td></tr>
<tr><td><a id="p100870"></a>l2</td><td><a id="p100871"></a>: line := line ('l2', pcleft, vec_y);</td></tr>
<tr><td><a id="p100872"></a>v1</td><td><a id="p100873"></a>: vertex_point := vertex_point ('v1', p1);</td></tr>
<tr><td><a id="p100874"></a>v2</td><td><a id="p100875"></a>: vertex_point := vertex_point ('v2', p18);</td></tr>
<tr><td><a id="p100876"></a>v3</td><td><a id="p100877"></a>: vertex_point := vertex_point ('v3', pbleft);</td></tr>
<tr><td><a id="p100878"></a>v4</td><td><a id="p100879"></a>: vertex_point := vertex_point ('v4', ptleft);</td></tr>
<tr><td><a id="p100880"></a>edgeb1</td><td><a id="p100881"></a>: edge_curve := edge_curve ('edgeb1', v1, v2, I1, TRUE);</td></tr>
<tr><td><a id="p100882"></a>edget1</td><td><a id="p100883"></a>: edge_curve := edge_curve ('edget1', v1, v2, poly, TRUE);</td></tr>
<tr><td><a id="p100884"></a>edgeb2</td><td><a id="p100885"></a>: edge_curve := edge_curve ('edgeb2', v1, v3, circin, TRUE);</td></tr>
<tr><td><a id="p100886"></a>edgeb3</td><td><a id="p100887"></a>: edge_curve := edge_curve ('edgeb3', v2, v4, circout, TRUE);</td></tr>
<tr><td><a id="p100888"></a>edgeb4</td><td><a id="p100889"></a>: edge_curve := edge_curve ('edgeb4', v3, v4, I2, TRUE);</td></tr>
<tr><td><a id="p100890"></a>edget2</td><td><a id="p100891"></a>: edge_curve := edge_curve ('edget2', v3, v4, circleft, TRUE);</td></tr>
<tr><td><a id="p100892"></a>oeb1t</td><td><a id="p100893"></a>: oriented_edge := oriented_edge ('oeb1t', edgeb1, TRUE);</td></tr>
<tr><td><a id="p100894"></a>oeb1f</td><td><a id="p100895"></a>: oriented_edge := oriented_edge ('oeb1f', edgeb1, FALSE);</td></tr>
<tr><td><a id="p100896"></a>oeb2t</td><td><a id="p100897"></a>: oriented_edge := oriented_edge ('oeb2t', edgeb2, TRUE);</td></tr>
<tr><td><a id="p100898"></a>oeb2f</td><td><a id="p100899"></a>: oriented_edge := oriented_edge ('oeb2f', edgeb2, FALSE);</td></tr>
<tr><td><a id="p100900"></a>oeb3t</td><td><a id="p100901"></a>: oriented_edge := oriented_edge ('oeb3t', edgeb3, TRUE);</td></tr>
<tr><td><a id="p100902"></a>oeb3f</td><td><a id="p100903"></a>: oriented_edge := oriented_edge ('oeb3f', edgeb3, FALSE);</td></tr>
<tr><td><a id="p100904"></a>oeb4t</td><td><a id="p100905"></a>: oriented_edge := oriented_edge ('oeb4t', edgeb4, TRUE);</td></tr>
<tr><td><a id="p100906"></a>oeb4f</td><td><a id="p100907"></a>: oriented_edge := oriented_edge ('oeb4f', edgeb4, FALSE);</td></tr>
<tr><td><a id="p100908"></a>oet1t</td><td><a id="p100909"></a>: oriented_edge := oriented_edge ('oet1t', edget1, TRUE);</td></tr>
<tr><td><a id="p100910"></a>oet1f</td><td><a id="p100911"></a>: oriented_edge := oriented_edge ('oet1f', edget1, FALSE);</td></tr>
<tr><td><a id="p100912"></a>oet2t</td><td><a id="p100913"></a>: oriented_edge := oriented_edge ('oet2t', edget2, TRUE);</td></tr>
<tr><td><a id="p100914"></a>oet2f</td><td><a id="p100915"></a>: oriented_edge := oriented_edge ('oet2f', edget2, FALSE);</td></tr>
<tr><td><a id="p100916"></a>loopb</td><td><a id="p100917"></a>: edge_loop := edge_loop ('loopb', [oeb4t, oeb3f, oeb1f,<br>oeb2t]);</td></tr>
<tr><td><a id="p100918"></a>loopt</td><td><a id="p100919"></a>: edge_loop:= edge_loop ('loopt', [oeb2f, oet1t, oeb3t,<br>oet2f]);</td></tr>
<tr><td><a id="p100920"></a>loopleft</td><td><a id="p100921"></a>: edge_loop := edge loop ('loopleft', [oeb4f, oet2t]);</td></tr>
<tr><td><a id="p100922"></a>loopright</td><td><a id="p100923"></a>: edge_loop := edge_loop ('loopright', [oeb1t, oet1f]);</td></tr>
<tr><td><a id="p100924"></a>bbase</td><td><a id="p100925"></a>: face_outer_bound := face_outer_bound ('bbase', loopb, TRUE) ;</td></tr>
<tr><td><a id="p100926"></a>btop</td><td><a id="p100927"></a>: face_outer_bound := face_outer_bound ('btop', loopt, TRUE) ;</td></tr>
<tr><td><a id="p100928"></a>bleft</td><td><a id="p100929"></a>: face_outer_bound := face_outer_bound ('bleft', loopleft,<br>TRUE) ;</td></tr>
<tr><td><a id="p100930"></a>Bright</td><td><a id="p100931"></a>: face_outer_bound := face_outer_bound ('bright', loopright,<br>TRUE) ;</td></tr>
<tr><td><a id="p100932"></a>curved_face</td><td><a id="p100933"></a>: face_surface := face_surface ('curved_face', [btop],<br>torus, TRUE);</td></tr>
<tr><td><a id="p100934"></a>base_face</td><td><a id="p100935"></a>: face_surface :=<br>face_surface ('base_face', [bbase], base, FALSE);</td></tr>
<tr><td><a id="p100936"></a>left_face</td><td><a id="p100937"></a>: face_surface :=<br>face_surface ('left_face', [bleft], pleft, TRUE);</td></tr>
<tr><td><a id="p100938"></a>right_face</td><td><a id="p100939"></a>: face_surface :=<br>face_surface ('right_face', [bright], pright, TRUE);</td></tr>
<tr><td colspan="2"><a id="p100940"></a>END_PARAMETER;<br>SCHEMA_DATA tor_shell_ctxt;<br>ri = representation_item {name -&gt; 'torshell' ; SUPOF(@tri);} ;<br>tri = topological_representation_item {SUBOF(@ri); SUPOF(@cfs);} ;<br>cfs = connected_face_set {SUBOF(@tri);<br>cfs_faces -&gt; (@curved_face, @base_face, @left_face, @right_face);<br>SUPOF(@torshell); };<br>torshell = closed_shell {SUBOF(@cfs);} ;<br>END_SCHEMA_DATA;<br>END_CONTEXT ;<br>(*</td></tr>
</table>


<a id="p100941"></a>E.4.4 Контекст объекта cylinder_union_polyline
<a id="p100942"></a>Данный контекст описывает грани, необходимые для определения граней объединения двух цилиндров разных радиусов.
<a id="p100943"></a>Данный контекст дает пример неплоского объекта polyline и объекта face с тремя ограничивающими контурами.
<a id="p100944"></a>Все границы определены посредством объектов edge_loop. Основные размеры не должны изменяться.


<table>
<colgroup><col width="16%"><col width="84%"></colgroup>
<tr><td colspan="2"><a id="p100945"></a>*)<br>CONTEXT cylinder_union_polyline ;<br>WITH aic_elementary_brep;<br>PARAMETER</td></tr>
<tr><td><a id="p100946"></a>orc</td><td><a id="p100947"></a>: length_measure := 0.0;</td></tr>
<tr><td><a id="p100948"></a>rad1</td><td><a id="p100949"></a>: length_measure := 50.0;</td></tr>
<tr><td><a id="p100950"></a>rad2</td><td><a id="p100951"></a>: length_measure := 20.0;</td></tr>
<tr><td><a id="p100952"></a>11</td><td><a id="p100953"></a>: length_measure := 80.0;</td></tr>
<tr><td><a id="p100954"></a>12</td><td><a id="p100955"></a>: length_measure := -80.0;</td></tr>
<tr><td><a id="p100956"></a>origin</td><td><a id="p100957"></a>: cartesian_point := cartesian_point ('origin',[orc, orc, orc]);</td></tr>
<tr><td><a id="p100958"></a>ptop</td><td><a id="p100959"></a>: cartesian point := cartesian_point ('ptop', [orc, orc, I1]);</td></tr>
<tr><td><a id="p100960"></a>phase</td><td><a id="p100961"></a>: cartesian point := cartesian_point ('phase', [orc, orc, I2]);</td></tr>
<tr><td><a id="p100962"></a>pright</td><td><a id="p100963"></a>: cartesian point := cartesian_point ('pright', [orc, I1, orc]);</td></tr>
<tr><td><a id="p100964"></a>pte</td><td><a id="p100965"></a>: cartesian_point := cartesian_point ('pte', [rad1, orc, I1]);</td></tr>
<tr><td><a id="p100966"></a>pbe</td><td><a id="p100967"></a>: cartesian_point := cartesian_point ('pbe', [rad1, orc, I2])</td></tr>
<tr><td><a id="p100968"></a>pre</td><td><a id="p100969"></a>: cartesian_point := cartesian_point ('pre', [rad2, I1, orc]);</td></tr>
<tr><td><a id="p100970"></a>pos_x</td><td><a id="p100971"></a>: direction := direction ('pos_x', [1, 0, 0]);</td></tr>
<tr><td><a id="p100972"></a>pos_y</td><td><a id="p100973"></a>: direction := direction ('pos_y', [0, 1, 0]);</td></tr>
<tr><td><a id="p100974"></a>pos_z</td><td><a id="p100975"></a>: direction := direction ('pos_z', [0, 0, 1]);</td></tr>
<tr><td><a id="p100976"></a>a1</td><td><a id="p100977"></a>: axis2_placement_3d := axis2_placement_3d ('a1', origin, pos_z,<br>pos_x) ;</td></tr>
<tr><td><a id="p100978"></a>a2</td><td><a id="p100979"></a>: axis2_placement_3d := axis2_placement_3d ('a2', origin, pos_y,<br>pos_x) ;</td></tr>
<tr><td><a id="p100980"></a>at</td><td><a id="p100981"></a>: axis2_placement_3d := axis2_placement_3d ('at', ptop, ?, ? );</td></tr>
<tr><td><a id="p100982"></a>ab</td><td><a id="p100983"></a>: axis2_placement_3d := axis2_placement_3d ('ab', pbase, ?, ?);</td></tr>
<tr><td><a id="p100984"></a>ar</td><td><a id="p100985"></a>: axis2_placement_3d := axis2_placement_3d ('ar', pright,<br>pos_y, pos_x) ;</td></tr>
<tr><td><a id="p100986"></a>base</td><td><a id="p100987"></a>: plane := plane ('base', ab) ;</td></tr>
<tr><td><a id="p100988"></a>top</td><td><a id="p100989"></a>: plane := plane ('top', at) ;</td></tr>
<tr><td><a id="p100990"></a>plright</td><td><a id="p100991"></a>: plane := plane ('plright', ar) ;</td></tr>
<tr><td><a id="p100992"></a>cyl1</td><td><a id="p100993"></a>: cylindrical_surface := cylindrical_surface ('cyl1', a1, rad1);</td></tr>
<tr><td><a id="p100994"></a>cyl2</td><td><a id="p100995"></a>: cylindrical_surface := cylindrical_surface ('cyl2', a2, rad2);</td></tr>
<tr><td><a id="p100996"></a>circtop</td><td><a id="p100997"></a>: circle := circle ('circtop', at, rad1);</td></tr>
<tr><td><a id="p100998"></a>circbase</td><td><a id="p100999"></a>: circle := circle ('circbase', ab, rad1);</td></tr>
<tr><td><a id="p101000"></a>circright</td><td><a id="p101001"></a>: circle := circle ('circright', ar, rad2);</td></tr>
<tr><td><a id="p101002"></a>p1</td><td><a id="p101003"></a>: cartesian_point :=<br>cartesian_point ('p1', [0.0, 50.0, 20.0]);</td></tr>
<tr><td><a id="p101004"></a>p2</td><td><a id="p101005"></a>: cartesian_point :=<br>cartesian point ('p2', [3.4729636, 49.8792394, 19.6961551]);</td></tr>
<tr><td><a id="p101006"></a>p3:</td><td><a id="p101007"></a>: cartesian_point :=<br>cartesian point ('p3', [6.8404029, 49.529879, 18.793852]);</td></tr>
<tr><td><a id="p101008"></a>p4</td><td><a id="p101009"></a>: cartesian_point :=<br>cartesian_point ('p4', [10.0, 48.9897949, 17.3205081]);</td></tr>
<tr><td><a id="p101010"></a>p5</td><td><a id="p101011"></a>: cartesian_point :=<br>cartesian point ('p5', [12.8557522, 48.31904, 15.320889]);</td></tr>
<tr><td><a id="p101012"></a>p6</td><td><a id="p101013"></a>: cartesian_point := cartesian_point<br>('p6', [15.3208889, 47.5948565, 12.8557522]);</td></tr>
<tr><td><a id="p101014"></a>p7</td><td><a id="p101015"></a>: cartesian_point :=<br>cartesian_point ('p7', [17.3205081, 46.904158, 10.0]);</td></tr>
<tr><td><a id="p101016"></a>p8</td><td><a id="p101017"></a>: cartesian_point :=<br>cartesian_point ('p8', [18.7938524, 46.3334772, 6.84040287]);</td></tr>
<tr><td><a id="p101018"></a>p9</td><td><a id="p101019"></a>: cartesian_point :=<br>cartesian_point ('p9', [19.6961551, 45.95717, 3.4729635]);</td></tr>
<tr><td><a id="p101020"></a>p10</td><td><a id="p101021"></a>: cartesian_point :=<br>cartesian_point ('p10', [20.0, 45.8257569, 0.0]);</td></tr>
<tr><td><a id="p101022"></a>p11</td><td><a id="p101023"></a>: cartesian_point :=<br>cartesian_point ('p11', [19.6961551, 45.95717, -3.4729635]);</td></tr>
<tr><td><a id="p101024"></a>p12</td><td><a id="p101025"></a>: cartesian_point :=<br>cartesian_point ('p12', [18.7938524, 46.3334772, -6.84040287]);</td></tr>
<tr><td><a id="p101026"></a>p13</td><td><a id="p101027"></a>: cartesian_point :=<br>cartesian_point ('p13', [17.3205081, 46.904158, -10.0]);</td></tr>
<tr><td><a id="p101028"></a>p14</td><td><a id="p101029"></a>: cartesian_point :=<br>cartesian_point ('p14', [15.3208889, 47.5948565, -12.8557522]);</td></tr>
<tr><td><a id="p101030"></a>p15:</td><td><a id="p101031"></a>: cartesian_point :=<br>cartesian_point ('p15', [12.8557522, 48.31904, -15.320889]);</td></tr>
<tr><td><a id="p101032"></a>p16</td><td><a id="p101033"></a>: cartesian_point :=<br>cartesian_point ('p16', [10.0, 48.9897949, -17.3205081]);</td></tr>
<tr><td><a id="p101034"></a>p17</td><td><a id="p101035"></a>: cartesian_point :=<br>cartesian_point ('p17', [6.8404029, 49.529879, -18.793852]);</td></tr>
<tr><td><a id="p101036"></a>p18</td><td><a id="p101037"></a>: cartesian_point :=<br>cartesian_point ('p18', [3.4729636, 49.8792394, -19.6961551]);</td></tr>
<tr><td><a id="p101038"></a>p19</td><td><a id="p101039"></a>: cartesian_point :=<br>cartesian_point ('p19', [0.0, 50.0, -20.0]);</td></tr>
<tr><td><a id="p101040"></a>p20</td><td><a id="p101041"></a>: cartesian_point :=<br>cartesian_point ('p20', [-3.4729636, 49.8792394, -19.6961551]);</td></tr>
<tr><td><a id="p101042"></a>p21</td><td><a id="p101043"></a>: cartesian_point :=<br>cartesian_point ('p21', [-6.8404029, 49.529879, -18.793852]);</td></tr>
<tr><td><a id="p101044"></a>p22</td><td><a id="p101045"></a>: cartesian_point :=<br>cartesian_point ('p22', [-10.0, 48.9897949, -17.3205081]);</td></tr>
<tr><td><a id="p101046"></a>p23</td><td><a id="p101047"></a>: cartesian_point :=<br>cartesian_point ('p23', [-12.8557522, 48.31904, -15.320889]);</td></tr>
<tr><td><a id="p101048"></a>p24</td><td><a id="p101049"></a>: cartesian_point :=<br>cartesian_point ('p24', [-15.3208889, 47.5948565, -12.8557522]);</td></tr>
<tr><td><a id="p101050"></a>p25</td><td><a id="p101051"></a>: cartesian_point :=<br>cartesian_point ('p25', [-17.3205081, 46.904158, -10.0]);</td></tr>
<tr><td><a id="p101052"></a>p26</td><td><a id="p101053"></a>: cartesian_point :=<br>cartesian_point ('p26', [-18.7938524, 46.3334772, -6.84040287]);</td></tr>
<tr><td><a id="p101054"></a>p27</td><td><a id="p101055"></a>: cartesian_point :=<br>cartesian_point ('p27', [-19.6961551, 45.95717, -3.4729635]);</td></tr>
<tr><td><a id="p101056"></a>p28</td><td><a id="p101057"></a>: cartesian_point :=<br>cartesian_point ('p28', [-20.0, 45.8257569, 0.0]);</td></tr>
<tr><td><a id="p101058"></a>p29</td><td><a id="p101059"></a>: cartesian_point :=<br>cartesian_point ('p29', [-19.6961551, 45.95717, 3.4729635]);</td></tr>
<tr><td><a id="p101060"></a>p30</td><td><a id="p101061"></a>cartesian_point :=<br>cartesian_point ('p30', [-18.7938524, 46.3334772, 6.84040287]);</td></tr>
<tr><td><a id="p101062"></a>p31</td><td><a id="p101063"></a>: cartesian_point :=<br>cartesian_point ('p31', [-17.3205081, 46.904158, 10.0]);</td></tr>
<tr><td><a id="p101064"></a>p32</td><td><a id="p101065"></a>: cartesian_point :=<br>cartesian_point ('p32', [-15.3208889, 47.5948565, 12.8557522]);</td></tr>
<tr><td><a id="p101066"></a>p33</td><td><a id="p101067"></a>: cartesian_point :=<br>cartesian_point ('p33', [-12.8557522, 48.31904, 15.320889]);</td></tr>
<tr><td><a id="p101068"></a>p34</td><td><a id="p101069"></a>: cartesian_point :=<br>cartesian_point ('p34', [-10.0, 48.9897949, 17.3205081]);</td></tr>
<tr><td><a id="p101070"></a>p35</td><td><a id="p101071"></a>: cartesian_point :=<br>cartesian point ('p35', [-6.8404029, 49.529879, 18.793852]);</td></tr>
<tr><td><a id="p101072"></a>p36</td><td><a id="p101073"></a>: cartesian_point :=<br>cartesian_point ('p36', [-3.4729636, 49.8792394, 19.6961551]);</td></tr>
<tr><td><a id="p101074"></a>poly</td><td><a id="p101075"></a>: polyline := polyline ('poly', [p1, p2, p3, p4, p5, p6,<br>p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17,<br>p18, p19, p20, p21, p22, p23, p24, p25, p26, p27,<br>p28, p29, p30, p31, p32, p33, p34, p35, p36, p1]);</td></tr>
<tr><td><a id="p101076"></a>v1</td><td><a id="p101077"></a>: vertex_point := vertex_point ('v1', p1);</td></tr>
<tr><td><a id="p101078"></a>v2</td><td><a id="p101079"></a>: vertex_point := vertex_point ('v2', pte);</td></tr>
<tr><td><a id="p101080"></a>v3</td><td><a id="p101081"></a>: vertex_point:= vertex_point ('v3', pbe);</td></tr>
<tr><td><a id="p101082"></a>v4</td><td><a id="p101083"></a>: vertex_point := vertex_point ('v4', pre);</td></tr>
<tr><td><a id="p101084"></a>edgem0</td><td><a id="p101085"></a>: edge_curve := edge_curve ('edgem0', v1, v1, poly, TRUE);</td></tr>
<tr><td><a id="p101086"></a>edget1</td><td><a id="p101087"></a>: edge_curve := edge_curve ('edget1', v2, v2, circtop, TRUE);</td></tr>
<tr><td><a id="p101088"></a>edgeb2</td><td><a id="p101089"></a>: edge_curve := edge_curve ('edgeb2', v3, v3, circbase, TRUE);</td></tr>
<tr><td><a id="p101090"></a>edger3</td><td><a id="p101091"></a>: edge_curve := edge_curve ('edger3', v4, v4, circright, TRUE);</td></tr>
<tr><td><a id="p101092"></a>oem0t</td><td><a id="p101093"></a>: oriented_edge := oriented_edge ('oem0t', edgem0, TRUE);</td></tr>
<tr><td><a id="p101094"></a>oem0f</td><td><a id="p101095"></a>: oriented_edge := oriented_edge ('oem0f', edgem0, FALSE);</td></tr>
<tr><td><a id="p101096"></a>oet1t</td><td><a id="p101097"></a>: oriented_edge := oriented_edge ('oet1t', edget1, TRUE);</td></tr>
<tr><td><a id="p101098"></a>oet1f</td><td><a id="p101099"></a>: oriented_edge := oriented_edge ('oet1f', edget1, FALSE);</td></tr>
<tr><td><a id="p101100"></a>oeb2t</td><td><a id="p101101"></a>: oriented_edge := oriented_edge ('oeb2t', edgeb2, TRUE);</td></tr>
<tr><td><a id="p101102"></a>oeb2f</td><td><a id="p101103"></a>: oriented_edge := oriented_edge ('oeb2f', edgeb2, FALSE);</td></tr>
<tr><td><a id="p101104"></a>oer3t</td><td><a id="p101105"></a>: oriented_edge := oriented_edge ('oer3t', edger3, TRUE);</td></tr>
<tr><td><a id="p101106"></a>oer3f</td><td><a id="p101107"></a>: oriented_edge := oriented_edge ('oer3f', edger3, FALSE);</td></tr>
<tr><td><a id="p101108"></a>loopb</td><td><a id="p101109"></a>: edge_loop := edge_loop ('loopb', [oeb2f]);</td></tr>
<tr><td><a id="p101110"></a>loopt</td><td><a id="p101111"></a>: edge_loop := edge_loop ('loopt', [oet1t]);</td></tr>
<tr><td><a id="p101112"></a>loopmidt</td><td><a id="p101113"></a>: edge_loop := edge_loop ('loopmidt', [oem0t]);</td></tr>
<tr><td><a id="p101114"></a>looprt</td><td><a id="p101115"></a>: edge_loop := edge_loop ('looprt', [oer3t]);</td></tr>
<tr><td><a id="p101116"></a>loopbt</td><td><a id="p101117"></a>: edge_loop := edge_loop ('loopbt', [oeb2t]);</td></tr>
<tr><td><a id="p101118"></a>looptf</td><td><a id="p101119"></a>: edge_loop := edge_loop ('looptf', [oet1f]);</td></tr>
<tr><td><a id="p101120"></a>loopmidf</td><td><a id="p101121"></a>: edge_loop := edge_loop ('loopmidf', [oem0f]);</td></tr>
<tr><td><a id="p101122"></a>looprf</td><td><a id="p101123"></a>: edge_loop := edge_loop ('looprf', [oer3f]);</td></tr>
<tr><td><a id="p101124"></a>bbase</td><td><a id="p101125"></a>: face_outer_bound := face_outer_bound ('bbase', loopb, TRUE);</td></tr>
<tr><td><a id="p101126"></a>btop</td><td><a id="p101127"></a>: face_outer_bound := face_outer_bound ('btop', loopt, TRUE) ;</td></tr>
<tr><td><a id="p101128"></a>bright</td><td><a id="p101129"></a>: face_outer_bound := face_outer_bound ('bright', looprt, TRUE);</td></tr>
<tr><td><a id="p101130"></a>bmidt</td><td><a id="p101131"></a>: face_bound := face_bound ('bmidt', loopmidt, TRUE) ;</td></tr>
<tr><td><a id="p101132"></a>bmidf</td><td><a id="p101133"></a>: face_bound := face_bound ('bmidf', loopmidf, TRUE) ;</td></tr>
<tr><td><a id="p101134"></a>bcy1top</td><td><a id="p101135"></a>: face_bound := face_bound ('bcy1top', looptf, TRUE) ;</td></tr>
<tr><td><a id="p101136"></a>bcy1b</td><td><a id="p101137"></a>: face_bound := face_bound ('bcy1b', loopbt, TRUE) ;</td></tr>
<tr><td><a id="p101138"></a>bcy1m</td><td><a id="p101139"></a>: face_bound := facebound ('bcy1m', loopmidt, TRUE) ;</td></tr>
<tr><td><a id="p101140"></a>bcy2m</td><td><a id="p101141"></a>: face_bound := face_bound ('bcy2m', loopmidf, TRUE) ;</td></tr>
<tr><td><a id="p101142"></a>bcy2r</td><td><a id="p101143"></a>: face_bound := face_bound ('bcy2r', looprf, TRUE) ;</td></tr>
<tr><td><a id="p101144"></a>cyl_face1</td><td><a id="p101145"></a>: face_surface := face_surface ('cyl_face1',<br>[bcy1top, bcy1m, bcy1b], cyl1, TRUE);</td></tr>
<tr><td><a id="p101146"></a>cyl_face2</td><td><a id="p101147"></a>: face_surface := face_surface ('cyl_face2',<br>[bcy2m, bcy2r], cyl2, TRUE);</td></tr>
<tr><td><a id="p101148"></a>base_face</td><td><a id="p101149"></a>: face_surface :=<br>face_surface ('base_face', [bbase], base, FALSE);</td></tr>
<tr><td><a id="p101150"></a>top_face</td><td><a id="p101151"></a>: face_surface :=<br>face_surface ('top_face', 'top_face', [btop], top, TRUE);</td></tr>
<tr><td><a id="p101152"></a>right_face</td><td><a id="p101153"></a>: face_surface :=<br>face_surface ('right_face', [bright], plright, TRUE);</td></tr>
<tr><td colspan="2"><a id="p101154"></a>END_PARAMETER;<br>SCHEMA_DATA cyl_un_poly_ctxt;<br>ricx = representation_item {name -&gt; 'cxcshell'; SUPOF(@tricx);} ;<br>tricx = topological_representation_item {SUBOF(@ricx); SUPOF(@cfscx);};<br>cfscx = connected_face_set {SUBOF(@tricx);<br>cfs_faces -&gt; (@cyl_face1, @cyl_face2, @base_face, @top_face,<br>@right_face); SUPOF(@csxshell); } ;<br>cxcshell = closed_shell {SUBOF(@cfscx);} ;<br>END_SCHEMA_DATA;<br>END_CONTEXT;<br>(*</td></tr>
</table>






<a id="p101155"></a>Приложение ДА
(справочное)

<div align="center">

<a id="p101156"></a>СВЕДЕНИЯ О СООТВЕТСТВИИ ССЫЛОЧНЫХ МЕЖДУНАРОДНЫХ СТАНДАРТОВ<br>
ССЫЛОЧНЫМ НАЦИОНАЛЬНЫМ СТАНДАРТАМ РОССИЙСКОЙ ФЕДЕРАЦИИ

</div>


<a id="p101157"></a>Таблица ДА.1


<table>
<colgroup><col width="31%"><col width="11%"><col width="58%"></colgroup>
<tr><td><a id="p101158"></a>Обозначение ссылочного международного стандарта</td><td><a id="p101159"></a>Степень соответствия</td><td><a id="p101160"></a>Обозначение и наименование соответствующего национального стандарта</td></tr>
<tr><td><a id="p101161"></a>ИСО/МЭК 8824-1:1995</td><td><a id="p101162"></a>IDT</td><td><a id="p101163"></a><a href="https://bukva.ai/docs/gost-r-isomek-8824-1-2001">ГОСТ Р ИСО/МЭК 8824-1-2001</a> Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 1. Спецификация основной нотации</td></tr>
<tr><td><a id="p101164"></a>ИСО 10303-1:1994</td><td><a id="p101165"></a>IDT</td><td><a id="p101166"></a>ГОСТ Р ИСО 10303-1-99 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 1. Общие представления и основополагающие принципы</td></tr>
<tr><td colspan="3"><a id="p101167"></a><a id="p101168"></a>ИСО 10303-11:1994<br>IDT</td></tr>
<tr><td><a id="p101169"></a>ГОСТ Р ИСО 10303-11-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 11. Методы описания. Справочное руководство по языку EXPRESS</td><td><a id="p101170"></a>ИСО/ТО 10303-12:1997</td><td><a id="p101171"></a>IDT</td></tr>
<tr><td><a id="p101172"></a>ГОСТ Р ИСО/ТО 10303-12-2000 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 12. Методы описания. Справочное руководство по языку EXPRESS-I</td><td><a id="p101173"></a>ИСО 10303-41:1994</td><td><a id="p101174"></a>IDT</td></tr>
<tr><td><a id="p101175"></a>ГОСТ Р ИСО 10303-41-99 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 41. Интегрированные обобщенные ресурсы. Основы описания и поддержки изделий</td><td><a id="p101176"></a>ИСО 10303-42:1994</td><td><a id="p101177"></a>-</td></tr>
<tr><td><a id="p101178"></a><a href="#p101188">&lt;*&gt;</a></td><td><a id="p101179"></a>ИСО 10303-43:1994</td><td><a id="p101180"></a>IDT</td></tr>
<tr><td colspan="3"><a id="p101181"></a><a id="p101182"></a>ГОСТ Р ИСО 10303-43-2002 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 43. Интегрированные обобщенные ресурсы. Структуры представлений<br>ИСО 10303-202:1996</td></tr>
<tr><td><a id="p101183"></a>-</td><td><a id="p101184"></a><a href="#p101188">&lt;*&gt;</a></td><td><a id="p101185"></a>ИСО 10303-514: 1999</td></tr>
<tr><td><a id="p101186"></a>IDT</td><td><a id="p101187"></a>ГОСТ Р ИСО 10303-514-2007 Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 514. Прикладные интерпретированные конструкции. Расширенное граничное представление.</td><td><a id="p101188"></a>&lt;*&gt; Соответствующий национальный стандарт отсутствует. До его утверждения рекомендуется использовать перевод на русский язык данного международного стандарта. Перевод данного международного стандарта находится в Федеральном информационном фонде технических регламентов и стандартов.</td></tr>
<tr><td></td><td><a id="p101189"></a>Примечание - В настоящей таблице использовано следующее условное обозначение степени соответствия стандартов:</td><td><a id="p101190"></a>- IDT - идентичные стандарты.</td></tr>
<tr><td colspan="3"></td></tr>
</table>



<table>
<colgroup><col width="34%"><col width="22%"><col width="22%"><col width="22%"></colgroup>
<tr><td><a id="p101191"></a>УДК 656.072:681.3:006.354</td><td><a id="p101192"></a>ОКС 25.040.40</td><td><a id="p101193"></a>П87</td><td><a id="p101194"></a>ОКСТУ 4002</td></tr>
<tr><td colspan="4"><a id="p101195"></a>Ключевые слова: автоматизация производства, средства автоматизации, интеграция систем автоматизации, промышленные изделия, представление данных, обмен данными, прикладные интерпретированные конструкции, поддержка жизненного цикла изделий, граничное представление</td></tr>
</table>




<a id="p101196"></a>

---
