ГОСТ Р ИСО 10303-508-2009
НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
Системы автоматизации производства и их интеграция
ПРЕДСТАВЛЕНИЕ ДАННЫХ ОБ ИЗДЕЛИИ И ОБМЕН ЭТИМИ ДАННЫМИ
Часть 508
Прикладные интерпретированные конструкции. Многосвязные поверхности
Industrial automation systems and integration. Product data representation and exchange. Part 508. Application interpreted construct. Non-manifold surface
ОКС 25.040.40
Дата введения 2010-07-01
Предисловие
1 ПОДГОТОВЛЕН Государственным научным учреждением "Центральный научно-исследовательский и опытно-конструкторский институт робототехники и технической кибернетики" на основе собственного перевода на русский язык англоязычной версии стандарта, указанного в пункте 4
2 ВНЕСЕН Техническим комитетом по стандартизации ТК 459 "Информационная поддержка жизненного цикла изделий"
3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 14 сентября 2009 г. N 362-ст
4 Настоящий стандарт идентичен международному стандарту ИСО 10303-508:2001* "Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 508. Прикладные интерпретированные конструкции. Многосвязные поверхности" (ISO 10303-508:2001 "Industrial automation systems and integration - Product data representation and exchange - Part 508: Non-manifold surface", IDT).
________________
* Доступ к международным и зарубежным документам, упомянутым в тексте, можно получить, обратившись в Службу поддержки пользователей. - .
При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов соответствующие им национальные стандарты, сведения о которых приведены в дополнительном приложении ДА
5 ВВЕДЕН ВПЕРВЫЕ
6 ПЕРЕИЗДАНИЕ. Март 2020 г.
Правила применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. N 162-ФЗ "О стандартизации в Российской Федерации". Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
Введение
Стандарты комплекса ИСО 10303 распространяются на компьютерное представление информации об изделиях и обмен данными об изделиях. Их целью является обеспечение нейтрального механизма, способного описывать изделия на всем протяжении их жизненного цикла. Этот механизм применим не только для обмена файлами в нейтральном формате, но является также основой для реализации и совместного доступа к базам данных об изделиях и организации архивирования.
Стандарты комплекса ИСО 10303 представляют собой набор отдельно издаваемых стандартов (частей). Стандарты данного комплекса относятся к одной из следующих тематических групп: "Методы описания", "Методы реализации", "Методология и основы аттестационного тестирования", "Интегрированные обобщенные ресурсы", "Интегрированные прикладные ресурсы", "Прикладные протоколы", "Комплекты абстрактных тестов", "Прикладные интерпретированные конструкции" и "Прикладные модули". Настоящий стандарт входит в группу "Прикладные интерпретированные конструкции".
Прикладная интерпретированная конструкция (ПИК) обеспечивает логическую группировку интерпретированных конструкций, поддерживающих конкретную функциональность для использования данных об изделии в разнообразных прикладных контекстах. Интерпретированная конструкция представляет собой обычную интерпретацию интегрированных ресурсов, поддерживающую требования совместного использования информации прикладными протоколами.
Настоящий стандарт определяет прикладную интерпретированную конструкцию для представления геометрических форм посредством моделей многосвязных поверхностей. В нем используются геометрические и топологические средства для определения многосвязных объектов, состоящих из элементарных и рельефных кривых и поверхностей.
1 Область применения
Настоящий стандарт определяет интерпретацию интегрированных ресурсов, обеспечивающую соответствие требованиям к представлению геометрических форм посредством моделей многосвязных поверхностей.
Требования настоящего стандарта распространяются на:
- трехмерные точки;
- точки, определенные в параметрическом пространстве кривых или поверхностей;
- трехмерные кривые;
- кривые, определенные в параметрическом пространстве поверхностей.
Примечание - Такие кривые называются также параметризованными кривыми (pcurve) и кривыми на поверхности (cons);
- элементарные кривые: линию, окружность, эллипс, параболу, гиперболу;
- кривые пересечений;
- полилинии, состоящие по крайней мере из трех точек;
- поверхности;
- элементарные поверхности: плоскость, цилиндр, конус, тор, сферу;
- криволинейные поверхности, полученные вращением или линейной экструзией кривой;
- рельефные кривые и поверхности;
- обрезание кривых и поверхностей с использованием топологических объектов;
- композицию кривых и поверхностей с использованием топологических объектов;
- копирование кривых, поверхностей и моделей поверхностей;
- трехмерные смещения кривых и поверхностей;
- многосвязные объекты.
Требования настоящего стандарта не распространяются на:
- неограниченную геометрию;
- самопересекающуюся геометрию;
- геометрию в двумерном пространстве декартовых координат;
- копирование точек;
- топологию без привязки к соответствующей геометрической области.
2 Нормативные ссылки
В настоящем стандарте использованы нормативные ссылки на следующие стандарты. Для датированных ссылок применяют только указанное издание ссылочного стандарта, для недатированных - последнее издание (включая все изменения).
ISO/IEC 8824-1:1998, Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation [Информационные технологии. Взаимосвязь открытых систем. Абстрактная синтаксическая нотация версии 1 (ASN.1). Часть 1. Спецификация основной нотации]
________________
ISO 10303-1:1994, Industrial automation systems and integration - Product data representation and exchange - Part 1: Overview and fundamental principles (Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 1. Общие представления и основополагающие принципы)
ISO 10303-11:1994, Industrial automation systems and integration - Product data representation and exchange - Part 11: Description methods: The EXPRESS language reference manual (Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 11. Методы описания. Справочное руководство по языку EXPRESS)
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 (Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 41. Интегрированные общие ресурсы. Основы описания и поддержки изделий)
________________
ISO 10303-42:1994, Industrial automation systems and integration - Product data representation and exchange - Part 42: Integrated generic resource: Geometric and topological representation (Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 42. Интегрированные обобщенные ресурсы. Геометрическое и топологическое представление)
________________
ISO 10303-43:1994, Industrial automation systems and integration - Product data representation and exchange - Part 43: Integrated generic resources: Representation structures (Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 43. Интегрированные общие ресурсы. Структуры представлений)
________________
ISO 10303-202:1996, Industrial automation systems and integration - Product data representation and exchange - Part 202: Application protocol: Associative draughting (Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 202. Прикладные протоколы. Ассоциативные чертежи)
________________
Примечание - Нормативная ссылка на ИСО 10303-202 приведена только для определения термина "прикладная интерпретированная конструкция (ПИК)".
ISO 10303-511:2001, Industrial automation systems and integration - Product data representation and exchange - Part 511: Application interpreted construct: Topologically bounded surface (Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 511. Прикладные интерпретированные конструкции. Топологически ограниченная поверхность)
3 Термины и определения
3.1 Термины, определенные в ИСО 10303-1
В настоящем стандарте применены следующие термины:
- комплект абстрактных тестов; КАТ (abstract test suite; ATS);
- приложение (application);
- прикладной контекст (application context);
- прикладной протокол; ПП (application protocol; AP);
- данные (data);
- обмен данными (data exchange);
- обобщенный ресурс (generic resource);
- метод реализации (implementation method);
- информация (information);
- интегрированный ресурс (integrated resource);
- интерпретация (interpretation);
- модель (model);
- изделие (product);
- данные об изделии (product data);
- структура (structure).
3.2 Термины, определенные в ИСО 10303-42
В настоящем стандарте применены следующие термины:
- граница (boundary);
- твердотельная модель граничного представления (boundary representation solid model);
- соединенный (connected);
- координатное пространство (coordinate space);
- кривая (curve);
- размерность (dimensionality);
- область (domain);
- параметрическое пространство (parameter space);
- самопересечение (self-intersect);
- поверхность (surface).
3.3 Термин, определенный в ИСО 10303-202
В настоящем стандарте применен следующий термин:
- прикладная интерпретированная конструкция; ПИК (application interpreted construct; AIC): Логическая группировка интерпретированных конструкций, которая поддерживает определенную функцию для использования данных об изделии в различных прикладных контекстах.
3.4 Термины, определенные в ИСО 10303-511
В настоящем стандарте применены следующие термины:
- расширенная грань (advanced face);
- рельефная поверхность (sculptured surface);
- изогнутая поверхность (swept surface).
3.5 Другие термины и определения
В настоящем стандарте применены также следующие термины с соответствующими определениями:
3.5.1 двусвязная форма (2-manifold): Форма, в любой точке на границе которой можно создать достаточно маленькую сферу так, чтобы внутренняя часть этой сферы делилась данной границей точно на две части. Как правило, границу образуют ребра и грани.
Примечание - Данное определение исключает самопересечение поверхностей, взаимные пересечения поверхностей, не проходящие вдоль ребер, и ребра, образованные тремя или более гранями.
3.5.2 многосвязная форма (non-manifold): Модель поверхности, для определения границ и связности которой используются топологические конструкции, содержащая по крайней мере два объекта connected_face_set, имеющих общую грань (объект face), либо более двух объектов face, имеющих общее ребро (объект edge).
4 Сокращенный листинг на языке EXPRESS
В настоящем разделе определена EXPRESS-схема, в которой используются элементы интегрированных ресурсов и содержатся типы, конкретизации объектов и функции, относящиеся к настоящему стандарту.
Примечание - В интегрированных ресурсах допускается существование подтипов и элементов списков выбора, не импортированных в данную ПИК. Такие конструкции исключают из дерева подтипов или из списка выбора посредством правил неявного интерфейса, определенных в ИСО 10303-11. Ссылки на исключенные конструкции находятся вне области применения данной ПИК. В некоторых случаях исключаются все элементы списка выбора. Поскольку ПИК предназначены для реализации в контексте прикладного протокола, элементы списка выбора будут определяться областью применения прикладного протокола.
Данная прикладная интерпретированная конструкция представляет непротиворечивое множество геометрических и топологических объектов для определения представлений многосвязных поверхностей, состоящих из элементарных или рельефных кривых и поверхностей. Объектом самого верхнего уровня в настоящем стандарте является non_manifold_surface_shape_representation. Данный объект ограничен. Ограничение геометрической формы осуществляется посредством топологических объектов, таких как vertex, edge и face.
Топологические объекты не должны существовать вне связи с соответствующей геометрической областью.
Примечание - В настоящем стандарте используются все объекты и типы из ИСО 10303-511.
EXPRESS-спецификация: | |||
*) | |||
SCHEMA aic_non_manifold_surface; | |||
USE FROM aic_topologically_bounded_surface; | - - ISO 10303-511 | ||
USE FROM geometric_model_schema ( | - - ISO 10303-42 | ||
face_based_surface_model); | |||
USE FROM geometry_schema ( | - - ISO 10303-42 | ||
b_spline_curve, | |||
b_spline_surface, | |||
bounded_p_curve, | |||
bounded_surface_curve, | |||
cartesian_transformation_operator_3d, | |||
curve, | |||
curve_replica, | |||
degenerate_p_curve, | |||
evaluated_degenerate_p_curve, | |||
intersection_curve, | |||
offset_curve_3d, | |||
offset_surface, | |||
point_on_curve, | |||
point_on_surface, | |||
seam_curve, | |||
surface, | |||
surface_replica); | |||
USE FROM product_property_representation_schema ( - - ISO 10303-41 | |||
shape_representation); | |||
USE FROM representation_schema ( | - - ISO 10303-43 | ||
mapped_item, | |||
representation, | |||
representation_item, | |||
representation_map); | |||
USE FROM topology_schema ( | - - ISO 10303-42 | ||
closed_shell, | |||
connected_face_set, | |||
face, | |||
open_shell, | |||
oriented face); | |||
(* |
Примечание - Схемы, ссылки на которые даны выше, можно найти в следующих стандартах комплекса ИСО 10303:
aic_topologically_bounded_surface - ИСО 10303-511;
geometric_model_schema - ИСО 10303-42;
geometry_schema - ИСО 10303-42;
product_property_representation_schema - ИСО 10303-41;
representation_schema - ИСО 10303-43;
topology_schema - ИСО 10303-42.
4.1 Основные понятия и допущения
Для независимой реализации в схемах прикладных протоколов, в которых используется данная ПИК, предназначен объект non_manifold_surface_shape_representation.
4.2 Определение объекта non_manifold_surface_shape_representation схемы aic_non_manifold_surface
Объект non_manifold_surface_representation описывает форму или части формы объекта product посредством многосвязных объектов с ограничениями.
Примечания
1 Многосвязные объекты топологически менее ограничены, чем односвязные. Например, на эти объекты не налагается следующее ограничение: только две грани (объекты face) могут иметь общее ребро (объект edge). Поэтому они не всегда подходят для построения твердотельных моделей. Однако они часто встречаются в приложениях, поддерживающих метод анализа конечных элементов.
2 Объект non_manifold_surface_representation может содержать модель односвязной поверхности, но не наоборот.
3 Объект product в настоящем стандарте не рассматривается.
Объект non_manifold_surface_shape_representation является подтипом объекта shape_representation, определенного в ИСО 10303-41, который состоит из одного или нескольких объектов face_based_surface_model. Каждый объект face_based_surface_model построен из объектов connected_face_set, которые в контексте требований настоящего стандарта могут быть реализованы как объекты connected_face_set или как один из его подтипов - open_shell или closed_shel. Объекты connected_face_set состоят из объектов face, в которых используются объекты edge и vertex. Последние три типа объектов должны ссылаться на геометрические объекты, такие как point, curve и surface. Связь между топологией и геометрией может быть установлена посредством объекта face_surface либо объекта advanced_face в соответствии с ИСО 10303-511. Эти варианты отличаются выбором допустимых подтипов объектов point, curve и surface, а также ограничениями на ссылки на их базовые геометрические объекты.
Примечание - Представление объектов face_surface как объектов advanced_face рекомендуется для моделей многосвязных поверхностей, предназначенных для применения совместно с твердотельными моделями граничного представления. Интеграция такой модели многосвязной поверхности, например, в модель расширенного граничного представления, определенную в ИСО 10303-514, будет проще.
Все геометрические объекты должны быть определены как трехмерные, за исключением объектов двухмерной геометрии, используемых для определения объектов pcurve. Использование одномерных объектов cartesian_point не допускается.
Неограниченные геометрические объекты должны быть обрезаны посредством топологических конструкций.
Элементы item объекта non_manifold_surface_shape_representation также могут быть объектами типа mapped_item, определенными в ИСО 10303-43, или axis2_placement_3d. Они используются для объединения одного или нескольких объектов non_manifold_surface_shape_representation в один новый объект non_manifold_surface_shape_representation.
Правила WHERE в данном объекте ограничивают использование типов данных для объектов, импортированных из ИСО 10303-42 и ИСО 10303-43 в соответствии с приведенными выше утверждениями. Некоторые проверки типа объектов и ограничений определены в следующих двух функциях:
- nmsf_curve_check;
- nmsf_surface_check.
В формальных утверждениях WR5, WR6 и WR10, приведенных ниже, эти функции проверяют объекты curve и surface всех объектов edge и face, входящих в область определения объекта non_manifold_surface_shape_representation, за исключением тех, которые содержатся в дереве ссылок объекта advanced_face; геометрия объекта advanced_face проверяется отдельным набором правил. Функции автоматически оценивают все базовые геометрические объекты, для чего они вызываются рекурсивно.
Пример - Объект pcurve может ссылаться как на объект curve, так и на объект surface. Функция nmsf_curve_check проверяет не только объект pcurve, но также его базовые геометрические объекты. Поэтому данная функция будет вызывать не только себя, но и функцию nmsf_surface_check.
Примечания
1 В настоящий стандарт не включена функция для проверки объектов point и их базовых объектов curve и surface. Это объясняется тем, что на все объекты curve и surface из non_manifold_surface_shape_representation ссылаются объекты edge и face, поэтому их проверка осуществляется двумя уже существующими функциями.
2 Прикладной протокол, использующий настоящий стандарт, должен явным образом разрешить возможность реализации объекта shape_representation как объекта non_manifold_surface_shape_representation.
EXPRESS-спецификация: | ||||
*) | ||||
ENTITY non_manifold_surface_shape_representation | ||||
SUBTYPE OF (shape_representation); WHERE | ||||
WR1: | SIZEOF (QUERY (it <* SELF.items | | |||
NOT (SIZEOF (['AIC_NON_MANIFOLD_SURFACE.FACE_BASED_SURFACE_MODEL', | ||||
'AIC_NON_MANIFOLD_SURFACE.MAPPED_ITEM', | ||||
'AIC_NON_MANIFOLD_SURFACE.AXIS2_PLACEMENT_3D']* TYPEOF (it)) = 1))) | ||||
= 0; | ||||
WR2: | SIZEOF (QUERY (it <* SELF.items | | |||
SIZEOF (['AIC_NON_MANIFOLD_SURFACE.FACE_BASED_SURFACE_MODEL', | ||||
AIC_NON_MANIFOLD_SURFACE.MAPPED_ITEM']* TYPEOF (it)) = 1)) > 0; | ||||
WR3: | SIZEOF (QUERY (mi <* QUERY (it <* SELF.items | | |||
'AIC_NON_MANIFOLD_SURFACE.MAPPED_ITEM' IN TYPEOF (it)) | | ||||
NOT (('AIC_NON_MANIFOLD_SURFACE.'+ | ||||
'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION' | ||||
IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) | ||||
AND | ||||
(SIZEOF(QUERY (mr_it <* | ||||
mi\mapped_item.mapping_source.mapped_representation.items | | ||||
('AIC_NON_MANIFOLD_SURFACE.FACE_BASED_SURFACE_MODEL' | ||||
IN TYPEOF (mr_it)))) > 0 )))) = 0; | ||||
WR4: | SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | | |||
'AIC_NON_MANIFOLD_SURFACE.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | | ||||
NOT (SIZEOF (QUERY (cfs <* | ||||
fbsm\face_based_surface_model.fbsm_faces | | ||||
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | | ||||
NOT (SIZEOF (['AIC_NON_MANIFOLD_SURFACE.FACE_SURFACE', | ||||
'AIC_NON_MANIFOLD_SURFACE.ORIENTED_FACE'] * TYPEOF (fa)) =1))) | ||||
= 0))) = 0))) = 0; | ||||
WR5: | SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | | |||
'AIC_NON_MANIFOLD_SURFACE.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | | ||||
NOT (SIZEOF (QUERY (cfs <* | ||||
fbsm\face_based_surface_model.fbsm_faces | | ||||
NOT (SIZEOF (QUERY (f_sf <* QUERY (fa <*cfs.cfs_faces | | ||||
('AIC_NON_MANIFOLD_SURFACE.FACE_SURFACE' IN TYPEOF (fa))) | | ||||
NOT (('AIC_NON_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (f_sf)) | ||||
OR | ||||
(nmsf_surface_check(f_sf\face_surface.face_geometry))))) = 0))) | ||||
= 0))) = 0; | ||||
WR6: | SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | | |||
'AIC_NON_MANIFOLD_SURFACE.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | | ||||
NOT (SIZEOF (QUERY (cfs <* | ||||
fbsm\face_based_surface_model.fbsm_faces | | ||||
NOT (SIZEOF (QUERY (o_fa <* QUERY (fa <* cfs.cfs_faces | | ||||
('AIC_NON_MANIFOLD_SURFACE.ORIENTED_FACE' IN TYPEOF (fa))) | | ||||
NOT (('AIC_NON_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF | ||||
(o_fa\oriented_face.face_element)) | ||||
OR | ||||
(nmsf_surface_check | ||||
(o_fa\oriented_face.face_element\face_surface.face_geometry))))) | ||||
= 0))) = 0))) = 0; | ||||
WR7: | SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | | |||
'AIC_NON_MANIFOLD_SURFACE.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | | ||||
NOT (SIZEOF (QUERY (cfs <* | ||||
fbsm\face_based_surface_model.fbsm_faces | | ||||
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | | ||||
NOT (('AIC_NON_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF(fa)) | ||||
OR | ||||
(SIZEOF (QUERY (bnds <* fa.bounds | | ||||
NOT (SIZEOF (['AIC_NON_MANIFOLD_SURFACE.EDGE_LOOP', | ||||
'IC_NON_MANIFOLD_SURFACE.VERTEX_LOOP'] | ||||
* TYPEOF (bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0; | ||||
WR8: | SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items| | |||
'AIC_NON_MANIFOLD_SURFACE.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | | ||||
NOT (SIZEOF (QUERY (cfs <* | ||||
fbsm\face_based_surface_model.fbsm_faces| | ||||
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | | ||||
NOT (('AIC_NON_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa)) | ||||
OR | ||||
(SIZEOF (QUERY (elp fbnds <* QUERY (bnds <* fa.bounds | | ||||
'AIC_NON_MANIFOLD_SURFACE.EDGE_LOOP' IN TYPEOF (bnds.bound)) | | ||||
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | | ||||
NOT ('AIC_NON_MANIFOLD_SURFACE.EDGE_CURVE' IN TYPEOF | ||||
(oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0; | ||||
WR9: | SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | | |||
'AIC_NON_MANIFOLD_SURFACE.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | | ||||
NOT (SIZEOF (QUERY (cfs <* | ||||
fbsm\face_based_surface_model.fbsm_faces | | ||||
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | | ||||
NOT (('AIC_NON_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa)) | ||||
OR | ||||
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | | ||||
'AIC_NON_MANIFOLD_SURFACE.EDGE_LOOP' IN TYPEOF (bnds.bound)) | | ||||
NOT (SIZEOF (QUERY (oe_cv <* QUERY (oe <* | ||||
elp_fbnds\path.edge_list | | ||||
'AIC_NON_MANIFOLD_SURFACE.EDGE_CURVE' IN TYPEOF (oe.edge_element)) | | ||||
NOT (SIZEOF (['AIC_NON_MANIFOLD_SURFACE.B_SPLINE_CURVE', | ||||
'AIC_NON_MANIFOLD_SURFACE.CONIC', | ||||
'AIC_NON_MANIFOLD_SURFACE.CURVE_REPLICA', | ||||
'AIC_NON_MANIFOLD_SURFACE.LINE', | ||||
'AIC_NON_MANIFOLD_SURFACE.OFFSET_CURVE_3D', | ||||
'AIC_NON_MANIFOLD_SURFACE.PCURVE', | ||||
'AIC_NON_MANIFOLD_SURFACE.POLYLINE', | ||||
'AIC_NON_MANIFOLD_SURFACE.SURFACE_CURVE']* | ||||
TYPEOF (oe_cv.edge_element\edge_curve.edge_geometry)) | ||||
= 1))) = 0))) = 0)))) = 0))) = 0))) = 0; | ||||
WR10: | SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | | |||
'AIC_NON_MANIFOLD_SURFACE.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | | ||||
NOT (SIZEOF (QUERY (cfs <* | ||||
fbsm\face_based_surface_model.fbsm_faces | | ||||
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | | ||||
NOT (('AIC_NON_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa)) | ||||
OR | ||||
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | | ||||
'AIC_NON_MANIFOLD_SURFACE.EDGE_LOOP' IN TYPEOF (bnds.bound)) | | ||||
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | | ||||
NOT (nmsf_curve_check (oe.edge_element\edge_curve.edge_geometry)))) | ||||
= 0))) = 0)))) = 0))) = 0))) = 0; | ||||
WR11: | SIZEOF (QUERY(fbsm <* QUERY (it <* SELF.items | | |||
'AIC_NON_MANIFOLD_SURFACE.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | | ||||
NOT (SIZEOF (QUERY (cfs <* | ||||
fbsm\face_based_surface_model.fbsm_faces | | ||||
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | | ||||
NOT (('AIC_NON_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa)) | ||||
OR | ||||
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | | ||||
'AIC_NON_MANIFOLD_SURFACE.EDGE_LOOP' IN TYPEOF (bnds.bound)) | | ||||
NOT (SIZEOF (QUERY (oe<*elp_fbnds\path.edge_list| | ||||
NOT (('AIC_NON_MANIFOLD_SURFACE.VERTEX_POINT' IN TYPEOF | ||||
(oe.edge_element.edge_start)) | ||||
AND | ||||
('AIC_NON_MANIFOLD_SURFACE.VERTEX_POINT' IN | ||||
TYPEOF (oe.edge_element.edge_end))))) | ||||
= 0))) = 0)))) = 0))) = 0))) = 0; | ||||
WR12: | SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | | |||
'AIC_NON_MANIFOLD_SURFACE.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | | ||||
NOT (SIZEOF (QUERY (cfs <* | ||||
fbsm\face_based_surface_model.fbsm_faces | | ||||
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | | ||||
NOT (('AIC_NON_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa)) | ||||
OR | ||||
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | | ||||
'AIC_NON MANIFOLD_SURFACE.EDGE_LOOP' IN TYPEOF (bnds.bound)) | | ||||
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | | ||||
NOT ((SIZEOF (['AIC_NON_MANIFOLD_SURFACE.CARTESIAN_POINT', | ||||
'AIC_NON_MANIFOLD_SURFACE.DEGENERATE_PCURVE', | ||||
'AIC_NON_MANIFOLD_SURFACE.POINT_ON_CURVE', | ||||
'AIC_NON_MANIFOLD_SURFACE.POINT_ON_SURFACE']* TYPEOF | ||||
(oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1) | ||||
AND | ||||
(SIZEOF (['AIC_NON_MANIFOLD_SURFACE.CARTESIAN_POINT', | ||||
'AIC_NON_MANIFOLD_SURFACE.DEGENERATE_PCURVE', | ||||
'AIC_NON_MANIFOLD_SURFACE.POINT_ON_CURVE', | ||||
'AIC_NON_MANIFOLD_SURFACE.POINT_ON_SURFACE']* TYPEOF | ||||
(oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1 | ||||
)))) = 0))) = 0)))) = 0))) = 0))) = 0; | ||||
WR13: | SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | | |||
'AIC_NON_MANIFOLD_SURFACE.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | | ||||
NOT (SIZEOF (QUERY (cfs <* | ||||
fbsm\face_based_surface_model.fbsm_faces| | ||||
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | | ||||
NOT (('AIC_NON_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa)) | ||||
OR | ||||
(SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | | ||||
'AIC_NON_MANIFOLD_SURFACE.VERTEX_LOOP' IN TYPEOF (bnds.bound))| | ||||
NOT ('AIC_NON_MANIFOLD_SURFACE.VERTEX_POINT' IN TYPEOF | ||||
(vlp_ fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0))) | ||||
= 0))) = 0; | ||||
WR14: | SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | | |||
'AIC_NON_MANIFOLD_SURFACE.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | | ||||
NOT (SIZEOF (QUERY (cfs <* | ||||
fbsm\face_based_surface_model.fbsm_faces | | ||||
NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | | ||||
NOT (('AIC_NON_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa)) | ||||
OR | ||||
(SIZEOF (QUERY (vlp_ fbnds <* QUERY (bnds <* fa.bounds | | ||||
'AIC_NON_MANIFOLD_SURFACE.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | | ||||
NOT (SIZEOF (['AIC_NON_MANIFOLD_SURFACE.CARTESIAN_POINT', | ||||
'AIC_NON_MANIFOLD_SURFACE.DEGENERATE_PCURVE', | ||||
'AIC_NON MANIFOLD_SURFACE.POINT_ON_CURVE', | ||||
'AIC_NON_MANIFOLD_SURFACE.POINT_ON_SURFACE'] * TYPEOF | ||||
(vlp_ fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) | ||||
= 1))) = 0)))) = 0))) = 0))) = 0; | ||||
END_ENTITY; | ||||
(* |
Формальные утверждения
WR1 - элементы item в non_manifold_surface_shape_representation должны быть объектами face_based_surface_model, mapped_item или axis2_placement_3d.
Примечание - Объект аxis2_placement_3d является допустимым объектом mapped_item.mapping_target. Чтобы добавить другой объект presentation в список элементов item объекта non_manifold_surface_shape_representation (см. WR3 относительно допустимых объектов mapped_item), объект mapped_item.mapping_source.mapping_origin может быть любым объектом, который геометрически определен в geometric_representation_context объекта mapped_representation. Если данный объект является объектом axis2_placement_3d, то оператор, отображающий объект mapped_representation в объект non_manifold_surface_shape_representation, соответствует матрице преобразования, в которой разрешены только поступательные перемещения и вращения. Если объект cartesian_transformation_operator_3d используется в качестве объекта mapping_origin, то допускаются масштабирование и зеркалирование.
WR2 - по крайней мере один из элементов item объекта non_manifold_surface_shape_representation должен быть либо объектом face_based_surface_model, либо объектом mapped_item.
WR3 - если объект non_manifold_surface_shape_representation содержит объект mapped_item, то объект mapped_representation из mapping_source должен быть объектом non_manifold_surface_shape_representation. Такой объект shape_representation должен содержать по крайней мере один объект face_based_surface_model.
WR4 - объект face должен быть реализован как объект face_surface, его подтип advanced_face либо как объект oriented_face.
WR5 - все базовые геометрические объекты, на которые ссылаются объекты surface посредством объекта face_surface, должны присутствовать в дереве ссылок объекта advanced_face либо быть допустимыми объектами curve и surface.
Объект basis_surface из offset_surface должен быть объектом elementary_surface, b_spline_surface, offset_surface, swept_surface или surface_replica.
Объект рarent_surface из surface_replica должен быть объектом elementary_surface, b_spline_surface, offset_surface, swept_surface или surface_replica.
Объект swept_curve из swept_surface должен быть объектом line, conic, pcurve, surface_curve, offset_curve_3d, b_spline_curve, polyline или curve_replica.
Атрибут self_intersect для объектов b_spline_surface и offset_surface должен иметь значение FALSE или UNKNOWN.
Примечание - Объект surface проверяется функцией nmsf_surface_check на соответствие данным ограничениям.
WR6 - все базовые геометрические объекты, на которые имеются ссылки через объект oriented_face.face_element, должны присутствовать в дереве ссылок объекта advanced_face либо являться допустимыми объектами curve и surface.
Объект basis_surface из offset_surface должен быть объектом elementary_surface, b_spline_surface, offset_surface, swept_surface либо surface_replica.
Объект parent_surface из surface_replica должен быть объектом elementary_surface, b_spline_surface, offset_surface, swept_surface либо surface_replica.
Объект swept_curve из swept_surface должен быть объектом line, conic, pcurve, surface_curve, offset_curve_3d, b_spline_curve, polyline либо curve_replica.
Атрибут self_intersect для объектов b_spline_surface и offset_surface должен иметь значение FALSE или UNKNOWN.
Примечание - Объект surface проверяется функцией nmsf_surface_check на соответствие данным ограничениям.
WR7 - объект bound из face_bound, на который ссылается объект face, на который, в свою очередь, имеются ссылки непосредственно от объекта connected_face_set либо через объект oriented_face, должен присутствовать в дереве ссылок объекта advanced_face либо быть объектом edge_loop или vertex_loop.
WR8 - геометрические объекты ограничивающего объекта edge, то есть объекты edge_element из oriented_edge, на который ссылается объект face, на который, в свою очередь, имеются ссылки непосредственно от объекта connected_face_set либо через объект oriented_face, должны присутствовать в дереве ссылок объекта advanced_face либо быть объектом edge_curve.
WR9 - объект curve, используемый для определения геометрии объекта edge, который является объектом edge_geometry из edge_curve объекта edge, на который ссылается объект face, на который, в свою очередь, имеются ссылки непосредственно от объекта connected_face_set либо через объект oriented_face, должен быть объектом b_spline_curve, conic, curve_replica, line, offset_curve_3d, pcurve, polyline, surface_curve или curve в дереве ссылок объекта advanced_face.
WR10 - все базовые геометрические объекты, на которые ссылаются объекты curve, должны присутствовать в дереве ссылок объекта advanced_face либо являться допустимыми объектами curve и surface.
Объект рarent_curve из curve_replica должен быть объектом line, conic, pcurve, surface_curve, offset_curve_3d, b_spline_curve, polyline или curve_replica.
Объект basis_curve из offset_curve_3d должен быть объектом line, conic, pcurve, surface_curve, offset_curve_3d, b_spline_curve или curve_replica.
Объект сurve_3d из surface_curve должен быть объектом line, conic, offset_curve_3d, b_spline_curve, polyline или curve_replica.
Объект basis_surface из surface_curve должен быть объектом b_spline_surface, elementary_surface, offset_surface, surface_replica или swept_surface.
Объекты polyline должны содержать по крайней мере три объекта cartesian_point.
Атрибут self_intersect для объектов b_spline_curve и offset_curve_3d должен иметь значение FALSE или UNKNOWN.
Примечание - Объект curve проверяется функцией nmsf_curve_check на соответствие данным ограничениям.
WR11 - объекты еdge_start и edge_end из edge должны присутствовать в дереве ссылок объекта advanced_face либо быть объектами vertex_point.
WR12 - объект vertex_geometry из vertex, являющийся частью объекта edge_loop, должен присутствовать в дереве ссылок объекта advanced_face либо быть объектом cartesian_point, point_on_curve, point_on_surface или degenerate_pcurve.
WR13 - объект loop_vertex из vertex_loop должен присутствовать в дереве ссылок объекта advanced _face либо быть объектом vertex_point.
WR14 - объект vertex_geometry из vertex, являющийся частью объекта vertex_loop, должен присутствовать в дереве ссылок объекта advanced_face либо быть объектом cartesian_point, point_on_curve, point_on_surface или degenerate_pcurve.
Неформальные утверждения
IP1 - часть объекта b_spline_curve, входящая в топологическую область определения объекта non_manifold_surface_shape_representation, не должна самопересекаться.
IP2 - часть объекта b_spline_surface, входящая в топологическую область определения объекта non_manifold_surface_shape_representation, не должна самопересекаться.
IP3 - часть объекта offset_curve_3d, входящая в топологическую область определения объекта non_manifold_surface_shape_representation, не должна самопересекаться.
IP4 - часть объекта offset_surface, входящая в топологическую область определения объекта non_manifold_surface_shape_representation, не должна самопересекаться.
IP5 - если объект face имеет только одну связанную внешнюю границу, то соответствующий объект loop должен быть представлен как объект face_outer_bound. Если наружная граница не является связанной, то не допускается использование объекта face_outer_bound.
4.3 Определение функций схемы aic_non_manifold_surface
В данном разделе описаны функции, необходимые для формулировки ограничений для схемы aic_non_manifold_surface. Данные функции используются при конкретизации объекта non_manifold_surface_shape_representation.
4.3.1 Функция nmsf_curve_check
Функция nmsf_curve_check проверяет экземпляр объекта curve на допустимость в контексте non_manifold_surface_shape_representation. Также проверяются все геометрические объекты, на которые ссылается данный экземпляр объекта curve, такие как другие объекты curve и surface.
Пример - Одним из ограничений, проверяемых данной функцией, является проверка, установлен ли флаг самопересечения экземпляра объекта b_spline_curve на значение TRUE, FALSE или UNKNOWN; допустимыми являются только значения FALSE и UNKNOWN.
При необходимости проверяемый экземпляр исследуется рекурсивно. Это означает, что если объект curve ссылается на другой объект curve как на базовую или порождающую кривую, то вновь вызывается функция nmsf_curve_check. Если имеется ссылка на объект surface, то вызывается функция nmsf_surface_check. Рекурсивный процесс завершается на таких типах объектов, которые не ссылаются на какие-либо объекты curve или surface.
Следующие типы кривых и их подтипы относятся к области определения объекта non_manifold_surface_shape_representation и являются, таким образом, допустимыми входными аргументами данной функции:
- b_spline_curve;
- conic;
- curve_replica;
- line;
- offset_curve_3d;
- pcurve;
- polyline;
- surface_curve.
Четыре из указанных типов объекта curve ссылаются на базовые или порождающие объекты curve. В приведенном ниже списке указаны допустимые ссылки.
Примечание - Данная функция применяется рекурсивно к типам объектов, помеченных соответствующим образом в приведенных ниже списках, чтобы проверить их ссылки на допустимые реализации.
Объект рarent_curve из curve_replica должен быть одного из следующих типов:
- b_spline_curve;
- conic;
- curve_replica (рекурсивно);
- line;
- offset_curve_3d (рекурсивно);
- pcurve (рекурсивно);
- polyline;
- surface_curve (рекурсивно).
Объект basis_curve из offset_curve_3d должен быть одного из следующих типов:
- b_spline_curve;
- conic;
- curve_replica (рекурсивно);
- line;
- offset_curve_3d (рекурсивно);
- pcurve (рекурсивно);
- surface_curve (рекурсивно).
Один экземпляр в множестве элементов item из definitional_representation, на который ссылается объект p_curve через reference_to_curve, должен быть одного из следующих типов:
- b_spline_curve;
- conic;
- curve_replica (рекурсивно);
- line;
- polyline.
Объект curve_3d из surface_curve должен быть одного из следующих типов:
- b_spline_curve;
- conic;
- curve_replica (рекурсивно);
- line;
- offset_curve_3d (рекурсивно);
- polyline;
- surface_curve (рекурсивно).
Объекты рcurve и surface_curve ссылаются на объекты surface. Функция nmsf_surface_check вызывается для проверки допустимости этих объектов surface. Объект non_manifold_surface_shape_representation требует таких же ограничений на допустимые ссылки на объект surface для объектов pcurve и surface_curve, которые определены в ИСО 10303-42.
Допустимый объект polyline должен содержать по крайней мере три объекта cartesian_point.
Атрибут self_intersect для би-сплайновых и смещенных геометрических объектов должен иметь значение FALSE или UNKNOWN.
Данная функция возвращает значение TRUE, если типы всех ссылочных геометрических объектов принадлежат к области определения объекта non_manifold_surface_shape_representation и если все ограничения выполнены, в противном случае функция возвращает значение FALSE.
Примечание - Данная функция не проверяет правильность ссылок относительно требований, установленных в ИСО 10303-42. Проверяются только дополнительные требования, относящиеся к области определения объекта non_manifold_surface_shape_representation.
EXPRESS-спецификация: | ||||||||||||||||
*) | ||||||||||||||||
FUNCTION nmsf_curve_check (cv : representation_item) : BOOLEAN; | ||||||||||||||||
(* | Данная функция проверяет допустимость кривой в контексте модели многосвязной поверхности. | |||||||||||||||
Объекты representation_item являются допустимым входным аргументом, однако предполагается, что они являются объектами типа curve; в противном случае, данная функция возвращает значение FALSE | ||||||||||||||||
*) | ||||||||||||||||
(* | сложные подтипы объекта curve, которые одновременно являются и объектом bounded_curve и одним из объектов conic, curve_replica, line или offset_curve_3d, являются недопустимыми | |||||||||||||||
*) | ||||||||||||||||
IF SIZEOF (['AIC_NON_MANIFOLD_SURFACE.BOUNDED_CURVE', | ||||||||||||||||
' AIC_NON_MANIFOLD _SURFACE.CONIC', | ||||||||||||||||
' AIC_NON_MANIFOLD_SURFACE.CURVE_REPLICA', | ||||||||||||||||
' AIC_NON_MANIFOLD_SURFACE.LINE', | ||||||||||||||||
' AIC_NON_MANIFOLD_SURFACE.OFFSET_CURVE 3D']* TYPEOF(cv))> 1 | ||||||||||||||||
THEN RETURN (FALSE); | ||||||||||||||||
ELSE | ||||||||||||||||
(* | объекты b_spline_curve не должны самопересекаться | |||||||||||||||
*) | ||||||||||||||||
IF (('AIC_NON_MANIFOLD_SURFACE.B_SPLINE_CURVE' IN TYPEOF (cv)) AND | ||||||||||||||||
(cv\b_spline_curve.self_intersect = FALSE) OR | ||||||||||||||||
(cv\b_spline_curve.self_intersect = UNKNOWN)) | ||||||||||||||||
THEN RETURN (TRUE); | ||||||||||||||||
ELSE | ||||||||||||||||
(* | объекты conic и line являются допустимыми типами объекта curve | |||||||||||||||
*) | ||||||||||||||||
IF SIZEOF (['AIC_NON_MANIFOLD_SURFACE.CONIC', | ||||||||||||||||
'AIC_NON_MANIFOLD_SURFACE.LINE'] * TYPEOF (cv)) = 1 THEN | ||||||||||||||||
RETURN (TRUE); | ||||||||||||||||
ELSE | ||||||||||||||||
(* | объект curve_replica должен ссылаться на допустимый объект curve | |||||||||||||||
*) | ||||||||||||||||
IF' AIC_NON_MANIFOLD_SURFACE.CURVE_REPLICA' IN TYPEOF (cv) THEN | ||||||||||||||||
RETURN (nmsf_curve_check(cv\curve_replica.parent_curve)); | ||||||||||||||||
ELSE | ||||||||||||||||
(* объект offset_curve_3d не должен самопересекаться и должен ссылаться на допустимые | ||||||||||||||||
объекты curve; объект polyline не является допустимым объектом basis_curve | ||||||||||||||||
*) | ||||||||||||||||
IF (('AIC_NON_MANIFOLD_SURFACE.OFFSET_CURVE_3D' IN TYPEOF (cv)) | ||||||||||||||||
AND | ||||||||||||||||
((cv\offset_curve_3d.self_intersect = FALSE) OR | ||||||||||||||||
(cv\offset_curve_3d.self_intersect = UNKNOWN)) | ||||||||||||||||
AND | ||||||||||||||||
(NOT ('AIC_NON_MANIFOLD_SURFACE.POLYLINE' IN TYPEOF | ||||||||||||||||
(cv\offset_curve_3d. basis_curve)))) THEN | ||||||||||||||||
RETURN (nmsf_curve_check(cv\offset_curve_3d.basis_curve)); | ||||||||||||||||
ELSE | ||||||||||||||||
(* объект pcurve должен ссылаться на допустимые объекты curve и basis_surface | ||||||||||||||||
*) | ||||||||||||||||
IF 'AIC_NON_MANIFOLD_SURFACE.PCURVE' IN TYPEOF (cv) THEN | ||||||||||||||||
RETURN ((nmsf_curve_check | ||||||||||||||||
(cv\pcurve.reference_to_curve\representation.items[1])) | ||||||||||||||||
AND | ||||||||||||||||
(nmsf_surface_check(cv\pcurve.basis_surface))); | ||||||||||||||||
ELSE | ||||||||||||||||
(* объект surface_curve ссылается на объект curve_3d и на один или два объекта pcurve, | ||||||||||||||||
или на один или два объекта surface, или на один из них; | ||||||||||||||||
все ссылки должны быть допустимыми | ||||||||||||||||
*) | ||||||||||||||||
IF ' AIC_NON_MANIFOLD_SURFACE.SURFACE_CURVE' IN TYPEOF (cv) THEN | ||||||||||||||||
(* если ссылка на объект curve правильна, то проверяются также остальные | ||||||||||||||||
*) | ||||||||||||||||
IF nmsf_curve_check(cv\surface_curve.curve_3d) THEN | ||||||||||||||||
REPEAT i := 1 TO SIZEOF | ||||||||||||||||
(cv\surface_curve.associated_geometry); | ||||||||||||||||
(* выполняется для одного или двух объектов | ||||||||||||||||
associated_geometry: | ||||||||||||||||
*) | ||||||||||||||||
IF 'AIC_NON_MANIFOLD_SURFACE.SURFACE' IN | ||||||||||||||||
TYPEOF (cv\surface_curve.associated_geometry[i]) THEN | ||||||||||||||||
IF NOT nmsf_surface_check | ||||||||||||||||
(cv\surface_curve.associated_geometry[i])THEN | ||||||||||||||||
RETURN (FALSE); | ||||||||||||||||
END_IF; | ||||||||||||||||
ELSE | ||||||||||||||||
IF 'AIC_NON_MANIFOLD_SURFACE.PCURVE' IN TYPEOF | ||||||||||||||||
(cv\surface_curve.associated_geometry[i]) THEN | ||||||||||||||||
IF NOT nmsf_curve_check | ||||||||||||||||
(cv\surface_curve.associated_geometry[i]) THEN | ||||||||||||||||
RETURN (FALSE); | ||||||||||||||||
END_IF; | ||||||||||||||||
END_IF; | ||||||||||||||||
END_IF; | ||||||||||||||||
END_REPEAT; | ||||||||||||||||
RETURN (TRUE); | ||||||||||||||||
END IF; | ||||||||||||||||
ELSE | ||||||||||||||||
(* объект polyline должен содержать по крайней мере три объекта point | ||||||||||||||||
*) | ||||||||||||||||
IF'AIC_NO_ MANIFOLD_SURFACE.POLYLINE' IN TYPEOF (cv) THEN | ||||||||||||||||
IF (SIZEOF (cv\polyline.points) >= 3) THEN RETURN (TRUE); | ||||||||||||||||
END_IF; | ||||||||||||||||
END_IF; | ||||||||||||||||
END_IF; | ||||||||||||||||
END_IF; | ||||||||||||||||
END_IF; | ||||||||||||||||
END_IF; | ||||||||||||||||
END_IF; | ||||||||||||||||
END_IF; | ||||||||||||||||
END_IF; | ||||||||||||||||
(* значение FALSE возвращается, если аргумент cv не является допустимым объектом curve | ||||||||||||||||
*) | ||||||||||||||||
RETURN (FALSE); | ||||||||||||||||
END_FUNCTION; | ||||||||||||||||
(* |
Определения аргументов
cv (входной параметр) - объект representation_item, который, по предположению, является объектом curve, проверяемый на допустимость в контексте объекта non_manifold_surface_shape_representation.
BOOLEAN (выходной параметр) - имеет значение TRUE, если объект representation_item является допустимым объектом curve; в противном случае имеет значение FALSE.
4.3.2 Функция nmsf_surface_check
Функция nmsf_surface_check проверяет экземпляр объекта surface на допустимость в контексте объекта non-manifold_surface_shape_representation. Также проверяются все геометрические объекты, на которые ссылается данный экземпляр объекта surface, например другие объекты curve и surface.
Пример - Одним из ограничений, проверяемых данной функцией, является проверка, установлен ли флаг самопересечения экземпляра объекта b_spline_surface на значение TRUE, FALSE или UNKNOWN; допустимыми являются только значения FALSE и UNKNOWN.
При необходимости проверяемый экземпляр исследуется рекурсивно. Это означает, что если объект surface ссылается на другой объект surface как на базовую или порождающую поверхность, то вновь вызывается функция nmsf_surface_check. Если имеется ссылка на объект curve, то вызывается функция nmsf_curve_check. Рекурсивный процесс завершается на таких типах объектов, которые не ссылаются на какие-либо объекты curve или surface.
Следующие типы поверхностей и их подтипы относятся к области определения объекта non_manifold_surface_shape_representation и являются, таким образом, допустимыми входными аргументами данной функции:
- b_spline_surface;
- elementary_surface;
- offset_surface;
- surface_replica;
- swept_surface.
Два из этих типов объекта surface ссылаются на базовые или порождающие объекты surface. Объект parent_surface из surface_replica и объект basis_surface из offset_surface должны быть одного из следующих типов:
- b_spline_surface;
- elementary_surface;
- offset_surface (рекурсивно);
- surface_replica (рекурсивно);
- swept_surface.
Примечание - Данная функция применяется рекурсивно к типам объектов, помеченных соответствующим образом в приведенном выше списке, чтобы проверить их ссылки на допустимые реализации.
Объекты swept_surface ссылаются на объекты curve. Функция nmsf_curve_check вызывается для проверки допустимости этих объектов curve. Объект non_manifold_surface_shape_representation требует таких же ограничений на допустимые ссылки на изогнутые кривые, которые определены в ИСО 10303-42. Все объекты curve, относящиеся к области определения объекта non_manifold_surface_shape_representation, допустимы как объекты swept_surface.swept_curve.
Атрибут self_intersect для би-сплайновых и смещенных геометрических объектов должен иметь значение FALSE или UNKNOWN.
Данная функция возвращает значение TRUE, если типы всех ссылочных геометрических объектов принадлежат к области определения объекта non_manifold_surface_shape_representation и если все ограничения выполнены, в противном случае функция возвращает значение FALSE.
Примечание - Данная функция не проверяет правильность ссылок относительно требований, установленных в ИСО 10303-42. Проверяются только дополнительные требования, относящиеся к области определения объекта non_manifold_surface_shape_representation.
EXPRESS-спецификация: | ||||||
*) | ||||||
FUNCTION nmsf_surface_check (surf : surface) : BOOLEAN; | ||||||
(* Данная функция проверяет допустимость объекта surface в контексте модели многосвязной поверхности. | ||||||
*) | ||||||
(* объекты elementary_surface являются допустимыми типами объекта surface | ||||||
*) | ||||||
IF 'AIC_NON_MANIFOLD_SURFACE.ELEMENTARY_SURFACE' IN TYPEOF (surf) THEN | ||||||
RETURN (TRUE); | ||||||
ELSE | ||||||
(* объект swept_surface должен иметь допустимую изогнутую кривую | ||||||
*) | ||||||
IF 'AIC_NON_MANIFOLD_SURFACE.SWEPT_SURFACE' IN TYPEOF (surf) THEN | ||||||
RETURN (nmsf_curve_check(surf\swept_surface.swept_curve)); | ||||||
ELSE | ||||||
(* объект offset_surface не должен самопересекаться и должен ссылаться на допустимый объект surface | ||||||
*) | ||||||
IF (('AIC_NON_MANIFOLD_SURFACE.OFFSET_SURFACE' IN TYPEOF (surf)) AND | ||||||
(surf\offset_surface.self _intersect = FALSE) OR | ||||||
(surf\offset_surface.self_intersect = UNKNOWN)) THEN | ||||||
RETURN (nmsf_surface_check (surf\offset_surface.basis_surface)); | ||||||
ELSE | ||||||
(* объект surface_replica должен иметь допустимый порождающий объект surface | ||||||
*) | ||||||
IF 'AIC_NON_MANIFOLD_SURFACE.SURFACE_REPLICA' IN TYPEOF (surf) THEN | ||||||
RETURN (nmsf_surface_check(surf\surface_replica.parent_surface)); | ||||||
ELSE | ||||||
(* объект b_spline_surface не должен самопересекаться | ||||||
*) | ||||||
IF (('AIC_ NON_MANIFOLD_SURFACE.B_SPLINE_SURFACE'IN TYPEOF(surf)) | ||||||
AND | ||||||
(surf\b_spline_surface.self_intersect = FALSE) OR | ||||||
(surf\b_spline_surface.self_intersect = UNKNOWN)) THEN | ||||||
RETURN (TRUE); | ||||||
END_IF; | ||||||
END_IF; | ||||||
END_IF; | ||||||
END_IF; | ||||||
END_IF; | ||||||
RETURN (FALSE); | ||||||
END_FUNCTION; | ||||||
(* |
Определения аргументов
surf (входной параметр) - объект surface, который проверяется на допустимость в контексте объекта non_manifold_surface_shape_representation.
BOOLEAN (выходной параметр) имеет значение TRUE, если объект surface является допустимым; в противном случае имеет значение FALSE.
*) |
END_SCHEMA; - - aic_non_manifold_surface |
(* |
Приложение A
(обязательное)
Сокращенное наименование объекта
Сокращенное наименование объекта, установленного в настоящем стандарте, приведено в таблице A.1. Требования к использованию сокращенных наименований объектов содержатся в стандартах тематической группы "Методы реализации" комплекса ИСО 10303.
Таблица A.1 - Сокращенное наименование объекта
Наименование объекта | Сокращенное наименование |
NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION | NMSSR |
Приложение B
(обязательное)
Регистрация информационного объекта
B.1 Обозначение документа
Для обеспечения однозначного обозначения информационного объекта в открытой системе настоящему стандарту присвоен следующий идентификатор объекта:
{ iso standard 10303 part (508) version(1) }
Смысл данного обозначения установлен в ИСО/МЭК 8824-1 и описан в ИСО 10303-1.
B.2 Обозначение схемы
Для обеспечения однозначного обозначения в открытой информационной системе схеме aic_non_manifold_surface (см. раздел 4) присвоен следующий идентификатор объекта:
{ iso standard 10303 part (508) version (1) object (1) aic-non-manifold-surface(1) }
Смысл данного обозначения установлен в ИСО/МЭК 8824-1 и описан в ИСО 10303-1.
Приложение C
(справочное)
EXPRESS-G диаграммы
EXPRESS-G диаграммы, представленные на рисунках С.1-С.22, получены из сокращенного листинга, представленного в разделе 4, с использованием спецификаций интерфейса стандарта ИСО 10303-11. В диаграммах использована графическая нотация EXPRESS-G языка EXPRESS. Описание EXPRESS-G установлено в ИСО 10303-11, приложение D.
Примечания
1 Приведенные ниже выбранные типы импортируются в расширенный листинг ПИК в соответствии с правилами неявных интерфейсов по ИСО 10303-11. В настоящем стандарте эти выбранные типы в других объектах не используются:
- curve_on_surface;
- founded_item_select;
- geometric_set_select;
- measure_value;
- reversible_topology;
- reversible_topology_item;
- shell;
- surface_model;
- transformation;
- trimming_select;
- vector_or_direction.
2 Приведенные ниже выбранные типы импортируются в расширенный листинг ПИК в соответствии с правилами неявных интерфейсов по ИСО 10303-11. В настоящем стандарте эти выбранные типы в других объектах не используются и не предназначены для независимой реализации:
- composite_curve;
- composite_curve_on_surface;
- composite_curve_segment;
- oriented_closed_shell;
- oriented_open_shell.
Рисунок C.1 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 1 из 22)
Рисунок C.2 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 2 из 22)
Рисунок C.3 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 3 из 22)
Рисунок C.4 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 4 из 22)
Рисунок C.5 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 5 из 22)
Рисунок C.6 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 6 из 22)
Рисунок C.7 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 7 из 22)
Рисунок C.8 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 8 из 22)
Рисунок C.9 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 9 из 22)
Рисунок C.10 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 10 из 22)
Рисунок C.11 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 11 из 22)
Рисунок C.12 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 12 из 22)
Рисунок C.13 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 13 из 22)
Рисунок C.14 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 14 из 22)
Рисунок C.15 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 15 из 22)
Рисунок C.16 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 16 из 22)
Рисунок C.17 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 17 из 22)
Рисунок C.18 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 18 из 22)
Рисунок C.19 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (19 из 22)
Рисунок C.20 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 20 из 22)
Рисунок C.21 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 21 из 22)
Рисунок C.22 - ПИК non_manifold_surface_shape_representation в формате EXPRESS-G (диаграмма 22 из 22)
Приложение D
(справочное)
Машинно-интерпретируемые листинги
В данном приложении приведены ссылки на сайты, на которых находятся листинги наименований объектов на языке EXPRESS и соответствующих сокращенных наименований, установленных или на которые даются ссылки в настоящем стандарте. На этих же сайтах находятся листинги всех EXPRESS-схем, установленных в настоящем стандарте, без комментариев и другого поясняющего текста. Эти листинги доступны в машинно-интерпретируемой форме и могут быть получены по следующим адресам URL:
сокращенные наименования: //www.mel.nist.gov/div826/subject/apde/snr/
EXPRESS: //www.mel.nist.gov/step/parts/part508/IS/
При невозможности доступа к этим сайтам необходимо обратиться в центральный секретариат ИСО или непосредственно в секретариат ИСО ТК184/ПК4 по адресу электронной почты: sc4sec@cme.nist.gov.
Примечание - Информация, представленная в машинно-интерпретированном виде по указанным выше адресам URL, является справочной. Обязательным является текст настоящего стандарта.
Приложение ДА
(справочное)
Сведения о соответствии ссылочных международных стандартов национальным стандартам
Таблица ДА.1
Обозначение ссылочного международного стандарта | Степень соответствия | Обозначение и наименование соответствующего национального стандарта |
ISO/IEC 8824-1:1998 | IDT | ГОСТ Р ISO/МЭК 8824-1-2001* "Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 1. Спецификация основной нотации" |
________________ * Вероятно, ошибка оригинала. Следует читать: ГОСТ Р ИСО/МЭК 8824-1-2001. - . | ||
ISO 10303-1:1994 | IDT | ГОСТ Р ISO 10303-1-99 "Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 1. Общие представления и основополагающие принципы" |
ISO 10303-11:1994 | IDT | ГОСТ Р ISO 10303-11-2000 "Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 11. Методы описания. Справочное руководство по языку EXPRESS" |
ISO 10303-41:1994 | IDT | ГОСТ Р ISO 10303-41-99 "Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 41. Интегрированные обобщенные ресурсы. Основы описания и поддержки изделий" |
ISO 10303-42:1994 | - | * |
ISO 10303-43:1994 | - | * |
ISO 10303-202:1996 | - | * |
ISO 10303-511:2001 | IDT | ГОСТ Р ISO 10303-511-2006 "Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 511. Прикладные интерпретированные конструкции. Топологически ограниченная поверхность" |
* Соответствующий национальный стандарт отсутствует. До его принятия рекомендуется использовать перевод на русский язык данного международного стандарта. Примечание - В настоящей таблице использовано следующее условное обозначение степени соответствия стандартов: - IDT - идентичные стандарты. |
УДК 656.072:681.3:006.354 | ОКС 25.040.40 |
Ключевые слова: автоматизация производства, средства автоматизации, интеграция систем автоматизации, промышленные изделия, представление данных, обмен данными, прикладные интерпретированные конструкции, многосвязные поверхности |
Электронный текст документа
и сверен по:
, 2020