allgosts.ru25.040 Промышленные автоматизированные системы25 МАШИНОСТРОЕНИЕ

ГОСТ Р ИСО 13584-31-2010 Системы промышленной автоматизации и интеграция. Библиотека деталей. Часть 31. Ресурсы реализации. Интерфейс геометрического программирования

Обозначение:
ГОСТ Р ИСО 13584-31-2010
Наименование:
Системы промышленной автоматизации и интеграция. Библиотека деталей. Часть 31. Ресурсы реализации. Интерфейс геометрического программирования
Статус:
Действует
Дата введения:
09.01.2011
Дата отмены:
-
Заменен на:
-
Код ОКС:
25.040.40

Текст ГОСТ Р ИСО 13584-31-2010 Системы промышленной автоматизации и интеграция. Библиотека деталей. Часть 31. Ресурсы реализации. Интерфейс геометрического программирования


ГОСТ Р ИСО 13584-31-2010


Группа Т58


НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

Системы промышленной автоматизации и интеграция

БИБЛИОТЕКА ДЕТАЛЕЙ

Часть 31

Ресурсы реализации

Интерфейс геометрического программирования

Industrial automation systems and integration. Parts library. Part 31. Implementation resources. Geometric programming interface

ОКС 25.040.40

Дата введения 2011-09-01



Предисловие

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

Сведения о стандарте

1 ПОДГОТОВЛЕН Научно-техническим центром ИНТЕК на основе собственного аутентичного перевода на русский язык стандарта, указанного в пункте 4

2 ВНЕСЕН Техническим комитетом по стандартизации ТК 100 "Стратегический и инновационный менеджмент"

3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 21 декабря 2010 г. N 874-ст

4 Настоящий стандарт идентичен международному стандарту ИСО 13584-31:1999* "Системы промышленной автоматизации и интеграция. Библиотека деталей. Часть 31. Ресурсы реализации. Интерфейс геометрического программирования" (ISO 13584-31:1999 "Industrial automation systems and integration - Parts library - Part 31: Implementation resources: Geometric programming interface").

________________

* Доступ к международным и зарубежным документам, упомянутым в тексте, можно получить, обратившись в Службу поддержки пользователей. - .

При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов соответствующие им национальные стандарты Российской Федерации, сведения о которых приведены в дополнительном приложении ДА

5 ВВЕДЕН ВПЕРВЫЕ

Правила применения настоящего стандарта установлены в ГОСТ Р 1.0-2012 (раздел 8). Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)

Введение

Целью комплекса стандартов ИСО 13584 является создание эффективного механизма передачи данных библиотеки деталей вне зависимости от выбора компьютерного приложения, использующего указанную библиотеку. Установленные стандартом описания облегчают обмен файлами деталей, создают основу для последующего применения данных библиотеки деталей и их совместного использования.

ИСО 13584 включает в себя: основные описания, логический ресурс, используемые данные, описания методологии, протоколы обмена видами, словари ссылок. Описания частей приведены в ГОСТ Р ИСО 13584-1-2006 "Системы промышленной автоматизации и интеграция. Библиотека деталей. Часть 1. Обзор и основные принципы". В настоящем стандарте рассмотрены ресурсы реализации.

В настоящем стандарте представлено описание интерфейса, позволяющего создавать модели продуктов внутри пользовательской системы с помощью прикладных программ, независимых от целевой пользовательской системы. Интерфейс может быть использован вне контекста стандартных данных библиотек деталей. Он позволяет разрабатывать прикладные программы, не зависящие от целевых CAD. В контексте ИСО 10303 настоящий интерфейс может быть применен на верхнем уровне стандартного интерфейса доступа к данным (SDAI) для геометрических построений с учетом имеющихся ограничений. Процесс создания данных модели продукта представляет собой прикладную программу (предлагаемую поставщиком библиотеки деталей), создающую геометрическую модель внутрь пользовательской системы. Данный интерфейс гарантирует ее независимость от целевой пользовательской системы.

ИСО 13584 разработан Техническим комитетом ИСО/ТК 184 "Системы автоматизации производства и их интеграция" и подкомитетом ПК 4 "Технические данные и языки программирования глобального производства".

ИСО 13584 состоит из следующих частей:

- часть 1. Обзор и основные принципы;

- часть 10. Общее описание. Концептуальная модель библиотеки деталей;

- часть 20. Логический ресурс. Логическая модель выражений;

- часть 24. Логический ресурс. Логическая модель библиотеки поставщика;

- часть 26. Логический ресурс. Идентификация поставщика информации;

- часть 31. Ресурсы реализации. Интерфейс геометрического программирования;

- часть 42. Методология описания. Методология структурирования семейства деталей;

- часть 101. Протокол обмена видами. Геометрический протокол обмена видами в параметрической программе;

- часть 102. Протокол обмена видами. Протокол обмена видами в спецификации соответствия ИСО 10303.

1 Область применения

Настоящий стандарт устанавливает интерфейс прикладного программирования, с помощью которого прикладная программа генерирует геометрические модели независимо от целевой пользовательской системы. Данный интерфейс обеспечивает мобильность прикладных программ, описывающих представления параметрических форм семейств деталей в соответствии с комплексом стандартов ИСО 13584.

Настоящий стандарт распространяется на:

- программы, генерирующие геометрические представления внутри моделирующих систем, не зависящих от целевых систем;

- программы, описывающие геометрические представления, созданные посредством геометрических определений с учетом ограничений;

- программы, структурирующие геометрические представления, созданные независимо от целевой системы;

- программы, описывающие атрибуты стиля воспроизведения для символической визуализации созданных представлений;

- программы, поддерживающие стандарты технического черчения для представления форм, включая 2D-механизм для невидимых линий;

Настоящий стандарт не распространяется на:

- точное управление изображением на мониторе приемного устройства;

- точное определение данных, создаваемых приемной системой;

- хранение параметрической модели в приемной системе.

2 Нормативные ссылки

В настоящем стандарте использованы нормативные ссылки на следующие стандарты*, которые необходимо учитывать при использовании настоящего стандарта. В случае ссылок на документы, у которых указана дата утверждения, необходимо пользоваться только указанной редакцией. В случае когда дата утверждения не приведена, следует пользоваться последней редакцией ссылочных документов, включая любые поправки и изменения к ним:

_______________

* Таблицу соответствия национальных стандартов международным см. по ссылке. - .

ИСО 128:1982 Технические чертежи. Общие принципы воспроизведения (ISO 128:1982, Technical drawings - General principles of presentation)

ИСО 1539:1991 Информационные технологии. Языки программирования. FORTRAN (ISO 1539:1991, Information technology - Programming languages - FORTRAN)

ИСО/МЭК 8824-1 Информационные технологии. Абстрактная синтаксическая нотация версии один (ASN. 1). Часть 1. Спецификация базовой нотации (ISO/IEC 8824-1, Information technology - Abstract Syntax Notation One (ASN. 1) - Part 1: Specification of basic notation)

ИСО 10303-11:1994 Системы промышленной автоматизации и их интеграция. Представление данных о продукции и обмен данными. Часть 11. Методы описания: справочное руководство по языку EXPRESS (ISO 10303-11:1994, Industrial automation systems - Product data representation and exchange - Part 11: Description methods: The EXPRESS language reference manual)

ИСО 10303-41:1994 Системы промышленной автоматизации и их интеграция. Представление данных о продукции и обмен данными. Часть 41. Основные понятия описания и поддержки продукта (ISO 10303-41:1994, Industrial automation systems - Product data representation and exchange - Part 41: Fundamentals of product description and support)

ИСО 10303-42:1994 Системы промышленной автоматизации и их интеграция. Представление данных о продукции и обмен данными. Часть 42. Интегрированный ресурс: геометрические и топологические представления (ISO 10303-42:1994, Industrial automation systems - Product data representation and exchange - Part 42: Integrated resources: Geometric and topological representation)

ИСО 10303-43:1994 Системы промышленной автоматизации и их интеграция. Представление данных о продукции и обмен данными. Часть 43. Интегрированный ресурс: структуры представлений (ISO 10303-43:1994, Industrial automation systems - Product data representation and exchange - Part 43: Integrated resources: Representation structures)

ИСО 10303-46:1994 Системы промышленной автоматизации и их интеграция. Представление данных о продукции и обмен данными. Часть 46. Интегрированный групповой ресурс: визуальное представление (ISO 10303-46:1994, Industrial automation systems - Product data representation and exchange - Part 46: Integrated generic resources: Visual presentation)

3 Термины, определения, обозначения и сокращения

3.1 Термины и определения

В настоящем стандарте использованы термины по ИСО 13584-10:

- абстрактная деталь (abstract part);

- система автоматизированного проектирования (computer aided design system);

- язык EXPRESS;

- функциональный вид (functional view);

- система управления библиотекой (library management system, LMS);

- поставщик библиотеки (library supplier);

- деталь (part);

- библиотека деталей (parts library);

- поставщик деталей (parts supplier);

- продукт (product);

- данные продукта (product data);

- программа (program);

- представление детали (representation of a part);

- поставщик (supplier);

- деталь поставщика (supplier part);

- библиотека поставщика (supplier library);

- структура (structure);

- пользователь (user);

- пользователь библиотеки (user library);

- вид (view);

- переменная управления видом (view control variable);

- протокол обмена видами (view exchange protocol).

3.2 Прочие термины и определения

В настоящем стандарте использованы следующие термины с соответствующими определениями.

3.2.1 интерфейс прикладного программирования (Application Programming Interface; API): Множество функций, запускаемых из одной программы с помощью заданного синтаксиса, определенного в одной привязке.

3.2.2 привязка языка программирования (binding): Описание заданного синтаксиса, используемого в особом языке программирования для запуска различных функций, составляющих интерфейс прикладного программирования.

3.2.3 локальная координатная система (Local Coordinate System; LCS): Ортогональная правосторонняя координатная система, используемая для ориентации и расположения в пространстве геометрических сущностей. Локальная координатная система моделируется сущностью axis2_placement.

3.2.4 параметр (parameter): Переменная с описанными именем и типом значений.

3.2.5 параметрическая модель формы [parametric (shape) model]: Выражение параметрической формы посредством модели данных.

3.2.6 параметрическая программа формы [parametric (shape) program]: Выражение параметрической формы посредством программы, ссылающейся на API (интерфейс прикладного программирования).

3.2.7 параметрическая форма (parametric shape): Общее описание семейства родственных форм и множества параметров. Параметрическая форма дает описание особой функции, действующей из области параметров на множество форм.

3.2.8 временная база данных (temporary database): Механизм, позволяющий хранить данные о конструкции или промежуточные данные перед передачей их в соответствующую систему CAD.

3.3 Сокращения

В настоящем стандарте использованы следующие обозначения и сокращения:

2D - двухмерный (two Dimensional);

3D - трехмерный (three Dimensional);

API - интерфейс прикладного программирования (Application Programming Interface);

CAD - автоматизированное проектирование (Computer Aided Design);

EPS - допуск на значение величины (Epsilon), см. 4.6;

HLI - включение невидимых линий (Hidden Line Involved), см. 5.3.5;

LCS - локальная координатная система (Local Coordinate System);

LMS - система управления библиотекой (Library Management System);

MAX - максимальное значение величины (Maximal value), см. 4.6;

OVC - координатная система вида объекта (Object View Coordinate system), см. 5.3.1;

SDAI - стандартный интерфейс доступа к данным (Standard Data Access Interface);

TDB - временная база данных (Temporary Data Base), см. 5.3.4.

4 Основные положения

4.1 Требования к параметрическим описаниям

1) ИСО 13584 устанавливает механизм глобального описания форм различных деталей, принадлежащих одному семейству деталей библиотеки.

Пример 1 - В ИСО 4014 [1] приведены описания тысяч различных видов болтов. Описание формы каждого вида болта в отдельности нецелесообразно.

2) Каждое глобальное описание формы должно быть ассоциировано со множеством численных, строчных или булевых параметров, область значений которых характеризует каждую деталь рассматриваемого семейства. Механизм генерации каждой заданной формы (вне ее глобального описания с помощью особого множества v-значений параметров) должен быть детерминированным. Он определяет частную функцию f, действующую из области значений параметров D на множество форм S:

.

Данное описание называется параметрической формой.

Пример 2 - Глобальное описание двухмерного изображения сверху различных видов болтов, соответствующих требованиям ИСО 4014, зависит от двух действительных параметров L и D. Для каждой пары допустимых значений (l, d) параметров L и D рассматриваемый механизм генерирует детерминированную уникальную форму.

3) Параметрическая форма описывается графическими взаимосвязями пользователя. Иначе говоря, рассматриваемый механизм дает описания геометрии с учетом ограничений. Вычислитель ограничений является частью данного механизма.

4.2 Формат обмена параметрических описаний формы

1. Программа, ссылающаяся на интерфейс прикладного программирования, может быть использована для обмена глобальных описаний формы, удовлетворяющих требованиям раздела 4.1. Интерфейс прикладного программирования описывает геометрические функции с учетом ограничений. Структура программного управления описывает глобальную функцию. Интерфейс прикладного программирования приемной системы представляет собой вычислитель геометрических функций с учетом ограничений. Указанная программа называется параметрической.

2. Допущение: используемая технология автоматизированного проектирования предусматривает генерацию параметрических форм в терминах параметрических программ, основанных на использовании интерфейса прикладного программирования с учетом стандартных ограничений на основе описания рассматриваемого семейства форм в диалоговом режиме с учетом особенностей системы.

Примечание - Это допущение демонстрирует отличие между форматом обмена, описанным в настоящем стандарте (программой на языке FORTRAN, обращающейся к стандартному интерфейсу прикладного программирования), и вычислительной средой, используемой для создания указанного описания (например, диалоговой графической системой, такой как параметрическая система CAD).

4.3 Внутреннее представление данных, созданных в приемной системе CAD

Спецификация интерфейса должна:

- быть достаточно точной для описания формы деталей их поставщиком;

- исключать какие-либо спецификации реализаций для обеспечения мобильности устройства моделирования системы CAD.

В настоящем стандарте эти две цели достигаются путем описания логической модели целевой моделирующей системы. Настоящая логическая модель определена как информационная модель на языке EXPRESS. Каждая функция интерфейса описана путем ссылки на эту логическую модель.

4.4 Библиотека поставщика и ответственность пользователя LMS

1. Если деталь использована в некотором продукте, то представление формы детали и воспроизведение данной формы должны быть выполнены LMS и направлены в геометрическую моделирующую систему.

Пример - Если винт выбирается из LMS пользователем для вставки в чертеж при работе в системе CAD, то чертеж данного винта должен иметь на экране заданный цвет и заданную толщину линий в соответствии с выбранным представлением.

2. Библиотека может содержать геометрические описания разных поставщиков. Такая библиотека используется в контексте различных приложений. Указанный интерфейс позволяет поставщику библиотеки давать описания формы деталей, а пользователю библиотеки гарантирует сохранение уровня их воспроизведения. В настоящем стандарте для выполнения поставленной цели разрешается логическое управление поставщиком детали при воспроизведении ее формы (например, выбор поименованного стиля кривой). При этом:

- посредством некоторого нестандартного процесса инициализации интерфейса пользователь LMS может создавать полное описание всего аспекта воспроизведения (например, толщины линий, их типа и цвета), соответствующего каждому логически определенному стилю;

- форма, генерируемая LMS, представляется на экране в соответствии с текущей визуализацией моделирующей системы.

4.5 Совместимость

1. Элементы представления, созданные внутри модели данных продукта с помощью интерфейса, описанного в настоящем стандарте, подлежат обмену с помощью файла обмена, удовлетворяющего требованиям ИСО 10303. Все атрибуты сущности, которые не могут быть описаны поставщиком библиотеки, должны быть ограничены данной сущностью с помощью интерфейса. При этом учитывается процесс инициализации интерфейса, выполняемый пользователем библиотеки.

2. Если геометрическая моделирующая система поддерживает интерфейс SDAI [2], удовлетворяющий требованиям ИСО 10303-22, то интерфейс, описанный в настоящем стандарте, должен быть использован как аппликативный слой на верхнем уровне интерфейса SDAI.

Аппликативный слой содержит:

- решающую программу (далее - решатель) для вычисления геометрических сущностей с учетом ограничений;

- таблицу значений по умолчанию для атрибутов, установленных пользователем LMS, которая должна быть ограничена для каждой сущности, созданной с помощью SDAI.

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

4.6 Точность геометрических построений

Различные моделирующие системы обеспечивают различную числовую точность построений. Необходимо:

1) гарантировать, чтобы поставщик программ действовал надлежащим образом при каждой "корректной" реализации интерфейса;

2) гарантировать, что реализация интерфейса надлежащим образом обрабатывает "корректную" программу поставщика.

В настоящем стандарте вышеуказанные цели достигаются путем определения ссылочных числовых границ различных мер, включенных в геометрические определения сущностей.

Определяют три ссылочные числовые границы:

1) EPS - это минимальное значение меры, включенной в меру геометрической сущностью.

Пример 1 - Прикладная программа не может задавать отрезок длиной меньше EPS.

2) MAX - максимальное значение меры, включенной в меру геометрической сущностью.

Пример 2 - Прикладная программа не может задавать дугу окружности радиусом более MAX.

3) ZERO_value (нулевое значение) - максимальное значение (математически вычисленного) расстояния между двумя точками, которые считаются совпадающими.

Пример 3 - Прикладная программа не может задавать контур (то есть замкнутую комбинированную кривую composite_curve), для которого расстояние между конечной точкой предшествующего сегмента данной комбинированной кривой composite_curve_segment и начальной точкой последующего сегмента данной кривой превышает нулевое значение ZERO_value.

Все указанные ссылочные числовые границы созданного геометрического представления масштабируют:

1) единицы длины вида view_length_unit масштабируют с помощью масштабного фактора view_length_scale_factor меры длины length_measure;

2) единицы угла вида view_angle_unit масштабируют с помощью меры плоского угла plane_angle_measure.

В настоящем стандарте для ссылочных числовых границ установлены следующие значения:

1) EPS = 10;

2) MAX = 10;

3) ZERO_value = 10.

Программа, соответствующая требованиям настоящего стандарта, также должна удовлетворять ограничениям, определенным (для каждой геометрической сущности) путем ссылки на указанные числовые границы. Интерфейс, соответствующий требованиям настоящего стандарта, должен обрабатывать программы, также соответствующие требованиям настоящего стандарта.

5 Интерфейс

5.1 Спецификация и соответствие

5.1.1 Допустимые уровни реализации

В настоящем стандарте приведено описание трех уровней реализации в соответствии с установленной геометрической мощностью интерфейса, имеющей значения: 2D-, 3D-кривая, тело. Значения мощности нумеруются: 1,2 и 3. Любой интерфейс i-го уровня мощности должен содержать все функции j-го уровня мощности для j<i. Таким образом, он может создавать виды j-го уровня геометрической мощности geometrical_power_level, если указанный уровень мощности установлен посредством инициализации вида. Для любой геометрической мощности интерфейса вид может быть также создан для уровня геометрической мощности geometrical_power_level, равного 0.

Определены три уровня реализации интерфейса (от 1 до 3). Все функции классифицированы в соответствии с данными уровнями. Рассматриваемая реализация должна обеспечивать (для выбранного приложения) все функции уровня, которому она принадлежит. Доступ к уровню интерфейса обеспечивается с помощью функции запроса.

5.1.2 Моделирование отсутствующих сущностей

Все рассматриваемые сущности для каждого уровня интерфейса в соответствии с настоящим стандартом должны быть концептуально реализованы во временных базах данных. Если некоторые сущности не определены в целевых системах моделирования продуктов, то они моделируются с помощью прочих доступных сущностей. В настоящем стандарте данный процесс моделирования описан для каждой сущности.

5.2 Таблицы интерфейса

Текущие характеристики интерфейса хранятся в таблицах интерфейса. Значения указанных элементов таблиц запрашиваются прикладными программами с помощью функций запроса, описанных в настоящем стандарте, содержащем две таблицы:

1) таблица описаний интерфейса представляет все постоянные характеристики интерфейса (например, уровень интерфейса interface_level, характеристики невидимых линий hidden_line_capability и т.д.). Указанные значения запрашиваются прикладной программой, но не могут быть ею изменены. Эти значения зависят от реализации;

2) таблица статуса интерфейса представляет значения модальных переменных (например, атрибуты визуализации). Начальное значение указанной переменной определено в настоящем стандарте либо как зависимое от вида (устанавливается в процессе инициализации интерфейса), либо как принимающее особые значения. Значения переменных таблицы статуса интерфейса запрашиваются прикладной программой. Они могут быть изменены прикладной программой за исключением переменных, зависящих от вида (например, единица длины вида view_length_unit, атрибут невидимых линий hidden_line и т.д.).

Примечание - В первой версии настоящего стандарта уровень 3 соответствует созданию тел с неявной топологией (сущности твердого тела, очерчивание, булевы операции). Он известен как уровень "конструктивной блочной геометрии". В более поздних версиях создание явных топологических элементов (вершин, кромок, граней и т.д.) может быть представлено как уровень 4. Он известен как уровень "B-Rep" (уровень представления границ).

Описание содержимого таблиц интерфейса приведено в разделе 8.

5.3 Создание данных модели продукта

В настоящем подразделе приведена концепция создания геометрической модели внутри геометрической моделирующей системы с помощью прикладного программирования. В контексте библиотек деталей, соответствующих требованиям ИСО 13584, данный подраздел предназначен для разработчиков программного обеспечения библиотек деталей, создающих данные модели детали внутри некоторой системы CAD.

Если функциональный вид выбирается в LMS, то рассматривают программу поставщика детали. Данный функциональный вид связан с экземпляром детали (объекта), описание которого должно быть предоставлено поставщиком детали.

Программа поставщика детали строит заданный функциональный вид с помощью функций интерфейса.

5.3.1 Ссылочные координатные системы видов (OVC)

Функциональный вид, созданный с помощью функций интерфейса, состоит из элементов геометрического представления geometric_representation_items. Каждый вид создается с помощью прикладного программирования внутри собственного контекста геометрического представления geometric_representation_context. Данный контекст называется координатной системой вида объекта object_view_modelling_coordinate_system (OVC). Прикладная программа не зависит от относительного расположения OVC в координатной системе CAD. Система управления библиотекой (LMS) отвечает за инициализацию вида. Считается, что после выполнения функции инициализации вида все элементы геометрического представления geometric_representation_items, посылаемые в CAD в их собственной OVC, точно позиционируются и/или преобразуются.

Функция инициализации вида View_lnitialisation должна, следовательно, активизировать некоторый неописанный процесс позиционирования. На практике (в соответствии с особой философией CAD) процесс позиционирования может, например:

1) определять новые локальные координатные системы, если CAD использует механизм создания экземпляров;

2) подключать OVC к курсору для последующего позиционирования;

3) организовывать некоторые взаимосвязи с пользователем CAD, необходимые для запроса текущего положения и инициализации матрицы преобразования интерфейса;

4) вычислять правильное положение, если оно определяется положением экземпляра объекта, и инициализировать матрицу преобразования интерфейса;

5) выполнять пустую операцию, если вид создан в начале глобальной координатной системы и позиционируется впоследствии пользователем CAD.

Если вид инициализирован как двухмерный, то 2D-пространство является плоскостью координат х, у. В данном случае использование координаты z не имеет смысла для геометрических сущностей. Для них координата z равна 0.

Если данные библиотеки деталей удовлетворяют требованиям комплекса стандартов ИСО 13584 и несколько программ поставщика детали ссылаются на различные функциональные виды одной детали, то OVC, используемые в данных программах, зависят друг от друга. Абсолютная координатная система ассоциируется с деталью с помощью поставщика. Все программы поставщика детали, создающие функциональные 3D-виды настоящей детали, должны использовать данную абсолютную координатную систему как их собственную OVC. Все программы поставщика детали, создающие функциональные 2D-виды настоящей детали, должны:

1) давать описание функционального 2D-вида, созданного каждой программой поставщика детали, в соответствии со стандартом ИСО 128 (см. рисунок 1);

2) выбирать в качестве OVC (для каждой программы поставщика детали) координатную систему, полученную из абсолютной координатной системы детали и из спецификации созданного функционального 2D-вида (см. рисунок 1).


Bottom - вид снизу; right side - вид справа; left side - вид слева; front - вид спереди; back - вид сзади; top - вид сверху

Рисунок 1 - Абсолютная координатная система детали (определяется поставщиком)

5.3.2 Геометрические единицы OVC

Используемые в OVC единицы длины и единицы плоского угла определяются тремя записями таблицы статуса интерфейса: единицы длины вида view_length_unit, масштабный фактор длины вида view_length_scale_factor и единицы угла вида view_angle_unit. Запись view_length_unit определяет базовую единицу длины вида. Это может быть метр (metre) или дюйм (inch). Запись view_length_scale_factor определяет мультипликативный масштабный фактор, на который умножается базовая единица длины. Запись view_angle_unit определяет единицу плоского угла вида. Это может быть радиан (rad), градус (deg) или град (grad). В настоящем стандарте термин "единица OVC" означает либо единицу длины вида view_length_unit, масштабированную с помощью множителя view_length_scale_factor (единицу длины координатной системы OVC_length_unit), либо единицу угла вида view_angle_unit (единицу угла координатной системы OVC_angle_unif).

Значения единиц измерения OVC представлены в разделе 8.2 настоящего стандарта. Данные значения по умолчанию могут быть переопределены поставщиком детали (вне используемой программы). Новые значения единиц составляют часть функциональной модели программы поставщика детали. Значения по умолчанию единиц измерения устанавливаются в процессе инициализации вида. Они могут запрашиваться, но не могут быть изменены прикладной программой. Все геометрические размеры, которые могут задаваться (вычисляться) прикладными программами, описаны как текущие единицы измерения OVC.

Интерфейс гарантирует правильное масштабирование при переходе из единиц OVC в единицы моделирующего пространства CAD. Указанное масштабирование называется "преобразование OVC - CAD". Оно применяется для всех элементов геометрических представлений, созданных с помощью функций интерфейса.

5.3.3 Содержимое вида

Функции интерфейса создают данные внутри баз данных систем, моделирующих продукт. Базы данных систем, моделирующих продукт, отличаются друг от друга. Точного описания каждой функции не существует на физическом уровне. Для точного описания работы какой-либо функции интерфейса настоящий стандарт определяет целевую базу данных CAD посредством логической модели в виде информационной модели на языке EXPRESS (см. раздел 6). Принято, что данная логическая модель может быть использована некоторым физическим способом в целевой CAD.

5.3.4 Временная база данных

Временные базы данных (TDB) используются для промежуточных геометрических построений. Функции интерфейса позволяют создавать геометрические сущности либо во временной базе данных, либо в данных CAD. Сущности с временными данными могут быть ссылочными, их можно редактировать, использовать при геометрических построениях или направлять в CAD. Сущности внутри CAD уже не являются ссылочными. Если сущность временной базы данных направляется в CAD, то к временным данным она уже не относится.

Для геометрических сущностей с одинаковыми типами визуализации атрибуты могут быть созданы как сущности временной базы данных, так и в CAD.

Атрибуты визуализации прикрепляются к данным сущностям, если они созданы на модальной основе. Это может иметь место как в TDB, так и в CAD. В TDB атрибуты сущности могут быть изменены. Если сущность посылается из TDB в CAD, то атрибуты визуализации данной сущности сохраняют свои текущие значения в TDB.

Сущности с временными данными могут быть геометрически сдвинуты или дублированы. Эти геометрические манипуляции не изменяют атрибуты визуализации: модифицированные (дублированные) сущности сохраняют атрибуты визуализации исходных сущностей.

В TDB и CAD имеются различные структурные соотношения. Сущности, посылаемые в CAD, структурированы с помощью комплектов. Комплекты - это объекты, постоянно присутствующие в базе данных CAD. Используется иерархическая структура комплектов. Для структур элементов TDB используются временные групповые структуры. Групповые структуры могут быть использованы для создания геометрических элементов. Данные групповые структуры также являются иерархическими. Максимальное количество сущностей, допускаемое в TDB при реализации интерфейса, должно быть не менее количества, установленного в разделе 9 настоящего стандарта.

Настоящий стандарт не дает описания какой-либо формы реализации указанной временной базы данных. Функции поставщика деталей должны быть эффективными.

5.3.5 Процесс удаления невидимых линий

В настоящем разделе дано описание концепции невидимых линий 2D-видов, созданных интерфейсом.

1. В дополнение к имеющимся сущностям кривых 2D-интерфейсы могут создавать "непрозрачные" заполненные области.

2. Запись таблицы статуса интерфейса, называемая включенной невидимой линией hidden_line_involved (HLI), указывает, включена или нет сущность кривой или сущность заполненной области (созданной интерфейсом) в процесс удаления невидимых линий. Если значение HLI "true", то каждая сущность кривой или сущность заполненной области (созданная функцией интерфейса) должна быть включена в процесс удаления невидимых линий и может подключаться к предварительно определенному стилю затенения изображения api_predefined_occlusion_style интерфейса прикладного программирования. Api_predefined_occlusion_style должен содержать атрибут view_level (представляющий действительное значение высоты сущности в некотором виртуальном 3D-пространстве), а также атрибут имени name, дающий описание того, как следует изменить сущность, если она становится невидимой. Непрозрачная заполненная область скрывает полностью или часть сущности кривой находящегося внутри области и имеющего меньшее значение уровня вида. Заполненная область не должна скрывать сущности кривых с тем же значением уровня вида.

3. Если значение HLI "false", то созданные сущности кривой и заполненной области можно направлять в CAD, если прикладная программа запрашивает выполнение указанной передачи с помощью функции Fix_Ent (функция фиксирования сущности в CAD) или запрашивает их непосредственное создание в CAD в процессе построения вида. Если значение HLI "true", то сущность кривой и сущность заполненной области остаются в интерфейсе до окончания процесса удаления невидимых линий.

4. Если прикладная программа запрашивает передачу в CAD сущности, включенной в процесс удаления невидимых линий, то либо с помощью функции Fix_Ent, либо путем запроса на непосредственное его создание в CAD данная сущность подключается к предварительно определенному виртуальному стилю интерфейса прикладного программирования api_predefined_vitually_sent_style, то есть отправляется виртуально. Если сущность отправлятся виртуально, то указанный виртуальный стиль api_predefined_vitually_sent_style должен содержать атрибут задания имени интерфейса прикладного программирования api_set_name, определяющий (в формате строки) уникальное имя текущего открытого множества.

5. Процесс удаления выполняется после завершения построения вида. В данный процесс включаются только сущности, отправленные виртуально. Сущности временной базы данных не включаются.

6. Если отправленная виртуально сущность кривой частично скрыта заполненной областью, то ее видимая часть имеет текущий стиль кривой. Части виртуально отправленной сущности невидимой кривой обрабатываются в соответствии с атрибутом name и требованиями предварительно определенного стиля затенения визуализации интерфейса прикладного программирования api_predefined_occlusion_style.

Значения атрибута:

Сущности кривой и заполненной области:

no_change

отправляются без каких-либо изменений;

dashed (штриховая линия)

отправляются как невидимые линии, если данное свойство существует в используемой системе CAD. В противном случае сущности кривой, границы заполненной области и штриховка отправляются как штриховые линии;

invisible (невидимая линия)

отправляются как невидимые линии, если настоящее свойство существует в используемой системе CAD. В противном случае отправка не производится.

Если заполненная область закрыта другой поверхностью, то удаление невидимой части в соответствии с настоящим стандартом производится только на линиях, принадлежащих заполненной области (линии границ, штриховка).

Включение точек в настоящем стандарте не рассматривается.

Удаление невидимых линий не является обязательным. Ввод возможности удаления невидимых линий hidden_line_capability в таблицу описаний интерфейса указывает на доступность данного режима. Ввод режима использования невидимых линий hidden_line в таблицу статуса интерфейса указывает на возможность активизации процесса удаления для следующего вида. Значение атрибута hidden_line по умолчанию присваивается атрибуту hidden_line_capability (если указанная возможность доступна, то она всегда активизируется, если нет других указаний в прикладной программе).

Процесс удаления невидимых линий может быть активизирован только для 2D-видов.

Процесс удаления невидимых линий не должен изменять структуру, заданную прикладной программой в процессе (виртуальной) отправки. Заданная структура регистрируется атрибутом задания имени интерфейса прикладного программирования api_set_name в соответствии с предварительно определенным стилем виртуальной отправки api_predefined_virtualy_sent_style интерфейса прикладного программирования.

5.3.6 Процесс представления

Функции интерфейса создают данные внутри баз данных систем, моделирующих продукт. Принято, что процесс визуализации указанных данных управляется системой моделирования продукта и ее пользователем. Вместе с тем прикладные программы должны в некоторой степени управлять геометрическими аспектами сущностей (например, для удовлетворения требований соответствующих стандартов технического черчения или для установления некоторого семантического отличия между сущностями), так как пользователю обычно требуется некоторое подобие видов, полученных от различных поставщиков библиотек.

Указанные цели достигаются нижеследующим способом (см. подразделы 6.2.4 и 6.2.5):

1) все стили воспроизведения определяются либо как предварительно определенные стили, либо как внешне определенные стили;

2) предварительно определенные стили соответствуют настоящему стандарту. Внешне определенные стили соответствуют как настоящему стандарту, так и любому другому стандарту серии, распространяющейся на обмен данными о деталях;

3) предварительно определенные стили или внешне определенные стили описывают визуализацию соответствующего стиля только частично. В соответствии с определенными требованиями они могут устанавливать режим задания цвета, например, как зависящий от реализации;

4) интерфейс - это инструмент пользователя CAD для задания точных значений всех атрибутов изображений, зависящих от реализации для каждого предварительно определенного или внешне определенного стиля;

5) если протокол обмена видами (на который производится ссылка в прикладной программе) не поддерживается данной реализацией интерфейса, то первый стиль, определенный для текущего элемента представления в настоящем стандарте, должен быть использован вместо неизвестного стиля. При этом сообщение об ошибке не возникает.

5.4 Структура сущностей

5.4.1 Структура группы в TDB

В используемых TDB сущности объединяются в группы, определяемые сущностью entity_structured. Если функция предназначена для выполнения операций в группе, то она выполняет эти операции в режиме повторения (рекурсивно) для каждой соответствующей сущности группы. Если данная функция является функцией дублирования, то ее результатом также является группа. Указанная группа принадлежит текущей открытой группе, она имеет такую же групповую структуру, как и исходная функция. Дубликат открытой группы является замкнутой группой. Если данная функция является функцией модификации, то она сохраняет групповую структуру существующих сущностей, находящихся внутри модифицированной группы.

Сущность не модифицируется, и сообщение об ошибке не возникает, если функция работает в группе, содержащей геометрические сущности, недопустимые для использования в качестве входных параметров функции. Например, если функция изменения стиля представления кривой chg_curve_style запущена в группе, содержащей сущности точки, твердого тела и кривых, то сущность curve_style должна быть модифицирована, однако сущность точки и сущность твердого тела должны оставаться неизменными в той же самой групповой структуре.

TDB сама является группой. Она называется корневой группой root_group. Данная группа открыта и не должна закрываться, если интерфейс инициализирован. Таким образом, всегда должна существовать открытая группа.

За исключением корневой группы каждая сущность (геометрическая или структурированная) должна принадлежать только одной группе (которая может быть корневой группой). Группы структурируются в соответствии с иерархической структурой дерева. Корнем дерева является корневая группа.

Группы могут быть:

- созданными: они принадлежат текущей открытой группе или становятся текущей открытой группой;

- открытыми повторно: все сущности, созданные в TDB после повторного открытия группы, принадлежат данной группе до ее закрытия;

- закрытыми.

Сущности, направляемые (созданные) в CAD, удаляются из групповой структуры.

Для формирования иерархической групповой структуры открытые группы управляются с помощью стека. Верхним уровнем стека является текущая открытая группа.

Если интерфейс инициализирован, то корневая группа помещается в стек. Никакая функция не может закрыть данную группу, поэтому она всегда должна оставаться в стеке.

Если группа является созданной, то: 1) она принадлежит текущей открытой группе; 2) она помещается на вершину стека. Таким образом, она становится текущей открытой группой.

Только группы, находящиеся на вершине стека, могут быть закрытыми. В настоящем случае группа удаляется из стека, и на вершине стека размещается следующая открытая группа.

Если группа открыта повторно, то она помещается на вершине стека. Это не изменяет свойства группы, которой принадлежит группа, открытая повторно.

Непосредственная модификация групповых структур обеспечивается тремя функциями. Ни одна из этих функций не может изменить содержимого стека.

Функция Remove_Ent_Grp удаляет сущности (геометрические или структурированные) из группы. По окончании выполнения функции сущность должна принадлежать корневой группе.

Функция Gather_Ent_Grp формирует новую группу, используя имеющийся перечень сущностей (геометрических или структурированных). Ни одна из этих сущностей не должна содержать текущей открытой группы. Все указанные сущности удаляются из группы, которой они принадлежат, и помещаются в новую группу. Данная группа должна принадлежать текущей открытой группе.

Функция Add_Ent_Grp добавляет сущности (геометрические или структурированные) в указанную группу. Сущности не должны содержать группу, к которой они добавляются. Данные сущности сначала удаляются из их группы, а затем добавляются в указанную группу.

Группы являются локальными по отношению к TDB. Группы облегчают геометрические построения. Максимальное количество групп, допускаемых реализацией интерфейса, должно быть не менее, чем количество, установленное в разделе 9 настоящего стандарта.

5.4.2 Структура сущностей, направляемых в CAD

Принято, что данные, хранящиеся в базе данных CAD, разделены на подмножества. Концептуально все данные принадлежат видам. Внутри некоторого вида геометрические данные структурированы в множества и подмножества в соответствии с иерархической структурой дерева. Структура, придаваемая данным, отправляемым используемой прикладной программой, описывается CAD следующим образом:

1) перед отправкой любых данных LMS инициализирует вид. Все данные, направляемые в CAD в промежуток времени между указанной инициализацией и окончанием работы прикладного программирования, должны принадлежать виду. Рассматривамый вид не должен содержать других видов;

2) функция Open_Set открывает множество. Имя множества размещается на вершине заданного стека. Все геометрические сущности, направляемые в CAD, должны принадлежать настоящему множеству. Множество является подмножеством имеющегося содержимого вершины заданного стека или, если данный стек пуст, подмножеством вида.

Функция закрытия множества Close_Set применяется только для множества, которое уже находится на вершине данного стека. При вызове данной функции множество закрывается и его имя удаляется из стека. Если стек заполнен, то вершина стека содержит текущее открытое множество. Если стек пуст, то открытого множества нет. Закрытое множество не подлежит повторному открытию. Имя каждого множества должно быть уникальным внутри вида. Максимальный размер стека множества, допускаемый для TDB реализацией интерфейса, должен быть не менее, чем размер, установленный в разделе 9 настоящего стандарта.

Отображение между настоящей концептуальной структурой и структурой дерева ограниченной глубины, доступное в целевой системе CAD, производится следующим образом. Вершина структуры дерева CAD, если таковая существует, отображает структуру вида. Нижеследующие уровни, если они существуют, отображают первые уровни множеств и подмножеств структуры дерева. Если некоторое множество структуры дерева CAD является конечным (не делится на подмножества), то все сущности, принадлежащие подмножествам соответствующего концептуального множества, помещаются в данное конечное множество.

5.5 Имя геометрической или структурированной сущности

Для ссылки на любую сущность, созданную в TDB, все сущности, созданные функцией интерфейса, именуются значениями, принадлежащими некоторому абстрактному типу данных entity_name_type. Значение указанного абстрактного типа данных либо равно 0, либо неизвестно. Если функция интерфейса не срабатывает и не позволяет создать некоторую сущность, то возвращаемое значение равно 0. Если сущность отправляется в CAD и доступ к сущности уже невозможен, то ее имя становится неизвестным. Неизвестное значение, как правило, возвращается функциями интерфейса, если сущность создана непосредственно в базе данных CAD. Если для функции интерфейса в качестве значений аргументов выбирается 0 или "неизвестное значение", то возвращаемое значение равно 0.

Все значения, не являющиеся нулевыми или неизвестными значениями имени сущности и возвращенные функцией интерфейса в одном сеансе, то есть с момента запуска LMS прикладной программой и до момента возвращения значения данной программой, должны быть уникальными. Имя сущности не может быть использовано повторно, даже если она направлена в CAD.

Примечание - На языке FORTRAN тип имени сущности entity_name_type представляется целым числом INTEGER. Нулевое значение отображается на 0. Неизвестное значение отображается на отрицательное целое. Таким образом, доступное имя сущности может отображаться только на положительное целое.

5.6 Координатная система и ее преобразование

Интерфейс имеет функции, которые могут изменять ссылочную координатную систему пространства с заданной OVC. Прикладные программы могут использовать такие четыре функции: Ref_Sys_3_Pnt, Ref_Sys_2_Dir, Ref_Sys_Position_Relative и Ref_Sys_A2p. После изменения координатной системы (либо в TDB, либо в базе данных CAD) все сущности определяются в новой ссылочной координатной системе.

Для сохранения предшествующей ссылочной координатной системы функция Ref_Sys_A2p создает локальную координатную систему (сущность axis2_placement) из текущей ссылочной координатной системы вида объекта (OVC). Указанная замена ссылочной координатной системы на данную LCS производится так, что позволяет вернуться к исходной OVC.

5.7 Состояние ошибки интерфейса

Глобальная переменная ошибки error_variable задается, если идентифицируется состояние ошибки в процессе выполнения функции интерфейса. Эта переменная принимает целочисленное значение из таблицы статуса интерфейса. Оно совпадает с номером ошибки, определяемым функцией спецификации. При этом в таблицу статуса интерфейса вносится запись "error_origin" с указанием имени функции, где произошла ошибка. Запись "error_text" содержит сообщение, ассоциированное с номером ошибки. Именем функции должно быть синтаксическое имя на текущем используемом языке программирования (например, на языке FORTRAN). Сообщение должно быть переводом описания ошибки (см. подраздел 5.8.1). Указанные переменные ошибки могут запрашиваться и задаваться повторно с помощью прикладных программ.

Если переменная ошибки error_variable определена, значит, интерфейс находится в состоянии ошибки (error_state = true). В указанном состоянии ошибки могут работать только нижеследующие функции интерфейса, установленные в приложении А настоящего стандарта:

1) функции запроса;

2) функции перезагрузки из состояния ошибки Reset_Error_State.

Все прочие функции интерфейса являются допустимыми, но изменить что-либо они не могут. Они возвращаются к вызывающей прикладной программе. Если прикладная программа возвращается, когда интерфейс находится в состоянии ошибки, то LMS должна:

1) закрыть все открытые множества;

2) закрыть открытый вид со значением error_state = true;

3) сделать записи в файле ошибок: error_variable, error_origin, error_text;

4) закрыть интерфейс.

5.8 Исправление ошибок

5.8.1 Методология исправления ошибок

Для каждой функции интерфейса имеется описание конечного количества состояний ошибки, при котором переменным ошибки присваиваются некоторые значения. Каждая реализация интерфейса должна поддерживать режим проверки ошибки. Переменные ошибки обеспечивают связь между прикладной программой и стандартным интерфейсом. Прикладная программа запрашивает значение ошибки, интерпретирует информацию об ошибке и заново устанавливает значение переменной ошибки error_variable = zero, чтобы восстановить интерфейс в состоянии "отсутствие ошибки" (error_state = false). Выбираемая стратегия исправления ошибок интерфейса соответствует нижеследующей классификации ошибок:

- класс I - ошибки, приводящие к заранее известной реакции системы;

- класс II - ошибки, связанные с попыткой сохранить результаты или предшествующие операции;

- класс III - ошибки, приводящие к непредсказуемым результатам, включая разрушение CAD.

Интерфейс распознает три ситуации выявления ошибки:

- ситуация А - ошибка в функции интерфейса;

- ситуация Б - ошибка в функции, вызываемой из интерфейса (функции CAD, функции операционной системы и т.д.);

- ситуация В - ошибка вне интерфейса.

Если ошибки выявлены вне интерфейса (ситуация В), то либо прикладная программа принимает на себя управление выполнением операций, либо выполнение программы заканчивается ненормально. В последнем случае результаты являются непредсказуемыми (класс III), это может привести к разрушению CAD. Если тем не менее прикладная программа принимает на себя управление, то она может попытаться вернуться в LMS, чтобы попробовать закрыть интерфейс надлежащим образом (см. раздел 5.7). Операции, определенные в разделе 5.7, могут быть также выполнены самим интерфейсом. Это стандартная реакция на ошибки класса II.

Все ошибки, явно представленные в перечне как часть определения функции интерфейса, принадлежат к классу I. Они либо возникают внутри самого интерфейса (ситуация A), либо возникают, когда функция, вызванная из интерфейса, передает управление обратно некоторой функции интерфейса вместе с соответствующей информацией об ошибке (ситуация Б). Во всех случаях выявления ошибок класса I интерфейс задает значения переменным ошибки error_variable, error_origin и error_text. Если в процессе создания функции сущности имеет место сбой и сущность не может быть создана, то имя сущности, вычисленное функцией, устанавливается равным 0. Если функция интерфейса активизируется с более чем одним состоянием ошибки, то любой из соответствующих номеров ошибки может быть присвоен переменной ошибки.

Функция запроса lnq_Error_State позволяет исправлять ошибки с помощью прикладного программирования. Функция Reset_Error_State выводит интерфейс из состояния ошибки. Закрытие открытого вида при значении переменной error_state = true позволяет LMS заранее предупредить CAD о том, что вид является неправильным.

При наступлении состояния ошибки функции запроса действуют в соответствии с их функциональным описанием (см. приложение A), их действия не должны генерировать новых ошибок. Поэтому для функций запроса описаний ошибок не существует. Для сообщений о возможных трудностях в процессе выполнения функций используется особый выходной параметр: error_indicator (индикатор ошибок).

Каждая ошибка имеет свой индивидуальный номер:

1) номера менее 1001 не используются. Они зарезервированы для последующих обновлений стандарта;

2) номера ошибок от 1000 до 2000 зарезервированы для привязок языка программирования.

5.8.2 Сообщения об ошибках

Таблица 1 - Сообщения об ошибках входа

Номер ошибки

Описание ошибки

1

Имя сущности не определено (значение равно 0, значение неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

4

Значение меры плоского угла находится вне допустимого диапазона

5

Целочисленное значение находится вне допустимого диапазона

6

Значение строки находится вне допустимого диапазона

7

Действительное значение находится вне допустимого диапазона

Таблица 2 - Сообщения об ошибках геометрии

Номер ошибки

Описание ошибки

101

Попытка создания вырожденной сущности

102

Модуль вектора направления лежит вне установленного диапазона [EPS, MAX]

103

Расстояние между двумя точками лежит вне установленного диапазона [EPS, MAX]

104

Расстояние между двумя контурами менее EPS

105

Попытка создания вырожденного направления в процессе создания сущности

106

Попытка создания вырожденной оси axis2_placement в процессе создания сущности

107

Попытка создания вырожденной оси axis1_placement в процессе создания сущности

108

Попытка создания вырожденной базовой кривой в процессе создания сущности

109

Попытка создания вырожденного твердого тела в процессе создания сущности

110

Попытка создания точки вне параметрического диапазона сущности кривой

111

Попытка создания линии длиной вне установленного диапазона [EPS, MAX]

112

Попытка создания дуги длиной менее EPS

113

Попытка создания самопересекающейся сущности контура

114

Попытка создания твердого тела с перекрытием

115

Заданные сущности являются идентичными

116

Заданные точки линейно зависимы

117

Заданные направления параллельны

118

Заданные сущности кривой параллельны (концентрические)

119

Заданные сущности не лежат в одной плоскости

120

Заданный отрезок слишком длинный

121

Слишком большой (маленький) радиус

122

Пересечение заданных сущностей кривой отсутствует

123

Выявлено пересечение заданных контуров

124

Выявлено пересечение осей поверхности

125

Выявлено перекрытие заданных контуров

126

Ось поворота не лежит на плоской поверхности

127

Геометрическое построение нецелесообразно

128

Неустойчивый процесс вычисления конической дуги

129

Сбой процесса аппроксимации замыкания контура

130

Сбой булевой операции

Таблица 3 - Сообщения об ошибках системы

Номер ошибки

Описание ошибки

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

205

Превышено максимально допустимое число точек по линии

206

Превышено максимально допустимое число сущностей контура

207

Превышено максимально допустимое число внутренних границ

208

Превышено максимально допустимое число групп

209

Превышено максимально допустимое число символов строки

210

Переполнение стека группы

211

Переполнение заданного стека

212

Сущность может быть использована только внутри временной базы данных

Таблица 4 - Сообщения об ошибках структуры сущностей

Номер ошибки

Описание ошибки

301

Попытка закрыть корневую группу

302

Попытка повторно открыть открытую группу

303

Сущность является членом корневой группы

304

Сущность содержит текущую открытую группу

305

Попытка создания цикличной групповой структуры

306

Имя множества не является уникальным

307

Попытка закрыть корневое множество

Таблица 5 - Сообщения об ошибках стиля воспроизведения

Номер ошибки

Описание ошибки

401

Источник протокола обмена неизвестен

402

Идентификатор внешнего стиля неизвестен

403

Сбой при назначении стиля штриховки

404

Стиль затенения невидимых линий не подключен

Таблица 6 - Сообщения об ошибках привязки языка программирования

Номер ошибки

Описание ошибки

1001

Порядковый номер находится вне установленного диапазона

1002

Несоответствие порядкового номера и длины перечня

1003

Неправильно задана длина строки

6 Логическая модель целевой моделирующей системы

6.1 Элемент геометрического представления

Функции интерфейса создают элементы представления либо в TDB, либо в базе данных CAD.

Существует три вида элементов представления:

- элементы геометрического представления: геометрические сущности или сущности комментариев, используемые для описания формы, созданной с помощью интерфейса;

- стили: сущности, используемые для описания характеристик визуализации элементов геометрического представления;

- структурированные сущности: используются для структурирования элементов геометрического представления либо в TDB, либо в базе данных CAD.

Элементы геометрического представления, создаваемые с помощью функциий интерфейса, классифицируются в соответствии с нижеследующим деревом, изображенным на рисунке 2.

Graphical element - графический элемент; mathematical - математические представления; point - точка; curves - кривые; fill_area - заполненная область; surface - поверхность; geometric solid - геометрическое тело; cartesian_point - декартова точка; annotation_fill_area - заполненная область комментариев; api_planar_surface - плоская поверхность интерфейса прикладного программирования; fill_area_style_hatching - штриховка заполненной области; basic - базовый; conic_arc - коническая дуга; general - основной; solid model - твердотельная модель; half_space_solid - тело в полупространстве; api_line - линия интерфейса прикладного программирования; api_elliptical_arc - дуга эллипса интерфейса прикладного программирования; polyline - полилиния; CSG - конструктивная блочная геометрия; sweep - тело, построенное очерчиванием контура; api_circular_arc - дуга окружности интерфейса прикладного программирования; api_hyperbolic_arc - дуга гиперболы интерфейса прикладного программирования; api_contour - контур интерфейса прикладного программирования; primitive - примитив; boolean - булев; extruded_area_solid - тело, полученное вытягиванием; api_parabolic_arc - дуга параболы интерфейса прикладного программирования; sphere - сфера; boolean_result - булев результат; revolved_area_solid - тело, полученное вращением; right_circular_cone - прямой круговой конус; hidden line involvement in 2D - включение невидимых линий в 2D-вид; direction - направление; right_circular_cylinder - прямой круговой цилиндр; axis1_placement - размещение оси 1; torus - тор; axis2_placement (LCS: local coordinate system) - размещение оси 2 (локальная координатная система); block - блок; right_angular_wedge - прямой клин

Рисунок 2 - Элементы геометрического представления, определяемые в интерфейсе

Настоящая структура используется как для описания стилей различных сущностей, так и для описания диапазонов значений некоторых функций интерфейса.

Реализация элементов геометрического представления внутри TDB или внутри CAD не является стандартной. Тем не менее модель указанной реализации установлена в настоящем стандарте для описания геометрического поведения каждой сущности в процессе манипуляции с ней. Настоящая модель определена с помощью абстрактной модели данных на языке EXPRESS. Данная абстрактная модель схемы api_abstract_schema использует подмножество групповых ресурсов, определенных в ИСО 10303 (части 41, 42, 43 и 46), содержащих описание данных модели продукта. Указанные ресурсы называются групповыми ресурсами ИСО 10303. Настоящая абстрактная модель данных не обязательна для применения в TDB или CAD.

Все сущности, созданные с помощью интерфейса, должны вести себя в соответствии с указанной абстрактной моделью данных.

Если реализация интерфейса создает сущности, удовлетворяющие требованиям некоторого протокола приложения, соответствующего ИСО 10303, описывающего групповой ресурс, то данное описание применяется для подмножества указанных ресурсов, используемых схемой api_abstract_schema. Любая дополнительная информация генерируется интерфейсом.

Типы и сущности схемы api_abstract_schema, определенные в групповом ресурсе, удовлетворяющем требованиям ИСО 10303, сохраняют свои имена, установленные указанным стандартом, даже если в их определении содержатся некоторые дополнительные ограничения допустимых подтипов. Указанные ограничения проверяются интерфейсом. Если они удовлетворяются, то созданные сущности должны соответствовать определению, данному ИСО 10303. Дополнительные правила типа "Где?" (WHERE RULES) (выражающие специфические ограничения схемы api_abstract_schema) идентифицируются именем с приставкой "api_".

Некоторые сущности также определяются с помощью сущностей явного выделения подтипов, определенных интегрированным ресурсом ИСО 10303. Выделение подтипов используется для описания диапазонов значений некоторых функций интерфейса. Имена таких сущностей имеют приставку "api_". Выделение подтипов в общем случае состоит в задании ограничений для сущностей, определенных интегрированным ресурсом ИСО 10303. Указанная сущность может быть применена как экземпляр их супертипа или как экземпляр специализации указанных супертипов, определенных в некотором протоколе приложений, удовлетворяющем требованиям ИСО 10303.

Таким образом, некоторые сущности получаются путем обобщения сущностей, определенных в групповых ресурсах ИСО 10303, путем добавления новых атрибутов. Указанные сущности используются главным образом для определения структур и их визуализации. Если целевая CAD представляет собой архив (соответствующий протоколу приложений, удовлетворяющему требованиям ИСО 10303), то интерфейс должен гарантировать отображение этих сущностей на ресурс, доступный внутри указанного протокола приложений. Для отображения дается текстовое описание в определении сущности, работающей в интерфейсе прикладного программирования.

Если некоторые дополнительные ограничения налагаются групповым ресурсом ИСО 10303, представленным на языке EXPRESS, то указанные ограничения фиксируются в особом примечании. Если ограничения не зафиксированы, то определение ресурса соответствует определению группового ресурса ИСО 10303.

В интегрированных ресурсах комплекса стандартов ИСО 10303 некоторые групповые ресурсы явно ссылаются на другие групповые ресурсы, которые не активизируются и не используются для ссылок схемой api_abstract_schema. Их экземпляр не может появиться в совокупности, удовлетворяющей требованиям схемы api_abstract_schema. На эти ресурсы производятся ссылки из соответствующей схемы (представленной на языке EXPRESS) интегрированного ресурса ИСО 10303. Это необходимо для сохранения структуры данных групповых ресурсов [особенно существующих правил типа "Где?" (WHERE RULES)] при условии сохранения корректности используемой схемы. На указанные сущности ссылаются в соответствии с правилами типа "Где?" (WHERE RULES), дублированными из групповых ресурсов ИСО 10303, но не из сущностей, принадлежащих схеме api_abstract_schema. Таким образом, данная ссылка является только формальной.

Сущности, созданные интерфейсом, не могут быть вырожденными. Понятие вырождения не должно зависеть от какой-либо реализации интерфейса. В настоящем стандарте ограничения определены для каждой сущности, создаваемой интерфейсом. Сущность, не удовлетворяющую этим ограничениям, называют вырожденной. Если функция пытается создать вырожденную сущность, то возникает ошибка. Такая сущность не должна быть создана, формирование сообщения об ошибке обязательно.

Вырождение сущности определяется путем ссылки на абсолютное минимально допустимое значение EPS, выраженное через (текущую) единицу длины view_length_unit и масштабный фактор view_scale_factor.

.

Если некоторая реализация интерфейса не может создавать сущности с характерным размером EPS для заданной единицы длины view_length_unit с помощью прикладного программирования, то при осуществлении функции set_OVC_length_unit, запущеннной LMS, должна возникать ошибка.

Константа ZERO_value определяет действительное значение, идентифицирующее нуль с помощью интерфейса на любой стадии его реализации. Если расстояние между двумя точками меньше величины ZERO_value, то эти две точки считаются совпадающими в данном интерфейсе.

Например, если расстояние между двумя точками composite_curve_segment, принадлежащими одной комбинированной кривой composite_curve, меньше ZERO_value, то интерфейс должен обеспечивать непрерывность данной комбинированной кривой composite_curve вне зависимости от требуемой точности целевой CAD. Величина ZERO_value выражается через (текущую) единицу длины view_length_unit и масштабный фактор view_scale_factor.

.

Примечание - Определение этих двух значений указывает на нецелесообразность точных действительных вычислений, результаты которых могут быть неоднозначными. Полученное решение, часто используемое на практике, состоит в определении диапазона [ZERO_value, EPS] запрещенных действительных значений.

6.1.1 Схема API_ABSTRACT_SCHEMA

В настоящем подразделе установлены требования к схеме api_abstract_schema. Нижеследующая спецификация на языке EXPRESS представляет блок схемы api_abstract_schema и ее ссылки на внешние ресурсы, необходимые для обеспечения соответствия с определением группового ресурса, приведенные в ИСО 10303. Экземпляры указанных ссылочных сущностей не должны составлять совокупность, созданную с помощью функции интерфейса.

Спецификация на языке EXPRESS:

*)

SCHEMA api_abstract_schema;

REFERENCE FROM geometry_schema

(pcurve);

REFERENCE FROM measure_schema

(measure_with_unit,

descriptive_measure);

REFERENCE FROM presentation_appearance_schema

(surface_style_usage,

presentation_style_by_context,

fill_area_style_colour,

fill_area_style_tiles,

pre_defined_hatch_style,

pre_defined_presentation_style,

pre_defined_tile_style,

externally_defined_hatch_style,

externally_defined_curve_font,

externally_defined_tile_style,

curve_style_font,

curve_style_font_and_scaling,

text_style,

point_style,

symbol_style,

approximation_tolerance);

(*

Примечание - Вышеуказанные ссылочные схемы определены в следующих частях ИСО 10303:

geometry_schema - в ИСО 10303-42;

measure_schema - в ИСО 10303-41;

presentation_appearance_schema - в ИСО 10303-46.

6.1.1.1 Определение констант схемы API_ABSTRACT_SCHEMA: точность геометрических представлений

В настоящем подразделе установлены поименованные константы, используемые схемой api_abstract_schema как ссылочные числовые границы для обеспечения точности геометрических представлений.

Спецификация на языке EXPRESS:

*)

CONSTANT

EPS : REAL := 1.E-3;

ZERO_VALUE : REAL := 1.E-6;

MAX : REAL := 1.E+4;

END_CONSTANT;

(*

Примечание - В контексте схемы api_abstract_schema значения EPS, ZERO_value и MAX выражают с помощью единиц длины view_length_unit и масштабного фактора view_length_scale_factor для меры длины length_measure, а также с помощью угловых единиц view_angle_unit для plane_angle_measure.

6.1.2 Определения типов схемы API_ABSTRACT_SCHEMA: основные понятия описания продукта и его поддержки

Настоящий подраздел устанавливает ресурсы группового типа (определенные в ИСО 10303-41), являющиеся частью схемы api_abstract_schema, соответствующей требованиям настоящего стандарта.

6.1.2.1 Идентификатор

Идентификатор (identifier) - это буквенно-цифровая строка для индивидуальной идентификации. Идентификатор может не иметь языкового значения.

Пример - Идентификатором может быть номер детали.

Спецификация на языке EXPRESS:

*)

TYPE identifier = STRING;

END_TYPE;

(*

6.1.2.2 Метка

Метка (label) - это совокупность символов для ссылки. Метка представляет собой строку, отображающую удобочитаемое название чего-либо. Метка должна иметь языковое значение.

Пример - "Smith", "Widget Inc." и "Materials Test Laboratory" - типовые метки.

Спецификация на языке EXPRESS:

*)

TYPE label = STRING;

END_TYPE;

(*

6.1.2.3 Текст

Текст (text) - это буквенно-цифровая строка символов, предназначенных для чтения и восприятия человеком. Текст предназначен только для передачи информации.

Спецификация на языке EXPRESS:

*)

TYPE text = STRING;

END_TYPE;

(*

6.1.2.4 Сущность length_measure

Сущность length_measure устанавливает расстояния.

Спецификация на языке EXPRESS:

*)

TYPE length_measure = REAL;

END_TYPE;

(*

Примечание - В контексте схемы api_abstract_schema сущность length_measure выражается через единицы длины view_length_unit и масштабный фактор view_length_scale_factor.

6.1.2.5 Сущность plane_angle_measure

Сущность plane_angle_measure задает плоский угол.

Спецификация на языке EXPRESS:

*)

TYPE plane_angle_measure = REAL;

END_TYPE;

(*

Примечание - В контексте схемы api_abstract_schema плоский угол plane_angle_measure выражается с помощью угловых единиц view_angle_unit.

6.1.2.6 Сущность positive_length_measure

Сущность positive_length_measure задает положительную меру длины length_measure.

Спецификация на языке EXPRESS:

*)

TYPE positive_length_measure = length_measure;

WHERE

WR1: SELF > 0;

END_TYPE;

(*

Комментарий к спецификации:

WR1: значение должно быть положительным.

6.1.2.7 Сущность positive_plane_angle_measure

Сущность positive_plane_angle_measure задает положительный плоский угол plane_angle_measure.

Спецификация на языке EXPRESS:

*)

TYPE positive_plane_angle_measure = plane_angle_measure;

WHERE

WR1: SELF > 0;

END_TYPE;

(*

Комментарий к спецификации:

WR1: значение должно быть положительным.

6.1.2.8 Сущность parameter_value

Сущность parameter_value задает значение параметра в некоторой его области.

Спецификация на языке EXPRESS:

*)

TYPE parameter_value = REAL;

END_TYPE;

(*

6.1.2.9 Сущность message

Сущность message задает коммуникацию, адресованную системе для активизации некоторого действия. Результатом указанного действия является внешне определенный элемент externally_defined_item.

Примечание - Нормативные значения сообщений описаны внутри моделей соответствующих приложений.

Спецификация на языке EXPRESS:

*)

TYPE message = STRING;

END_TYPE;

(*

6.1.2.10 Ссылка

Ссылка (reference) обеспечивает идентификацию и запрос внешне определенного элемента externally_defined_item.

Спецификация на языке EXPRESS:

*)

TYPE source_item = SELECT (identifier, message);

END_TYPE;

(*

6.1.3 Определения типов схемы API_ABSTRACT_SCHEMA: геометрические и топологические представления

В настоящем подразделе установлены ресурсы группового типа, определенные в ИСО 10303-42, являющиеся частью схемы api_abstract_schema.

6.1.3.1 Сущность dimension_count

Сущность dimension_count задает положительное целое, равное размерности координатного пространства в контексте геометрического представления geometric_representation_context.

Спецификация на языке EXPRESS:

*)

TYPE dimension_count = INTEGER;

WHERE

WR1: SELF > 0;

END_TYPE;

(*

Комментарий к спецификации:

WR1: целое dimension_count должно быть положительным.

6.1.3.2 Сущность transition_code

Сущность transition_code задает свойства непрерывности комбинированной кривой или поверхности. Рассматриваемая непрерывность является геометрической, а не параметрической.

Спецификация на языке EXPRESS:

*)

TYPE transition_code = ENUMERATION OF

(discontinuous,

continuous,

cont_same_gradient,

cont_same_gradient_same_curvature);

END_TYPE;

(*

Определения элементов перечислимого типа:

discontinuous: сегменты (вставки) не соединяются. Это возможно только на границе кривой (поверхности), чтобы обозначить ее незамкнутость;

continuous: сегменты (вставки) соединяются, условия на касательные к сегменту не налагаются;

cont_same_gradient: сегменты (вставки) соединяются, их касательные векторы (плоскости) параллельны и одинаково направлены в точке стыка; равенства производных не требуется;

cont_same_gradient_same_curvature: для кривых: сегменты соединены, их касательные векторы параллельны, имеют одно направление, в месте стыка кривизны равны, равенства производных не требуется. Для поверхностей: главные кривизны равны, главные направления совпадают вдоль общей границы.

Примечание - В контексте схемы api_abstract_schema существуют только комбинированные кривые.

6.1.3.3 Сущность preferred_surface_curve_representation

Сущность preferred_surface_curve_representation используется для указания предпочтительной формы представления кривой на поверхности. Кривая может быть задана в геометрическом пространстве или в параметрическом пространстве базовой поверхности.

Спецификация на языке EXPRESS:

*)

TYPE preferred_surface_curve_representation = ENUMERATION OF

(curve_3d,

pcurve_s1,

pcurve_s2);

END_TYPE;

(*

Определения элементов перечислимого типа:

curve_3d: предпочтительной является кривая curve в трехмерном пространстве;

pcurve_s1: предпочтительной является первая pcurve;

pcurve_s2: предпочтительной является вторая pcurve.

6.1.3.4 Сущность trimming_preference

Сущность trimming_preference используется для указания предпочтительного способа вычленения параметрической кривой, если отрезок определяется повторно.

Спецификация на языке EXPRESS:

*)

TYPE trimming_preference = ENUMERATION OF

(cartesian, parameter,

unspecified);

END_TYPE;

(*

Примечание - В контексте схемы api_abstract_schema предпочтения вычленения кривой trimming_preference зависят от реализации.

Определения атрибутов:

cartesian: указывает, что предпочтительной является настройка по декартовой точке;

parameter: указывает, что предпочтительным является значение параметра;

unspecified: указывает, что предпочтение не задано.

6.1.3.5 Сущность axis2_placement

Сущность axis2_placement имеет тип select. Используется как в двумерном, так и в трехмерном декартовом пространстве. Это позволяет ссылаться на сущности, использующие указанную информацию, без определения размерности пространства.

Спецификация на языке EXPRESS:

*)

TYPE axis2_placement = SELECT

(axis2_placement_2d,

axis2_placement_3d);

END_TYPE;

(*

6.1.3.6 Сущность curve_on_surface

Сущность curve_on_surface задает одну из кривых на параметрической поверхности:

- pcurve;

- surface_curve, включая такие особые ее подтипы, как intersection_curve и seam_curve;

- composite_curve_on_surface.

Сущность curve_on_surface задается для кривых типа select и позволяет пользоваться ими.

Спецификация на языке EXPRESS:

*)

TYPE curve_on_surfасе = SELECT

(pcurve,

surface_curve,

composite_curve_on_surface);

END TYPE;

(*

6.1.3.7 Сущность pcurve_or_surface

Сущность pcurve_or_surface имеет тип select. Позволяет идентифицировать associated surface или pcurve как атрибут composite curve_on_surface.

Спецификация на языке EXPRESS:

*)

TYPE pcurve_or_surface = SELECT

(pcurve,

surface);

END_TYPE;

(*

6.1.3.8 Сущность trimming_select

Сущность trimming_select имеет тип select. Идентифицирует два способа вычленения параметрической кривой: 1) путем задания декартовой точки на кривой; 2) путем задания действительного значения параметра в заданном диапазоне.

Спецификация на языке EXPRESS:

*)

TYPE trimming_select = SELECT

(cartesian_point,

parameter_value);

END_TYPE;

(*

6.1.3.9 Сущность vector_or_direction

Сущность vector_or_direction используется для идентификации типа сущности, применяемой для векторных вычислений.

Спецификация на языке EXPRESS:

*)

TYPE vector_or_direction = SELECT

(vector,

direction);

END_TYPE;

(*

6.1.4 Определения типов схемы API_ABSTRACT_SCHEMA: геометрические модели

В настоящем подразделе установлены ресурсы группового типа для построения геометрических моделей, определенных в ИСО 10303-42. Данные ресурсы являются частью схемы api_abstract_schema.

6.1.4.1 Сущность boolean_operand

Сущность boolean_operand имеет тип select. Идентифицирует все типы сущностей, используемых в булевых операциях создания тел конструктивной блочной геометрии.

Спецификация на языке EXPRESS:

*)

TYPE boolean_operand = SELECT

(solid_model,

half_space_solid,

csg_primitive,

boolean_result);

END_TYPE;

(*

6.1.4.2 Сущность boolean_operator

Сущность boolean_operator задает три булевых оператора для определения тел конструктивной блочной геометрии.

Спецификация на языке EXPRESS:

*)

TYPE boolean_operator = ENUMERATION OF

(union,

intersection,

difference);

END_TYPE;

(*

Определения атрибутов:

union: операция построения заданного регуляризованного теоретического объединения объемов, определенных двумя телами;

intersection: операция построения заданного регуляризованного теоретического пересечения объемов, определенных двумя телами;

difference: операция построения заданной регуляризованной теоретической разности объемов, определенных двумя телами.

6.1.4.3 Сущность csg_primitive

Сущность csg_primitive имеет тип select. Определяет набор сущностей конструктивной блочной геометрии (CSG), используемых в булевых операциях: сфера, прямой круговой конус, прямой круговой цилиндр, тор, блок, прямой клин.

Спецификация на языке EXPRESS:

*)

TYPE csg_primitive = SELECT

(sphere,

block,

right_angular_wedge,

torus,

right_circular_cone,

right_circular_cylinder);

END_TYPE;

(*

6.1.4.4 Сущность csg_select

Сущность csg_select идентифицирует типы сущностей, выбираемых в качестве корня дерева конструктивной блочной геометрии (CSG). В частном случае это может быть отдельная сущность конструктивной блочной геометрии.

Спецификация на языке EXPRESS:

*)

TYPE csg_select = SELECT

(boolean_result,

csg_primitive);

END_TYPE;

(*

6.1.4.5 Сущность geometric_set_select

Сущность geometric_set_select имеет тип select. Идентифицирует типы геометрических сущностей.

Спецификация на языке EXPRESS:

*)

TYPE geometric_set_select = SELECT

(point,

curve,

surface);

END_TYPE;

(*

6.1.5 Определения типов схемы API_ABSTRACT_SCHEMA: особые типы структурирования интерфейса прикладного программирования

В настоящем подразделе установлены особые типы ресурсов интерфейса прикладного программирования, предназначенные для структурирования элементов геометрического представления, созданного с помощью функций интерфейса.

6.1.5.1 Сущность api_grouped_item

Сущность api_grouped_item задает описания объектов, которые могут быть элементом группы.

Спецификация на языке EXPRESS:

*)

TYPE api_grouped_item = SELECT

(direction,

vector,

placement,

annotation_fill_area,

fill_area_style_hatching,

geometric_set_select,

solid_model,

half_space_solid,

csg_select,

api_group);

END_TYPE;

(*

6.1.5.2 Сущность api_set_item

Сущность api_set_item задает описания объектов, которые могут быть частью множества api_set.

Спецификация на языке EXPRESS:

*)

TYPE api_set_item = SELECT

(direction,

vector,

placement,

annotation_fill_area,

geometric_set_select,

solid_model,

half_space_solid,

csg_select,

api_set);

END_TYPE;

(*

6.1.6 Определения сущностей схемы API_ABSTRACT_SCHEMA: основные понятия описания и поддержки продукта

В настоящем подразделе установлены ресурсы групповых сущностей, определенные в ИСО 10303-41. Указанные ресурсы являются частью схемы api_abstract_schema.

6.1.6.1 Сущность shape_representation

Сущность shape_representation - особый вид представления, определяющего геометрическую форму.

Примечание 1 - В контексте схемы api_abstract_schema существует только одно представление формы shape_representation. Оно соответствует форме продукта, созданного с помощью интерфейса базы данных CAD. Это установлено особыми глобальными правилами, ассоциированными с интерфейсом прикладного программирования.

Примечание 2 - В контексте схемы api_abstract_schema контекстом изделий context_of_item должен быть контекст геометрического представления geometric_representation_context. Это установлено правилами типа "Где?" (WHERE RULES) интерфейса прикладного программирования.

Спецификация на языке EXPRESS:

*)

ENTITY shape_representation

SUBTYPE OF (representation);

WHERE

api_WR1: 'API_ABSTRACT_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT' IN

TYPEOF (SELF\representation.context_of_items);

END_ENTITY;

(*

Определения атрибутов:

SELF\representation.item: множество representation_item, представляющих форму продукта;

SELF\representation.context_of_item: representation_context в координатной системе OVC, в которой элементы связаны с формой продукта.

Комментарии к спецификации:

api_WR1: элемент контекста context_of_item представления формы shape_representation должен быть контекстом геометрического представления geometric_representation_context.

Ассоциированное глобальное правило: следующее глобальное правило ассоциировано с настоящей сущностью. Оно ограничивает область применения сущности или ее соотношения с другими сущностями:

unique_shape_representation: правило представления уникальной формы unique_shape_representation требует существования уникальной сущности shape_representation в совокупности сущностей схемы api_abstract_schema. Данная сущность соответствует форме продукта, созданного с помощью интерфейса базы данных CAD.

6.1.6.2 Сущность group

Сущность group идентифицирует набор элементов.

Спецификация на языке EXPRESS:

*)

ENTITY group;

name : label;

description : text;

END_ENTITY;

(*

Определения атрибутов:

name: слово или группа слов, с помощью которых производится ссылка на группу;

description: текст, поясняющий природу группы.

6.1.6.3 Сущность group_assignment

Сущность group_assignment устанавливает связь группы с данными продукта.

Спецификация на языке EXPRESS:

*)

ENTITY group_assignment

ABSTRACT SUPERTYPE;

assigned_group : group;

END_ENTITY;

(*

Определение атрибута:

assigned_group: группа, ассоциированная с данными продукта.

6.1.6.4 Сущность external_source

Сущность external_source идентифицирует источник данных продукта, не являющийся протоколом приложений, по которому производится обмен.

Примечание - В контексте схемы api_abstract_schema внешние источники external_source представляют собой внешне определенные стили externally_defined_style элементов геометрического представления.

Спецификация на языке EXPRESS:

*)

ENTITY external_source;

source_id : source_item;

END_ENTITY;

(*

Определение атрибута:

source_id: идентификация внешнего источника external_source.

6.1.6.5 Сущность pre_defined_item

Сущность pre_defined_item идентифицирует информацию, не представленную явно в заданном обмене, но определенную в протоколе приложений, по которому производится обмен.

Примечание - В контексте схемы api_abstract_schema некоторые особые стили сущностей определяются как предварительно определенные элементы pre_defined_item.

Спецификация на языке EXPRESS:

*)

ENTITY pre_defined_item;

name : label;

END_ENTITY;

(*

Определение атрибута:

name: слово или группа слов, с помощью которых производится ссылка на предварительно определенные элементы pre_defined_item.

6.1.6.6 Сущность externally_defined_item

Сущность externally_defined_item идентифицирует информацию, не представленную явно в заданном обмене и не определенную в протоколе приложений, по которому производится обмен.

Примечание - В контексте схемы api_abstract_schema стили сущностей определены как внешне определенные элементы externally_defined_item.

Спецификация на языке EXPRESS:

*)

ENTITY externally_defined_item;

item id : source_item;

source : external_source;

END_ENTITY;

(*

Определения атрибутов:

item_id: идентификатор элемента, на который производится ссылка;

source: внешний источник external_source, содержащий элемент, на который производится ссылка.

6.1.7 Определения сущностей схемы API_ABSTRACT_SCHEMA: структуры представлений

В настоящем подразделе установлены ресурсы групповых сущностей, определенные в ИСО 10303-43. Указанные ресурсы являются частью схемы api_abstract_schema.

6.1.7.1 Сущность representation_context

Сущность representation_context задает контекст, в котором устанавливается связь между элементами представления representation_items.

Два некоторых контекста представления representation_context определяются отдельно, если обратное не установлено особым соотношением.

Спецификация на языке EXPRESS:

*)

ENTITY representation_context;

context_identifier : identifier;

context_type : text;

INVERSE

representations_in_context : SET [1:?] OF representation

FOR context_of_items;

END_ENTITY;

(*

Определения атрибутов:

context_identifier: идентификатор контекста представления representation_context;

context_type: описание типа контекста представления representation_context;

representations_in_context: по крайней мере одно представление должно быть ассоциировано с каждым контекстом представления representation_context.

6.1.7.2 Сущность representation_item

Сущность representation_item - это элемент данных продукта. Он является частью одного и более представлений или дополняет определения других элементов представления representation_items.

Сущность representation_item дополняет определения другого элемента представления representation_item, если на него производится ссылка этим элементом.

Спецификация на языке EXPRESS:

*)

ENTITY representation_item;

name : label;

WHERE

WR1 : SIZEOF (using_representations (SELF)) > 0;

api WR2: SIZEOF (using_representations (SELF)) = 1;

END_ENTITY;

(*

Примечание - В контексте схемы api_abstract_schema каждый элемент представления representation_item должен быть ассоциирован только с одним контекстом представления representation_context. Это устанавливается сущностью api_WR2.

Определение атрибута:

name: идентификатор элемента представления representation_item.

Комментарии к спецификации:

WR1: каждый элемент представления representation_item должен быть ассоциирован по крайней мере с одним контекстом представления representation_context;

api_WR2: на элемент представления representation_item производится ссылка только одним контекстом представления representation_context.

6.1.7.3 Сущность representation

Задает набор из одного или нескольких элементов представления representation_items в некотором контексте представления representation_context. Порядок использования представления в ИСО 10303 не рассматривается.

Соотношение между элементами представления representation_items и контекстом представления representation_context дает основу для выделения связанных сущностей из полного набора сущностей representation_item.

Примечание 1 - Рассмотрим контекст, в котором множество элементов геометрического представления geometric_representation_items используется для представления некоторой формы. Используются только элементы данного контекста. Все прочие элементы геометрического представления не включены. Это составляет основу для выделения требуемых элементов геометрического представления на множестве элементов представления. В противном случае указанный признак не включается в спецификацию элементов представления.

Элементы множества изделий и все элементы представления, на которые косвенно производится ссылка из указанного множества, связаны с элементом контекста context_of_item через сущность представления. Косвенная ссылка на элементы представления имеет место, если она производится с помощью нескольких промежуточных сущностей, каждая из которых имеет тип элемента представления.

Примечание 2 - Представление связывает контекст представления representation_context с деревом элементов представления representation_items. При этом каждое дерево имеет корень на одном элементе множества. Элементы представления создают узлы на дереве, а ссылка одного элемента на другой создает ветвь дерева.

Множество представлений, на которые непосредственно производится ссылка как на изделие (связанные с контекстом context_of_item), является представлением. Элементы представления representation_item, на которые косвенно производится ссылка, поддерживают определения изделий и связаны с тем же контекстом представления representation_context.

Примечание 3 - В представлении формы куба с помощью множества линий указанное множество линий является единственным элементом представления формы. Сущности lines, в свою очередь, ссылаются на сущности декартовых точек cartesian_point и сущности направления direction (поддерживающие определения линий и связанные друг с другом), а также на определения сущности lines в ссылочном контексте геометрического представления geometric_representation_context. Указанная форма вместе с тем не может быть представлена с помощью сущностей декартовых точек и направления.

Представление должно соответствовать приложению. Часто представление является неполным и не моделирует исчерпывающим образом рассматриваемое понятие.

Примечание 4 - Рассмотрим набор двумерных элементов геометрических представлений geometric_representation_items, используемых для представления формы обрабатываемой детали. Описание ее формы является неполным, но пригодным для некоторых приложений, например, автоматизированного черчения.

Один элемент представления representation_item может быть связан с несколькими контекстами представления representation_context. Два представления не могут быть связаны, потому что на один и тот же элемент представления производится ссылка (прямо или косвенно) из соответствующих множеств элементов.

Примечание 5 - Рассмотрим поверхность surface, используемую в представлении representation геометрической формы литьевой пресс-формы, а также геометрической формы отливаемой в ней детали. Поверхность геометрически представляется двумя отличными контекстами geometric_representation_contexts, одним для пресс-формы и одним для детали. Вместе с тем данные представления не связаны. Наоборот, каждое из них по отдельности задает общую поверхность. В данном случае два несвязанных представления просто делят общий элемент представления representation_item.

Один и тот же элемент представления representation_item может быть многократно связан с одним контекстом представления representation_contex, используемым прямо или косвенно в нескольких представлениях, каждое их которых ссылается на один и тот же контекст представления. Это не означает, что каждое представление создает новый экземпляр того же элемента представления representation_item в том же контексте representation_context. Скорее, каждое представление подтверждает наличие одного экземпляра элемента представления в заданном контексте представления для различных целей.

Примечание 6 - Рассмотрим два представления с одинаковыми элементами контекста context_of_items. Одно является представлением формы "куб", оно косвенно ссылается на сущность line при задании ребер. Второе просто ссылается на сущность line как на элемент представления. Но это не означает наличия двух вхождений в сущность line и ее дерева ссылочных элементов геометрических представлений geometric_representation_items в рассматриваемом контексте геометрического представления geometric_representation_context. Скорее, однократное использование сущности line в данном контексте подтверждается дважды, по одному разу в каждом представлении. Причем первое может определять форму куба в целом. Второе может определять ребро того же куба.

Спецификация на языке EXPRESS:

*)

ENTITY representation;

name : label;

items : SET [1:?] OF representation_item;

context_of_items : representation_context;

END_ENTITY;

(*

Определения атрибутов:

name: идентификатор представления representation;

item: множество элементов представления representation_item, связанных в контексте context_of_item;

context_of_item: контекст представления representation_context, в котором элементы связываются для формирования представления некоторого понятия.

Примечание 7 - В контексте схемы api_abstract_schema все элементы геометрического представления, созданные с помощью функции интерфейса, закладываются вместе с OVC в контекст изделия.

6.1.7.4 Сущность representation_map

Сущность representation_map идентифицирует представление representation и элемент представления representation_item в нем для целей отображения. Элемент представления определяет начало координат отображения. Карта представления representation_map используется как источник отображения с помощью элемента отображения mapped_item.

Примечание 1 - Определение отображения, используемое для описания нового элемента представления representation_item, содержит сущность отображения представления representation_map и сущность элемента отображения mapped_item. Без данных сущностей отображение получается неполным. Они дают возможность по одному исходному представлению representation_map.mapped_representation получить отображение нескольких новых представлений mapped_item.

Спецификация на языке EXPRESS:

*)

ENTITY representation_map;

mapping_origin : representation_item;

mapped_representation : representation;

INVERSE

map_usage : SET [1:?] OF mapped_item FOR mapping_source;

WHERE

WR1: item_in_context (SELF.mapping_origin,

SELF.mapped_representation.context_of_items);

END_ENTITY;

(*

Определения атрибутов:

mapping_origin: элемент представления representation_item, для которого производится отображение представления mapped_representation.

Примечание 2 - Рассмотрим декартово отображение одного геометрического представления на другое. Источником отображения mapping_origin может быть локальная координатная система axis2_placement в контексте отображения представления mapped_representation, определяющего положение отображения;

mapped_representation: представление, отображаемое по крайней мере на один элемент отображения mapped_item;

map_usage: множество одного и более элементов отображения mapped_item, на которые производится отображение представления representation_map.

Комментарий к спецификации:

WR1: источник отображения mapping_origin должен содержаться в контексте representation_context отображения представления mapped_representation.

6.1.7.5 Сущность mapped_item

Сущность mapped_item использует представление mapping_source.mapped_representation при участии в отображении представления representation_map в качестве элемента представления representation_item.

Примечание 1 - Элемент отображения mapped_item является подтипом элемента представления representation_item. Он активизирует некоторое представление в виде элемента представления representation_item одного или нескольких других представлений. Элемент отображения определяет представление с помощью других представлений.

Отображение достигается посредством оператора, неявно определенного атрибутами mapping_source.mapping_origin и mapping_target. Отображение описывается с помощью преобразования item_defined_transformation (дополнительно см. ИСО 10303-43, пункт 4.4.7).

Спецификация на языке EXPRESS:

*)

ENTITY mapped_item

SUBTYPE OF (representation_item);

mapping_source : representation_map;

mapping target : representation_item;

WHERE

WR1: acyclic_mapped_representation (using_representations (SELF) , [SELF]);

END_ENTITY;

(*

Определения атрибутов:

mapping_source: отображение представления representation_map, которое является источником элемента отображения mapped_item;

mapping_target: элемент преставления representation_item, который является целью для источника отображения mapping_source.

Комментарий к спецификации:

WR1: источник отображения mapped_item не должен самоопределяться путем участия в определении отображения представления.

Примечание 2 - Подробности процедуры отображения определяются сущностями mapped_item и representation_map.

Пример - Рассмотрим декартово отображение одного геометрического представления на другое. Источником отображения mapping_source может быть отображение представления representation_map, ссылающееся на представление representation и размещение axis_placement, заложенное в контекст геометрического представления geometric_representation_context ссылочного представления. Элемент отображения mapped_item может ссылаться на данное отображение representation_map и на второе размещение axis_placement. В этом случае элемент mapped_item может стать элементом представления representation_item, являющимся отображением, на который производится ссылка представлением, так что источник отображения representation_map.mapping_origin налагается на цель отображения mapped_item.mapping_target.

6.1.8 Определения сущностей схемы API_ABSTRACT_SCHEMA: структуры геометрических представлений

В настоящем подразделе установлены ресурсы групповых сущностей, определенные в ИСО 10303-42 для структур геометрических представлений, являющихся частью схемы api_abstract_schema.

6.1.8.1 Сущность geometric_representation_context

Сущность geometric_representation_context является контекстом представления representation_context, в который геометрически закладываются элементы геометрического представления geometric_representation_item.

Контекст геометрического представления geometric_representation_contexti - это особое координатное пространство, не связанное с прочими координатными пространствами, за исключением тех координатных пространств, для которых применяются особые преобразования.

Спецификация на языке EXPRESS:

*)

ENTITY geometric_representation_context

SUBTYPE OF (representation_context);

coordinate_space_dimension : dimension_count;

END_ENTITY;

(*

Определение атрибута:

coordinate_space_dimension: целочисленный счетчик dimension_count размерности пространства.

Примечание - В контексте схемы api_abstract_schema OVC составляет контекст геометрического представления geometric_representation_context, в котором заложены все элементы геометрического представления. Размерность пространства dimension_count может быть равна 2 или 3 в соответствии с уровнем геометрической мощности geometrical_power_level текущего открытого вида.

6.1.8.2 Сущность geometric_representation_item

Сущность geometric_representation_item - это элемент представления representation_item, приобретающий особый смысл в результате добавления понятий геометрического положения и/или ориентации. Указанный смысл приобретается в результате:

- использования понятия декартовой точки cartesian_point или направления direction;

- прямой ссылки на декартову точку cartesian_point или направление direction;

- косвенной ссылки на декартову точку cartesian_point или направление direction.

Примечание 1 - Косвенная ссылка на декартову точку или направление означает, что заданный элемент геометрического представления geometric_representation_item ссылается на декартову точку или направление посредством одного или более промежуточных атрибутов. В большинстве случаев данная информация задается в форме размещения axis2_placement.

Пример 1 - Рассмотрим окружность. Она принимает свое геометрическое положение и ориентацию путем ссылки на размещение axis2_placement, которое, в свою очередь, ссылается на декартову точку и несколько направлений.

Пример 2 - Множественное целостное контурное представление manifold_solid_brep является элементом геометрического представления geometric_representation_item, который (посредством нескольких слоев элементов топологических представлений topological_representation_items) ссылается на кривые, поверхности и точки. С помощью дополнительных промежуточных сущностей кривые и поверхности ссылаются на декартовы точки и направления. Определения сущностей manifold_solid_geometry, topological_representation_item и surface (на языке EXPRESS) приведены в ИСО 10303-42.

Примечание 2 - Промежуточные сущности (тип representation_item) не обязаны иметь подтип geometric_representation_item. Возьмем рассмотренный выше пример с сущностью manifold_solid_brep. Промежуточным уровнем элемента представления representation_item может быть крупный план замкнутой оболочки close_shell. Данный элемент топологического представления topological_representation_item не требует задания контекста геометрического представления geometric_representation_context. Если же сущность close_shell - часть сущности manifold_solid_brep, являющейся, в свою очередь, элементом геометрического представления geometric_representation_item, то она закладывается в контекст геометрического представления. Определение сущности close_shell (на языке EXPRESS) приведено в ИСО 10303-42.

Примечание 3 - Сущность geometric_representation_item наследует необходимость связанности с контекстом представления representation_context. Правило совместимой размерности compatible_dimension гарантирует, что контекст представления representation_context является контекстом геометрического представления geometric_representation_context. В данном контексте настоящее соотношение геометрически закладывает элементы геометрического представления geometric_representation_items. Определение термина "геометрически закладывает" приведено в ИСО 10303-42.

Спецификация на языке EXPRESS:

*)

ENTITY geometric_representation_item

SUPERTYPE OF (ONEOF (point, direction, vector, placement, curve,

annotation_fill_area, surface, solid_model,

boolean_result, sphere, right_circular_cone,

right_circular_cylinder, torus, block,

right_angular_wedge, half_space_solid,

fill_area_style_hatching,

one_direction_repeat_factor))

SUBTYPE OF (representation_item);

DERIVE

dim : dimension_count := dimension_of (SELF);

WHERE

api_WR1: SIZEOF (QUERY (using_rep <* using_representations (SELF) |

NOT ('API_ABSTARCT_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT' IN

TYPEOF (using_rep.context_of_items)))) = 0;

END_ENTITY;

(*

Определение атрибута:

dim: счетчик координат dimension_count элемента геометрического представления geometric_representation_item.

Примечание 4 - Атрибут dim вычисляется сущностью coordinate_space_dimension для контекста геометрического представления geometric_representation_context, в котором геометрически закладывается элемент геометрического представления geometric_representation_item.

Примечание 5 - Элементы геометрического представления геометрически закладываются в один и более контекст геометрического представления с одинаковой размерностью пространства coordinate_space_dimension (правило совместимой размерности compatible_dimension приведено в ИСО 10303-42).

Примечание 6 - В контексте схемы api_abstract_schema все элементы геометрического представления являются подтипами элемента геометрического представления.

Примечание 7 - В контексте схемы api_abstract_schema интерфейсом создаются только точки, направления, векторы, размещения, кривые, заполненные области комментариев, поверхности, твердотельные модели, сферы, результаты булевых операций, прямые круговые конусы, прямые круговые цилиндры, торы, блоки, прямые клинья, тела в полупространстве, заполненные области штриховки и факторы повтора в одном направлении. Поэтому необходима модификация супертипа.

Комментарий к спецификации:

api_WR1: в контексте схемы api_abstract_schema любое представление, ссылающееся на элемент geometric_representation_item, должно иметь тип контекста геометрического представления geometric_representation_context.

6.1.9 Определения сущностей схемы API_ABSTRACT_SCHEMA: геометрические математические сущности

В настоящем подразделе установлены ресурсы групповых сущностей, определенные в ИСО 10303-42. Указанные ресурсы являются частью схемы api_abstract_schema.


6.1.9.1 Сущность point

Сущность point задает точку в некотором действительном декартовом координатном пространстве R, где т = 1, 2 или 3.

Спецификация на языке EXPRESS:

*)

ENTITY point

ABSTRACT SUPERTYPE OF (ONEOF (cartesian_point))

SUBTYPE OF (geometric_representation_item);

END_ENTITY;

(*

Примечание - В контексте схемы api_abstract_schema существуют только декартовы точки cartesian_point. Сущность point определяется как абстрактный супертип, все прочие подтипы, определенные в ИСО 10303-42, удаляются.

6.1.9.2 Сущность cartesian_point

Сущность cartesian_point задает точку координатами в прямоугольной декартовой координатной системе или в параметрическом пространстве. Сущность определяется в одномерном, двумерном или трехмерном пространстве в соответствии с количеством координат, указанным в перечне.

Примечание - В схеме api_abstract_schema используются только двумерные и трехмерные точки. Сущность cartesian_point всегда определяется в декартовой координатной системе.

Спецификация на языке EXPRESS:

*)

ENTITY cartesian_point

SUBTYPE OF (point);

coordinates : LIST [1:3] OF length_measure;

END_ENTITY;

(*

Определения атрибутов:

coordinates [1]: первая координата точки;

coordinates [2]: вторая координата точки (не существует в одномерном пространстве);

coordinates [3]: третья координата точки (не существует в одномерном и двумерном пространстве);

SELF\geometric_representation_item.dim: размерность пространства, в котором задана сущность point. Настоящий производный атрибут унаследован из супертипа элемента геометрического представления. Для декартовой точки он определен по числу координат в перечне.

6.1.9.3 Сущность direction

Сущность direction определяет общее направление вектора в двумерном или трехмерном пространстве. Фактические величины компонентов не оказывают влияния на заданное направление: важными являются только отношения х : у: z или х : у.

Примечание 1 - Компоненты данной сущности не нормированы. Если требуется задание единичного вектора, то он нормируется перед использованием.

Спецификация на языке EXPRESS:

*)

ENTITY direction

SUBTYPE OF (geometric_representation_item);

direction_ratios : LIST [2:3] OF REAL;

WHERE

WR1 : SIZEOF (QUERY (tmp <* direction_ratios | tmp <> 0.0)) > 0;

api_WR2: NOT ( (ABS (direction_ratios [lj) < EPS) AND

(ABS (direction_ratios [2]) < EPS) AND

(ABS (direction_ratios [3]) < EPS));

api_WR3: NOT ( ( (direction_ratios [1] < EPS) AND

(direction_ratios [1] > ZERO VALUE)) OR

( (direction_ratios [2] < EPS) AND

(direction_ratios [2] > ZERO_VALUE)) OR

( (direction_ratios [3] < EPS) AND

(direction_ratios [3] > ZERO_VALUE)));

END_ENTITY;

(*

Примечание 2 - В контексте схемы api_abstract_schema вырождение направления устанавливается дополнительными правилами типа "Где?" (WHERE RULES).

Определения атрибутов:

direction_ratio [1]: компонент по оси X;

direction_ratio [2]: компонент по оси Y;

direction_ratio [3]: компонент по оси Z (отсутствует в двумерном координатном пространстве);

SELF\geometric_representation_item.dim: размерность направления координатного пространства. Является наследованным атрибутом супертипа элемента геометрического представления geometric_representation_item; для настоящей сущности определяется количеством соотношений направления direction_ratio в перечне.

Комментарии к спецификации:

WR1: модуль вектора направления должен быть больше 0;

api_WR2: модуль вектора направления должен быть не меньше допуска EPS;

api_WR3: значения direction_ratio не могут лежать между допуском EPS и нулем ZERO_value.

6.1.9.4 Сущность vector

Сущность vector определяет вектор через его направление и модуль. Значения атрибута magnitude задают модуль вектора.

Примечание 1 - Модуль вектора не должен вычисляться по компонентам атрибута orientation. Данная форма представления вектора устраняет проблемы при вычислениях.

Пример - Вектор с модулем 2,0 мм, равнонаклоненный к координатным осям, может быть представлен атрибутом направления со значениями (1.0, 1.0, 1.0).

Спецификация на языке EXPRESS:

*)

ENTITY vector

SUBTYPE OF (geometric_representation_item);

orientation : direction;

magnitude : length_measure;

WHERE

WR1 : magnitude >= 0.0;

api_WR2 : MAX >= magnitude;

api_WR3 : magnitude >= EPS;

END_ENTITY;

(*

Примечание 2 - В контексте схемы api_abstract_schema факт вырождения сущности vector устанавливается дополнительным правилом "Где?" (WHERE RULES).

Определения атрибутов:

orientation: направление вектора;

magnitude: модуль вектора. Все векторы с модулем, равным 0.0, считаются равными вне зависимости от значения атрибута orientation',

SELF\geometric_representation_item.dim: размерность пространства, в котором определена сущность vector.

Комментарии к спецификации:

WR1: модуль должен быть положительным или равным 0;

api_WR2: модуль не может превышать значение МАХ;

api_WR3: модуль не может быть меньше допуска EPS.

6.1.9.5 Сущность placement

Сущность placement задает расположение геометрического элемента с учетом координатной системы его геометрического контекста. Данная сущность задает расположение элемента и его ориентацию (в случае использования подтипов размещения оси).

Спецификация на языке EXPRESS:

*)

ENTITY placement

SUPERTYPE OF (ONEOF (axis1_placement,

axis2_placement_2d,

axis2_placement_3d))

SUBTYPE OF (geometric_representation_item);

location : cartesian_point;

END_ENTITY;

(*

Определение атрибута:

location: геометрическое положение ссылочной точки (например, центр окружности) рассматриваемого геометрического элемента.

6.1.9.6 Сущность axis1_placement

Сущность axis1_placement определяет направление и расположение в трехмерном пространстве одной оси. Сущность axis1_placement определяется положением точки (наследованной из размещения супертипа) и направлением оси. Это либо задаваемое направление для атрибута axis, либо направление (0.0, 0.0, 1.0) по умолчанию. Фактическое направление оси задается производным атрибутом z.

Примечание - В контексте схемы api_abstract_schema направление оси определяется числом.

Спецификация на языке EXPRESS:

*)

ENTITY_axis1_placement

SUBTYPE OF (placement);

axis : OPTIONAL direction;

DERIVE

z : direction := NVL (normalise (axis), direction ( [0. 0, 0. 0, 1. 0 ])) ;

WHERE

WR1 : SELF\geometric_representation_item.dim =3;

api_WR2 : EXISTS (SELF.axis) ;

END_ENTITY;

(*

Определения атрибутов:

SELF\placement.location: ссылочная точка на оси;

axis: направление локальной оси Z;

z: стандартное направление локальной оси Z;

SELF\geometric_representation_item.dim: размерность пространства сущности axis1_placement (определяемая по расположению) всегда равна 3.

Комментарии к спецификации:

WR1: размерность координатного пространства равна 3;

api_WR2: должно быть задано направление оси axis.

6.1.9.7 Сущность axis2_placement_2d

Сущность axis2_placement_2d задает расположение и ориентацию в двумерном пространстве двух взаимно перпендикулярных осей. Сущность axis2_placement_2d определена в терминах точки (наследованной из супертипа размещения) и оси. Сущность может быть использована для позиционирования и ориентации объекта в двумерном пространстве и задания координатной системы указанного размещения. Сущность включает точку, формирующую начало координатной системы. Вектор направления завершает определение локальной координатной системы. Атрибут ref_direction определяет направление оси X. Направление оси Y определяется по направлению оси X.

Примечание - В контексте схемы api_abstract_schema задается значение для ссылочного направления ref_direction.

Спецификация на языке EXPRESS:

*)

ENTITY axis2_placement_2d

SUBTYPE OF (placement);

ref_direction : OPTIONAL direction;

DERIVE

p : LIST [2:2] OF direction := build_2axes (ref_direction);

WHERE

WR1 : SELF\geometric_representation_item.dim = 2;

api_WR2: EXISTS (SELF.ref_direction);

END_ENTITY;

(*

Определения атрибутов:

SELF\placement.location: пространственное положение ссылочной точки, определяющей начало координат ассоциированной локальной координатной системы;

ref_direction: направление, используемое для определения направления локальной оси X. Если атрибут ref_direction опущен, то данное направление берется из геометрической координатной системы;

р: набор осей локальной координатной системы;

р [1]: стандартное направление оси X. Задается как (1.0, 0.0), если атрибут ref_direction опущен;

р [2]: стандартное направление оси Y. Задается ортогонально оси р [1].

Комментарии к спецификации:

WR1: размерность пространства axis2_piacement_2d равна 2;

api_WR2: должно существовать значение ref_direction.

6.1.9.8 Сущность axis2_placement_3d

Сущность axis2_placement_3d задает расположение и ориентацию в трехмерном пространстве двух взаимно перпендикулярных осей. Сущность axis2_placement_3d определена в терминах точки (наследованной из размещения супертипа) и двух ортогональных осей. Данная сущность может использоваться для позиционирования и ориентации неосесимметричных объектов в пространстве и для определения локальной координатной системы. Сущность включает точку, задающую начало координатной системы. Для завершения размещения координатной системы необходимы два направляющих вектора. Атрибут axis задает направление оси Z, атрибут ref_direction аппроксимирует направление оси X.

Примечание 1 - Пусть атрибут z задает направление оси Z, а сущность а аппроксимирует направление оси Х. Существует два метода (математически идентичных, но различных в вычислительном отношении) для расчета направлений осей Х и Y:

a) вектор а проектируется на плоскость, определенную начальной точкой Р и вектором z. Если указанный вектор задает направление оси X по формуле х=<а-z)z>, то направление оси Y задается формулой y=<zх>;

b) если направление оси Y вычисляется по формуле y=<zа>, то направление оси X задается формулой х=<уz>.

Расчеты показывают, что первый метод более устойчив к вычислениям, чем второй. Поэтому он используется в настоящем стандарте.

Для конических кривых и элементарных поверхностей локальная координатная система, на которую производится ссылка с помощью параметрических уравнений, вычисляется по данным сущности axis2_piacement_3d.

Примечание 2 - В контексте схемы api_abstract_schema значения задаются для атрибутов axis и ref_direction.

Спецификация на языке EXPRESS:

*)

ENTITY axis2_placement_3d

SUBTYPE OF (placement);

axis : OPTIONAL direction;

ref_direction : OPTIONAL direction;

DERIVE

p : LIST [3:3] OF direction := build_axes (axis,ref_direction);

WHERE

WR1 : SELF\placement.location.dim =3;

WR2 : (NOT (EXISTS (axis))) OR (axis.dim =3);

WR3 : (NOT (EXISTS (ref_direction))) OR (ref_direction.dim =3);

WR4 : (NOT (EXISTS (axis))) OR (NOT (EXISTS 7ref_direction))) OR

(cross product (axis,ref_direction).magnitude > 0.0);

api_WR5: EXISTS (axis) AND EXISTS (ref_direction);

api_WR6: cross_product (axis, ref_direction).magnitude >= EPS;

END_ENTITY;

(*

Примечание 3 - В контексте схемы api_abstract_schema сущность api_WR6 устанавливает вырожденный случай для сущности axis2_placement_3d.

Определения атрибутов:

SELF\placement.location: пространственное положение опорной точки и начала координат ассоциированной локальной координатной системы;

axis: точное направление локальной оси Z;

ref_direction: направление, задаваемое для локальной оси Х. При необходимости для поддержания ортогональности соответствующей оси Y выполняется ее корректировка. Если атрибут axis и/или атрибут ref_direction опущены, то указанные направления берутся из геометрической координатной системы;

р: оси локальной координатной системы. При необходимости направления этих осей задаются атрибутами с соответствующими значениями по умолчанию;

р [1]: стандартное направление локальной оси X;

р [2]: стандартное направление локальной оси Y;

р [3]: стандартное направление локальной оси Z.

Примечание 4 - Интерпретация атрибутов представлена на рисунке 3.

Комментарии к спецификации:

WR1: размерность пространства атрибута SELF\placement.location равна 3;

WR2: размерность пространства атрибута axis равна 3;

WR3: размерность пространства атрибута ref_direction равна 3;

WR4: оси, задавамые атрибутами axis и ref_direction, не могут быть параллельными или непараллельными (требование функции build_axes);

api_WR5: оси axis и ref_direction должны существовать;

api_WR6: модуль векторного произведения векторов axis и direction не превышает МАХ;

api_WR7: модуль векторного произведения векторов axis и direction не может быть меньше EPS.


Axis - ось; location - размещение (начало координат); ref_direction - ссылочное направление; project onto plane normal to axis - проекция на плоскость, перпендикулярную оси

Рисунок 3 - Сущность axis2_placement_3D

6.1.10 Определения сущностей схемы API_ABSTRACT_SCHEMA: сущности геометрических кривых

В настоящем подразделе установлены ресурсы групповых сущностей для кривых, определенных в ИСО 10303-42 и являющихся частью схемы api_abstract_schema. Данные сущности, за исключением сущности line, не могут быть созданы непосредственно с помощью функций интерфейса. Они могут быть созданы только косвенно для представления особых сущностей интерфейса.

Сущность line может быть создана непосредственно для задания описаний других сущностей с учетом ограничений. Тем не менее сущность line рассматривается как математическая сущность, она ассоциирована со стилем null_style.

6.1.10.1 Сущность curve

Сущность curve интерпретируется как след точки в координатном пространстве.

Спецификация на языке EXPRESS:

*)

ENTITY curve

SUPERTYPE OF (ONEOF (line, conic, surface curve))

SUBTYPE OF (geometric_representation_item);

END_ENTITY;

(*

Примечание - В контексте схемы api_abstract_schema интерфейсом создаются только линии, конические линии и линии поверхности кривой. Таким образом, супертип оказывается отсеченным.

Дополнительные комментарии:

IP1: кривые соединяются как дуги;

IP2: длина дуги больше 0;

арi_IРЗ: длина дуги больше EPS.

6.1.10.2 Сущность line

Сущность line задает бесконечную кривую с постоянным направлением касательной. Линия определяется точкой и направлением. Положительным направлением линии является направление вектора dir.

Кривые параметризуются следующим образом:

Р=pnt,

V=dir,


.

Параметрический диапазон: .

Примечание - В контексте схемы api_abstract_schema линии могут создаваться непосредственно для задания определений других сущностей с учетом ограничений. Они могут создаваться неявно как базовые кривые basis_curve из отрезков кривых trimmed_curve для построения сущностей api_line в интерфейсе прикладного программирования.

Спецификация на языке EXPRESS:

*)

ENTITY line

SUBTYPE OF (curve);

pnt : cartesian_point;

dir : vector;

WHERE

WR1 : dir.dim = pnt.dim;

END_ENTITY;

(*

Определения атрибутов:

pnt: расположение линии;

dir: направление линии. Модуль и единицы измерения длины вектора dir оказывают влияние на параметризацию линии;

SELF\geometric_representation_item.dim: размерность координатного пространства для линии. Наследованный атрибут для супертипа элемента геометрического представления.

Комментарий к спецификации:

WR1: Сущности pnt и dir являются двумерными или трехмерными.

6.1.10.3 Сущность bounded_curve

Сущность bounded_curve задает кривую конечной длины с неидентифицируемыми конечными точками.

Примечание - В контексте схемы api_abstract_schema интерфейсом создаются только полилинии, отрезанные кривые, конечные кривые на поверхности и комбинированные кривые. Таким образом, супертипы отсекаются.

Спецификация на языке EXPRESS:

*)

ENTITY bounded_curve

SUPERTYPE OF (ONEOF (polyline, trimmed_curve, bounded_surface_curve,

composite_curve))

SUBTYPE OF (curve);

END_ENTITY;

(*

6.1.10.4 Сущность trimmed_curve

Сущность trimmed_curve определяет конечную кривую путем выбора сегмента, расположенного между двумя заданными точками ассоциированной базовой кривой. Сама базовая кривая остается неизменной. На одну базовую кривую может ссылаться несколько отрезков кривых trimmed_curve. Точки вычленения кривой определяются:

- по значению параметра;

- по геометрическому положению;

- обоими способами.

По крайней мере один из этих методов используют на каждом конце кривой. Атрибут положительного направления обхода контура sense обеспечивает недвусмысленное определение любого сегмента замкнутой кривой, например, окружности. Комбинация заданного положительного направления и двух упорядоченных конечных точек обеспечивает определение четырех конечных направленных сегментов, соединяющих две различные точки на окружности (или другой замкнутой кривой). Для обеспечения однозначности также используют свойство периодичности (цикличности) диапазона значений параметров.

Пример 1 - Угол 370° эквивалентен углу 10° (за счет периода, равного 360°).

Сущность отрезка кривой trimmed_curve имеет режим параметризации, наследованный из режима параметризации заданной ссылочной базовой кривой. Более точно значения параметра s отрезка кривой trimmed_curve получаются из параметра t базовой кривой следующим образом:

если значение атрибута sense равно "true", то ;

если значение атрибута sense равно "false", то .

Здесь t - это значение, заданное параметром trim_1 или значением параметра, соответствующим точке point_1, a t - это значение, заданное параметром trim_2 или значением параметра, соответствующим точке point_2. Результирующий отрезок кривой имеет значение параметра s в диапазоне от 0 (для первой точки вычленения) до (для второй точки вычленения).

Примечание 1 - Если базовая кривая замкнута, то может оказаться необходимым дать приращения величинам t и t за счет параметрической длины для обеспечения соответствия значению флажка направления обхода кривой.

Пример 2 - Если значение sense_agreement "true" и то t увеличивают на период.

Пример 3 - Если значение sense_agreement "false" u , mo t увеличивают на период.

Спецификация на языке EXPRESS:

*)

ENTITY trimmed_curve

SUPERTYPE OF (ONEOF (api_line, api_circular_arc, api_elliptical_arc,

api_hyperbolic_arc, api_parabolic_arc))

SUBTYPE OF (bounded_curve);

basis curve : curve;

trim_1 : SET [1:2] OF trimming_select;

trim_2 : SET [1:2] OF trimming_select;

sense_agreement : BOOLEAN;

master_representation : trimming_preference;

WHERE

WR1: (HIINDEX (trim_1) = 1) XOR (TYPEOF (trim_1 [1]) <> TYPEOF (trim_1 [2]));

WR2: (HIINDEX (trim_2) = 1) XOR (TYPEOF (trim_2 [1]) <> TYPEOF (trim_2 [2]));

END_ENTITY;

(*

Примечание 2 - В контексте схемы api_abstract_schema определяются особые подтипы для спецификации диапазонов значений или целей некоторых функций интерфейса.

Примечание 3 - В контексте схемы api_abstract_schema главное представление master_representation должно зависеть от реализации.

Примечание 4 - В контексте схемы api_abstract_schema, если базовая кривая basis_curve замкнута, то замкнутый отрезок кривой trimmed_curve (соответствующая полной базовой кривой) представляется с помощью параметра идентификации точек вычленения.

Пример 4 - Дуга окружности, заданная значениями атрибутов sense_agreement = false, trim_1 = 450 и trim_2 = 90, является замкнутой дугой окружности, направленной по часовой стрелке. Точки ее вычленения заданы пересечением базовой кривой basis_curve окружности circle и осью Y, определенной сущностью axis2_placement.

Определения атрибутов:

basis_curve: отрезок кривой. Для кривых с многократным представлением любое значение параметров, заданное точками вычленения trim_1 или trim_2, ссылается только на главное представление базовой кривой basis_curve;

trim_1: первая точка вычленения, которая может быть описана либо как декартова точка (point_1), либо как действительное значение параметра (parameter_1=t), либо обоими способами;

trim_2: вторая точка вычленения, которая может быть описана либо как декартова точка (point_2), либо как действительное значение параметра (parameter_2=t), либо обоими способами;

sense_agreement: флажок, указывающий, совпадает направление отрезка кривой trimmed_curve с заданным направлением базовой кривой basis_curve или нет.

Атрибут sense_agreement равен "true", если обход кривой производится в направлении увеличения значения параметра;

атрибут sense_agreement в противном случае равен "false".

Для открытой кривой атрибут sense_agreement равен "false", если . Если то атрибут sense_agreement равен "true". В данном случае информация о знаке направления обхода является избыточной (она существенна только для замкнутой кривой);

master_representation: используется, если параметр и точка присутствуют либо в начале, либо в конце кривой, - это указывает на предпочтительность формы. Множественное представление обеспечивает связь данных более чем одной формы, при этом данные могут быть геометрически идентичными.

Примечание 5 - Атрибут главного представления master_representation не гарантирует, что множественные формы действительно идентичны, он указывает предпочтительную форму. Это реализуется разработчиком данных. Все характеристики (например, параметризация, области и результаты вычислений для сущностей, имеющих множественные представления) являются производными главного представления. Использование прочих представлений - это компромисс для практических приложений.

Комментарии к спецификации:

WR1: задается одно значение точки вычленения trim_1 или задаются две настройки различного типа (точка и параметр);

WR2: задается одно значение точки вычленения trim_2 или задаются две настройки различного типа (точка и параметр).

Дополнительные комментарии:

IP1: если значение параметра и десятичная точка cartesian_point существуют для атрибутов trim_1 или trim_2, то они должны быть совместимыми, то есть базовая кривая basis_curve, вычисленная для указанного значения параметра, должна совпадать с заданной точкой;

IP2: если десятичная точка cartesian_point задана атрибутом trim_1 или атрибутом trim_2, то она должна лежать на базовой кривой basis_curve;

IP3: в случае замкнутой базовой кривой basis_curve, когда оба значения parameter_1 и parameter_2 существуют, они должны быть совместимы со значением флажка направления обхода кривой, то есть sense = (parameter_1 < parameter_2);

IP4: если оба значения parameter_1 и parameter_2 существуют, то parameter_1 <> parameter_2;

IP5: если значения параметра описаны атрибутами trim_1 или trim_2, то указанные значения должны находиться внутри параметрического диапазона базовой кривой basis_curve.

6.1.10.5 Сущность composite_curve

Сущность composite_curve задает комбинацию различных кривых, соединенных последовательно. Отдельные сегменты такой комбинированной кривой curve сами могут быть комбинированными composite_curve_segment. Параметризация комбинированной кривой состоит в аккумулировании параметрических диапазонов сегментов ограниченной кривой bounded_curve. Первый сегмент параметризуется в интервале от 0 до , а для i 3 2 соответственно i-й сегмент параметризуется в интервале:

от до ,

где - параметрическая длина (то есть разность между максимальным и минимальным значением параметра) k-го сегмента кривой.

Примечание 1 - В контексте схемы api_abstract_schema комбинированная кривая composite_curve используется либо для представления интерфейса сущности контура api_contour, либо для представления граничной кривой boundary_curve ограниченной поверхности curve_bounded_surface. Оба варианта кривой должны быть плоскими, замкнутыми и несамопересекающимися self_intersecting.

Спецификация на языке EXPRESS:

*)

ENTITY composite_curve

SUBTYPE OF (bounded_curve);

segments : LIST [1:?] OF composite_curve_segment;

self_intersect : LOGICAL;

DERIVE

n_segments : INTEGER := SIZEOF (segments);

closed_curve : BOOLEAN

:= segments [n_segments].transition <> discontinuous;

WHERE

WR1 : ( (NOT closed_curve) AND (SIZEOF (QUERY (temp <* segments |

temp.transition = discontinuous)) = 1)) OR

( (closed_curve) AND (SIZEOF (QUERY (temp <* segments |

temp.transition = discontinuous)) =0));

api WR2: closed_curve ;

api_WR3: NOT self_intersect ;

END_ENTITY;

(*

Примечание 2 - В контексте схемы api_abstract_schema дополнительное правило "Где?" (WHERE RULES) устанавливает требования к замкнутой комбинированной кривой composite_curve, созданной интерфейсом.

Определения атрибутов:

n_segment: число компонентов комбинированной кривой;

segments: конечные кривые сегментов, их переходы и флажки.

Атрибут перехода для последнего сегмента определяет переход от конца последнего сегмента к началу первого. Атрибут перехода может принимать значение "discontinuous", если кривая не замкнута (см. раздел 6.1.3.2);

self_intersect: указывает, является ли кривая самопересекающейся (справочно);

dim: размерность координатного пространства комбинированной кривой. Это наследуемый атрибут супертипа элемента геометрического представления;

closed_curve: указывает, является ли данная кривая замкнутой. Это определяется по коду перехода на последний сегмент.

Примечание 3 - Дополнительная информация об указанных атрибутах приведена на рисунке 4.


Discontinuous - разрывный; continuous - непрерывный; cont_same_gradient - стыковка сегментов с сохранением направления касательной; cont_same_gradient_same_curvature - стыковка сегментов с сохранением направления касательной и значения кривизны

Рисунок 4 - Комбинированная кривая

Комментарии к спецификации:

WR1: код перехода может быть разрывным только для последнего сегмента открытой кривой;

api_WR2: комбинированная кривая composite_curve должна быть замкнутой;

api_WR3: комбинированная кривая composite_curve не должна быть самопересекающейся.

Дополнительные комментарии:

IP1: атрибут same_sense для каждого сегмента описывает соответствие положительных направлений обхода. При переходе в направлении, указанном атрибутом same_sense, сегменты должны присоединяться концом к концу;

api_IP2: комбинированная кривая composite_curve должна быть плоской.

6.1.10.6 Сущность composite_curve_segment

Сущность composite_curve_segment задает конечную кривую вместе с информацией о переходе, используемой при создании комбинированной кривой composite_curve.

Примечание - В контексте схемы api_abstract_schema сегменты комбинированной кривой composite_curve_segment автоматически вычисляются интерфейсом при создании контура api_contour или плоской поверхности api_planar_surface. Поэтому переход не должен быть разрывным.

Спецификация на языке EXPRESS:

*)

ENTITY composite_curve_segment;

transition : transition_code;

same_sense : BOOLEAN;

parent_curve : curve;

INVERSE

using_curves : BAG [1:?] OF composite_curve FOR segments;

WHERE

WR1 : ('API_ABSTRACT_SCHEMA.BOUNDED_CURVE' IN TYPEOF (parent_curve));

api_WR2: (transition = continuous) OR (transition = cont_same_gradient);

END_ENTITY;

(*

Определения атрибутов:

transition: состояние перехода (то есть свойство геометрической непрерывности перехода из конечной точки предшествующего сегмента в начальную точку последующего сегмента) для комбинированной кривой composite_curve;

same_sense: индикатор, показывающий, согласуется ли направление обхода сегмента с направлением обхода первичной кривой parent_curve. Если значение атрибута same_sense "false", то точка с наивысшим значением параметра есть начальная точка сегмента;

parent_curve: конечная кривая bounded_curve, определяющая геометрический сегмент;

using_curve: множество комбинированных кривых composite_curve, использующих данный сегмент composite_curve_segment. Данное множество не должно быть пустым.

Комментарии к спецификации:

WR1: первичная кривая parent_curve должна быть ограниченной кривой bounded_curve;

api_WR2: переход transition может быть либо непрерывным, либо иметь дополнительно непрерывную касательную cont_same_gradient.

6.1.10.7 Сущность surface_curve

Сущность surface_curve задает кривую на поверхности. Рассматриваемая кривая является кривой в трехмерном пространстве curve_3d. Она может соответствовать кривой pcurve в двумерном параметрическом пространстве на поверхности. Способность данной кривой ссылаться на одну или две кривые на поверхности pcurve_or_surface позволяет настоящей сущности определять либо кривую на одной поверхности, либо кривую пересечения двух ассоциированных поверхностей. "Шов" на замкнутой поверхности также может быть представлен настоящей сущностью. В данном случае каждая ассоциированная геометрия associated_geometry представляет собой pcurve, лежащую на одной поверхности. Каждая pcurve (если таковая существует) параметризуется по направлению обхода, соответствующему кривой curve_3d. Кривая на поверхности параметризуется непосредственно либо как curve_3d, либо как pcurve в соответствии с атрибутом master_representation.

Примечание 1 - В контексте схемы api_abstract_schema surface_curve, автоматически вычисленные интерфейсом, при создании плоской поверхности api_planar_surface ссылаются на сущность плоскости.

Спецификация на языке EXPRESS:

*)

ENTITY surface_curve

SUPERTYPE OF (bounded_surface_curve)

SUBTYPE OF (curve);

curve_3d : curve;

associated_geometry : LIST [1:2] OF pcurve_or_surface;

master_representation : preferred_surface_curve_representation;

DERIVE

basis_surface : SET [1:2] OF surface

:= get_basis_surface (SELF) ;

WHERE

WR1 : curve_3d.dim =3;

WR2 : ('GEOMETRY_SCHEMA.PCURVE' IN TYPEOF (associated_geometry [1])) OR

(master_representation <> pcurve_s1);

WR3 : (' GEOMETRY_SCHEMA.PCURVE' IN TYPEOF (associated_geometry [2])) OR

(master_representation <> pcurve_s2);

WR4 : NOT ('GEOMETRY_SCHEMA.PCURVE' IN TYPEOF (curve_3d));

api_WR5 : master_representation = curve_3D;

api_WR6 : SIZEOF (SELF.associated_geometry) = 1;

api_WR7 : 'API_ABSRACT_SCHEMA.PLANE' IN

TYPE OF (SELF.associated_geometry [1]);

api_WR8 : SELF.associated_geometry [1] :=: SELF.basis_surface;

END_ENTITY;

(*

Определения атрибутов:

curve_3d: кривая, являющаяся трехмерным представлением кривой на поверхности surface_curve;

associated_geometry: перечень одной или двух pcurve (поверхностей), определяющих поверхности, ассоциированные с кривой на поверхности. Два элемента данного перечня указывают, что кривая имеет связь с двумя поверхностями, которые могут быть не разделены. Если кривая выбрана, то она идентифицирует поверхность и связанную с ней базовую кривую в параметрическом пространстве данной поверхности.

Примечание 2 - В контексте схемы api_abstract_schema ассоциированная геометрия associated_geometry ссылается на сущность plane при создании плоской поверхности api_planar_surface интерфейса прикладного программирования;

master_representation: указание на главное представление. Оно задает кривую, определяющую уникальную параметризацию кривой на поверхности.

Главное представление использует одно из значений атрибутов curve_3d, pcurve_s1 или рсиrvе_s2. Таким образом, можно указать предпочтительность 3D-curve, первой pcurve или второй рсиrvе в ассоциированном геометрическом перечне соответственно. Множественные представления способствуют установлению связи данных нескольких форм, даже если указанные данные могут быть геометрически идентичными.

Примечание 3 - Главное представление master_representation признает нецелесообразность обеспечения идентичности нескольких форм и позволяет выбрать предпочтительные формы. Выбор выполняет разработчик данных. Все характеристики (например, параметризация, область и результаты вычислений для сущностей, имеющих множественное представление) являются производными главного представления. Любое использование других представлений является компромиссом для практических приложений.

Примечание 4 - В контексте схемы api_abstract_schema главным представлением master_representation должна быть curve_3d;

basis_surface: поверхность, на которой лежит surface_curve. Она задается первым элементом перечня associated_geometry.

Примечание 5 - В контексте схемы api_abstract_schema данной поверхностью является плоскость plane для плоской поверхности api_planar_surface интерфейса прикладного программирования.

Комментарии к спецификации:

WR1: curve_3d определяется в трехмерном пространстве;

WR2: pcurve_s1 является главным представлением, если первый элемент перечня associated_geometry является pcurve;

WR3: pcurve_s2 является главным представлением, если второй элемент перечня associated_geometry является pcurve. При этом кривая pcurve_s2 не должна рассматриваться, если перечень associated_geometry содержит только один элемент;

WR4: curve_3d не должна быть pcurve;

api_WR5: главное представление master_representation должно быть curve_3D;

api_WR6: перечень associated_geometry должен содержать только один элемент;

api_WR7: если перечень associated_geometry содержит уникальный элемент, то он должен быть сущностью plane;

api_WR8: производная сущности basis_surface должна быть той же сущностью, что и уникальная сущность, содержащаяся в перечне associated_geometry.

Дополнительные комментарии:

IP1: если curve_3d и pcurve существуют, то они должны представлять одно и то же множество математических точек (то есть они должны совпадать геометрически, но могут отличаться способом параметризации);

IP2: curve_3d и любая ассоциированная с ней pcurve должны быть согласованы с учетом положительного направления их обхода.

6.1.10.8 Сущность composite_curve_on_surface

Сущность composite_curve_on_surface задает набор сегментов кривых на поверхности. Каждый сегмент должен лежать на базовой поверхности. Это может быть:

- surface_curve;

- pcurve;

- composite_curve_on_surface.

Примечание 1 - Комбинированная кривая на поверхности composite_curve_on_surface может быть включена как атрибут parent_curve сегмента комбинированной кривой composite_curve_segment, который является подтипом ограниченной кривой bounded_curve.

Примечание 2 - В контексте схемы api_abstract_schema каждый сегмент должен быть кривой на поверхности surface_curve.

Необходимо обеспечить по крайней мере непрерывность взаимного положения примыкающих сегментов. Комбинированные кривые composite_curve параметризуются путем объединения параметрических диапазонов сегментов. Диапазон значений параметра первого сегмента от 0 до , и, соответственно, диапазон значений параметра i-го сегмента:

от до ,

где - параметрическая длина (то есть разность между максимальным и минимальным значением параметра) k-го сегмента кривой.

Спецификация на языке EXPRESS:

*)

ENTITY composite_curve_on_surface

SUPERTYPE OF (boundary_curve)

SUBTYPE OF (composite_curve) ;

DERIVE

basis_surface : SET [0:2] OF surface := get_basis_surface (SELF);

WHERE

WR1 : SIZEOF (basis_surface) > 0;

WR2 : constraints_composite_curve_on_surface (SELF);

api_WR3: SIZEOF (QUERY (temp<*SELF\composite_curve.segments |

'GEOMETRY_SCHEMA.PCURVE' IN TYPEOF (temp.parent_curve)

) -- end of query

) = 0;

END_ENTITY;

(*

Определения атрибутов:

basis_surface: поверхность, на которой определена рассматриваемая комбинированная кривая;

SELF\composite_curve.n_segment: число сегментов комбинированной кривой;

SELF\composite_curve.segments: конечные кривые сегментов, их сопряжения и положительные направления обхода. Сопряжение последнего сегмента комбинированной кривой задает порядок перехода от конца последнего сегмента к началу первого. Настоящий элемент может принимать значение "discontinuous", что указывает на разрывность кривой.

Примечание 3 - В контексте схемы api_abstract_schema наследованное правило "Где?" (WHERE RULES) используемого интерфейса прикладного программирования гарантирует, что сопряжение (переход) не является разрывным;

SELF\composite_curve.self_intersect: указывает, является ли кривая самопересекающейся;

SELF\composite_curve.dim: размерность координатного пространства комбинированной кривой composite_curve;

SELF\composite_curve.closed_curve: указывает, является ли кривая замкнутой.

Комментарии к спецификации:

WR1: множество basis_surface должно содержать по крайней мере одну поверхность. Это гарантирует, что все сегменты относятся к кривой на одной и той же поверхности;

WR2: каждый рассматриваемый сегмент должен относиться к pcurve или к surface_curve либо к сегменту composite_curve_on_surface;

api_WR3: никакой из сегментов не может относиться к pcurve.

Дополнительный комментарий:

IP1: каждая первичная кривая parent_curve, на которую производится ссылка сегментом composite_curve_on_surface, должна быть комбинированной кривой на поверхности curve_on_surface и ограниченной кривой bounded_curve.

6.1.10.9 Сущность bounded_surface_curve

Сущность bounded_surface_curve задает особый подтип кривой поверхности surface_curve, имеющей свойства ограниченной кривой bounded_curve.

Спецификация на языке EXPRESS:

*)

ENTITY bounded_surface_curve

SUBTYPE OF (surface_curve, bounded_curve);

WHERE

api_WR1 : ('API_ABSTRACT_SCHEMA.BOUNDED_CURVE' IN

TYPEOF (SELF\surface_curve.curve_3d);

END_ENTITY;

(*

Комментарий к программе:

api_WR1: атрибут curve_3d супертипа surface_curve должен быть bounded_curve.

6.1.11 Определения сущностей схемы API_ABSTRACT_SCHEMA: геометрические конические сущности

В настоящем подразделе установлен групповой ресурс сущностей для curves, определенных в ИСО 10303-42 и являющихся частью схемы api_abstract_schema. Рассматриваемые сущности не могут быть созданы непосредственно с помощью функций интерфейса. Они могут быть созданы только косвенно и представляют собой особые сущности интерфейса.

6.1.11.1 Сущность conic

Сущность conic задает плоскую кривую пересечения плоскости с конусом.

Коническая кривая определяется в терминах ее внутренних геометрических свойств.

Сущность conic всегда имеет локальную координатную систему placement, определенную сущностью axis2_placement. Параметрическое представление сущности установлено в терминах настоящей локальной координатной системы placement.

Примечание - В контексте схемы api_abstract_schema конические кривые создаются только как базовые кривые для api_circular_arc, api_elliptical_arc, api_hyperbolic_arc и api_parabolic_arc в интерфейсе прикладного программирования.

Спецификация на языке EXPRESS:

*)

ENTITY conic

ABSTRACT SUPERTYPE OF (ONEOF (circle, ellipse, hyperbola, parabola))

SUBTYPE OF (curve) ;

position: axis2_placement;

WHERE

api_WR1: SIZEOF ( USEDIN (SELF,

'API_ABSTRACT_SCHEMA.TRIMMED_CURVE.BASIS_CURVE') ) = 1;

END_ENTITY;

(*

Определение атрибута:

position: расположение и ориентация конических кривых. Дальнейшие подробности интерпретации настоящего атрибута заданы для индивидуальных подтипов.

Комментарий к спецификации:

api_WR1: каждая коническая кривая используется как basis_curve одной сущностью отрезка кривой trimmed_curve.

6.1.11.2 Сущность circle

Сущность circle задает окружность по радиусу, центру и заданному положительному направлению обхода:

С = position.location;

х = position.p [1];

у = position.p[2];

z = position.p[3];

R = радиус.

Окружность задается параметром и по формуле:

.

Диапазон параметризации: .

В локальной координатной системе placement, определенной выше, уравнение окружности имеет вид С=0, где:

.

Положительное направление обхода окружности задается сущностью circle в любой ее точке в направлении вектора касательной Т к окружности:

.

Примечание 1 - Дуга окружности определяется сущностью trimmed_cirve в совокупности с сущностью circle.

Примечание 2 - В контексте схемы api_abstract_schema дуга окружности circular_arc определяется api_circular_arc.

Примечание 3 - В контексте схемы api_abstract_schema окружность создается только интерфейсом прикладного программирования как сущность basis_curve для api_circular_arc.

Спецификация на языке EXPRESS:

*)

ENTITY circle

SUBTYPE OF (conic);

radius : positive_lenght_measure;

END_ENTITY;

(*


Ref_direction - ссылочное направление; axis - ось

Рисунок 5 - Окружность

Определения атрибутов:

SELF\conic.position.location: настоящий унаследованный атрибут определяет центр окружности;

radius: радиус окружности должен быть положительным.

Примечание 4 - Интерпретация атрибутов приведена на рисунке 5.

6.1.11.3 Сущность ellipse

Сущность ellipse задает коническую кривую, определенную двумя (большой и малой) полуосями эллипса, положением эллипса (центром или серединой отрезка, соединяющего фокусы эллипса) и ориентацией эллипса. Данные эллипса:

С = position.location;

х = position.p [1];

у = position. p[2];

z = position.p[3];

R = semi_axis_1;

R = semi_axis_2.

Эллипс задается параметром и по формуле:

.

Диапазон параметризации: .

В локальной координатной системе placement, определенной выше, уравнение эллипса имеет вид С = 0, где:

.

Положительное направление обхода эллипса в любой его точке задается касательным вектором .

Примечание 1 - В контексте схемы api_abstract_schema эллипс может быть создан интерфейсом прикладного программирования только как базовая кривая для api_elliptical_arc.


Axis - ось; ref_direction - ссылочное направление; location - центр эллипса

Рисунок 6 - Эллипс

Спецификация на языке EXPRESS:

*)

ENTITY ellipse

SUBTYPE OF (conic);

semi_axis_1 : positive_length_measure;

semi_axis_2 : positive_length_measure;

END_ENTITY;

(*

Определения атрибутов:

SELF\conic.position: атрибут conic.position.location задает центр эллипса, атрибут conic.position.p[1] задает направление первой полуоси эллипса semi_axis_1;

semi_axis_1: первая полуось эллипса, должна быть положительной;

semi_axis_2: вторая полуось эллипса, должна быть положительной.

Примечание 2 - Интерпретация атрибутов указана на рисунке 6.

6.1.11.4 Сущность hyperbola

Сущность hyperbola задает коническую кривую, определенную большим и малым радиусами гиперболы, положением гиперболы (серединой отрезка, соединяющего два фокуса гиперболы) и ориентацией гиперболы. Данные гиперболы:

С = position.location;

х = position. p[1];

у = position. p[2];

z = position.p[3];

R = semi_axis;

R = semi_imag_axis.

Гипербола задается параметром и по формуле:

.

Диапазон параметризации: .

В локальной координатной системе placement, определенной выше, гипербола представляется уравнением С = 0, где:

.

Положительное направление обхода гиперболы в любой ее точке определяется вектором касательной Т:

.

На рисунке 7 изображена только одна ветвь гиперболы для положительных значений координаты х.

Примечание 1 - В контексте схемы api_abstract_schema в интерфейсе прикладного программирования гипербола может быть создана только как базовая кривая для api_hyperbolic_arc.

Спецификация на языке EXPRESS:

*)

ENTITY hyperbola

SUBTYPE OF (conic);

semi_axis : positive_length_measure;

semi_imag axis : positive_length_measure;

END_ENTITY;

(*


Semi_imag_axis - мнимая полуось гиперболы; semi_axis - действительная полуось гиперболы; ref_direction - ссылочное направление

Рисунок 7 - Гипербола

Определения атрибутов:

SELF\conic.position: расположение и ориентация конической кривой. Атрибут conic.position.location задает центр гиперболы, атрибут conic.position.p[1] задает направление действительной полуоси гиперболы. Указана только одна ветвь гиперболы для положительных значений координаты position.р [1];

semi_axis: длина действительной полуоси гиперболы. Она положительна и равна половине минимального расстояния между ветвями гиперболы;

semi_imag_axis: длина мнимой полуоси гиперболы, показана для положительных значений координаты у.

Примечание 2 - Атрибуты гиперболы указаны на рисунке 7.

Комментарии к спецификации:

WR1: длина действительной полуоси semi_axis, должна быть больше нуля.

WR2: длина мнимой полуоси semi_imag_axis, должна быть больше нуля.

6.1.11.5 Сущность parabola

Сущность parabola задает коническую кривую, определенную фокусным расстоянием, положением вершины параболы и ориентацией параболы.

Данные параболы:

С = position.location;

х = position.p[1];

у = position.p[2];

z = position.p[3];

F = focal_dist.

Парабола задается параметром и по формуле:

.

Диапазон параметризации: .

В локальной координатной системе, определенной выше, парабола представлена уравнением С=0, где:

.

Положительное направление обхода кривой в любой ее точке задается вектором касательной Т:

.

Примечание 1 - В контексте схемы api_abstract_schema в интерфейсе прикладного программирования парабола может быть создана только как базовая кривая для parabolics_arc.


Ref_direction - ссылочное направление; location - вершина параболы

Рисунок 8 - Парабола

Спецификация на языке EXPRESS:

*)

ENTITY parabola

SUBTYPE OF (conic);

focal_dist : lengt_measure;

WHERE

WR1: focal_dist <> 0.0;

END_ENTITY

(*

Определения атрибутов:

SELF\conic.position: расположение и ориентация кривой. Атрибут conic.position.location задает вершину параболы, атрибут conic.position.p [1] задает ось симметрии параболы;

focal_dist: расстояние фокуса от вершины параболы.

Примечание 2 - Атрибуты параболы представлены на рисунке 8.

Комментарий к спецификации:

WR1: фокусное расстояние не должно быть равно нулю.

6.1.12 Определение сущностей схемы API_ABSTRACT_SCHEMA: базовые кривые интерфейса прикладного программирования

В настоящем подразделе установлены сущности кривых интерфейса прикладного программирования, вычисляемых и генерируемых интерфейсом посредством спецификаций с учетом ограничений. Интерфейс имеет утилиты для определения характеристик указанных сущностей. Задание ориентации рассматриваемых сущностей (с помощью точек вычленения trim_1 и trim_2 в соответствии с соглашением о задании положительного направления обхода кривой sense_agreement) устраняет неоднозначность геометрических построений. Указанные сущности должны существовать в целевой моделирующей системе. Поэтому процесс моделирования для их реализации не определяется.

6.1.12.1 Сущность api_line

Сущность api_line задает отрезок кривой trimmed_curve линейного сегмента. Определяется сущностью trimmed_cirve в совокупности с сущностью line.

Спецификация на языке EXPRESS:

*)

ENTITY api_line

SUBTYPE OF (trimmed_curve) ;

WHERE

api_WR1 : 'API_ABSTRACT_SCHEMA.LINE' IN

TYPEOF (SELF\TRIMMED_CURVE.BASIS_CURVE);

END_ENTITY;

(*

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

Примечание 2 - В контексте схемы api_abstract_schema главное представление master_representation должно зависеть от реализации.

Примечание 3 - Данная сущность может быть использована как trimmed_curve.

Определения атрибутов:

SELF\trimmed_curve.basis_curve: линия, в пределах которой берется отрезок;

SELF\trimmed_curve.trim_1: первая точка вычленения, описываемая либо как декартова точка cartesian_point (point_1), либо действительным значением параметра (parameter_1=t), либо обоими способами;

SELF\trimmed_curve.trim_2: вторая точка вычленения, описываемая либо как декартова точка cartesian_point (point_2), либо как действительное значение параметра (parameter_2=t), либо обоими способами;

SELF\trimmed_curve.sense_agreement: флажок, указывающий, согласуется или нет направление обхода отрезка кривой с направлением обхода базовой кривой;

master_representation: главное представление, где и параметр, и точка, присутствующие на обоих концах кривой, указывают предпочтительную форму. Множественное представление позволяет устанавливать связь данных более чем одной формы, даже если эти данные могут оказаться геометрически идентичными.

Комментарий к спецификации:

api_WR1: basis_curve для кривой trimmed_curve должна быть линия.

Дополнительный комментарий:

api_IP1: api_line должна быть не меньше допуска EPS и не больше установленного максимального значения МАХ.

6.1.12.2 Сущность api_circular_arc

Сущность api_circular_arc задает отрезок кривой trimmed_curve для одного сегмента окружности. Определяется с помощью сущности trimmed_cirve в совокупности с сущностью circle.

Спецификация на языке EXPRESS:

*)

ENTITY api_circular_arc

SUBTYPE OF (trimmed_curve) ;

WHERE

api_WR1 : 'API_ABSTRACT_SCHEMA.CIRCLE' IN

TYPEOF (SELF\TRIMMED_CURVE.BASIS_CURVE);

END_ENTITY;

(*

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

Примечание 2 - В контексте схемы api_abstract_schema главное представление master_representation должно зависеть от реализации.

Примечание 3 - Данная сущность может быть применена как сущность trimmed_curve.

Примечание 4 - Если начальная и конечная точки отрезка дуги окружности api_circular_arc совпадают, то сущность api_circular_arc задает окружность с указанием положительного направления ее обхода в соответствии с соглашением sense_agreement.

Определения атрибутов:

SELF\trimmed_curve.basis_curve: окружность, из которой вычленяется дуга;

SELF\trimmed_curve.trim_1: начальная точка отрезка, описываемая либо как декартова точка cartesian_point (point_1), либо действительным значением параметра (parameter_1 = t), либо обоими способами;

SELF\trimmed_curve.trim_2: конечная точка отрезка, описываемая либо как декартова точка cartesian_point (point_2), либо как действительное значение параметра (parameter_2 = t), либо обоими способами;

SELF\trimmed_curve.sense_agreement: флажок, указывающий, согласуется или нет направление обхода отрезка кривой с направлением обхода базовой кривой;

master_representation: главное представление, где и параметр, и точка, присутствующие на обоих концах кривой, указывают предпочтительную форму. Множественное представление позволяет устанавливать связь данных более чем одной формы, даже если эти данные могут оказаться геометрически идентичными.

Комментарий к спецификации:

api_WR1: базовой кривой для отрезка кривой должна быть окружность.

Дополнительный комментарий:

api_IP1: длина дуги окружности api_circular_arc должна быть не меньше допуска EPS.

6.1.13 Определения сущностей схемы API_ABSTRACT_SCHEMA: дуги конических кривых интерфейса прикладного программирования

В настоящем подразделе установлены сущности дуг конических кривых интерфейса прикладного программирования, генерируемых с помощью функций интерфейса. Если функция, создающая дугу конической кривой, запущена, то кривая conic сначала создается как базовая кривая basis_curve дуги конической кривой, а затем указанная дуга конической кривой создается как подтип отрезка кривой trimmed_curve.

Сущности, определенные в настоящем разделе, задают диапазон значений некоторых функций интерфейса.

Примечание - Дуги конических кривых могут быть использованы как вычленения кривых trimmed_curve.

Если сущности конических кривых не существуют в целевых моделирующих системах, то моделирование выполняется интерфейсом. Настоящее моделирование производится для каждой сущности путем интерполяции. Для интерполяции в моделируемой сущности берутся две заданные конечные точки и некоторое количество внутренних точек, определенных в строке задания числа узлов интерполяции interpolation_nodes_number таблицы статуса интерфейса. Интерполирующие кривые должны быть непрерывными, с непрерывными касательными. Они должны сохранять касательные сущности в обеих конечных точках. Кривая, используемая для интерполяции, зависит от реализации. Это может быть, например, дуга окружности circular_arc. Тип кривой может быть определен внутри целевой моделирующей системы или интерфейса (например, кривые Безье). Выбор промежуточных точек интерполяции также зависит от реализации. Единственным требованием к промежуточным точкам является их равномерное (в некотором смысле) распределение.

Строка задания числа узлов интерполяции interpolation_nodes_number таблицы статуса интерфейса может запрашиваться прикладной программой. Число узлов интерполяции может быть меньше или равно некоторому максимальному значению max_interpolation_nodes_number, определенному в таблице описаний интерфейса. Указанное значение max_interpolation_nodes_number должно быть больше или равно 1.

6.1.13.1 Сущность api_elliptical_arc

Сущность api_elliptical_arc задает отрезок кривой trimmed_curve для сегмента эллипса ellipse. Определяется сущностью trimmed_cirve в совокупности с сущностью ellipse.

Спецификация на языке EXPRESS:

*)

ENTITY api_elliptical_arc

SUBTYPE OF (trimmed_curve);

WHERE

api_WR1 : 'API_ABSTRACT_SCHEMA.ELLIPSE' IN

TYPEOF (SELF\TRIMMED_CURVE.BASIS_CURVE);

END_ENTITY;

(*

Примечание 1 - Настоящая сущность интерфейса прикладного программирования задает диапазон значений некоторых функций интерфейса.

Примечание 2 - В контексте схемы api_abstract_schema главное представление master_representation должно зависеть от реализации.

Примечание 3 - Настоящая сущность может быть применена как сущность trimmed_curve.

Примечание 4 - Если начальная и конечная точки api_elliptical_arc совпадают, то сущность api_elliptical_arc задает эллипс целиком с положительным направлением обхода, соответствующим соглашению sense_agreement.

Определения атрибутов:

SELF\trimmed_curve.basis_curve: эллипс, в пределах которого вычленяется дуга;

SELF\trimmed_curve.trim_1: начальная точка отрезка, описываемая либо как декартова точка cartesian_point (point_1), либо действительным значением параметра (parameter_1=t), либо обоими способами;

SELF\trimmed_curve.trim_2: конечная точка отрезка, описываемая либо как декартова точка cartesian_point (point_2), либо как действительное значение параметра (parameter_2=t), либо обоими способами;

SELF\trimmed_curve.sense_agreement: флажок, указывающий, согласуется или нет направление обхода отрезка кривой с направлением обхода базовой кривой;

master_representation: главное представление, где и параметр, и точка, присутствующие на обоих концах кривой, указывают предпочтительную форму. Множественное представление позволяет устанавливать связь данных более чем одной формы, даже если эти данные могут оказаться геометрически идентичными.

Комментарий к спецификации:

api_WR1: базовой кривой для отрезка кривой должен быть эллипс.

Дополнительный комментарий:

IP1: длина дуги эллипса api_elliptical_arc должна быть не меньше допуска EPS.

6.1.13.2 Сущность api_hyperbolic_arc

Сущность api_hyperbolic_arc задает отрезок кривой trimmed_curve сегмента гиперболы. Определяется сущностью trimmed_cirve в совокупности с сущностью hyperbola.

Спецификация на языке EXPRESS:

*)

ENTITY api_hyperbolic_arc

SUBTYPE OF (trimmed_curve);

WHERE

api_WR1 : 'API_ABSTRACT_SCHEMA.HYPERBOLA' IN

TYPEOFF (SELF\TRIMMED_CURVE.BASIS_CURVE);

END_ENTITY;

(*

Примечание 1 - Настоящая сущность интерфейса прикладного программирования задает диапазон значений некоторой функции интерфейса.

Примечание 2 - В контексте схемы api_abstract_schema главное представление master_representation должно зависеть от реализации.

Примечание 3 - Настоящая сущность может быть применена как сущность trimmed_curve.

Определения атрибутов:

SELF\trimmed_curve.basis_curve: гипербола, в пределах которой вычленяется сегмент;

SELF\trimmed_curve.trim_1: начальная точка отрезка, описываемая либо как декартова точка cartesian_point (point_1), либо действительным значением параметра (parameter_1=t), либо обоими способами;

SELF\trimmed_curve.trim_2: конечная точка отрезка, описываемая либо как декартова точка cartesian_point (point_2), либо как действительное значение параметра (parameter_2=t), либо обоими способами;

SELF\trimmed_curve.sense_agreement: флажок, указывающий, согласуется или нет направление обхода отрезка кривой с направлением обхода базовой кривой;

master_representation: главное представление, в котором параметр и точка, присутствующие на обоих концах кривой, указывают предпочтительную форму. Множественное представление позволяет устанавливать связь данных более чем одной формы, даже если эти данные могут оказаться геометрически идентичными.

Комментарий к спецификации:

api_WR1: базовая кривая для отрезка кривой должна быть гиперболой.

Дополнительный комментарий:

api_IP1: длина дуги гиперболы api_hyperbolic_arc должна быть не меньше допуска EPS.

6.1.13.3 Сущность api_parabolic_arc

Сущность api_parabolic_arc задает отрезок кривой trimmed_curve сегмента параболы. Определяется сущностью trimmed_cirve в совокупности с сущностью parabola.

Спецификация на языке EXPRESS:

*)

ENTITY api_parabolic_arc

SUBTYPE OF (trimmed_curve);

WHERE

api_WR1 : 'API_ABSTRACT_SCHEMA.PARABOLA' IN

TYPEOF (SELF\TRIMMED_CURVE.BASIS_CURVE);

END_ENTITY;

(*

Примечание 1 - Настоящая сущность интерфейса прикладного программирования задает диапазон значений некоторой функции интерфейса.

Примечание 2 - В контексте схемы api_abstract_schema главное представление master_representation должно зависеть от реализации.

Примечание 3 - Настоящая сущность может быть применена как сущность trimmed_curve.

Определения атрибутов:

SELF\trimmed_curve.basis_curve: парабола, в пределах которой вычленяется сегмент;

SELF\trimmed_curve.trim_1: начальная точка отрезка, описываемая либо как декартова точка cartesian_point (point_1), либо действительным значением параметра (parameter_1=t), либо обоими способами;

SELF\trimmed_curve.trim_2: конечная точка отрезка, описываемая либо как декартова точка cartesian_point (point_2), либо как действительное значение параметра (parameter_2=t), либо обоими способами;

SELF\trimmed_curve.sense_agreement: флажок, указывающий, согласуется или нет направление обхода отрезка кривой с направлением обхода базовой кривой;

master_representation: главное представление, где и параметр, и точка, присутствующие на обоих концах кривой, указывают предпочтительную форму. Множественное представление позволяет устанавливать связь данных более чем одной формы, даже если эти данные могут оказаться геометрически идентичными.

Комментарий к спецификации:

api_WR1: базовая кривая для отрезка кривой должна быть параболой.

Дополнительный комментарий:

IP1: длина дуги параболы api_parabolic_arc должна быть не меньше допуска EPS.

6.1.14 Определения сущностей схемы API_ABSTRACT_SCHEMA: сущности кривых

Настоящий подраздел устанавливает две сущности кривых, создаваемых с помощью функций интерфейса: сущность polyline (групповой ресурс сущностей, определенный стандартом ИСО 10303-42 и являющийся частью схемы api_abstract_schema) и сущность api_contour интерфейса прикладного программирования.

6.1.14.1 Сущность polyline

Сущность polyline создает ограниченную кривую bounded_curve, состоящую из n-1 линейных сегментов, определенных n точками Р, Р,..., Р.

При этом i-й сегмент кривой параметризуется следующим образом:

, для ,

где - параметрический диапазон целочисленного параметра .

Примечание 1 - Если сущность polyline не существует в CAD, то она должна моделироваться посредством соединения линий. Максимальное количество узлов полилинии, допустимое в данной реализации интерфейса, не меньше величины, установленной в разделе 9.

Примечание 2 - В контексте схемы api_abstract_schema длина каждого линейного сегмента не должна быть меньше EPS или больше МАХ.

Спецификация на языке EXPRESS:

*)

ENTITY polyline

SUBTYPE OF (bounded curve) ;

points : LIST [2:?] OF cartesian_point;

END_ENTITY;

(*

Определение атрибута:

points: узлы, задающие полилинии.

Дополнительный комментарий:

api_IP1: длина каждого линейного сегмента не должна быть меньше EPS или больше МАХ.

6.1.14.2 Сущность api_contour

Сущность api_contour задает несамопересекающуюся ориентированную плоскую замкнутую комбинированную кривую composite_curve, построенную интерфейсом из базовых сущностей, дуг конических кривых и/или полилиний. Контур api_contour разрезает плоскость на два подмножества. Ограниченное подмножество является внутренним. Интерфейс должен гарантировать замкнутость контура. При этом сущности, получающиеся в результате геометрического преобразования контура с помощью интерфейса, остаются замкнутыми.

Сущность api_contour определена прикладной программой как неупорядоченный перечень сущностей кривых. Любые базовые сущности (линии api_line, дуги окружности api_circular_arc), конические дуги и сущности polyline могут быть использованы для определения контура api_contour в интерфейсе прикладного программирования при условии:

1) для любой крайней точки одной сущности существует только одна крайняя точка другой сущности в окрестности нулевого радиуса ZERO_vaiue;

2) кривая, полученная путем соединения соседних крайних точек, заданных сущностью, должна быть плоской, замкнутой и несамопересекающейся.

Указанные положения прежде всего проверяются интерфейсом. При этом перечень сущностей, определенный прикладной программой, логически переупорядочивается внутри интерфейса. Первой из переупорядоченных сущностей является первая сущность исходного перечня. Второй является сущность, содержащая только одну крайнюю точку в окрестности крайней точки первого сущности, и т.д. Начальными точками первой сущности могут быть начальная и конечная точки контура.

Если оба условия выполнены, то контур api_contour вычисляется интерфейсом. Данный процесс выполняется в два этапа: 1) моделирование некоторых сущностей; 2) результирующая сущность корректируется, чтобы гарантировать замыкание контура api_contour.

1. Контуры api_contour определяются для построения заполненных областей комментариев annotation_fill_area, плоских поверхностей api_planar_surface и твердых тел solid bodies. Таким образом, некоторые сущности не могут быть использованы для представлений контура (например, когда они не поддерживаются CAD). Только сущности базовых кривых (например, вычленения прямых api_line, дуги окружностей api_circular_arc) допускаются любым интерфейсом для представления контура. Если какие-либо сущности кривых, используемые функциями генерации контура, не допускаются интерфейсом для представления контура, то указанные сущности моделируются особой установленной процедурой.

Примечание 1 - Сущности, допустимые для представления контура, определены записями contour_entities таблицы описаний интерфейса (см. раздел 8.1). Максимальное количество сущностей на каждый контур api_contour для заданной реализации интерфейса должно быть не меньше величины, описанной в разделе 9.

2. Замкнутый контур api_contour конструируется в следующем порядке:

1) первая кривая переупорядоченного перечня дублируется вместе с базовой кривой при условии, что это отрезок кривой;

2) первый сегмент комбинированной кривой composite_curve_segment строится с помощью указанной дублированной кривой как parent_curve. При этом значение атрибута направления обхода кривой same_sense равно "true";

3) вычисляется направление direction касательного вектора текущего сегмента комбинированной кривой composite_curve_segment в его конечной точке. Вычисляется также направление касательного вектора последующего сегмента кривой (в переупорядоченном перечне кривых) в его начальной точке в окрестности конечной точки предшествующего сегмента комбинированной кривой composite_curve_segment. Таким образом, последующая кривая для последней кривой (переупорядоченного перечня кривых) оказывается первой кривой;

4) если оба направления direction параллельны, то переход transition текущего сегмента комбинированной кривой composite_curve_segment на последующий сегмент устанавливается из условия сохранения касательной сущностью cont_same_gradient, в противном случае она устанавливается из условия обеспечения непрерывности кривой сущностью continuous;

5) вплоть до окончания перечня кривых каждый composite_curve_segment вычисляется аналогично:

a) кривая дублируется базовой кривой при условии, что это отрезок кривой;

b) сегмент комбинированной кривой composite_curve_segment строится с помощью данной дублированной кривой как сущность parent_curve. Указанный сегмент composite_curve_segment называется текущим composite_curve_segmenf;

c) если первая крайняя точка дублированной кривой находится в окрестности крайней точки предшествующего сегмента комбинированной кривой composite_curve_segment, то значение атрибута направления обхода кривой same_sense текущего сегмента composite_curve_segment равно "true". В противном случае его значение равно "false". Данный атрибут определяет ориентацию текущего сегмента composite_curve_segment, а также его начало и конец;

d) если начальная точка текущего сегмента composite_curve_segment не совпадает с конечной точкой предшествующего сегмента composite_curve_segment, то basis_curve для указанного сегмента composite_curve_segment преобразуется и обеспечивает замыкание контура api_contour,

е) вычисляются направления касательных векторов текущего сегмента комбинированной кривой composite_curve_segment в его конечной точке и последующей кривой (в переупорядоченном перечне кривых) в ее конечной точке, находящейся в окрестности указанной конечной точки текущего сегмента composite_curve_segment. Если оба направления параллельны, то сопряжение текущего сегмента composite_curve_segment с последующим устанавливается сущностью cont_same_gradient. В противном случае сопряжение должно быть непрерывным. Таким образом, последующей для последней кривой (переупорядоченного перечня кривых) является первая кривая;

6) если конечная точка последнего сегмента комбинированной кривой composite_curve_segment и начальная точка первого сегмента composite_curve_segment совпадают, то создается контур api_contour, состоящий из упорядоченного перечня вычисленных сегментов composite_curve_segment. Если указанные две точки не совпадают и если оба кода перехода двух последних composite_curve_segment являются непрерывными, то последний сегмент комбинированной кривой composite_curve_segment корректируется, чтобы обеспечить замыкание контура. Если контур незамкнутый и код перехода для двух последних сегментов composite_curve_segment определен сущностью cont_same_gradient, то интерфейс аппроксимирует последний сегмент комбинированной кривой composite_curve_segment одним или двумя сегментами composite_curve_segment. Процесс аппроксимации, зависящий от реализации, должен гарантировать:

- замыкание контура;

- корректировку кода перехода transition предшествующего сегмента composite_curve_segment,

- равенство значения кода перехода transition аппроксимирующей сущности и значения кода перехода аппроксимируемого сегмента комбинированной кривой composite_curve_segment,

- увеличение аппроксимируемой сущности больше EPS.

Если интерфейс не может выполнять указанную аппроксимацию, то последняя сущность немного перемещается, чтобы обеспечить замыкание контура. При этом коды перехода двух последних сегментов комбинированной кривой composite_curve_segment изменяются соответственно. Таким образом, зацикливание переупорядоченного перечня кривых всегда предполагает следующее: предшествующей сущностью для первой сущности является последняя сущность.

Примечание 2 - Для прикладных программ можно избежать модификации какой-либо сущности в процессе построения контура. Для этого указанные программы должны использовать только допустимые сущности контура (минимально это вычленения прямых api_line и дуги окружности api_circular_arc) и гарантировать замыкание контура.

Спецификация на языке EXPRESS:

*)

ENTITY api_contour

SUBTYPE OF (composite_curve) ;

END_ENTITY;

(*

Примечание 3 - Указанная сущность интерфейса прикладного программирования используется для задания диапазона некоторых функций интерфейса.

Примечание 4 - Указанная сущность может быть применена как сущность composite_curve.

Определения атрибутов:

SELF\composite_curve. segments: упорядоченный перечень composite_curve_segment, вычисленных интерфейсом и составляющих контур api_contour интерфейса прикладного программирования;

SELF\composite_curve.self_intersect: атрибут типа LOGICAL, имеющий значение "false" и указывающий на то, что контур api_contour - несамопересекающийся;

SELF\composite_curve.n_segment: количество сущностей, равное значению, установленному прикладной программой, и плюс один, если процесс вычислений, определенный выше, требует дополнительный сегмент composite_curve_segment для обеспечения замыкания контура api_contour интерфейсом прикладного программирования;

SELF\composite_curve.closed_curve: булев атрибут, имеющий значение "true" и указывающий на замыкание контура api_contour.

Дополнительный комментарий:

api_IP1: внутри контура должна помещаться окружность диаметром EPS.

6.1.15 Определения сущностей схемы API_ABSTRACT_SCHEMA: заполненные области

Настоящий подраздел объявляет групповые ресурсы сущностей заполненной области, определенные стандартом ИСО 10303-46 и являющиеся частью схемы api_abstract_schema. Заполненные области моделируются посредством сущности заполненных областей комментариев annotation_fill_area. В контексте схемы api_abstract_schema данная сущность допустима только для 2D-видов, то есть если интерфейс открыт с уровнем геометрической мощности geometrical_power_level, равным 1. Сущность annotation_fill_area представляет собой плоскую многосвязную фигуру, внешние и внутренние границы которой являются контурами api_contour интерфейса прикладного программирования. Максимальное число внутренних границ, допустимое заданной реализацией интерфейса, должно быть не меньше величины, определенной в разделе 9 настоящего стандарта. Все контуры должны лежать в одной плоскости и не должны пересекаться. Все контуры внутренних границ заполненной области должны лежать внутри внешнего контура границ и не должны пересекаться. В контексте схемы api_abstract_schema и annotation_fill_area не содержат комментариев. Они играют две вспомогательные роли:

1) область может быть заштрихована. При этом штриховка определяется сущностью annotation_fill_area_occurrence, задающей стиль штриховки fill_area_style_hatching элемента представления annotation_fill_area;

2) область может быть просто закрашена. Область имеет фоновый цвет, который затеняет прочие сущности. При этом глобальные значения записей таблицы статуса интерфейса равны: "оn" - для записи hidden_line, "true" -для записи hidden_line_involved.

6.1.15.1 Сущность annotation_fill_area

Сущность annotation_fill_area задает множество замкнутых кривых со штриховкой, затенением, закрашиванием или клеточным заполнением. Данная сущность задается границами, представленными непересекающимися и несамопересекающимися замкнутыми кривыми curve. Указанные границы задают плоские области, заполненные в соответствии со стилем annotation_fill_area. Правила заполнения области:

- кривая, не окруженная какими-либо другими кривыми, является границей между незаполненной областью снаружи и заполненной областью внутри.

Примечание 1 - См. рисунок 9 а);

- кривая (кривая 2 на рисунке) окружает незаполненную область, если она окружена другой кривой (кривая 1 на рисунке), заполненной изнутри.

Примечание 2 - См. рисунок 9 б);

- если кривая 3 (кривая 3 на рисунке 9 а) размещается внутри кривой 2, то данная кривая окружает заполненную область.

Примечание 3 - См. рисунок 9 в);

- для каждой дополнительной кривой используется аналогичная процедура.


Filled - заполненная область; curve - кривая; unfilled - незаполненная область

Рисунок 9 - Заполнение области сущностью annotation_fiIl_aгеа

Спецификация на языке EXPRESS:

*)

ENTITY annotation_fill_area

SUBTYPE OF (geometric_representation_item);

boundaries : SET [1:?] OF curve;

WHERE

api_WR1: SIZEOF (QUERY ( temp <* SELF.boundaries |

'API_ABSTRACT_SCHEMA.API_CONTOUR' IN TYPEOF (SELF) )

) = SIZEOF (SELF.boundaries) ;

END_ENTITY;

(*

Определение атрибута:

boundaries: множество кривых curve, определяющих границы заполненной области.

Комментарий к спецификации:

api_WR1: все границы должны быть контурами api_contour.

Дополнительные комментарии:

IP1: все кривые множества SELF.boundaries должны быть замкнутыми и плоскими;

IP2: если на множестве SELF.boundaries существует две и более кривых, то все эти кривые должны лежать в одной плоскости и не пересекаться;

IP3: оси X и Y локальной координатной системы SELF.filling_position должны лежать в одной плоскости с кривыми множества SELF.boundaries [1];

арi_IРЗ: если на множестве SELF.boundaries существует два и более контура api_contour, то расстояние между двумя контурами api_contour интерфейса прикладного программирования должно быть не меньше допуска EPS.

6.1.16 Определения сущностей схемы API_ABSTRACT_SCHEMA: сущности геометрических поверхностей

Настоящий подраздел устанавливает групповой ресурс сущностей поверхностей surface, определенных стандартом ИСО 10303-42 и являющихся частью схемы api_abstract_schema. Указанные сущности не могут быть созданы непосредственно с помощью функций интерфейса. Они могут быть созданы только косвенно и представляют особые сущности интерфейса.

6.1.16.1 Сущность surface

Сущность surface задает множество соединенных точек в трехмерном пространстве. Локально поверхность всегда является двумерной и односвязной. Поверхность не должна вырождаться в точку или (как частично, так и полностью) в кривую.

Примечание 1 - См. раздел 3.1 и подраздел 4.4.48 ИСО 10303-42.

Спецификация на языке EXPRESS:

*)

ENTITY surface

SUPERTYPE OF (ONEOF (elementary_surface, bounded_surface))

SUBTYPE OF (geometric_representation_item);

END_ENTITY;

(*

Примечание 2 - В контексте схемы api_abstract_schema допустимы только плоскости plane и плоские поверхности api_planar_surface. Таким образом, супертипы оказываются отсеченными.

Дополнительные комментарии:

IP1: площадь поверхности не может быть равна нулю;

IP2: поверхности соединяются по дугам.

6.1.16.2 Сущность elementary_surface

Сущность elementary_surface задает простую аналитическую поверхность с определенным параметрическим представлением.

Спецификация на языке EXPRESS:

*)

ENTITY elementary_surface

SUPERTYPE OF (ONEOF (plane))

SUBTYPE OF (surface);

position : axis2_placement_3d;

END_ENTITY;

(*

Примечание - В контексте схемы api_abstract_schema элементарными поверхностями etementary_surface могут быть только плоскости plane. Таким образом, супертипы оказываются отсеченными.

Определение атрибута:

position: положение и ориентированность поверхности. Используется при параметризации поверхности.

6.1.16.3 Сущность plane

Сущность plane задает бесконечную поверхность с постоянной нормалью (плоскость). Поверхность определяется точкой на плоскости и направлением нормали к плоскости:

С = position.location;

х = position. p[1];

у = position. p[2];

z = position.p[3] = перпендикуляр к плоскости.

Поверхность задается параметрами и, v по формуле:

с диапазоном параметризации , . В вышеуказанной параметризации единицы длины для ортов х и y зависят от контекста плоскости.

Спецификация на языке EXPRESS:

*)

ENTITY plane

SUBTYPE OF (elementary_surface);

END_ENTITY;

(*

Определения атрибутов:

SELF\elementary_surface.position: расположение и ориентация поверхности. Атрибут унаследован из супертипа eiementary_surface;

position.location: точка на плоскости;

position.р[3]: направление, задаваемое атрибутом position.axis, определяет перпендикуляр к плоскости.

6.1.16.4 Сущность bounded_surface

Сущность bounded_surface задает поверхность конечной площади с идентифицируемыми границами.

Спецификация на языке EXPRESS:

*)

ENTITY bounded_surface

SUPERTYPE OF (ONEOF (curve_bounded_surface))

SUBTYPE OF (surface);

END_ENTITY;

(*

Примечание - В контексте схемы api_abstract_schema сущность bounded_surface может быть создана только сущностью curve_bounded_surface. Таким образом, супертипы оказываются отсеченными.

Дополнительные комментарии:

IP1: ограниченная поверхность bounded_surface имеет конечную ненулевую площадь;

IP2: ограниченная поверхность bounded_surface имеет граничные кривые.

6.1.16.5 Сущность curve_bounded_surface

Сущность curve_bounded_surface задает параметрическую поверхность, ограниченную одной или несколькими граничными кривыми. Одна из них может быть наружной границей. Количество внутренних границ не ограничено. Наружная граница может быть определена неявно, как естественная граница поверхности. При этом значение флажка implicit_outer равно "true". В этом случае по крайней мере одна внутренняя граница должна быть определена. Для некоторых типов замкнутых поверхностей (например, для цилиндра) может оказаться невозможным идентифицировать какую-либо заданную границу как наружную. На базовой поверхности basis_surface поверхность, ограниченная кривыми curve_bounded_surface, представляет собой выделенный сегмент в направлении N T из любой точки на границе, где N - нормаль к поверхности, а T - касательный вектор к граничной кривой в данной точке. Указанный сегмент выделяется дугами.

Примечание 1 - В контексте схемы api_abstract_schema сущность curve_bounded_surface может быть создана только как подтип api_planar_surface.

Спецификация на языке EXPRESS:

*)

ENTITY curve_bounded_surface

SUBTYPE OF (bounded surface) ;

basis_surface : surface;

boundaries : SET [1:?] OF boundary curve;

implicit_outer : BOOLEAN;

WHERE

WR1: NOT (implicit_outer AND

('API_ABSTRACT_SCHEMA.OUTER_BOUNDARY_CURVE' IN

TYPEOF (boundaries)));

WR2: (NOT (implicit_outer)) OR

('API_ABSTRACT_SCHEMA.BOUNDED_SURFACE' IN TYPEOF (basis_surface));

WR3: SIZEOF (QUERY (temp <* boundaries |

'API_ABSTRACT_SCHEMA.OUTER_BOUNDARY_CURVE' IN

TYPEOF (temp) ) ) <= 1;

WR4: SIZEOF (QUERY ( temp <* boundaries |

(temp\composite_curve_on_surface.basis_surface [1] :<>:

SELF.basis surface))) = 0;

END_ENTITY;

(*


Boundary_curve - ограниченная кривая; basis_surface - базовая поверхность

Рисунок 10 - Поверхность, ограниченная кривыми

Определения атрибутов:

basis_surface: базовая поверхность, на которой выделяется ограниченная поверхность;

boundaries: граничные кривые на поверхности, отличные от неявных наружных границ (если таковые имеются). С помощью сущности outer_boundary_curve не более одной кривой можно идентифицировать как наружную границу;

implicit_outer: если значение логического флажка равно "true", то естественная граница поверхности используется как наружная граница.

Примечание 2 - Интерпретация указанных атрибутов представлена на рисунке 10.

Комментарии к спецификации:

WR1: если значение атрибута implicit_outer равно "true", то явных наружных границ нет;

WR2: наружная граница должна быть определена неявно, если базовая поверхность basis_surface ограничена;

WR3: перечень границ включает не более одной наружной граничной кривой;

WR4: каждая ограниченная кривая boundary_curve должна лежать на базовой поверхности basis_surface. Это подтверждается атрибутом basis_surface супертипа комбинированной кривой на поверхности composite_curve_on_surface для каждого элемента перечня границ boundaries.

Дополнительные комментарии:

IP1: каждая кривая множества границ boundaries должна быть замкнута;

IP2: никакие две кривые из множества границ boundaries не могут пересекаться;

IP3: не более чем одна ограниченная кривая может включать любую другую ограниченную кривую. Если наружная ограниченная кривая outer_boundary_curve указана, то только она может включать в себя любую другую ограниченную кривую.

6.1.16.6 Сущность boundary_curve

Сущность boundary_curve задает тип ограниченной кривой для определения границы поверхности.

Спецификация на языке EXPRESS:

*)

ENTITY boundary_curve

SUBTYPE OF (composite_curve_on_surface) ;

WHERE

WR1: SELF\composite_curve.closed_curve;

END_ENTITY;

(*

Комментарий к программе:

WR1: значение производного атрибута замкнутой кривой closed_curve супертипа composite_curve должно быть равно "true".

6.1.16.7 Сущность outer_boundary_curve

Сущность outer_boundary_curve задает подтип сущности boundary_curve, имеющий дополнительную семантику для определения наружной границы поверхности. Не более одной такой кривой должно быть включено в множество границ поверхности, ограниченной кривыми curve_bounded_surface.

Спецификация на языке EXPRESS:

*)

ENTITY outer_boundary_curve

SUBTYPE OF (boundary_curve);

END_ENTITY;

(*

6.1.17 Определения сущностей схемы API_ABSTRACT_SCHEMA: сущности поверхностей интерфейса прикладного программирования

Настоящий подраздел описывает только сущности поверхностей, создаваемые непосредственно с помощью функций интерфейса прикладного программирования.

6.1.17.1 Сущность api_planar_surface

Сущность api_planar_surface задает только поверхности, создаваемые интерфейсом. Сущность api_planar_surface описывается сущностью api_contour, соответствующей внешней границе поверхности, а также перечнем контуров api_contour, соответствующих (возможным) внутренним границам поверхности. Максимальное количество внутренних границ определяется реализацией интерфейса. Оно должно быть не меньше величины, установленной в разделе 9. Все указанные контуры должны лежать в одной плоскости и не должны пересекаться. Все контуры, соответствующие внутренним границам, должны принадлежать ограниченной поверхности, определенной контуром api_contour, соответствующим внешней границе. Ни один из указанных контуров не должен принадлежать ограниченной поверхности, определенной другим контуром api_contour. Это означает, что плоская поверхность api_planar_surface образуется дугами. Если данное условие выполняется, то плоская поверхность api_planar_surface вычисляется интерфейсом прикладного программирования следующим образом:

1) плоскость поверхности вычисляется по ее положению. Атрибут position.location задает первую точку первого сегмента комбинированной кривой composite_curve_segment контура api_contour, соответствующего внешней границе. Ось Х, задаваемая ортогональным направлением position.р [1], касается данного сегмента комбинированной кривой composite_curve_segment. Положительное направление обхода контура определено атрибутом same_sense. Ось Z, задаваемая ортогональным направлением position.p [3], должна быть ортогональна плоскости, содержащей указанный контур api_contour, соответствующий внешней границе. Положительным направлением обхода контура api_contour является его обход против часовой стрелки по отношению к указанной ориентированной оси;

2) для каждого контура api_contour, определяющего плоскую поверхность api_planar_surface, создается экземпляр ограниченной кривой bounded_surface_curve. При этом каждый из них ссылается на контур api_contour как на кривую curve_3d. Атрибут associated_geometry указанной поверхности кривой surface_curve содержит только один элемент, который является плоскостью для поверхности api_planar_surface, описанной на этапе 1. Значение атрибута главного представления master_representation для поверхности кривой равно значению атрибута curve_3d;

3) для каждой вычисленной поверхности кривой создается экземпляр сегмента замкнутой комбинированной кривой composite_curve_segment. Данный сегмент:

- ссылается на поверхность кривой, которой он соответствует, как на первичную кривую parent_curve;

- содержит значение переменной перехода (для последнего сегмента комбинированной кривой composite_curve_segment контура api_contour, который описывается атрибутом curve_3d для соответствующей ЗD-кривой на поверхности кривой) как значение атрибута transition;

- содержит атрибут same_sense, значение которого равно "true" для composite_curve_segment, соответствующего внешней границе. Данное значение гарантирует, что все прочие сегменты замкнутой кривой composite_curve_segment ориентированы по часовой стрелке относительно оси Z плоскости для поверхности api_planar_surface (то есть относительно ортогонального направления position.р [3], см. этап 1);

4) создается экземпляр наружной ограниченной кривой outer_boundary_curve, сегменты которой содержат только один элемент composite_curve_segment, первичная кривая parent_curve которого ссылается (как на атрибут curve_3d) на контур api_contour, соответствующий внешней границе плоской поверхности api_planar_surface, создаваемой интерфейсом прикладного программирования;

5) для всех прочих сегментов замкнутой кривой создается экземпляр ограниченной кривой, сегменты которого содержат только указанные сегменты;

6) окончательно создается экземпляр поверхности api_planar_surface. Его базовой поверхностью basis_surface является поверхность api_planar_surface. Ее границами могут быть ограниченные кривые и наружная ограниченная кривая, вычисленная на этапах 4 и 5. Значение атрибута implicit_outer равно "false".

Спецификация на языке EXPRESS:

*)

ENTITY api_planar_surface

SUBTYPE OF (curve_bounded_surface) ;

WHERE

api_WR1: 'API_ABSTRACT_SCHEMA.PLANE' IN TYPEOF (SELF.basis_surface);

api_WR2: SIZEOF (QUERY ( temp <* SELF.boundaries |

'API_ABSTRACT_SCHEMA.OUTER_BOUNDARY_CURVE' IN

TYPEOF (temp) )) =1;

api_WR3: QUERY (temp <* SELF.boundaries | SIZEOF (temp.segments) <> 1) = [];

api_WR4: SELF.implicit outer = false;

END_ENTITY;

(*

Примечание 1 - Настоящая сущность интерфейса прикладного программирования задает диапазон значений некоторых функций интерфейса.

Примечание 2 - Настоящая сущность может быть применена как супертип curve_bounded_surface.

Определения атрибутов:

SELF\curve_bounded_surface.basis_surface: поверхность api_p!anar_surface;

SELF\curve_bounded_surface.boundaries: ограниченные кривые, соответствующие различным контурам api_contour, ограничивающим поверхности api_planar_surface, создаваемые интерфейсом прикладного программирования;

SELF\curve_bounded_surface.implicit_outer: значение "false", для которого наружная граница явно определена на множестве границ SELF\curve_bounded_surface.boundaries.

Комментарии к спецификации:

api_WR1: api_planar_surface должна лежать на плоскости;

api_WR2: существует только одна наружная ограниченная кривая на множестве границ SELF, boundaries;

api_WR3: каждая граница ссылается только на один элемент composite_curve_segment.

Дополнительный комментарий:

api_IP1: если существует несколько контуров api_contour в спецификации поверхности api_planar_surface, то расстояние между двумя указанными контурами api_contour должно быть не меньше допуска EPS.

6.1.18 Определения сущностей API_ABSTRACT_SCHEMA: сущности геометрических тел

Настоящий подраздел описывает групповой ресурс сущностей для булевых результатов boolean_result и трехмерных моделей, являющихся частью схемы api_abstract_schema и определенных стандартом ИСО 10303-42.

6.1.18.1 Сущность solid_model

Сущность solid_model задает полное представление номинальной формы продукта. При этом соединяются все точки внутри тела. Все точки подразделяются на находящиеся внутри тела, вне тела или на его границе.

Существует несколько различных типов представления твердотельной модели.

Спецификация на языке EXPRESS:

*)

ENTITY solid_model

SUPERTYPE OF (ONEOF ( csg_solid, swept_area_solid))

SUBTYPE OF (geometric_representation_item);

END_ENTITY;

(*

Примечание - В контексте схемы api_abstract_schema могут существовать только сущности csg_solid и swep_area_solid. Таким образом, супертипы оказываются модифицированными.

6.1.18.2 Сущность csg_solid

Сущность csg_solid - тело, представленое моделью конструктивной блочной геометрии (CSG), составлено из простейших тел, объединенных с помощью регуляризованных булевых операций. Допустимыми булевыми операциями являются пересечение, объединение и вычитание. В частном случае CSG-тело может состоять из одной простейшей CSG-сущности.

Регуляризованным подмножеством некоторого пространства является его внутреннее замыкание (настоящую фразу следует интерпретировать в обычном топологическом смысле). Для булевых результатов boolean_result регуляризация позволяет удалить зависшие кромки и прочие аномалии рассматриваемых операций.

Полное определение CSG-тела требует наличия геометрической и структурной информации.

Геометрическая информация задается твердотельной моделью. Как правило, это простейшие тела, например цилиндры, клинья, и экструдированные тела. Твердотельная модель может быть также копией тела solid_replica (преобразованным телом) или телом в полупространстве half_space_solid.

Структурная информация задается деревом (ациклическим направленным графом) boolean_results и телом конструктивной блочной геометрии csg_solid, указывающим последовательность построения. Конечные узлы графов являются геометрическими сущностями и прочими телами. Каждое тело конструктивной блочной геометрии csg_solid имеет только один ассоциированный с ним булев результат, являющийся корневым деревом (для рассматриваемого дерева в последующем могут быть получены другие булевы результаты или операнды). Значение сущности csg_solid заключается в том, что тело, определенное с помощью ассоциированного дерева, идентифицируется как самостоятельный объект и таким образом устанавливается его отличие от прочих булевых результатов, представляющих промежуточные результаты процесса геометрического построения.

Примечание - В контексте схемы api_abstract_schema функции интерфейса позволяют построить тело конструктивной блочной геометрии csg_solid с помощью булевых результатов. Сущность csg_solid соединяется дугами, однако дуги не могут использоваться для получения булева результата.

Спецификация на языке EXPRESS:

*)

ENTITY csg_solid

SUBTYPE OF (solid_model);

tree_root_expression : csg_select;

END_ENTITY;

(*

Определение атрибута:

tree_root_expression: булево выражение для сущностей и регуляризованных операторов, описывающих тело. Корень дерева булевых выражений представлен здесь как сущность boolean_result или сущность csg_primitive.

6.1.18.3 Сущность boolean_result

Сущность boolean_result определяет результат регуляризованной операции создания нового тела из двух заданных тел. Такими операциями являются регуляризованное объединение, регуляризованное пересечение и регуляризованное вычитание. При выполнении булевых операций тело рассматривается как регуляризованное множество точек.

Окончательный булев результат зависит от операции и двух операндов. При вычитании важным является порядок следования операндов. Оператор может быть либо объединением, либо пересечением, либо вычитанием.

Объединением двух тел является новое тело, содержащее все точки, принадлежащие первому операнду first_operand, второму операнду second_operand или сразу обоим операндам.

Пересечением двух тел является новое тело, которое представляет собой регуляризованное множество всех точек, принадлежащих одновременно первому и второму операндам.

Разностью двух тел является регуляризованное множество всех точек, содержащихся в первом операнде, но отсутствующих во втором операнде.

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

Спецификация на языке EXPRESS:

*)

ENTITY boolean_resuit

SUBTYPE OF (geometric_representation_item);

operator : boolean_operator;

first_operand : boolean_operand;

second_operand : boolean_operand;

END_ENTITY;

(*

Определения атрибутов:

operator: булев оператор, используемый в операции для получения результата;

first_operand: первый операнд, используемый для выполнения булевой операции;

second_operand: второй операнд, используемый для выполнения булевой операции.

6.1.18.4 Сущность csg_primitive

Настоящий подраздел содержит определения всех простейших тел (сущностей) конструктивной блочной геометрии. Такими сущностями являются сфера, прямой круговой конус, прямой круговой цилиндр, тор, блок и прямой клин. Определения типов представлены ниже.

6.1.18.4.1 Сущность sphere

Сущность sphere задает сущность конструктивной блочной геометрии сферической формы, определенную положением центра сферы и радиусом сферы.

Спецификация на языке EXPRESS:

*)

ENTITY sphere

SUBTYPE OF (geometric_representation_item);

radius : positive_lengt_measure;

centre : point;

END_ENTITY;

(*

Определения атрибутов:

radius: радиус сферы;

centre: центр сферы.

6.1.18.4.2 Сущность right_circular_cone

Сущность right_circular_cone задает сущность конструктивной блочной геометрии в форме прямого кругового конуса. Конус может быть усеченным. Он определяется осью, положением точки на оси, углом полураствора конуса и расстоянием (измеренным вдоль оси в отрицательном направлении) из точки на оси до основания конуса. Кроме того, задается радиус (ненулевой), определяющий размер и расположение верхнего основания усеченного конуса.

Спецификация на языке EXPRESS:

*)

ENTITY right_circular_cone

SUBTYPE OF (geometric_representation_item);

position : axis1_placement;

height : positive_lengt_measure;

radius : lengt_measure;

semi_angle : plane_angle_measure;

WHERE

WR1: radius >= 0.0;

END_ENTITY;

(*

Определения атрибутов:

position: положение точки на оси конуса, направление оси;

position.location: точка на оси конуса, точка на одном из плоских круговых оснований или, если радиус равен нулю, точка в вершине конуса;

position.axis: направление центральной оси симметрии конуса;

height: расстояние между плоскими круговыми основаниями конуса (если их радиус больше нуля); расстояние от основания до вершины, если радиус равен нулю;

radius: радиус конуса в точке на оси конуса (position.location). Если радиус равен нулю, то конус имеет вершину в данной точке. Если радиус больше нуля, то конус является усеченным;

semi_angle: угол полураствора конуса. Это угол между осью и образующей конической поверхностью.

Комментарий к спецификации:

WR1: радиус не может быть отрицательным.

Дополнительный комментарий:

IP1: угол полураствора конуса semi_angle, лежит в интервале между 0° и 90°.

6.1.18.4.3 Сущность right_circular_cylinder

Сущность right_circular_cylinder задает простейшее тело конструктивной блочной геометрии в форме цилиндра конечной высоты. Оно определяется точкой в центре одного плоского кругового основания, направлением оси, высотой и радиусом. Основания перпендикулярны оси. Основание представляет собой круг заданного радиуса. Высотой называется расстояние от центра первой круговой грани до центра второй круговой грани, измеренное вдоль оси в положительном направлении.

Спецификация на языке EXPRESS:

*)

ENTITY right_circular_cylinder

SUBTYPE OF (geometric_representation_item);

position : axis1_placement;

height : positive_length_measure;

radius : positive_length_measure;

END_ENTITY;

(*

Определения атрибутов:

position: положение точки на оси цилиндра, направление оси;

position.location: точка на оси цилиндра, находящаяся в центре одной плоской круговой грани;

position.axis: направление центральной оси симметрии цилиндра;

height: расстояние между плоскими круговыми гранями цилиндра;

radius: радиус цилиндра.

6.1.18.4.4 Сущность torus

Сущность torus в конструктивной блочной геометрии задает тело, построенное путем движения одной окружности (образующей) вдоль другой окружности (направляющей) большего радиуса. Направляющая задается расположением и направлением (см. сущность axis1_placement).

Спецификация на языке EXPRESS:

*)

ENTITY torus

SUBTYPE OF (geometric_representation_item);

position : axis1 placement;

major_radius : positive_length_measure;

minor_radius : positive_length_measure;

WHERE

WR1: major_radius > minor_radius;

END_ENTITY;

(*

Определения атрибутов:

position: расположение центральной точки на оси, направление оси. Задает положение центра и ориентацию плоскости направляющей;

major_radius: большой радиус направляющей;

minor_radius: малый радиус направляющей.

Комментарий к программе:

WR1: major_radius должен быть больше minor_radius.

6.1.18.4.5 Сущность block

Сущность block задает прямоугольный параллелепипед, определенный расположением и локальной координатной системой. Блок задается положительными отрезками х, y и z, отложенными вдоль осей локальной координатной системы. Блок имеет вершину в начале локальной координатной системы.

Спецификация на языке EXPRESS:

*)

ENTITY block

SUBTYPE OF (geometric_representation_item);

position : axis2_placement_3d;

x : positive_lenght_measure;

у : positive_length_measure;

z : positive_length_measure;

END_ENTITY;

(*

Определения атрибутов:

position: расположение и ориентация системы осей сущности. Блок имеет вершину в заданном положении position.location, его кромки расположены вдоль локальных осей и имеют положительное направление;

х: размер блока вдоль локальной оси X (position.р[1]);

у: размер блока вдоль локальной оси Y (position.р[2]);

z: размер блока вдоль локальной оси Z (position.р[3]).

6.1.18.4.6 Сущность right_angular_wedge

Сущность right_angular_wedge получается в результате пересечения блока с плоскостью, перпендикулярной одной из его граней. Прямой клин определяется своим расположением и локальной координатной системой. Его треугольная/трапецеидальная грань лежит в плоскости, определенной локальными осями X и Y. Данная грань определена положительными отрезками X и Y (отложенными вдоль локальных осей X и Y), отрезком LTX (не равным нулю, параллельным оси X и находящимся на расстоянии Y от начала локальной координатной системы) и отрезком, соединяющим концы сегментов Х и LTX. Оставшаяся часть клина задается положительным отрезком Z, отложенным вдоль локальной оси Z, определяющим расстояние, на которое производится экструдирование трапеции или треугольника. Если LTX равно 0, то клин имеет пять граней. В противном случае клин имеет шесть граней (см. рисунок 11).

Спецификация на языке EXPRESS:

*)

ENTITY right_angular_wedge

SUBTYPE OF (geometric_representation_item);

position : axis2 placement 3d;

x : positive_length_measure;

у : positive_length_measure;

z : positive_length_measure;

ltx : lengt_measure;

WHERE

WR1: ( (0.0 <= ltx) AND (ltx < x) ) ;

END_ENTITY;

(*


Location - начало локальной координатной системы; position attributes - атрибуты положения

Рисунок 11 - Прямой клин right_angular_wedge и его атрибуты

Определения атрибутов:

position: расположение и ориентация локальной системы осей сущности. Клин имеет одну вершину, определяемую сущностью position.location, ребра клина направлены вдоль осей локальной координатной системы в положительном направлении;

х: размер клина вдоль локальной оси X;

у: размер клина вдоль локальной оси Y;

z: размер клина вдоль локальной оси Z;

Itx: отрезок, отложенный в положительном направлении по оси X меньшей грани клина.

Комментарий к программе:

WR1: отрезок Itx должен быть неотрицательным и меньше х.

6.1.18.5 Сущность swept_area_solid

Сущность swept_area_solid формирует тело путем очерчивания плоской ограниченной поверхности по некоторой траектории. Положение в пространстве тела, полученного очерчиванием, зависит от исходного положения очерченной области swept_area, являющейся гранью результирующего тела swept_area_solid. Исключение составляет частный случай, когда очерчивание производится по замкнутой окружности на угол, равный 360°. Такое тело определяется сущностью revolved_area_solid.

Спецификация на языке EXPRESS:

*)

ENTITY swept_area_solid

SUPERTYPE OF (ONEOF (revolved_area_solid, extruded_area_solid))

SUBTYPE OF (solid_model);

swept_area : curve_bounded_surface;

WHERE

api_WR1: 'API_ABSTRACT_SCHEMA.PLANE' IN

TYPEOF (swept_area.basis_surface);

END_ENTITY;

(*

Определение атрибута:

swept_area: поверхность, ограниченная кривой curve_bounded_surface и определяющая очерченную область. Конфигурация данной области задается атрибутом boundaries для ссылочной поверхности, ограниченной кривой curve_bounded_surface.

Комментарий к программе:

api_WR1: очерченная область swept_area должна быть плоской. Атрибутом базовой поверхности для поверхности, ограниченной кривой, является плоскость.

6.1.18.6 Сущность extruded_area_solid

Сущность extruded_area_solid задает тело, полученное путем очерчивания (вытягиванием, экструдированием) ограниченной плоской поверхности вдоль прямой. Направление поступательного движения очерченной области задается вектором направления. Глубина переноса вдоль прямой задается атрибутом depth. Плоская очерченная область может иметь пустоты, которые преобразуются в объемные отверстия.

Спецификация на языке EXPRESS:

*)

ENTITY extruded_area_solid

SUBTYPE OF (swept_area_solid);

extruded_direction : direction;

depth : positive_lengt_measure;

WHERE

WR1: dot_product (

(SELF\swept_area_solid.swept_area.basis_surface\

elementary_surface.position.p [3]), extruded_direction) <> 0.0;

END_ENTITY;

(*

Определения атрибутов:

SELF\swept_area_solid.swept_area: ограниченная поверхность, очерчивающая экструдированное тело;

extruded_direction: направление очерчивания;

depth: глубина очерчивания.

Комментарий к программе:

WR1: направление экструдирования не может быть перпендикулярно очерченной плоскости.

6.1.18.7 Сущность revolved_area_solid

Сущность revolved_area_solid задает тело путем очерчивания (вращением) плоской ограниченной поверхности вокруг оси (рисунок 12). Данная ось лежит в плоскости очерченной поверхности. Ось не должна пересекать внутренность данной поверхности. Ограниченная поверхность может иметь пустоты, которые преобразуются в объемные отверстия. Вращение производится по часовой стрелке, если смотреть на него вдоль оси в положительном направлении. В частности, если точка А лежит на оси, d - направление оси и С - дуга на результирующей поверхностu [полученная очерчиванием произвольной точки р, лежащей на границе очерченной области (грани)], то данная дуга С является следом точки р, остающимся в направлении вектора d (р - А) в результате вращения области.

Спецификация на языке EXPRESS:

*)

ENTITY revolved_area_solid

SUBTYPE OF (swept_area_solid) ;

axis : axis1_placement;

angle : plane_angle_measure;

DERIVE

axis_line : line := line (axis.location, axis.z);

END_ENTITY;

(*


Angle - угол поворота; swept_area - очерченная область; axis - ось

Рисунок 12 - Тело, полученное вращением области

Определения атрибутов:

SELF\swept_area_solid.swept_area: поверхность, ограниченная кривой curve_bounded_surface, очерчивающая тело в результате вращения;

axis: ось вращения;

angle: угол поворота. Измеряется от исходного положения очерчивающей плоскости;

axis_line: линия оси вращения.

Дополнительные комментарии:

IP1: линия оси вращения axis_line должна лежать в очерченной плоскости атрибута swept_face супертипа swept_face_soiid;

IP2: линия оси вращения не должна пересекать внутренность очерченной области;

IP3: угол поворота должен лежать между 0° и 360°.

6.1.18.8 Сущность half_space_solid

Сущность half_space_solid задает тело в полупространстве, которое является регулярным подмножеством области, лежащей с одной стороны неограниченной поверхности. Часть поверхности, находящаяся в указанном полупространстве, определяется перпендикуляром к поверхности и значением флажка перпендикуляра (соглашением о выборе требуемой половины пространства по направлению перпендикуляра). Если значение флажка "true", то выбирается полупространство с перпендикуляром, направленным наружу. Если значение флажка "false", то выбирается полупространство с перпендикуляром, направленным внутрь.

Для корректно заданного тела в полупространстве half_space_solid указанная поверхность делит пространство на два полупространства. Поверхность разделения может быть многосвязной. В этом случае перпендикуляры всех частей поверхности разделения должны быть направлены в одну сторону.

Примечание 1 - Тело в полупространстве half_space_solid не является подтипом сущности твердотельной модели solid_model. Сущность half_space_solid используется только как операнд булева выражения boolean_expression.

Примечание 2 - В контексте схемы api_abstract_schema допустимы только тела в полупространстве с плоскостью в качестве базовой поверхности.

Спецификация на языке EXPRESS:

*)

ENTITY half_space_solid

SUBTYPE OF (geometric_representation_item);

base_surface : surface;

agreement_flag : BOOLEAN;

WHERE

api_WR1: 'API_ABSTRACT_SCHEMA.PLANE' IN TYPEOF (base_surface);

END_ENTITY;

(*

Определения атрибутов:

base_surface: поверхность, разделяющая пространство на два полупространства;

agreement_flag: значение флажка перпендикуляра равно "true", если перпендикуляр к базовой поверхности направлен от рассматриваемого тела в полупространстве.

Комментарий к спецификации:

api_WR1: поверхность, определяющая тело в полупространстве, должна быть плоскостью.

6.1.19 Определения сущностей схемы API_ABSTRACT_SCHEMA: сущности структурирования интерфейса прикладного программирования

Настоящий подраздел описывает ресурсы структурирования элементов геометрических представлений с помощью функций интерфейса прикладного программирования.

Спецификации и поведение структурированных сущностей, а также структурирование геометрических данных для получения указанных множеств описаны в разделе 5.4 настоящего стандарта.

6.1.19.1 Сущность api_group

Сущность api_group формирует группу, создаваемую в TDB.

Спецификация на языке EXPRESS:

*)

ENTITY api_group

SUBTYPE OF (group) ;

WHERE

api_WR1: ( (SELF\group.name = 'TDB') AND (USEDIN (SELF,'') = []) )

OR

((LENGTH (SELF\group.name) = 0 ) AND

(SIZEOF (USEDIN (SELF,'API_ABSTRACT_SCHEMA'+

'API_GROUP_ASSIGNMENT.ITEMS')

) = 1)

) ;

api_WR2: tree_api_group_structure (SELF);

END_ENTITY;

(*

Комментарии к спецификации:

api_WR1: сущности api_group присвоено имя "TDB", и ссылки других сущностей на него нет, либо именем сущности является пустая строка, и она принадлежит только одной группе api_group;

api_WR2: группы api_groups структурированы в дерево.

6.1.19.2 Сущность api_group_assignment

Сущность api_group_assignment назначает точки, кривые, поверхности, векторы, направления, локальные координатные системы, заполненные области, тела и группы для некоторой группы api_group.

Спецификация на языке EXPRESS:

*)

ENTITY api_group_assignment

SUBTYPE OF (group_assignment);

items : SET [0:?] OF api_grouped_item;

WHERE

api_WR1: 'API_ABSTRACT_SCHEMA.API_GROUP' IN

TYPEOF (SELF\ group_assignment.assigned_group);

END_ENTITY;

(*

Определение атрибута:

item: элементы api_grouped_item, назначенные для некоторой группы api_group.

Комментарий к спецификации:

api_WR1: сущность api_group_assignment производит назначения для группы api_group интерфейса прикладного программирования.

6.1.19.3 Сущность api_set

Сущность api_set создает группу для базы данных CAD.

Спецификация на языке EXPRESS:

*)

ENTITY api_set

SUBTYPE OF (group);

WHERE

api_WR1: ( (SELF\group.name = 'VIEW') AND (USEDIN (SELF,'') = []) )

OR

((SELF\group.name <> 'VIEW') AND

(SIZEOF (USEDIN (SELF,'API_ABSTRACT_SCHEMA'+

'API_GROUP_ASSIGNMENT.ITEMS')

) = 1)

) ;

api_WR2: tree_api_set_structure (SELF) ;

END_ENTITY;

(*

Комментарии к спецификации:

api_WR1: либо сущности api_set присвоено имя "VIEW" и никакие другие сущности на него не ссылаются, либо ее имя отлично от "VIEW" и она принадлежит только одной сущности api_set;

api_WR2: сущности api_set структурированы в дерево.

6.1.19.4 Сущность api_set_assignment

Сущность api_set_assignment назначает направления, векторы, локальные координатные системы, точки, кривые, поверхности, заполненные области, тела в полупространстве, результаты булевых операций, тела и множества интерфейса прикладного программирования api_set для сущности api_set.

Спецификация на языке EXPRESS:

*)

ENTITY api_set_assignment

SUBTYPE OF (group_assignment);

items : SET [0:?] OF api_set_item;

WHERE

api_WR1: 'API_ABSTRACT_SCHEMA.API_SET' IN

TYPEOF (SELF\group_assignment.assigned_group);

END_ENTITY;

(*

Определение атрибута:

item: элементы множества интерфейса прикладного программирования api_set_item, назначенные для сущности api_set.

Комментарии к спецификации:

api_WR1: назначения api_set_assignment используются только сущностью api_set.

6.2 Визуализация элементов геометрического представления

Все элементы представления representation_items, явно созданные с помощью интерфейса (как в TDB, так и в базе данных CAD), задают стиль воспроизведения. Математическим сущностям назначается нулевой стиль null_style. Воспроизведение элементов представления зависит от реализации. Если создание одного элемента представления требует неявного создания другого элемента представления (например, если кривая неявно создана как базовая кривая basis_curve для отрезка кривой trimmed_curve), то указанная сущность также ассоциируется с null_style.

Назначение стиля производится интерфейсом в процессе создания каждого representation_item. Назначение стиля производится путем создания экземпляра стилизованного элемента styled_item (для каждого representation_item), ссылающегося на данный representation_item вместе с сущностью назначения стиля presentation_style_assignment. Сущность presentation_style_assignment задает набор различных стилей воспроизведения (например, стиль точки, стиль кривой, стиль текста). Стилизация нестилизованных representation_items позволяет получить новые representation_items с заданным стилем воспроизведения. Presentation_style_assignment стилизованных элементов styled_items оказывает влияние на изображение ссылочных representation_items так же, как и на изображения всех representation_items, на которые прямо или косвенно производится ссылка указанным элементом. Изменениям подвержены только нестилизованные representation_items. Это означает, что стилизация ранее стилизованного representation_item не имеет смысла. Стилизация частично стилизованного representation_item изменяет только изображения его нестилизованных частей. Стилизация произвольного representation_item изменяет его изображение целиком. Могут быть представлены только стилизованные representation_items. Фактическое представление элементов зависит от удаления невидимых линий (см. пример визуализации трубопровода в среде CAD в 5.3.5).

В контексте схемы api_abstract_schema стилизованный элемент styled_item должен ссылаться только на одно назначение стиля представления presentation_style_assignment. В среде CAD сущность назначения стиля представления presentation_style_assignment должна содержать (для всех сущностей, кроме сущности заполнения области комментариев annotation_fill_area) только один стиль presentation_style. Таким стилем является текущее значение сущности presentation_style, соответствующее созданному representation_item в таблице статуса интерфейса.

Presentation_style_assignment для заполненной области комментариев annotation_fill_area всегда содержит одну сущность presentation_style_select, указывающую на необходимость заполнения определенной области цветом фона. Настоящий стиль определен сущностью api_externally_defined_fill_area_style интерфейса прикладного программирования. Presentation_style_assignment заполненной области комментариев annotation_fill_area может содержать любое количество стилей fill_area_style, причем каждый из них делает ссылку на сущность стиля штриховки fill_area_style_hatching.

Если текущий вид является двумерным и процесс удаления невидимых линий активизирован, то сущность presentation_style_assignment (соответствующая точкам кривых и заполненным областям fill_area) может также содержать два других стиля в интерфейсе прикладного программирования. Сущность api_pre_defined_occlusion_style используется для удаления невидимых линий вместе с его виртуальной высотой в виртуальном 3D-пространстве. Сущность api_pre_defined_virtual_sent_style описывает средства, используемые TDB для удаления невидимых линий.

Именем сущности, возвращаемой функцией интерфейса (создающей элемент представления), является имя стилизованного элемента styled_item, который ссылается на указанный элемент представления. Если сущность остается в TDB, то стиль воспроизведения может быть изменен впоследствии с помощью функции внесения изменений Chg_... (см. приложение А, раздел А.10.3).

Поставщик детали может осуществлять только логическое управление визуализацией representation_item, созданного с помощью функции интерфейса. Поэтому все стили, кроме стилей штриховки заполненных областей fill_area_style_hatching, определяются сущностью внешне определенных стилей externally_defined_style. Указанные externally_defined_style определены в настоящем стандарте, а также в других частях рассматриваемой серии стандартов, описывающих протоколы обмена видами. Часть стандарта, содержащая описания внешне определенного стиля externally_defined_style, определяет внешний источник для данного внешне определенного элемента externally_defined_item. Если некоторая реализация интерфейса использует протокол обмена видами (на который производится ссылка из программы поставщика детали для описания внешне определенного стиля externally_ defined_style, используемого для некоторого элемента представления representation_item), то первый стиль, определенный для настоящего элемента представления representation_item в настоящем стандарте, используется вместо неизвестного стиля. Сообщение об ошибке при этом не формируется.

6.2.1 Определения типов схемы API_ABSTRACT_SCHEMA: визуальное представление

Настоящий подраздел описывает ресурс группового типа, определенный стандартом ИСО 10303-46 и являющийся частью схемы api_abstract_schema.

6.2.1.1 Сущность presentation_style_select

Сущность presentation_style_select используется сущностью presentation_style_assignment, чтобы ассоциировать стиль с элементом представления representation_item. Для каждого вида стилизуемых элементов представления предусмотрен свой стиль.

Спецификация на языке EXPRESS:

*)

TYPE presentation_style_select = SELECT

(pre_defined_presentation_style,

point_style,

curve_style,

surface_style_usage,

symbol_style,

fill_area_style,

text_style,

approximation_tolerance,

externally_defined_style,

null_style);

END_TYPE;

(*

6.2.1.2 Сущность null_style

Сущность null_style указывает, что рассматриваемому элементу никакой стиль не назначен (нулевой стиль). Стили элемента представления описаны внутри его определения. Если определение элемента не содержит каких-либо описаний стиля, данный элемент не может иметь представления.

Примечание 1 - В контексте схемы api_abstract_schema сущность null_style назначается для всех элементов представления, неявно созданных с помощью интерфейса прикладного программирования, чтобы обеспечить представление явно созданных сущностей.

Пример 1 - При создании отрезка кривой (например, дуги окружности api_circular_arc) интерфейсом прикладного программирования ее базовая кривая (например, окружность) является неявно созданной.

Спецификация на языке EXPRESS:

*)

TYPE null_style = ENUMERATION OF

(null);

END_TYPE;

(*

Определение элементов перечислимого типа:

null: элемент представления, стиль которого представляется с помощью стилей, содержащихся в его определении (если таковые существуют).

Примечание 2 - В контексте схемы api_abstract_schema сущность null_style назначается для всех representation_items, неявно созданных с помощью интерфейса и позволяющих представить явно созданную сущность.

Пример 2 - При создании отрезка кривой (например, дуги окружности api_circular_arc) интерфейсом прикладного программирования ее базовая кривая (например, окружность) является неявно созданной.

6.2.1.3 Сущность size_select

Сущность size_select используется для описания размера маркеров и толщины кривых.

Спецификация на языке EXPRESS:

*)

TYPE size_select = SELECT

(positive_length_measure,

measure_with_unit,

descriptive_measure,

pre_defined_size);

END_TYPE;

(*

6.2.1.4 Сущность curve_font_or_scaled_curve_font_select

Сущность curve_font_or_scaled_curve_font_select использует сущность curve_style_font_selector, определяющую выбор типа линии для описания кривой и его масштабирования curve_style_font_and_scaling.

Спецификация на языке EXPRESS:

*)

TYPE curve_font_or_scaled_curve_font_select = SELECT

(curve_style_font_select,

curve_style_font_and_scaling);

END_TYPE;

(*

6.2.1.5 Сущность curve_style_font_select

Сущность curve_style_font_select использует сущность curve_style_font для предварительного определения типа линии pre_defined_curve_font или сущность externally_defined_curve_font для внешнего определения типа линии. Используется при описании немасштабируемых типов представления линий.

Спецификация на языке EXPRESS:

*)

TYPE curve_style_font_select = SELECT

(curve_style_font,

pre_defined_curve_font,

externally_defined_curve_font);

END_TYPE;

(*

6.2.1.6 Сущность fill_style_select

Сущность fill_style_select выбирает стиль заполнения области.

Спецификация на языке EXPRESS:

*)

TYPE fill_style_select = SELECT

(fill_area_style_colour,

pre_defined_tile_style,

externally_defined_tile_style,

fill_area_style_tiles,

pre_defined_hatch_style,

externally_defined_hatch_style,

fill_area_style_hatching);

END_TYPE;

(*

6.2.2 Определения типов схемы API_ABSTRACT_SCHEMA: типы визуального представления интерфейса прикладного программирования

Настоящий подраздел объявляет типы визуального представления схемы api_abstract_schema в интерфейсе прикладного программирования.

6.2.2.1 Сущность virtual_height_ratio

Сущность virtual_height_ratio задает действительное значение, определяющее виртуальную высоту элемента геометрического представления geometric_representation_item, который геометрически закладывается в двумерный контекст геометрического представления geometric_representation_context. Сущность virtual_height_ratio используется для предварительного затенения и удаления невидимых линий.

Спецификация на языке EXPRESS:

*)

TYPE virtual_height_ratio = REAL;

END_TYPE;

(*

6.2.3 Определения сущностей схемы API_ABSTRACT_SCHEMA: визуальное представление

Настоящий подраздел объявляет групповой ресурс сущностей, определенных ИСО 10303-46 и являющихся частью схемы api_abstract_schema.

6.2.3.1 Сущность styled_item

Сущность styled_item задает элемент представления representation_item с ассоциированным стилем воспроизведения.

Спецификация на языке EXPRESS:

*)

ENTITY styled_item

SUBTYPE OF (representation_item);

styles : SET [1:?] OF presentation_style_assignment;

item : representation_item;

WHERE

WR1 : (SIZEOF (SELF.styles) = 1)

XOR

(SIZEOF (QUERY ( pres_style <* SELF.styles |

NOT ('PRESENTATION_APPEARANCE_SCHEMA.' +

'PRESENTATION_STYLE_BY_CONTEXT' IN

TYPEOF (pres_style))

)) = 0) ;

api_WR2: api_legal_style_number (SELF) ;

END_ENTITY;

(*

Определения атрибутов:

styles: стили, назначенные для элемента представления;

item: элемент представления, для которого назначен стиль.

Комментарии к спецификации:

WR1: множество стилей должно поддерживать только один стиль. В противном случае все члены указанного множества должны быть сущностями presentation_style_by_context.

Примечание - Сущность гарантирует отсутствие конфликта стилей. Описание более одного стиля возможно, если задан контекст для применения каждого стиля;

api_WR2: функция apilegal_style_number проверяет количество стилей, косвенно назначенных для элемента представления.

6.2.3.2 Сущность presentation_style_assignment

Сущность presentation_style_assignment задает множество стилей, назначенных для элемента представления representation_item.

Спецификация на языке EXPRESS:

*)

ENTITY presentation_style_assignment;

styles : SET [1:?] OF presentation_style select;

WHERE

WR1: SIZEOF (QUERY (style1 <* SELF.styles |

NOT (SIZEOF (QUERY (style2 <* (SELF.styles - style1) |

NOT ( (TYPEOF (style1) <> TYPEOF (style2)) OR

(SIZEOF ( ['PRESENTATION_APPEARANCE_SCHEMA.'+

'SURFACE_STYLE_USAGE',

'API_ABSTRACT_SCHEMA.'+

'EXTERNALLY_DEFINED_STYLE'] *

TYPEOF (style1l)) =1)))) =0 ))) =0;

WR2: SIZEOF (QUERY (style1 <* SELF.styles |

'PRESENTATION_APPEARANCE_SCHEMA.SURFACE_STYLE_USAGE' IN

TYPEOF (stylel))) <= 2;

END_ENTITY;

(*

Определение атрибута:

styles: множество стилей воспроизведения, назначенных для элемента представления.

Комментарии к спецификации:

WR1: один и тот же стиль не должен появиться больше одного раза в заданном множестве стилей за исключением внешне определенного стиля externally_defined_style или в случае использования стиля поверхности surface_style_usage;

WR1: сущность surface_style_usage не должна использоваться чаще, чем дважды в множестве стилей.

Дополнительные комментарии:

IP1: внешне определенные стили не должны конфликтовать с прочими стилями в одной сущности presentation_style_assignment, включая прочие внешне определенные стили.

Примечание - Один стиль конфликтует с другим, если они различны, но относятся к одной и той же характеристике, например, к цвету или толщине линий. Например, один стиль может задать голубой цвет, а другой - зеленый, причем оба применены к одной и той же сущности;

IP2: каждый тип стиля должен быть уникальным.

Пример - Если для сущности line задан стиль кривой, то он должен проявиться. Если для сущности line заданы сразу стиль кривой и стиль точки, то могут проявиться и кривая, и соответствующие декартовы точки.

IP3: если существуют два экземпляра стиля поверхности surface_style_usage, то каждый должен задавать описание стиля для противоположной стороны стилизуемой поверхности.

6.2.3.3 Сущность externally_defined_style

Сущность externally_defined_style задает внешнюю ссылку на стиль воспроизведения.

Примечание - В контексте схемы api_abstract_schema внешний источник external_source должен быть частью ИСО 13584.

Спецификация на языке EXPRESS:

*)

ENTITY externally_defined_style

SUBTYPE OF (externally_defined_item);

WHERE

api_WR1 : (SELF\externally_defined_item.source.source_id LIKE

'ISO_l3584_31' )

OR

(SELF\externally_defined_item.source.source_id LIKE

'ISO_13584'+'-1'+'##');

END_ENTITY;

(*

Определения атрибутов:

SELF\externally_defined_item.source: название части ИСО 13854, содержащей определение стиля;

SELF\externally_defined_item.item_id: используемый идентификатор стиля.

Комментарий к спецификации:

api_WR1: источником внешне определенного стиля externally_defined_style должен быть либо настоящий стандарт, либо части данного стандарта с описаниями протоколов обмена видами.

6.2.3.4 Сущность curve_style

Сущность curve_style описывает визуализацию кривой.

Примечание - В контексте схемы api_abstract_schema сущность curve_style используется только для задания стиля линий штриховки. Данный стиль кривой использует предварительно заданный тип описания кривой pre_defined_curve_font, предварительно заданный размер pre_defined_size и цвет colour (цвет кривой curve_colour зависит от реализации и определяется приложением).

Спецификация на языке EXPRESS:

*)

ENTITY curve_style;

name : label;

curve_font : curve_font_or_scaled_curve_font_select;

curve_width : size_select;

curve_colour : colour;

WHERE

api_WR1 : USEDIN (SELF,'API_ABSTRACT_SCHEMA.'+

'FILL_AREA_STYLE_HATCHING.'+

'HATCH_LINE_APPEARANCE') <> [];

END_ENTITY;

(*

Определения атрибутов:

name: слово или группа слов, с помощью которых производится ссылка на стиль кривой;

curve_font: для представления типов линии используются следующие сущности: тип стиля кривой curve_style_font, масштабированный тип стиля кривой curve_style_font, предварительно определенный тип кривой pre_defined_curve_font, масштабированный предварительно определенный тип кривой pre_defined_curve_font, внешне определенный тип кривой externally_defined_curve_font или масштабированный внешне определенный тип кривой externally_defined_curve_font,

curve_width: толщина видимой части представленной кривой в единицах площади;

curve_colour: цвет видимой части кривой.

Комментарий к спецификации:

api_WR1: сущность curve_style используется для определения типа линий hatch_line_appearance штриховки заполненной области fill_area_style_hatching.

6.2.3.5 Сущность fill_area_style

Сущность fill_area_style заполняет видимые сегменты кривой, области комментариев, поверхности с мозаикой и штриховкой.

Примечание - В контексте схемы api_abstract_schema сущность fill_area_style используется для штриховки заполненной области.

Спецификация на языке EXPRESS:

*)

ENTITY fill_area_style;

name : label;

fill_styles : SET [1:?] OF fill_style_select;

WHERE

WR1 : SIZEOF (QUERY (fill_style <* SELF.fill_styles |

'PRESENTATION_APPEARANCE_SCHEMA.'+

'FILL_AREA_STYLE_COLOUR' IN

TYPEOF (fill_style)

)) <= l;

api_WR2: QUERY (fill_style <* SELF.fill_styles |

NOT ( 'API_ABSTRACT_SCHEMA.FILL_AREA_STYLE_HATCHING' IN

TYPEOF (fill_style)) ) = [];

END_ENTITY;

(*

Определения атрибутов:

name: слово или группа слов, используемых для ссылки на стиль заполненной области;

fill_styles: множество стилей заполненной области, используемых для представления видимых сегментов кривых, представления областей комментариев и представления поверхностей.

Комментарии к спецификации:

WR1: на множестве стилей fill_style существует не больше одного цвета заполнения fill_area_style_colour,

api_WR2: fill_style_select должен быть стилем штриховки fill_area_style_hatching.

6.2.3.6 Сущность fill_area_style_hatching

Сущность fill_area_style_hatching задает стилизованный шаблон кривой для штриховки видимого сегмента кривой, заполненной области комментариев и поверхности.

Примечание 1 - В контексте схемы api_abstract_schema сущность fill_area_style_hatching используется только для стилизации заполненной области.

Примечание 2 - В контексте схемы api_abstract_schema сущность hatch_line_appearance задается предварительно определенными элементами.


Reference hatch line - ссылочная линия штриховки; hatch_line_angle - угол штриховки; point_of_reference_hatch_line - точка ссылочной линии штриховки; start_of_next_hatch_line - начало следующей линии штриховки; curve_font_pattern - шаблон типа кривой; pattern_start - начало шаблона

Рисунок 13 - Стиль штриховки заполненной области

Спецификация на языке EXPRESS:

*)

ENTITY fill_area_style_hatching

SUBTYPE OF (geometric_representation_item);

hatch_line_appearance : curve_style;

start_of_next_hatch_line : one_direction_repeat_factor;

point_of_reference_hatch_line : cartesian_point;

pattern_start : cartesian_point;

hatch_line_angle : plane_angle_measure;

WHERE

api_WR1: 'API_ABSTRACT_SCHEMA.'+

'API_PRE_DEFINED_HATCH_CURVE_FONT' IN

TYPEOF (SELF.HATCH_LINE_APPEARANСE.CURVE_FONT) ;

api_WR2: 'API_ABSTRACT_SCHEMA.'+

'API_PRE_DEFINED_HATCH_WIDTH' IN

TYPEOF (SELF.HATCH_LINE_APPEARANCE.CURVE_WIDTH);

api_WR3: 'API_ABSTRACT_SCHEMA.'+

'API_PRE_DEFINED_HATCH_COLOUR' IN

TYPEOF (SELF.HATCH_LINE_APPEARANCE.CURVE_COLOUR);

END_ENTITY;

(*

Определения атрибутов:

hatch_line_appearance: стиль линий штриховки. Любой шаблон стиля кривой должен строиться от начала каждой линии штриховки. Начало ссылочной линии штриховки задается сущностью pattern_start. Начало любой другой линии штриховки задается многократным использованием сущности start_of_next_hatching_line для начала шаблона;

start_of_next_hatching_line: вектор смещения для соседних линий штриховки;

point_of_reference_hatching_line: начальная точка отображения стиля штриховки fill_area_style_hatching на кривую, заполненную область комментариев или поверхность;

pattern_start: начальная точка для задания стиля кривой ссылочной линии штриховки reference_hatching_line;

hatch_line_angle: угол штриховки.

Примечание 3 - На рисунке 13 представлен стиль штриховки области fill_area_style_hatching.

Комментарии к спецификации:

api_WR1: тип линий внешней штриховки hatch_line_appearance предварительно определяется сущностью api_pre_defined_hatch_curve_font интерфейса прикладного программирования;

api_WR2: толщина линий внешней штриховки hatch_line_appearance предварительно определяется сущностью api_pre_defined_hatching_curve_width интерфейса прикладного программирования;

api_WR3: цвет линий внешней штриховки hatch_line_appearance предварительно определяется сущностью api_pre_defined_hatching_colour интерфейса прикладного программирования.

6.2.3.7 Сущность one_direction_repeat_factor

Сущность one_direction_repeat_factor задает однонаправленный вектор повторения, используемый сущностью fill_area_style_hatching для повторного задания начальной точки последующей линии штриховки относительно предыдущей линии штриховки. Если задано начальное положение / какой-либо линии штриховки, то однонаправленный вектор повторения R, заданный сущностью one_direction_repeat_factor, определяет два новых положения в соответствии с выражением:

l+kR, где k= -1, 1.

Примечание - На рисунке 14 представлены положения вектора, определенные сущностью one_direction_repeat_factor.


Initial position - начальное положение; Repeat factor - фактор повторения

Рисунок 14 - Однонаправленный вектор повторения

Спецификация на языке EXPRESS:

*)

ENTITY one_direction_repeat_factor

SUBTYPE OF (geometric_representation_item);

repeat_factor : vector;

END_ENTITY;

(*

Определение атрибута:

repeat_factor: вектор повторения, определяющий взаимное положение линий штриховки.

6.2.3.8 Сущность colour

Сущность colour задает базовое свойство изображения элемента по закону отражения света.

Спецификация на языке EXPRESS:

*)

ENTITY colour;

END_ENTITY;

(*

6.2.3.9 Сущность pre_defined_size

Сущность pre_defined_size определяет размеры маркеров приложения.

Примечание 1 - Описание порядка использования настоящей сущности содержится в ресурсах приложения или в протоколах приложения.

Примечание 2 - В контексте схемы api_abstract_schema сущность pre_defined_size определяет толщину линий штриховки.

Спецификация на языке EXPRESS:

*)

ENTITY pre_defined_size

SUBTYPE OF (pre_defined_item);

END_ENTITY;

(*

6.2.3.10 Сущность pre_defined_curve_font

Сущность pre_defined_curve_font определяет типы кривой curve_fonts для заданного приложения.

Примечание 1 - Описание порядка использования настоящей сущности см. в ресурсах приложения или протоколах приложения.

Примечание 2 - В контексте схемы api_abstract_schema сущность pre_defined_curve_font предварительно задает тип линий штриховки.

Спецификация на языке EXPRESS:

*)

ENTITY pre_defined_curve_font

SUBTYPE OF (pre_defined_item);

END_ENTITY;

(*

6.2.3.11 Сущность pre_defined_colour

Сущность pre_defined_colour определяет цвет для заданного приложения.

Примечание 1 - Описание порядка использования настоящей сущности содержится в ресурсах приложения или протоколах приложения. Сущность pre_defined_colour позволяет ресурсам или протоколам приложения задавать значения цвета или значения компонентов цвета.

Примечание 2 - В контексте схемы api_abstract_schema сущность pre_defined_colour используется для предварительного определения цвета линий штриховки.

Спецификация на языке EXPRESS:

*)

ENTITY pre_defined_colour

SUBTYPE OF (pre_defined_item, colour) ;

END_ENTITY;

(*

6.2.3.12 Сущность annotation_occurrence

Сущность annotation_occurrence задает экземпляры комментариев путем объединения двумерной геометрии (элементов комментариев) со стилем ее воспроизведения. При этом используются следующие сущности: area_dependent_annotation_representation, view_dependent_annotation_representation, curve_style_curve_pattern, fill_area_style_tile_curve_with_style и fill_area_style_tile_coloured_region. Дополнительную информацию об указанных сущностях см. в ИСО 10303-46.

Примечание 1 - В контексте схемы api_abstract_schema сущность annotation_occurrence используется только для воспроизведения области комментариев annotatiоn_fiIl_area, для которой назначен стиль штриховки fiIl_area_styIe_hatching.

Примечание 2 - В контексте схемы api_abstract_schema интерфейсом наследуется только экземпляр заполненной области комментариев annotation_fill_area_occurrence. Таким образом, супертип оказывается отсеченным.

Спецификация на языке EXPRESS:

*)

ENTITY annotation_occurrence

SUPERTYPE OF (annotation_fill_area_occurrence)

SUBTYPE OF (styled_item);

WHERE

WR1: 'API_ABSTRACT_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN

TYPEOF (SELF);

END_ENTITY;

(*

Комментарий к спецификации:

WR1: экземпляр комментариев annotation_occurrence должен быть элементом геометрического представления geometric_representation_item.

6.2.3.13 Сущность annotation_fill_area_occurrence

Сущность annotation_fill_area_occurrence назначает стиль заполнения области комментариев annotation_fill_area, включая спецификацию точки, используемой в качестве начальной для рассматриваемой области заполнения.

Примечание 1 - В контексте схемы api_abstract_schema annotation_fill_area_occurrence используется для назначения стиля штриховки fill_area_style_hatching указанной области annotation_fill_area. При этом для указанного назначения исходная точка fill_area_style_hatching.point_of_reference_hatching_line преобразуется в целевую точку fill_style_target.

Примечание 2 - В контексте схемы api_abstract_schema (где annotation_fill_area и fill_area_style_hatching могут быть определены только в двумерном контексте геометрического представления geometric_representation_context) ось Х контекста геометрического представления стиля штриховки области fill_area_style_hatching должна быть неявно отображена на оси X в контексте геометрического представления, которому принадлежит целевая точка.

Спецификация на языке EXPRESS:

*)

ENTITY annotation_fill_area_occurrence

SUBTYPE OF (annotation_occurrence) ;

fill_style_target : point;

WHERE

WR1 : 'API_ABSTRACT_SCHEMA.ANNOTATION_FILL_AREA' IN

TYPEOF (SELF.item);

api_WR2 : SIZEOF (QUERY (psa <*

SELF\annotation_occurrence\styled_item.styles |

SIZEOF (QUERY (pss <* psa.styles |

(NOT ('API_ABSTRACT_SCHEMA.FILL_AREA_STYLE' IN

TYPEOF (pss)))

AND

(SIZEOF (QUERY (fss <* pss.fill_styles |

(NOT ('API_ABSTRACT_SCHEMA.FILL_AREA_STYLE_HATCHING)

) ) ) =0) ) ) =0) = 0) ) =0;

api_WR3 : SIZEOF (QUERY (psa <*

SELF\annotation_occurrence\styled_item.styles |

SIZEOF (QUERY (pss <* psa.styles | _

NOT pss.point_of_reference_hatch_line =

SELF.fill_style_target))= 0)) =0;

END_ENTITY;

(*

Определение атрибута:

fill_style_target: точка отсчета для расположения элементов стиля области fill_area_style, назначенных для заполненной области комментариев.

Комментарии к спецификации:

WR1: стилизованным элементом должна быть заполненная область комментариев;

api_WR2: типом сущности fill_style на множестве fill_style_select (в процессе заполнения области комментариев) может быть только тип, определяемый сущностью fill_area_style_hatching;

api_WR3: fiIl_styIe_target должна ссылаться на точку ссылочной линии штриховки point_of_reference_hatching_line при заданном стиле штриховки fill_area_style_hatching на множестве fill_style, назначенном для элемента представления annotation_fill_area.

6.2.4 Определения сущностей схемы API_ABSTRACT_SCHEMA: внешне определенные стили визуального представления

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

Указанные стили определены только логически. Это облегчает настройку интерфейса его конечным пользователем.

Указанные стили определяются как внешне определенные стили externally_defined_style. Это позволяет расширить множество доступных стилей в соответствии с протоколами обмена видами, определенными в ИСО 13584.

Все стили, определенные в настоящей части стандарта, могут быть применены. Если какой-либо из внешне определенных стилей, установленный в некотором протоколе обмена видами, не применен в некоторой реализации интерфейса, то тогда следует использовать первый по порядку стиль, определенный для данного вида элемента в настоящем стандарте. При этом сообщение об ошибке не формируется.

6.2.4.1 Сущность api_externally_defined_point_style

Сущность api_externally_defined_point_style задает визуальное представление точек.

Нижеследующие стили точек определены в настоящем стандарте. Размер и цвет точек зависит от реализации. Значения стиля по умолчанию обеспечиваются интерфейсом пользователя. Для этого обеспечиваются возможности настройки интерфейса конечным пользователем.

Примечание 1 - Прочие внешне назначенные стили точек api_externally_defined_point_style могут быть определены протоколом обмена видами в соответствии с ИСО 13584. Если какая-либо реализация интерфейса не поддерживается указанным протоколом обмена видами, то используется первый по порядку стиль, определенный в настоящем стандарте. При этом сообщение об ошибке не формируется.

Таблица 7 - Внешне определенные стили точек

Название элемента item_id

Геометрическая форма

Цвет, размер

asterisk_point

Таблица 8, стиль 1

Зависит от реализации

circle_point

Таблица 8, стиль 2

Зависит от реализации

dot_point

Таблица 8, стиль 3

Зависит от реализации

plus_point

Таблица 8, стиль 4

Зависит от реализации

square_point

Таблица 8, стиль 5

Зависит от реализации

triangle_point

Таблица 8, стиль 6

Зависит от реализации

x_point

Таблица 8, стиль 7

Зависит от реализации

virtual_point

Не определена

Не определены

Таблица 8 - Внешне определенные стили точек


Shape - стиль

Спецификация на языке EXPRESS:

*)

ENTITY api_externally_defined_point_style

SUBTYPE OF (externally_defined_style);

END_ENTITY;

(*

Примечание 2 - Настоящая сущность может быть применена как внешне определенный стиль externally_defined_style.

Определения атрибутов:

SELF\externally_defined_item.source: название части настоящего стандарта, содержащей определение стиля;

SELF_externally_defined_item.item_id: идентификатор стиля.

6.2.4.2 Сущность api_externally_defined_curve_style

Сущность api_externally_defined_curve_style задает визуальное представление кривой.

Нижеследующие стили кривых определены в настоящем стандарте. Размер, цвет и точный шаблон указанных стилей зависит от реализации. Значение по умолчанию задается интерфейсом пользователя. При этом должна быть обеспечена возможность настройки интерфейса конечного пользователя.

Примечание 1 - Прочие внешне определенные стили кривых api_externally_defined_curve_style могут быть определены протоколом обмена видами в соответствии с настоящим стандартом. Если какая-либо реализация интерфейса не поддерживает указанный протокол обмена видами, то используется первый по порядку стиль, определенный в настоящем стандарте. При этом сообщение об ошибке не формируется.

Таблица 9 - Внешне определенные стили кривых

Название элемента item_id

Описание

Вид на чертеже

Цвет, толщина линий и шаблон

plain_solid_line_thick

Сплошная толстая

Зависит от реализации

plain_solid_line_middle

Сплошная средней толщины

Зависит от реализации

plain_solid_line_thin

Сплошная тонкая

Зависит от реализации

plain_dashed_line_thick

Штриховая толстая

Зависит от реализации

plain_dashed_line_thin

Штриховая тонкая

Зависит от реализации

alternate_long_dash_dot_line_thick

Штрихпунктирная толстая

Зависит от реализации

alternate_long_dash_dot_line_thin

Штрихпунктирная тонкая

Зависит от реализации

alternate_long_dash_double_dot_line_thin

Штрихпунктирная (с двумя точками) тонкая

Зависит от реализации

alternate_long_dash_dot_line_
thin_thicken_parts

Штрихпунктирная тонкая со сплошными толстыми участками в начале, в конце и при изменении направления

Зависит от реализации

virtual_line

Для вспомогательных построений

Не определен

Не определены

Спецификация на языке EXPRESS:

*)

ENTITY api_externally_defined_curve_style

SUBTYPE OF (externally_defined_style);

END_ENTITY;

(*

Примечание 2 - Настоящая сущность может быть использована как внешне определенный стиль externally_defined_style.

Определения атрибутов:

SELF\externally_defined_item.source: название части настоящего стандарта, содержащей определение указанного стиля;

SELF\externally_defined_item.item_id: идентификатор используемого стиля.

6.2.4.3 Сущность api_externally_defined_fill_area_style

Сущность api_externally_defined_fill_area_style задает визуальное представление заполненной области. Нижеследующие стили заполнения области определены в настоящем стандарте. Цвет непрозрачного заполнения области opaque_fill_area зависит от реализации. Он должен соответствовать цвету фона.

Примечание 1 - Прочие внешне определенные стили заполнения области api_externally_defined_fill_area_style могут быть определены протоколом обмена видами в соответствии с настоящим стандартом. Если какая-либо реализация интерфейса не поддерживается настоящим протоколом обмена видами, то используется первый по порядку стиль, определенный в настоящем стандарте. При этом сообщение об ошибке не формируется.

Таблица 10 - Внешне определенные стили заполненной области

Название item_id

Описание

Цвет

оpaque_fiIl_area

Область заполняется цветом фона. Она может загораживать (затирать) другие сущности. Область может быть заштрихована

Зависит от реализации

еmpty_fill_area

Область бесцветная. Она не может загораживать (затирать) другие сущности. Область может быть заштрихована

Бесцветный

Спецификация на языке EXPRESS:

*)

ENTITY api_externally_defined_fill_area_style

SUBTYPE OF (externally_defined_style) ;

END_ENTITY;

(*

Примечание 2 - Настоящая сущность может быть применена как внешне определенный стиль externally_defined_style.

Определения атрибутов:

SELF\externally_defined_item.source: название части настоящего стандарта, содержащей определение рассматриваемого стиля;

SELF\externally_defined_item.item_id: идентификатор используемого стиля.

6.2.4.4 Сущность api_externally_defined_surface_style

Сущность api_externally_defined_surface_style задает визуальное представление поверхности.

Нижеследующие стили поверхностей определены в настоящем стандарте. Все визуальные представления поверхностей зависят от реализации. Значения по умолчанию должны быть обеспечены интерфейсом пользователя. Также должна быть обеспечена возможность настройки интерфейса конечным пользователем.

Примечание 1 - Прочие внешне определенные стили поверхностей api_externally_defined_surface_style для интерфейса прикладного программирования могут быть определены протоколом обмена видами в соответствии с настоящим стандартом. Если какая-либо реализация интерфейса не поддерживается настоящим протоколом обмена видами, то используется первый по порядку стиль, определенный в настоящем стандарте. При этом сообщение об ошибке не формируется.

Таблица 11 - Внешне определенные стили поверхности

Название item_id

Описание

Изображение

solid_surface

Представляется на экране монитора в текущем стиле, определенном приемной системой для визуализации поверхности

Зависит от реализации

Спецификация на языке EXPRESS:

*)

ENTITY api_externally_defined_surface_style

SUBTYPE OF (externally_defined_style);

END_ENTITY;

(*

Примечание 2 - Настоящая сущность может быть применена как внешне определенный стиль externally_defined_style.

Определения атрибутов:

SELF\externally_defined_item.source: название части настоящего стандарта, содержащей определение рассматриваемого стиля;

SELF\externally_defined_item.item_id: идентификатор используемого стиля.

6.2.5 Определения сущностей схемы API_ABSTRACT_SCHEMA: предварительно определенные стили визуального представления

Настоящий подраздел описывает предварительно определенные стили, описанные в настоящем стандарте. На них могут производиться ссылки из прикладных программ, задающих логику визуализации геометрических сущностей и комментариев. Свойства предварительно определенных стилей заданы для линий штриховки, а также для режимов затенения двумерных областей.

6.2.5.1 Сущность api_pre_defined_hatching_width

Сущность api_pre_defined_hatching_width задает описание логической толщины линий штриховки.

Толщина линий предварительно определена в настоящем стандарте. Конкретная толщина линии зависит от применения. Значение по умолчанию обеспечивается интерфейсом пользователя. Необходимо обеспечить возможность настройки интерфейса конечного пользователя.

Таблица 12 - Предварительно определенная толщина линий штриховки

Название

Описание

Толщина линии

thin_hatching_line

Тонкие линии. Используются для штриховки областей проекта изделия из металла

Зависит от реализации

middle_thick_hatching_line

Линии средней толщины. Используются для особых целей

Зависит от реализации

thick_hatching_line

Толстые линии. Используются для особых целей

Зависит от реализации

Спецификация на языке EXPRESS:

*)

ENTITY api_pre_defined_hatch_width

SUBTYPE OF (pre_defined_size);

WHERE

api_WR1: SELF\pre_defined_item.name IN ['thin_hatch_line',

'middle_thick_hatch_line',

'thick_hatch_line'];

END_ENTITY;

(*

Примечание - Если штриховка создана в базе данных CAD, то толщина линий штриховки может быть представлена положительной мерой длины positive_length_measure в соответствии со значением, генерируемым реализацией интерфейса.

Определение атрибута:

SELF\pre_defined_item.name: метка используемой толщины линии штриховки.

Комментарий к спецификации:

api_WR1: имя определено в настоящем стандарте.

6.2.5.2 Сущность api_pre_defined_hatch_curve_font

Сущность api_pre_defined_hatch_curve_font задает описание типов линий штриховки.

Нижеследующие типы предварительно определены в настоящем стандарте.

Таблица 13 - Сегменты линий и отступы для предварительно определенных типов штриховки

Название

Сегмент
(мм)

Отступ
(мм)

Сегмент
(мм)

Отступ
(мм)

Сегмент
(мм)

Отступ
(мм)

continuous

dashed

4.0

1.5

1.0

1.0

chain

7.0

1.0

1.0

1.0

1.0

1.0

chain_double_dash

7.0

1.0

dotted

1.0

1.0

Спецификация на языке EXPRESS:

*)

ENTITY api_pre_defined_hatsh_curve_font

SUBTYPE OF (pre_defined_hatsh_curve_font) ;

WHERE

api_WR1: SELF\pre_defined_item, name IN ['continious',

'dashed',

'chain',

'chain_double_dash',

'dotted'];

END_ENTITY;

(*

Определение атрибута:

SELF\pre_defined_item.name: метка используемого типа линии штриховки.

Комментарий к спецификации:

api_WR1: имя определено в настоящем стандарте.

6.2.5.3 Сущность api_pre_defined_hatch_colour

Сущность api_pre_defined_hatch_coloиг задает логический цвет линии штриховки.

Цвет предварительно определен в настоящем стандарте. Конкретное значение цвета зависит от реализации. Значение по умолчанию обеспечивается интерфейсом пользователя. Должна быть обеспечена возможность настройки интерфейса конечным пользователем.

Таблица 14 - Предварительно определенный цвет штриховки

Название

Описание

Цвет

hateh_line_colour

Цвет штриховки

Зависит от реализации

Спецификация на языке EXPRESS:

*)

ENTITY api_pre_defined_hatch_colour

SUBTYPE OF (pre_defined_colour);

WHERE

api_WR1: SELF\pre_defined_item.name ='hatch_line colour';

END_ENTITY;

(*

Примечание - Если штриховка создана в базе данных CAD, то цвет штриховки может быть определен значением цвета в соответствии с настройкой реализации интерфейса.

Определение атрибута:

SELF\pre_defined_item.имя: метка используемого цвета.

Комментарий к спецификации:

api_WR1: имя определено в настоящем стандарте.

6.2.5.4 Сущность api_pre_defined_occlusion_style

Сущность api_pre_defined_occlusion_style указывает, что стилизованный элемент styled_item должен быть включен в глобальный процесс удаления невидимых линий. Сущность определяет виртуальную высоту styled_item в виртуальном 3D-пространстве.

Примечание 1 - Если виртуальная высота не ассоциирована с текущим стилем, то он не включен в процесс удаления невидимых линий.

Примечание 2 - Если CAD обеспечивает ресурсы предварительного затенения в 2D-пространстве, то настоящий стиль должен отображаться на указанные ресурсы и процесс удаления невидимых линий реализуется CAD.

Примечание 3 - Если представление формы shape_representation создано в репозитории (соответствующем ИСО 10303 и требованиям прикладной программы, обеспечивающей выполнение соотношений предварительного затенения), то процесс удаления невидимых линий должен отображать настоящий стиль поверх предварительного затенения. Если прикладная программа, удовлетворяющая требованиям ИСО 10303, не обеспечивает выполнения соотношений предварительного затенения, то невидимые линии должны быть вычислены интерфейсом. При этом только видимые сущности (на языке EXPRESS) должны быть созданы в репозитории в соответствии с ИСО 10303 и требованиями прикладной программы.

Таблица 15 - Предварительно определенный стиль невидимых линий

Название

Описание

Цвет

hidden_line_no_changed

Невидимая линия не изменяется

Зависит от реализации

hidden_line_dashed

Невидимая линия является штриховой

Зависит от реализации

hidden_line_invisible

Линия невидима

Зависит от реализации

Спецификация на языке EXPRESS:

*)

ENTITY api_pre_defined_occlusion_style

SUBTYPE OF (pre_defined_presentation_style);

view_level: virtual_height_ratio;

WHERE

api_WR1: SELF\pre_defined_item.name IN ['hidden_line_no_changed',

'hidden_line_dashed',

'hidden_line_invisible'];

END_ENTITY;

(*

Определения атрибутов:

SELF\pre_defined_item.имя: метка используемого стиля невидимых линий;

view_level: виртуальная высота стилизованного элемента styled_item в виртуальном 3D-пространстве.

Комментарий к спецификации:

api_WR1: предварительно определенное имя настоящего стиля выбирается из списка атрибутов: hidden_line_no_changed, hidden_line_dashed или hidden_line_invisible.

6.2.5.5 Сущность api_pre_defined_vitually_sent_style

Сущность api_pre_defined_vitually_sent_style указывает, что стилизованный элемент styled_item (остающийся в TDB для реализации глобального процесса удаления невидимых линий) теперь недоступен для прикладной программы. По окончании процесса удаления невидимых линий данный элемент отправляется в CAD.

Примечание 1 - Предварительно определенный стиль представления pre_defined_presentation_style может быть использован только для сущностей, находящихся в TDB.

Примечание 2 - Если сущность отправлена виртуально, то она должна быть удалена из структуры api_group. Она должна принадлежать корневой группе, которая не может использоваться какой-либо функцией управления группой.

Спецификация на языке EXPRESS:

*)

ENTITY api_pre_defined_virtually_sent_style

SUBTYPE OF (pre_defined_presentation_style);

api_set_name: STRING;

WHERE

api_WR1: SELF\pre_defined_item.name ='virtually_sent';

END_ENTITY;

(*

Определение атрибута:

api_set_name: имя множества api_set интерфейса прикладного программирования, которое было открытым во время виртуальной отправки сущности.

Комментарий к спецификации:

api_WR1: предварительно определенное имя стиля, отправляемого виртуально.

Дополнительные комментарии:

api_IP1: данный стиль назначается только сущностям, содержащимся в TDB;

api_IP2: сущность api_set_name должна соответствовать имени множества api_set интерфейса прикладного программирования.

6.3 Определения функций схемы API_ABSTRACT_SCHEMA

6.3.1 Определения функций схемы API_ABSTRACT_SCHEMA: геометрические и топологические представления

Настоящий подраздел объявляет функции, определенные ИСО 10303-42 и являющиеся частью схемы api_abstract_schema.

6.3.1.1 Функция dimension_of

Функция dimension_of отражает целочисленное значение размерности dimension_count контекста геометрического представления geometric_representation_context, в котором геометрически закладываются входные элементы геометрического представления geometric_representation_items.

С учетом ограничений, налагаемых глобальным правилом совместимости размерностей compatible_dimension, данное значение равно размерности координатного пространства coordinate_space_dimension для входных элементов геометрического представления. Правило совместимости размерностей установлено ИСО 10303-42, раздел 4.5.1.

Спецификация на языке EXPRESS:

*)

FUNCTION dimension_of (item : geometric_representation_item) :

dimension_count;

LOCAL

x : SET OF representation;

y : representation_context;

END_LOCAL;

-- Find the set of representation in which the item is used,

x := using_representations (item);

-- Determine the dimension_count of the

-- geometric_representation_context. Note that the

-- RULE compatible_dimension ensures that the context_of_items

-- is of type geometric_representation_context and has

-- the same dimension_count for all values of x.

у := x [l].context_of_items;

RETURN (y\geometric_representation_context.coordinate_space_dimension);

END_FUNCTION;

(*

Определение аргумента:

item: входные элементы геометрического представления, для которых определена размерность пространства.

6.3.1.2 Функция associated_surface

Функция associated_surface определяет уникальную поверхность, ассоциированную с типом pcurve_or_surface. Она необходима для выполнения действий с кривыми на поверхности и их подтипами.

Спецификация на языке EXPRESS:

*)

FUNCTION associated_surface (arg : pcurve_or_surface) : surface;

LOCAL

surf : surface;

END_LOCAL;

IF 'GEOMETRY_SCHEMA.PCURVE ' IN TYPEOF (arg) THEN

surf := arg.basis_surface;

ELSE

surf := arg;

END_IF;

RETURN (surf);

END_FUNCTION;

(*

Определения аргументов:

arg: входная кривая или поверхность, для которых необходимо определение ассоциированной первичной поверхности;

surf: выходная первичная поверхность, ассоциированная с атрибутом arg.

6.3.1.3 Функция base_axis

Функция base_axis отображает три нормированных ортогональных направления: u[1], u[2] и u[3]. В трехмерном пространстве при полных исходных данных ортогональное направление u[3] ориентировано в направлении оси axis3, ортогональное направление и[1] - в направлении проекции оси axis1 на плоскость, перпендикулярную к и[3], ортогональное направление u[2] перпендикулярно обоим ортогональным направлениям u[1] и и[3], при этом данное направление совпадает с положительным направлением оси axis2. В двумерном пространстве: ортогональное направление u[1] ориентировано вдоль оси axis1, ортогональное направление u[2] перпендикулярно ортогональному направлению u[1]. При этом данное направление совпадает с направлением оси axis2. Для неполных исходных данных недостающие значения определяются по умолчанию по некоторым формулам.

Спецификация на языке EXPRESS:

*)

FUNCTION base_axis (dim : INTEGER; axis1, axis2, axis3 : direction) :

LIST [2:3] OF direction;

LOCAL

vec : direction;

u : LIST [2:3] OF direction;

factor : REAL;

END_LOCAL;

IF (dim =3) THEN

u[3] := NVL (axis3, direction ( [0. 0, 0.0, 1. 0 ])) ;

u[1] := first_proj_axis (u [3], axis1);

u[2] := second_proj_axis (u [3],u [1], axis2);

ELSE

u[3] := ?;

IF EXISTS (axis1) THEN

u[1] := normalise (axis1) ;

u[2] := orthogonal_complement (u[1]);

IF EXISTS (axis2) THEN

factor := dot_product (axis2,u[2]);

IF (factor <0.0) THEN

u[2].direction_ratios [1] := -u[2].direction_ratios [1];

u[2].direction_ratios [2] := -u[2].direction_ratios [2];

END_IF;

END_IF;

ELSE

IF EXISTS (axis2) THEN

u[2] := normalise (axis2);

u[1] := orthogonal_complement (u[2]);

u[1].direction_ratios [1] := -u[1].direction_ratios [1];

u[1].direction_ratios [2] := -u[1].direction_ratios [2];

ELSE

u[1].direction_ratios [1] := 1.0;

u[1].direction_ratios [2] := 0.0;

u[2].direction_ratios [1] := 0.0;

u[2].direction_ratios [2] := 1.0;

END_IF;

END_IF;

END_IF;

RETURN (u) ;

END_FUNCTION;

(*

Определения аргументов:

dim: (вход) целочисленное значение размерности пространства, в котором задаются стандартные ортогональные направления;

axis1: (вход) направление, используемое как первая аппроксимация направления выходной оси u[1];

axis2: (вход) направление, используемое для определения положительного ортогонального направления u[2];

axis3: (вход) ортогональное направление u[3] в том случае, если размерность dim=3. Направление равно "null", если dim = 2;

u: (выход) перечень dim (2 или 3) взаимно перпендикулярных направлений.

6.3.1.4 Функция build_2axes

Функция build_2axes отображает два нормированных ортогональных направления. Ортогональное направление u[1] определяется сущностью ref_direction, ортогональное направление u[2] перпендикулярно u[1]. Если исходные данные являются неполными, то сущности ref_direction по умолчанию присваивается значение (1.0, 0.0).

Спецификация на языке EXPRESS:

*)

FUNCTION build_2axes (ref_direction : direction) : LIST [2:2] OF direction;

LOCAL

u : LIST [2:2] OF direction;

END_LOCAL;

u[1] := NVL (normalise (ref_direction), direction ( [1.0, 0.0]));

u[2] := orthogonal_complement (u[1]);

RETURN (u) ;

END_FUNCTION;

(*

Определения аргументов:

ref_direction: (вход) ссылочное направление в двумерном пространстве, по умолчанию равно [1.0, 0.0];

u: (выход) перечень двух взаимно перпендикулярных направлений, орт u[1] параллелен сущности ref_direction.

6.3.1.5 Функция build_axes

Функция build_axes возвращает три нормированных ортогональных направления. Ортогональное направление u[3] имеет направление axis, u[1] направлен по проекции вектора ref_direction на плоскость, перпендикулярную u[3]. Ортогональное направление u[2] - векторное произведение u[3] и u[1]. Если исходные данные неполные, то берутся значения по умолчанию.

Спецификация на языке EXPRESS:

*)

FUNCTION build_axes (axis, ref_direction : direction) :

LIST [3:3] OF direction;

LOCAL

u : LIST [3:3] OF direction;

END_LOCAL;

u[3] := NVL (normalise (axis) , direction ( [0. 0, 0. 0,1. 0] )) ;

u[1] := first_proj_axis (u[3],ref_direction);

u[2] := normalise (cross_product (u[3],u[1])).orientation;

RETURN (u);

END_FUNCTION;

(*

Определения аргументов:

axis: (вход) ожидаемое направление u[3], по умолчанию равно [0.0, 0.0, 1.0];

ref_direction: (вход) направление u[1];

u: (выход) перечень трех взаимно ортогональных направлений в 3D-пространстве.

6.3.1.6 Функция orthogonal_complement

Функция orthogonal_complement возвращает направление, являющееся ортогональным дополнением к исходному направлению. Исходное направление должно быть двумерным. Результатом функции является вектор того же типа, перпендикулярный исходному вектору.

Спецификация на языке EXPRESS:

*)

FUNCTION orthogonal_complement (vec : direction) : direction;

LOCAL

result : direction;

END_LOCAL;

IF (vec.dim <> 2) OR NOT EXISTS (vec) THEN

RETURN (?) ;

ELSE

result.direction_ratios [1] := -vec.direction_ratios [2];

result.direction_ratios [2] := vec.direction_ratios [1];

RETURN (result);

END_IF;

END_FUNCTION;

(*

Определения аргументов функции:

vec: (вход) направление в 2D-пространстве;

result: (выход) направление, ортогональное аргументу vec.

6.3.1.7 Функция first_proj_axis

Функция first_proj_axis представляет направление в трехмерном пространстве. Если вход определен полностью, то результатом является проекция вектора arg на плоскость, нормальную оси z_axis. Если вектор arg задан по умолчанию, то результатом является проекция ортогонального направления [1, 0, 0] на данную плоскость. Исключением является ситуация, когда направление z_axis равно [1, 0, 0] и вектор arg по умолчанию равен [0, 1, 0]. Сбой возникает, если направление данного вектора совпадает с исходным направлением оси z_axis.

Спецификация на языке EXPRESS:

*)

FUNCTION first_proj_axis (z_axis, arg : direction) : direction;

LOCAL

x_axis : direction;

v : direction;

z : direction;

x_vec : vector;

END_LOCAL;

IF NOT EXISTS (z_axis) OR (NOT EXISTS (arg)) OR (arg.dim <> 3) THEN

x_axis := ?;

ELSE

z_axis := normalise (z_axis);

IF NOT EXISTS (arg) THEN

IF (z_axis <> direction ( [1. 0, 0. 0, 0. 0])) THEN

v := direction ( [1. 0, 0. 0, 0. 0]) ;

ELSE

v := direction ( [0. 0, 1. 0, 0. 0]) ;

END_IF;

ELSE

IF ( (cross_product (arg,z).magnitude) = 0. 0) THEN

RETURN (?);

ELSE

v := normalise (arg);

END_IF;

END_IF;

x_vec := scalar_times_vector (dot_product (v, z), z_axis);

x_axis := vector_difference (v, x_vec).orientation;

x_axis := normalise (x_axis);

END_IF;

RETURN (x_axis);

END_FUNCTION;

(*

Определения аргументов:

z_axis: (вход) направление, определяющее локальную ось Z;

arg: (вход) направление, не параллельное оси z_axis;

x_axis: (выход) направление, совпадающее с направлением проекции вектора arg на плоскость, перпендикулярную оси z_axis.

6.3.1.8 Функция second_proj_axis

Функция second_proj_axis возвращает значение нормированного вектора, который одновременно является проекцией вектора arg на плоскость, перпендикулярную оси z_axis, и на плоскость, перпендикулярную оси x_axis. Если вектор arg равен "null", то функция возвращает проекцию вектора (0, 1, 0) на ось z_axis.

Спецификация на языке EXPRESS:

*)

FUNCTION second_proj_axis (z_axis, x_axis, arg: direction) : direction;

LOCAL

у_axis : vector;

v : direction;

temp : vector;

END_LOCAL;

IF NOT EXISTS (arg) THEN

v := direction ( [0.0, 1.0, 0.0]);

ELSE

v := arg;

END_IF;

temp := scalar_times_vector (dot product (v, z_axis), z_axis);

у_axis := vector_difference (v, temp);

temp := scalar_times_vector (dot_product (v, x_axis), x_axis);

у_axis := vector_difference (y_axis, temp);

у_axis := normalise (y_axis);

RETURN (y_axis.orientation);

END_FUNCTION;

(*

Определения аргументов:

z_axis: (вход) направление, задающее локальную ось Z;

x_axis: (вход) направление, не параллельное оси z_axis;

arg: (вход) направление, используемое как первая аппроксимация направления оси y_axis;

y_axis.orientation: (выход) направление, определяемое сначала путем проецирования вектора arg на плоскость, перпендикулярную оси z_axis, а затем проецирования полученного результата на плоскость, перпендикулярную оси x_axis.

6.3.1.9 Функция cross_product

Функция cross_product возвращает векторное произведение двух входных направлений. Входные направления должны быть трехмерными и нормированными перед вычислением произведения. Результатом всегда является безразмерный вектор. Если входные направления параллельны или непараллельны, то функция возвращает вектор с модулем, равным "null", и атрибутом orientation, равным аrg1.

Спецификация на языке EXPRESS:

*)

FUNCTION cross_product (arg1, arg2 : direction) : vector;

LOCAL

mag : REAL;

res : direction;

v1, v2 : LIST [3:3] OF REAL;

result : vector;

END_LOCAL;

IF ( NOT EXISTS (arg1) OR (arg1.dim =2)) OR

( NOT EXISTS (arg2) OR (arg2.dim = 2)) THEN

RETURN (?) ;

ELSE

BEGIN

v1 := normalise (arg1).direction_ratios;

v2 := normalise (arg2).direction_ratios;

res.direction_ratios [1] := (v1 [2]*v2 [3] - v1 [3]*v2 [2]);

res.direction_ratios [2] := (v1 [3]*v2 [1] - v1 [1]*v2 [3]);

res.direction_ratios [3] := (v1 [1]*v2 [2] - v1 [2]*v2 [1]) ;

mag := 0.0;

REPEAT i := 1 TO 3;

mag := mag + res.direction_ratios [i]*res.direction_ratios [i];

END_REPEAT;

IF (mag > 0.0) THEN

result.orientation := res;

result.magnitude := SQRT (mag);

ELSE

result.orientation := arg1;

result.magnitude := 0.0;

END_IF;

RETURN (result);

END;

END_IF;

END_FUNCTION;

(*

Определения аргументов:

arg1: (вход) направление, определяющее первый операнд векторного произведения;

arg2: (вход) направление, определяющее второй операнд векторного произведения;

result: (выход) произведение векторов arg1 и arg2.

6.3.1.10 Функция dot_product

Функция dot_product возвращает скалярное или точечное (.) произведение двух направлений. Входными аргументами могут быть направления, заданные в двумерном и трехмерном пространствах. Входные аргументы нормируются перед началом вычислений. Скалярное произведение не определено, если исходные направления имеют различную размерность или не определены.

Спецификация на языке EXPRESS:

*)

FUNCTION dot_product (arg1, arg2 : direction) : REAL;

LOCAL

scalar : REAL;

vec1, vec2: direction;

ndim : INTEGER;

END_LOCAL;

IF NOT EXISTS (arg1) OR NOT EXISTS (arg2) THEN

scalar := ?;

(* When function is called with invalid data

a NULL result is returned

*)

ELSE

IF (arg1.dim <> arg2.dim) THEN

scalar := ?;

(* When function is called with invalid data

a NULL result is returned

*)

ELSE

BEGIN

vec1 := normalise (arg1);

vec2 := normalise (arg2);

ndim := arg1.dim;

scalar := 0.0;

REPEAT i := 1 ТО ndim;

scalar := scalar +

vec1.direction_ratios [i]*vec2.direction_ratios [i];

END_REPEAT;

END;

RETURN (scalar);

END_IF;

END_IF;

END_FUNCTION;

(*

Определения аргументов функции:

arg1: (вход) направление, определяющее первый операнд точечного (скалярного) произведения;

arg2: (вход) направление, определяющее второй операнд точечного произведения;

result: (выход) скаляр, равный точечному произведению векторов arg1 и arg2.

6.3.1.11 Функция normalize

Функция normalize возвращает вектор, компоненты которого нормированы так, что сумма их квадратов равна 1.0. Тип результата функции (направление или вектор в тех же единицах) совпадает с типом аргумента функции. Если аргумент функции не определен или имеет нулевой модуль, то выходной вектор также не определен.

Спецификация на языке EXPRESS:

*)

FUNCTION normalise (arg : vector_or_direction) : vector_or_direction;

LOCAL

ndim : INTEGER;

v : direction;

result : vector_or_direction;

vec : vector;

mag : REAL;

END_LOCAL;

IF NOT EXISTS (arg) THEN

result := ?;

(* When function is called with invalid data

a NULL result is returned *)

ELSE

ndim := arg.dim;

IF 'API_ABSTRACT_SCHEMA.VECTOR' IN TYPEOF (arg) THEN

BEGIN

vec := arg;

v := arg.orientation;

IF arg.magnitude = 0.0 THEN

RETURN (?) ;

ELSE

vec.magnitude := 1.0;

END_IF;

END;

ELSE

v := arg;

END_IF;

mag := 0.0;

REPEAT i := 1 TO ndim;

mag := mag + v.direction_ratios [i]*v.direction_ratios [i];

END_REPEAT;

IF mag >0.0 THEN

mag := SQRT (mag);

REPEAT i := 1 TO ndim;

v.direction_ratios [i] := v.direction_ratios [i]/mag;

END_REPEAT;

IF 'API_ABSTRACT_SCHEMA.VECTOR' IN TYPEOF (arg) THEN

vec.orientation := v;

result := vec;

ELSE

result := v;

END_IF;

ELSE

RETURN (?) ;

END_IF;

RETURN (result);

END_IF;

END_FUNCTION;

(*

Определения аргументов функции:

arg: (вход) нормированный вектор (направление);

result: (выход) вектор (направление) единичной длины, параллельный вектору arg1.

6.3.1.12 Функция scalar_times_vector

Функция scalar_times_vector возвращает вектор, полученный умножением исходного вектора на число. На вход функции подаются скаляр (число) и вектор, который может быть либо направлением, либо собственно вектором. На выходе функции получается вектор, вычисленный в тех же единицах, что и входной вектор. Если на входе указывается направление, то результат вычислений будет безразмерным. Если входной аргумент не определен, то значение функции также не определено. Если входной скаляр отрицателен, то ориентация вектора изменяется на противоположную.

Спецификация на языке EXPRESS:

*)

FUNCTION scalar_times_vector (scalar : REAL; vec : vector_or_direction)

: vector;

LOCAL

v : direction;

mag : REAL;

result : vector;

END_LOCAL;

IF NOT EXISTS (scalar) OR NOT EXISTS (vec) THEN

result := ?;

(* When function is called with invalid data

a NULL result is returned

*)

ELSE

IF 'API_ABSTRACT_SCHEMA.VECTOR' IN TYPEOF (vec) THEN

v := vec.orientation;

mag := scalar * vec.magnitude;

ELSE

v := vec;

mag := scalar;

END_IF;

IF (mag < 0.0 ) THEN

REPEAT i := 1 TO SIZEOF (v.direction_ratios);

v.direction_ratios [i] := -v.direction_ratios [i];

END_REPEAT;

mag := -mag;

END_IF;

result.orientation := normalise (v);

result.magnitude := mag;

END_IF;

RETURN (result);

END_FUNCTION;

(*

Определения аргументов функции:

scalar: (вход) действительный числовой множитель;

vec: (вход) умножаемый вектор (направление);

result: (выход) вектор, являющийся результатом умножения scalar на vec.

6.3.1.13 Функция vector_sum

Функция vector_sum возвращает сумму векторов к входным аргументам. При этом направление рассматривается как единичный вектор. Входные аргументы должны иметь одинаковую размерность, они могут быть либо направлениями, либо векторами. Если оба входных аргумента - векторы, то они должны быть выражены в одинаковых единицах. Если оба входных вектора равны нулю, то на выходе получается вектор нулевого модуля с направлением arg1. Если оба входных аргумента - направления, то результат получается безразмерным.

Спецификация на языке EXPRESS:

*)

FUNCTION vector_sum (arg1, arg2 : vector_or_direction) : vector;

LOCAL

result : vector;

res, vec1, vec2 : direction;

mag, mag1, mag2 : REAL;

ndim : INTEGER;

END_LOCAL;

IF ( (NOT EXISTS (arg1)) OR (NOT EXISTS (arg2))) OR (arg1.dim<> arg2.dim)

THEN

result := ?;

(* When function is called with invalid data

a NULL result is returned

*)

ELSE

BEGIN

IF 'API_ABSTRACT_SCHEMA.VECTOR' IN TYPEOF (arg1) THEN

mag1 := arg1.magnitude;

vec1 := arg1.orientation;

ELSE

mag1 := 1.0;

vec1 := arg1;

END_IF;

IF 'API_ABSTRACT_SCHEMA.VECTOR' IN TYPEOF (arg2) THEN

mag2 := arg2.magnitude;

vec2 := arg2.orientation;

ELSE

mag2 := 1.0;

vec2 := arg2;

END_IF;

vec1 := normalise (vec1) ;

vec2 := normalise (vec2);

ndim := SIZEOF (vec1.direction_ratios);

mag := 0.0;

REPEAT i := 1 TO ndim;

res.direction_ratios [i] := mag1*vec1.direction_ratios [i] +

mag2*vec2.direction_ratios [i];

mag := mag + (res.direction_ratios [i]*res.direction_ratios [i]);

END_REPEAT;

IF (mag > 0.0 ) THEN

result.magnitude := SQRT (mag);

result.orientation := res;

ELSE

result.magnitude := 0.0;

result.orientation := vec1;

END_IF;

END;

END_IF;

RETURN (result);

END_FUNCTION;

(*

Определения аргументов:

arg1: (вход) направление, задающее первое слагаемое векторной суммы;

arg2: (вход) направление, задающее второе слагаемое векторной суммы;

result: (выход) вектор, являющийся суммой векторов arg1 и arg2.

6.3.1.14 Функция vector_difference

Функция vector_difference вычисляет вектор, который является разностью векторов (arg1 - arg2). Входные аргументы должны иметь одинаковую размерность, они могут быть либо направлениями, либо векторами. Если оба входных аргумента - векторы, то они должны быть выражены в одинаковых единицах. Если оба входных вектора равны нулю, то на выходе получается вектор нулевого модуля с направлением arg1. Если оба входных аргумента - направления, то результат получается безразмерным.

Спецификация на языке EXPRESS:

*)

FUNCTION vector_difference (arg1, arg2 : vector_or_direction) : vector;

LOCAL

result : vector;

res, vec1, vec2 : direction;

mag, mag1, mag2 : REAL;

ndim : INTEGER;

END_LOCAL;

IF ( (NOT EXISTS (arg1)) OR (NOT EXISTS (arg2))) OR (arg1.dim <> arg2.dim)

THEN

result := ?;

(* When function is called with invalid data

a NULL result is returned

*)

ELSE

BEGIN

IF 'API_ABSTRACT_SCHEMA.VECTOR' IN TYPEOF (arg1) THEN

mag1 := arg1.magnitude;

vec1 := arg1.orientation;

ELSE

mag1 := 1.0;

vec1 := arg1;

END_IF;

IF 'API_ABSTRACT_SCHEMA.VECTOR' IN TYPEOF (arg2) THEN

mag2 := arg2.magnitude;

vec2 := arg2.orientation;

ELSE

mag2 := 1.0;

vec2 := arg2;

END_IF;

vec1 := normalise (vec1);

vec2 := normalise (vec2);

ndim := SIZEOF (vec1.direction_ratios);

REPEAT i := 1 TO ndim;

res.direction_ratios [i] := mag1*vec1.direction_ratios [i] -

mag2*vec2.direction_ratios [i];

mag := mag + (res.direction_ratios [i]*res.direction_ratios [i]);

END_REPEAT;

IF (mag >0.0 ) THEN

result.magnitude := SQRT (mag);

result.orientation := res;

ELSE

result.magnitude := 0.0;

result.orientation := vec1;

END_IF;

END;

END_IF;

RETURN (result);

END_FUNCTION;

(*

Определения аргументов:

arg1: (вход) направление, определяющее уменьшаемое операции вычитания векторов;

arg2: (вход) направление, определяющее результат операции вычитания векторов;

result: (выход) вектор, являющийся разностью векторов arg1 и arg2.

6.3.1.15 Функция constraints_composite_curve_on_surface

Функция constraints_composite_curve_on_surface проверяет условие, что все кривые, на которые производится ссылка сегментами composite_curve_on_surface, также являются кривыми на поверхности, включая composite_curve_on_surface, которые могут быть ограниченными кривыми bounded_curve.

Спецификация на языке EXPRESS:

*)

FUNCTION constraints_composite_curve_on_surface

(c : composite_curve_on_surface) : BOOLEAN;

LOCAL

n_segments : INTEGER := SIZEOF (c.segments);

END_LOCAL;

REPEAT k := 1 TO n_segments;

IF (NOT ('GEOMETRY_SCHEMA.PCURVE' IN

TYPEOF (c\composite_curve.segments [k].parent_curve))) AND

(NOT ('API_ABSTRACT_SCHEMA.SURFACE_CURVE' IN

TYPEOF (c\composite_curve.segments [k].parent_curve))) AND

(NOT ('API_ABSTRACT_SCHEMA.COMPOSITE_CURVE_ON_SURFACE' IN

TYPEOF (c\composite_curve.segments [k].parent_curve))) THEN

RETURN (FALSE);

END_IF;

END_REPEAT;

RETURN (TRUE);

END_FUNCTION;

(*

Определение аргумента:

с: (вход) проверяемая комбинированная кривая на поверхности.

6.3.1.16 Функция get_basis_surface

Функция get_basis_surface определяет базовую поверхность кривой как множество поверхностей. Если данная кривая не является сущностью curve_on_surface, то результатом будет пустое множество.

Спецификация на языке EXPRESS:

*)

FUNCTION get_basis_surface (c : curve_on_surface) : SET [0:2] OF surface;

LOCAL

surfs : SET [0:2] OF surface;

n : INTEGER;

END_LOCAL;

surfs := [];

IF 'GEOMETRY_SCHEMA.PCURVE' IN TYPEOF (c) THEN

surfs := [c\pcurve.basis_surface];

ELSE

IF 'API_ABSTRACT_SCHEMA.SURFACE_CURVE' IN TYPEOF (c) THEN

n := SIZEOF (c\surface_curve.associated_geometry);

REPEAT i := 1 TO n;

surfs := surfs +

associated_surface (c\surface_curve.associated_geometry [i]);

END_REPEAT;

END_IF;

END_IF;

IF 'API_ABSTRACT_SCHEMA.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF (c) THEN

(* For a composite_curve_on_surface the basis_surface is the

intersection of the basis_surface of all the segments.

*)

n := SIZEOF ( c:\composite_curve_on_surfасе . segments ) ;

surfs := get_basis_surface (c\composite_curve_on_surface.segments [1].

parent_curve);

IF n > 1 THEN

REPEAT i := 2 TO n;

surfs := surfs *

get_basis_surface (c\composite_curve_on_surface,

segments [1].parent_curve);

END_REPEAT;

END_IF;

END_IF;

RETURN (surfs) ;

END_FUNCTION;

(*

Определения аргументов:

с: (вход) кривая, для которой определяется базовая поверхность;

surf: (выход) множество, содержащее базовую поверхность или поверхность, на которой лежит кривая с.

6.3.1.17 Функция list_to_array

Функция list_to_array преобразует групповой перечень в регулярный массив с предварительно определенными границами. Если границы массива несовместимы с количеством элементов исходного перечня, то получается нулевой результат. Настоящая функция используется для создания регулярных массивов контрольных точек и совокупности последовательности сложнопрофильных кривых (b-spline).

Спецификация на языке EXPRESS:

*)

FUNCTION list_to_array (lis : LIST [0:?] OF GENERIC : T;

low, u : INTEGER) : ARRAY [low:u] OF GENERIC : T;

LOCAL

n : INTEGER;

res : ARRAY [low:u] OF GENERIC : T;

END_LOCAL;

n := SIZEOF (lis);

IF (n <> (u-low +1)) THEN

RETURN (?) ;

ELSE

REPEAT i := 1 TO n;

res [low+i-1] := lis [i];

END_REPEAT;

RETURN (res);

END_IF;

END_FUNCTION;

(*

Определения аргументов функции:

lis: (вход) преобразуемый исходный перечень;

low: (вход) целое число, равное нижнему индексу выходного массива;

u: (вход) целое число, равное верхнему индексу;

res: (выход) регулярный массив, сгенерированный из исходных данных.

6.3.1.18 Функция make_array_of_array

Функция make_array_of_array создает регулярный массив из нескольких массивов, полученных из перечня перечней. Сначала функция проверяет совместимость размерности массива с размерами перечней. Необходимо, чтобы все подперечни содержали одинаковое количество элементов. Получается нулевой результат, если исходные данные функции несовместимы с размерностью массива. Функция используется для создания регулярных массивов контрольных точек и весовых коэффициентов для поверхности, представленной совокупностью последовательности сложнопрофильных кривых (b-spline).

Спецификация на языке EXPRESS:

*)

FUNCTION make_array_of_array (lis : LIST [1:?] OF LIST [1:?] OF GENERIC : T;

low1, u1, low2, u2 : INTEGER) :

ARRAY [low1:u1] OF ARRAY [low2:U2] OF GENERIC : T;

LOCAL

n1, n2 : INTEGER;

res : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC : T;

res1 : LIST [1:?] OF ARRAY [low2:u2] OF GENERIC : T;

END_LOCAL;

(* Check input dimensions for consistency

*)

n1 := SIZEOF (lis);

n2 := SIZEOF (lis [1]);

IF (n1 <> (u1 -low1 + 1)) AND (n2 <> (u2 - low2 + 1)) THEN

RETURN (?) ;

END_IF;

REPEAT i := 1 TO n1;

IF (SIZEOF (lis [i]) <> n2) THEN

RETURN (?) ;

END_IF;

END_REPEAT;

(* Build a list of sub-arrays

*)

REPEAT i := 1 TO n1;

RESL [i] := list_to_array (lis [i], low2, u2);

END REPEAT;

res := list to array (resl, low1, u1);

RETURN (res);

END_FUNCTION;

(*

Определения аргументов функции:

lis: (вход) перечень преобразуемых перечней;

low1: (вход) целое число, описывающее требуемый нижний индекс первого выходного массива;

u1: (вход) целое число, описывающее верхний индекс первого выходного массива;

low2: (вход) целое число, описывающее требуемый нижний индекс второго выходного массива;

u2: (вход) целое число, описывающее верхний индекс второго выходного массива;

res: (выход) регулярный массив, составленный из массивов с заданными размерностями, сгенерированными из исходных данных после проверки соответствия указанных размерностей.

6.3.2 Определения функций схемы API_ABSTRACT_SCHEMA: поддержка ресурсов

Настоящий подраздел описывает функции, определенные ИСО 10303-41 и являющиеся частью схемы api_abstract_schema.

6.3.2.1 Функция bag_to_set

Функция bag_to_set преобразует элементы BAG (множество с повторяющимися элементами) в элементы SET.

Пример - Функция может использоваться для преобразования элементов BAG, полученных с помощью функции USEDIN, в элементы SET. Полученные значения могут быть назначены переменной типа SET.

Спецификация на языке EXPRESS:

*)

FUNCTION bag_to_set (the_bag : BAG OF GENERIC : intype)

:SET OF GENERIC : intype;

LOCAL

the_set : SET OF GENERIC : intype := [];

i : INTEGER;

END_LOCAL;

IF SIZEOF (the_bag) > 0 THEN

REPEAT i := 1 TO HIINDEX (the_bag);

the_set := the_set + the_bag [i] ;

END_REPEAT;

END_IF;

RETURN (the_set);

END_FUNCTION;

(*

Определение аргументов функции:

the_bag: элементы BAG, преобразуемые в элементы SET.

6.3.3 Определения функций схемы API_ABSTRACT_SCHEMA: структуры представлений

Настоящий подраздел описывает функции, определенные ИСО 10303-43 и являющиеся частью схемы api_abstract_schema.

6.3.3.1 Функция acyclic_mapped_representation

Функция acydic_mapped_representation определяет, является ли заданный элемент отображения mapped_item самоопределяющимся (путем отображения представления, в котором используется указанный элемент). Функция имеет расширение, позволяющее рекурсивно отображать представления целиком mapped_representation, а также их элементы mapped_representation.item для любого элемента отображения или элемента представления (со ссылкой на элемент отображения). Указанная ссылка может оказаться циклической. Функция возвращает значение "true", если входной элемент представления не приводит к самоопределению. В противном случае функция возвращает значение "false". Функция имеет булев тип.

Настоящая функция задает ограничения сущности mapped_item.

Спецификация на языке EXPRESS:

*)

FUNCTION acyclic_mapped_representation

(parent_set : SET OF representation;

children_set : SET OF representation_item) : BOOLEAN;

LOCAL

x, y: SET OF representation_item;

i, j : INTEGER;

END_LOCAL;

-- Determine the subset of children_set that are mapped_items,

x := QUERY (z <* children_set | 'API_ABSTRACT_SCHEMA.MAPPED_ITEM

'

IN TYPEOF (z));

-- Determine that the subset has elements.

IF SIZEOF (x) > 0 THEN

-- Check each element of the set.

REPEAT i := 1 TO HIINDEX (x);

-- If the selected element maps a representation in the

-- parent_set, return_false.

IF X [i]\mapped_item.mapping_source.mapped_representation

IN parent_set THEN

RETURN (FALSE);

END_IF;

-- Recursively check the items of the mapped_rep.

IF NOT acyclic_mapped_representation

(parent_set +

x [i]\mapped_item.mapping_source.mapped_representation,

x [i]\mapped_item.mapping_source.mapped_representation.items) THEN

RETURN (FALSE);

END_IF;

END_REPEAT;

END_IF;

-- Determine the subset of children_set that are not mapped_items,

x := children_set - x;

-- Determine that the subset has elements.

IF SIZEOF (x) > 0 THEN

-- For each element of the set:

REPEAT i := 1 TO HIINDEX (x);

-- Determine the set of representation_items referenced,

y := QUERY (z <* bag_to_set ( USEDIN (x [i], '') ) |

'API_ABSTRACT_SCHEMA.REPRESENTATION_lТЕМ' IN TYPEOF (z));

-- Recursively check these in case they might be an offending

-- mapped_item. Return false for any errors encountered.

IF NOT acyclic mapped_representation (parent_set, y) THEN

RETURN (FALSE];

END_IF;

END_REPEAT;

END_IF;

-- Return true when all elements are checked and

-- no error conditions found.

RETURN (TRUE);

END_FUNCTION;

(*

Определения аргументов:

parent_set: множество представлений, использующих элементы отображения. Указанное множество составляет входные данные функции. При первом обращении к программе это множество, содержащее проверяемый элемент отображения, который используется и модифицируется при последующих вызовах функции;

children_set: множество элементов представления, которые могут быть элементами отображения. На них прямо или косвенно могут производиться ссылки элементами представления parent_set. Указанное множество образует входные данные функции. При первом обращении к функции его элементы представляют собой проверяемые элементы отображения, которые модифицируются при последующих вызовах функции.

6.3.3.2 Функция item_in_context

Функция item_in_context устанавливает, связан ли элемент представления representation_item с контекстом представления representation_context. Функция возвращает значение "true", если:

- аргумент item связан представлением с входным аргументом cntxt;

- аргумент item связан своим представлением определения definitional_representation с входным аргументом cntxt.

В противном случае функция item_in_context возвращает значение "false". Функция имеет булев тип.

Элемент представления связан с контекстом представления, если на него производится ссылка:

1) на множестве элементов представления, где аргумент cntxt является элементом контекста;

2) на множестве элементов представления определения definitional_representation_item, где аргумент cntxt является элементом контекста;

3) элементом представления, который описывается сущностью item_in_context в контексте cntxt.

Примечание 1 - Третьим условием является рекурсивная проверка, допускающая связь элемента представления и контекста представления, как ветвей дерева связанных элементов представления. Корнем дерева является сущность, связанная с контекстом представления, если удовлетворяются первое или второе условия.

Примечание 2 - Функция item_in_context устанавливает наличие связи элемента с особым контекстом представления. Соотношение элемента и прочих контекстов представления не рассматривается.

Спецификация на языке EXPRESS:

*)

FUNCTION item_in_context

(item : representation_item;

cntxt : representation_context) : BOOLEAN;

LOCAL

i : INTEGER;

у : BAG OF representation_item;

END_LOCAL;

-- If there is one or more representation using both the item

-- and cntxt return true.

IF SIZEOF (USEDIN (item,'API_ABSTRACT_SCHEMA.REPRESENTATION.ITEMS')

* cntxt.representations_in_context) > 0 THEN

RETURN (TRUE);

-- Determine the bag of representation_items that reference item.

ELSE

у := QUERY (z <* USEDIN (item , '') |

'API_ABSTRACT_SCHEMA.REPRESENTATION_ITEM' IN TYPEOF (z));

-- Ensure that the set is not empty.

IF SIZEOF (у) > 0 THEN

-- For each element in the set

REPEAT i := 1 TO HIINDEX (y);

-- check to see it is an item in the input cntxt.

IF item_in_context (у [i], cntxt) THEN

RETURN (TRUE);

END_IF;

END_REPEAT;

END_IF;

END_IF;

-- Return false when all possible branches have been checked

-- with no success.

RETURN (FALSE);

END_FUNCTION;

(*

Определения аргументов:

item: элемент представления, проверяемый на предмет наличия связи с контекстом cntxt. Входной аргумент функции;

cntxt: контекст представления, для которого определяется соотношение с аргументом item. Входной аргумент функции.

6.3.3.3 Функция using_representations

Функция using_representations возвращает множество представлений с используемыми элементами представления representation_items.

Элемент представления используется в некотором представлении representation, если на него производится ссылка:

1) во множестве элементов представления;

2) элементом представления, используемым в представлении.

Примечание - Вторым условием является последовательная проверка, допускающая использование элемента представления в некотором представлении в качестве ветви дерева соответствующих элементов представления. Корнем дерева является сущность, используемая в представлении, удовлетворяющем первому условию.

Спецификация на языке EXPRESS:

*)

FUNCTION using_representations (item : representation_item)

: SET OF representation;

LOCAL

results : SET OF representation;

result_bag : BAG OF representation;

intermediate_items : SET OF representation_item;

i : INTEGER;

END_LOCAL;

-- Find the representation in which the item is used and add to the

-- results set.

result_bag := USEDIN (item, ' API_ABSTRACT_SCHEMA.REPRESENTATION.ITEMS ') ;

IF SIZEOF (result_bag) > 0 THEN

REPEAT i := 1 TO HIINDEX (result_bag);

results := results + result_bag [i];

END_REPEAT;

END_IF;

-- Find the set of representation_items in which the item is used.

intermediate_items := QUERY (z <* bag_to_set ( USEDIN (item , ' ')) I

'API_ABSTRACT_SCHEMA.REPRESENTATION_IТЕМ' IN TYPEOF (z));

-- If the set of intermediate items is not empty;

IF SIZEOF (intermediate_items) > 0 THEN

-- For each element in the set recursively add the

-- using representations of that element.

REPEAT i := 1 TO HIINDEX (intermediate_items);

results := results + using_representations (intermediate_items [i]);

END_REPEAT;

END_IF;

-- Return the set of representation in which the input item is used

-- directly and indirectly (through intervening representation_items).

RETURN (results);

END_FUNCTION;

(*

Определение аргумента:

item: элемент представления, для которого определяется представление. Входной аргумент функции.

6.3.4 Определения функций схемы API_ABSTRACT_SCHEMA: функции интерфейса прикладного программирования

Настоящий подраздел описывает функции интерфейса прикладного программирования, используемые схемой api_abstract_schema.

6.3.4.1 Функция tree_api_group_structure

Функция tree_api_group_structure устанавливает, является ли структура группы интерфейса прикладного программирования api_group, корнем которой является аргумент group, структурой дерева, установленной соотношением api_group_assignment.

Функция возвращает значение "true", если ни одна из групп api_group (назначенных для аргумента group прямо или косвенно) не назначена дважды. В противном случае функция возвращает значение "false".

Функция tree_api_group_structure вызывает функцию назначенной группы assigned_api_group, которая рекурсивно вычисляет группу api_group, назначенную для аргумента group.

Спецификация на языке EXPRESS:

*)

FUNCTION tree_api_group_structure (group : api_group) : BOOLEAN;

LOCAL

i : INTEGER;

j : INTEGER;

assigned_group : BAG [1:?] OF api_group;

END_LOCAL;

-- Determine the bag of the api_groups that are assigned to the

-- group argument.

assigned_group:= assigned_api_group (group);

-- Determine that the bag has elements.

IF SIZEOF (assigned_group) > 0 THEN

-- Check each element of the bag against each element.

REPEAT i := 1 TO HIINDEX (assigned_group);

REPEAT j := 1 TO HIINDEX (assigned_group);

-- If the two elements are the same

-- return false.

IF ( (assigned_group [i] :=: assigned_group [j]) AND (i<> j)) THEN

RETURN (FALSE);

END_IF;

END_REPEAT;

END_REPEAT;

END_IF;

-- Return true when all elements are checked and

-- no error conditions found.

RETURN (TRUE);

END_FUNCTION;

(*

6.3.4.1.1 Функция assigned_api_group

Функция assigned_api_group используется функцией tree_api_group_structure для рекурсивного вычисления групп интерфейса прикладного программирования api_group, назначенных для аргумента group.

Спецификация на языке EXPRESS:

*)

FUNCTION assigned_api_group (group : api_group) : BAG [0:?] OF api_group;

LOCAL

i : INTEGER;

assignment : SET OF api_group_assignment;

assigned_items : BAG OF api_grouped_item;

local_assigned_groups : BAG OF api_group;

assigned_groups : BAG OF api_group;

END_LOCAL;

assigned_items := [];

local_assigned_groups := [];

-- Determine the subset of the api_group_assignments that assign items to

-- the group argument .

assignment :=USEDIN (group, 'API_ABSTRACT_SCHEMA.API_GROUP_ASSIGNMENT\'

+ 'GROUP_ASSIGNMENT.ASSIGNED_GROUP');

-- gathers all the api_groupeed_items

REPEAT i := 1 TO HIINDEX (assignment);

assigned_items := assigned_items + assignment [i].items;

END_REPEAT;

-- Determine the subset of api_groupeed_item that are api_groups,

local_assigned_groups := QUERY ( Z <* assigned_items |

'API_ABSTRACT_SCHEMA.API_GROUP' IN

TYPEOF (z)

) ;

-- initializes the assigned_groups

assigned_groups := local_assigned_groups;

-- Determine that the subset has elements.

IF SIZEOF (local_assigned_groups) > 0 THEN

-- compute all the assigned api_group of the bag.

REPEAT i := 1 TO HIINDEX (local_assigned_groups);

assigned_groups := assigned_groups +

assigned_api_group (local_assigned_groups [i]);

END_REPEAT;

END_IF;

RETURN (assigned_groups);

END_FUNCTION;

(*

6.3.4.2 Функция tree_api_set_structure

Функция tree_api_set_structure устанавливает факт структуризации сущности api_set (корнем которой является аргумент set) в виде дерева с помощью соотношения api_set_assignment.

Функция возвращает значение "true", если ни одна из структур api_set (назначенных аргументом set) не назначается дважды, прямо или косвенно, в противном случае функция возвращает значение "false".

Функция tree_api_set_structure вызывает функцию assigned_api_set, которая рекурсивно вычисляет значение сущности api_set, назначенной для аргумента the_set.

Спецификация на языке EXPRESS:

*)

FUNCTION tree_api_set_structure (the_set : api_set) : BOOLEAN;

LOCAL

i : INTEGER;

j : INTEGER;

assigned_set : BAG [1:?] OF api_set;

END_LOCAL;

-- Determine the bag of the api_sets that are assigned to the set

-- argument .

assigned_set:= assigned_api_set (the_set);

-- Determine that the bag has elements.

IF SIZEOF (assigned_set) > 0 THEN

-- Check each element of the bag against each element.

REPEAT i := 1 TO HIINDEX (assigned_set);

REPEAT j := 1 TO HIINDEX (assigned_set);

-- If the two elements are the same

-- return false.

IF ( (assigned_set [i] :=: assigned_set [j]) AND (i<> j)) THEN

RETURN (FALSE);

END_IF;

END_REPEAT;

END_REPEAT;

END_IF;

-- Return true when all elements are checked and

-- no error conditions found.

RETURN (TRUE);

END_FUNCTION;

(*

6.3.4.2.1 Функция assigned_api_set

Функция assigned_api_set используется функцией tree_api_set_structure для рекурсивного вычисления значений сущности api_set, назначенной для аргумента the_set.

Спецификация на языке EXPRESS:

*)

FUNCTION assigned_api_set (the_set : api_set) : BAG [0:?] OF api_set;

LOCAL

i : INTEGER;

assignment : SET OF api_set_assignment;

assigned_items : BAG OF api_set_item;

local_assigned_sets : BAG OF api_set;

assigned_sets : BAG OF api_set;

END_LOCAL;

assigned_items := [];

local_assigned_sets := [];

-- Determine the subset of the api_set_assignments that assign items to

-- the set argument .

assignment := USEDIN (the_set, 'API_ABSTRACT_SCHEMA.API_SET_ASSIGNMENT\'

+ 'GROUP_ASSIGNMENT.ASSIGNED_GROUP');

-- gathers all the api_set_items

REPEAT i := 1 TO HIINDEX (assignment);

assigned_items := assigned_items + assignment [i].items;

END_REPEAT;

-- Determine the subset of api_set_item that are api_sets.

local_assigned_sets := QUERY ( Z <* assigned_items |

'API_ABSTRACT_SCHEMA.API_SET' IN

TYPEOF (z)

) ;

-- initializes the assigned_sets

assigned_sets := local_assigned_sets;

-- Determine that the subset has elements.

IF SIZEOF (local_assigned_sets) > 0 THEN

-- compute all the assigned api_set of the bag.

REPEAT i := 1 TO HIINDEX (local_assigned_sets);

assigned_sets := assigned_sets +

assigned_api_set (local_assigned_sets [i]);

END_REPEAT;

END_IF;

RETURN (assigned_sets ) ;

END_FUNCTION;

(*

6.3.4.3 Функция api_legal_style_number

Функция api_legal_style_number устанавливает допустимость стиля, назначенного для элемента геометрического представления geometric_representation_item, сгенерированного интерфейсом прикладного программирования.

Спецификация на языке EXPRESS:

*)

FUNCTION api_legal_style_number (item: styled_item): BOOLEAN;

LOCAL

repr : SET [0:?] of representation;

nb_style: INTEGER;

END_LOCAL;

-- only one presentation_style_assignment

IF SIZEOF (item.styles) > 1 THEN RETURN (FALSE); END_IF;

-- one style is always allowed

IF SIZEOF (item.styles [1].styles) = 1 THEN RETURN (TRUE); END_IF;

-- identification of geometric space dimensionality

repr:=USEDIN (item, 'API_ABSTRACT_SCHEMA.REPRESENTATION.ITEMS');

-- only geometric_representation_item may be styled

IF SIZEOF (repr) = 0 THEN RETURN” (FALSE); END_IF;

IF ( NOT ('API_ABSTRACT_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEX' IN

TYPEOF (repr [1].context_of_items) )

)

THEN

RETURN (FALSE);

END_IF;

-- no hidden line in 3D

IF dimensi_on of (item.item) =3 THEN

IF ( QUERY (temps <*item.styles [1].styles |

('API_ABSTRACT_SCHEMA.API_PREDEFINED_OCCLUSION_STYLE' IN

TYPEOF (temps))

OR

('API_ABSTRACT_SCHEMA.' +

'API_PREDEFINED_VIRTUALLY_SENT_STYLE' IN

TYPEOF (temps))

) <> []

)

THEN

RETURN (FALSE); -- hidden line elimination is 2D

END_IF;

IF ( 'API_ABSTRACT_SCHEMA.ANNOTATION_FILL_AREA' IN

TYPEOF (item.item)

)

THEN -- annotation fill area in 3D

RETURN (

NOT (SIZEOF (QUERY (f_a_style <* item.styles [1].styles |

'API_ABSTRACT_SCHEMA.FILL_AREA_STYLE' IN

TYPEOF (f_a_style)

)

) <> SIZEOF (item.styles [1].styles) - 1

)

AND

NOT (SIZEOF (QUERY (f_a_style <* item.styles [1].styles |

'API_ABSTRACT_SCHEMA.' +

'API_EXTERNALLY_DEFINED_FILL_AREA_STYLE'

IN TYPEOF (f_a_style)

)

) <> 1

)

) ;

ELSE -- any other geometric_representation_item

RETURN (SIZEOF (item.styles [1].styles) = 1);

END_IF;

END IF; -- end 3D context

-- case of 2D space

nb_style := SIZEOF (item.styles [1].styles) ;

IF_ ( SIZEOF (QUERY ( st <* item.styles [1].styles |

'API_ABSTRACT_SCHEMA.' +

'API_PREDEFINED_VIRTUALLY_SENT_STYLE' IN

TYPEOF (st)

)

) = 1

)

THEN

IF ( SIZEOF (QUERY ( st <* item.styles [1].styles |

'API_ABSTRACT_SCHEMA.' +

'API_PREDEFINED_OCCLUSION_STYLE' IN

TYPEOF (st)

)

) = 1

)

THEN

nb_style:=nb_style-2;

ELSE

RETURN (FALSE); -- virtually sent shall be bl involved

END_IF;

ELSE -- not virually sent

IF ( SIZEOF (QUERY ( st <* item.styles [1].styles |

'API_ABSTRACT_SCHEMA.' +

'API_PREDEFINED_OCCLUSION_STYLE' IN

TYPEOF (st)

)

) = 1

)

THEN

nb_style:=nb_style-1;

END_IF;

END_IF;

IF ( 'API_ABSTRACT_SCHEMA.ANNOTATION_FILL_AREA' IN

TYPEOF (item.item)

)

THEN

nb_style:=nb_style - SIZEOF (QUERY (f_a_style<*item.styles [1].styles |

'API_ABSTRACT_SCHEMA. '+

'FILL_AREA_STYLE' IN

TYPEOF (f_a_style)

)

) ;

END_IF;

RETURN (nb_style <= 1);

END FUNCTION;

(*

6.4 Глобальные правила схемы API_ABSTRACT_SCHEMA

Настоящий подраздел описывает глобальные правила, ассоциированные с рассмотренными выше сущностями (содержащимися в схеме api_abstract_schema) и ограничивающие их использование и их соотношения.

6.4.1 Правило unique_shape_representation

Правило unique_shape_representation требует существования уникальной сущности представления формы shape_representation схемы api_abstract_schema. Указанное представление формы соответствует форме продукта, созданного с помощью интерфейса базы данных CAD.

Спецификация на языке EXPRESS:

*)

RULE unique_shape_representation FOR (shape_representation);

WHERE

WR1: SIZEOF ( QUERY ( SHAPE <* shape_representation | TRUE)) =1;

END_RULE;

(*

Спецификация на языке EXPRESS:

*)

END_SCHEMA; -- end API_ABSTRACT schema

(*

7 Функциональные спецификации интерфейса

Примечание - Логическое описание функций интерфейса и их привязок на языке FORTRAN дано в приложении А.

7.1 Соглашения об обозначениях

7.1.1 Представления функций

Заголовок функции описывает:

I. Имя функции;

II. Минимальный уровень интерфейса, для которого функция является обязательной;

III. Минимальный уровень геометрической мощности, для которого функция является обязательной. Для каждого параметра списка указаны:

IV. Является ли параметр входным или выходным;

V. Имя параметра;

VI. Описание данных (система обозначений типов приведена в разделе 7.1.2);

VII. Суть параметра;

VIII. Для каждой сущности указываются ее допустимые типы (например, линия, базовая поверхность, точка и т.п.).

Кроме того, для перечислимых типов данных (например, [TDB, CAD]), могут указываться допустимые значения, числа удвоенной длины, целочисленные данные, ограничения диапазонов значений [например, (EPS х МАХ)].

Привязки языка FORTRAN зависят от:

IX. Синтаксиса языка FORTRAN в части использования функций function и подпрограмм subroutine (отображение логического типа на тип FORTRAN рассмотрено в приложении А, раздел А.2);

X. Эффективности используемых функций при условии отсутствия ошибок записи. Эффективность функций, за исключением функций запроса и функций восстановления состояния ошибки Reset_Error_State, обеспечивается, если:

1) интерфейс не находится в состоянии ошибки;

2) используемая функция не выявила ошибок.

В противном случае функция возвращается в прикладную программу, а во втором случае она устанавливает значения ошибок, равные error_variable (ошибка переменной), error_text (ошибка текста) и error_origin (ошибка адреса начала программы);

XI. Особых примечаний, необходимых для использования и реализации функции.

Имеются внутренние ссылки на:

XII. Разделы или подразделы настоящего стандарта, определяющие понятия или области определения сущностей используемых функций.

Ошибки, выявляемые функциями, идентифицируются:

XIII. Номером ошибки или символом "-" отсутствия ошибок;

XIV. Сопутствующим сообщением об ошибке.

Нижеследующий пример иллюстрирует порядок представления функции:

Пример - Раскладка представления функции:

Имя функции:

Уровень интерфейса:

(II)

(I)

Уровень геометрической мощности:

(III)

Параметры:

Вход (выход)

Имя

Тип данных

Смысл

Допустимые тип/значение

IV

(V)

(VI)

(VII)

(VIII)

Привязка языка FORTRAN: (IX)

Результат выполнения функции: (X)

Примечание: (XI)

Внутренняя ссылка: (XII)

Ошибки:

XIII

(XIV)

7.1.2 Представления типов данных

Функции используют либо простые типы данных, либо комбинации простых типов.

Таблица 16 - Простые типы данных

Обозначение

Тип данных

Описание

I

Integer

Целое число

D

Double

Число с максимальным количеством значащих цифр для используемого языка программирования

N

entity_name_type

Идентификатор сущности

Е

Enumeration

Упорядоченное множество значений. Множество упорядочивается путем перенумерации идентификаторов элементов, приобретающих значения

S

String

Последовательность символов

Комбинации простых типов - перечни значений одного простого типа.

Например:

n х / - перечень целых значений;

n х D - перечень значений удвоенной длины;

n х N - перечень идентификаторов сущности entity_name_type;

n х S - перечень строк.

Символ n указывает, что переменная является целочисленной.

Диапазоны допустимых значений или перенумерованные значения могут быть ограничены:

- условием. Например: >0° или ();

- стандартным диапазоном целочисленных значений. Например: (1...3);

- диапазоном целочисленных значений, где максимум определяется реализацией и прочими ограничениями. Например: (1...n);

- перечнем перенумерованных значений. Например: [TDB, CAD].

7.1.3 Имена сущностей и аббревиатуры

Для описания допустимых подтипов сущностей функций интерфейса используются нижеследующие краткие имена.

Таблица 17 - Краткие имена типов сущностей

Краткое имя

Смысловое значение

а1р

Axis1_placement (размещение оси координат)

а2р

Axis2_placement (локальная координатная система)

Afa

Заполненная область комментариев annotatiоn_fiIl_area

Aps

Api_planar_surface (плоская поверхность интерфейса прикладного программирования)

Arc

Api_circular_arc (дуга окружности интерфейса прикладного программирования)

Blk

Block (блок)

Brs

Boolean_result (результат булевой операции с телами)

Con

Right_circular_cone (прямой круглый конус)

Ctr

Api_contouг (контур интерфейса прикладного программирования)

Cyl

Right_circular_cylinder (прямой круговой цилиндр)

Dir

Direction (направление)

Eas

Extruded_area_solid (тело, полученное экструдированием области)

Elc

Api_elliptical_arc (дуга эллипса интерфейса прикладного программирования)

Fsh

Fill_area_style_hatching (стиль штриховки заполненной области)

Grp

Api_group (группа интерфейса прикладного программирования)

Hss

Half_space_solid (тело в полупространстве)

Hyp

Api_hyperbolic_arc (дуга гиперболы интерфейса прикладного программирования)

Lin

Api_line (линия интерфейса прикладного программирования)

Par

Api_parabolic_arc (дуга параболы интерфейса прикладного программирования)

Pln

Polyline (полилиния)

Pnt

Cartesian_point (декартова точка)

Ras

Revolved_area_solid (тело, полученное вращением области вокруг заданной оси)

Set

Set (множество)

Sph

Sphere (сфера)

Tor

Torus (тор)

Wdg

Right_angular_wedge (прямой клин)

Таблица 18 - Краткие имена наборов типов сущностей

Краткое имя

Смысловое значение

Basic

Элемент набора (lin, arc)

Conic_arc

Элемент набора (elc, hyp, par)

Curves

Элемент набора (basic, conic_arc, general)

Csg

Элемент набора (blk, con, cyl, sph, tor, wdg, brs)

Fill_area

Элемент набора (afa, fsh)

General

Элемент набора (pln, ctr)

Math

Элемент набора (dir, a1p, a2p)

Solid_model

Элемент набора (csg, sweep)

Solids

Элемент набора (solid_model, hss)

Sweep

Элемент набора (eas, ras)

Примечание - Графические сущности обозначают элементы геометрического представления, создаваемые с помощью функций интерфейса в соответствии с рисунком 2 настоящего стандарта.

7.1.4 Имена функций

Имена функций формируются с помощью кратких имен типов сущностей, используемых функцией, и аббревиатур (см. таблицу 19). Все части имени функции начинаются с заглавной буквы, части имени разделены символом подчеркивания "_".

Пример - Функция "Дублирование и сдвиг сущности, заданной направлением" (Duplicate and Shift an Entity defined by a Direction) приобретает имя Dup_Shift_Dir_Ent с помощью нижеследующих сокращений названий отдельных частей:

- Dup означает "дублирование" (duplicate);

- Dir означает "направление" (direction);

- Ent означает "сущность" (entity).

Таблица 19 - Аббревиатуры, используемые для имен функций

Аббревиатура

Смысловое значение

Chg

Изменение

Dup

Дублирование

Ent

Сущность

Gen

Генерация (построение)

Inq

Запрос

Ref_Sys

Ссылочная система

Sld

Твердотельный

7.2 Логическое описание функций интерфейса и привязки языка FORTRAN

Приложение А описывает каждую функцию интерфейса и соответствующие привязки языка FORTRAN 90. Привязки прочих языков описаны в других частях настоящего стандарта.

8 Таблицы интерфейса

Настоящий раздел предоставляет описания всех входных данных таблицы интерфейса и их значения по умолчанию.

8.1 Таблица описаний интерфейса

Нижеследующая таблица содержит все возможные записи, используемые в настоящем стандарте для описания интерфейса прикладного программирования. Значения указанных записей зависят от реализации.

Таблица 20 - Таблица описаний интерфейса

Имя

Тип

Смысловое значение

interface_level

I

Уровень интерфейса: от 1 до 3

hidden_line_capability

E

Включение операций с невидимыми линиямu[off = выключить, on = включить]

max_interpolation_nodes_number

I

Количество точек интерполяции для моделирования (= 1)

contour_entities

n x S

Перечень кратких имен сущностей, допустимых для создания контура api_contour, за исключением базовых сущностей (по крайней мере сущностей "lin" и "агс")

8.2 Таблица статуса интерфейса

Содержит записи таблицы статуса интерфейса, используемые в настоящем стандарте. Указанные значения есть значения по умолчанию. Они могут быть изменены путем инициализации процесса построения вида, выполняемого LMS.

Таблица 21 - Таблица статуса интерфейса

Имя

Тип

Значение

Описание

error_variable (ошибка переменной)

I

0

Отсутствует

error_origin (ошибка адреса)

S

Пусто

Отсутствует

error_text (ошибка текста)

S

Пусто

Отсутствует

geometrical_power_level (уровень геометрической мощности)

I

1

2D-вид

hidden_line (невидимые линии)

E

См. таблицу 20

Равно значению сущности hidden_line_capability

hidden_line_involved (включение невидимых линий)

E

True

Невидимые линии включены [TRUE, FALSE]

interpolation_nodes_number (количество узлов интерполяции)

I

См. таблицу 20

Равно значению сущности mах_interpolation_nodes_number

view_length_unit (единица длины для вида)

E

Метр

Метр [metre, inch]

view_length_scale_factor (масштабный фактор длины для вида)

D

10-3

Масштабный фактор

view_angle_unit (единица угла для вида)

E

Градус

Градус [rad, deg, grad]

point_style

2 x S

"asterisk_point" (звездочка), ISO_13584_31

Стиль воспроизведения точки

curve_style

2 x S

"plain_solid_line" (плоская сплошная линия), ISO_13584_31

Стиль воспроизведения кривой

fiIl_area_styIe

2 x S

"opaque_fill_area" (непрозрачная, заполненная область), ISO_13584_31

Стиль воспроизведения заполненной области

surface_style

2 x S

"solid_surface" (сплошная поверхность), ISO_13584_31

Стиль воспроизведения поверхности

hatch_curve_font

S

"continuous" (непрерывная)

Вид типа линий штриховки

hatch_width

S

"thin_hatch_line" (тонкие линии штриховки)

Толщина линий штриховки

hatch_colour

S

"hatch_line_colour"
(цвет линий штриховки)

Вид цвета линий штриховки

hidden_line_aspect

S

"hidden_line_
invisible" (скрытые невидимые линии)

Стиль невидимых линий для сущностей интерфейса высокого уровня

view_level

D

0.0

Относительный уровень вида (виртуальная высота)

9 Размерности реализации интерфейса

9.1 Минимальные размерности буферов интерфейса и структурированных типов данных

Настоящий подраздел устанавливает минимальные размерности структурированных типов данных и минимальные требуемые возможности хранения данных, поддерживаемых интерфейсом прикладного программирования в соответствии с настоящим стандартом.

Таблица 22 - Размерности реализации интерфейса

Размерность вида

Тип

Значение

Количество сущностей в TDB

I

10000

Количество точек на каждую полилинию

I

300

Количество сущностей на каждый контур api_contour

I

300

Количество внутренних границ на каждую заполненную область комментариев annotation_fill_area

I

100

Количество внутренних границ на каждую плоскую поверхность api_planar_surface

I

100

Количество групп в TDB

I

200

Размер стека группы

I

100

Размер стека множества

I

100

Количество символов в строке

I

256

Приложение А
(справочное)


Логическое описание функций интерфейса и привязки языка FORTRAN

А.1 Введение

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

А.2 Отображения языка FORTRAN

А.2.1 Отображения для функций интерфейса

Подпрограммы и функции языка FORTRAN полностью соответствуют логическим функциям. Каждая функция имеет уникальное имя соответствующей подпрограммы или функции на языке FORTRAN, по которому производится ее запуск. В настоящем приложении содержится как логическое описание функции интерфейса, так и соответствующей привязки языка FORTRAN.

Максимальная длина имени подпрограммы или функции языка FORTRAN не превышает 31 буквы. Имя на языке FORTRAN - это имя логической функции интерфейса, написанное заглавными буквами. Например, логическому имени Dup_Shift_Dir_Ent функции интерфейса (дублирования и сдвига сущности в заданном направлении) соответствует имя DUP_SHIFT_DIR_ENT на языке FORTRAN.

А.2.2 Отображение данных логического типа

Таблица А.1 - Отображение данных логического типа на языке FORTRAN

Данные логического типа

Отображение на языке FORTRAN

Integer

INTEGER (целые числа)

List of integer

INTEGER (целочисленный регулярный массив), где длина (размерность массива) задается целочисленной переменной или целочисленной константой

Double

DOUBLE PRECISION (двойная точность)

List of double

DOUBLE PRECISION (регулярный массив чисел двойной точности), в котором длина (размерность массива) задается целочисленной переменной или целочисленной константой

Enumeration

INTEGER (целочисленный тип); все значения находятся в диапазоне от 0 до N - 1, где N - количество перенумерованных элементов

Entity_name_type

INTEGER (целочисленный тип); нуль = 0; unknown (неизвестное значение) = отрицательное целое число

List of entity_name_type

INTEGER (регулярный массив имен сущностей), в котором длина (размерность массива) задается целочисленной переменной или целочисленной константой

String

CHARACTER (LEN = *), содержимое строки

List of string

CHARACTER (LEN = *), регулярный массив символов, в котором длина (размерность массива) задается целочисленной переменной (N) или целочисленной константой

А.2.3 Ограничения языка FORTRAN для программ поставщиков деталей

А.2.3.1 Основы языка

Основы синтаксиса языка программирования FORTRAN см. ИСО 1539:1991 (Е).

А.2.3.2 Исключенные утверждения

Программы на языке FORTRAN используются библиотеками деталей. Работа указанных программ в различных вычислительных средах и различных CAD поддерживается вспомогательными технологиями (например, компиляцией, редактированием, интерпретацией, трансляцией и т.п.).

Для обеспечения работоспособности указанных программ запрещены нижеследующие утверждения языка FORTRAN:

1) утверждения программной архитектуры:

PROGRAM;

ENTRY;

STOP;

BLOCK DATA;

2) утверждения ввода/вывода:

READ, WRITE, FORMAT;

OPEN, CLOSE, INQUIRE;

REWIND, BACKSPACE, ENDFILE;

3) особые утверждения организации данных языка FORTRAN:

COMMON;

EQUIVALENCE;

DATA;

SAVE.

A.2.3.3 Устаревшие возможности языка FORTRAN

Нижеследующие возможности объявлены устаревшими в языке FORTRAN. Сейчас они все еще допустимы, но в следующей редакции стандарта использоваться уже не будут. Следовательно, нужно стараться не использовать их в новых программах и исключать из старых программ:

- Arithmetic-IF (условное выполнение арифметических операций);

- Alternate-Return from subroutine (альтернативный выход из подпрограммы);

- ASSIGN (назначение);

- Assigned FORMAT specifier (описание назначенного формата);

- Assigned GOTO (безусловный переход по метке);

- использование для организации цикла DO нецелочисленных переменных;

- использование циклов DO без окончания CONTINUE;

- использование ответвления END IF снаружи блока IF;

- использование описателя типа Н;

- PAUSE (пауза).

А.2.3.4 Рекомендуемые утверждения языка FORTRAN

Следует избегать неявного описания типа данных. Поэтому каждая программа должна содержать нижеследующую директиву:

IMPLICIT NONE (неявное описание типа данных отсутствует).

А.3 Функции интерфейса

Настоящее подмножество содержит только функции интерфейса, используемые в библиотеках программ поставщиков деталей. Описание данных функций содержится в настоящем приложении.

А.3.1 Перечень функций интерфейса уровня 1

В таблице А.2 представлено подмножество функций интерфейса уровня 1 (см. раздел 5.1.1 и таблицу 20 "Таблица описаний интерфейса"). Данные функции работают в реализациях, соответствующих уровню 1 интерфейса.

Таблица А.2 - Перечень функций интерфейса уровня 1

Раздел

Имя функции

Параметр

Мощность

А.4.1

Функции управления данными

А.4.1.1

Clear_Tdb (очистка временной базы данных)

-

А.4.1.2

Fix_Ent (выбор сущностей CAD)

N, ENTLST

А.4.2

Функции управления ошибками

А.4.2.1

lnq_Error_State (запрос состояния ошибки)

ERRNUM, ERRSRC, ERRTXT, ERR

А.4.2.2

Reset_Error_State (перезагрузка состояния ошибки)

-

А.4.3

Функции запроса возможностей интерфейса

А.4.3.1

lnq_Level (запрос уровня интерфейса)

LEVEL, ERR

А.4.3.2

lnq_Hidden_Line_Capability (запрос включения невидимых линий)

HLCAPA, ERR

А.4.3.3

lnq_Contour_Ent (запрос сущности контура)

N, TYPLST, ERR

А.4.3.4

lnq_lnterface_Dimension (запрос размерности интерфейса)

NUMLST, ERR

А.4.4

Функции запроса системных записей интерфейса

А.4.4.1

lnq_Hidden_Line (запрос о невидимых линиях)

HIDMOD, ERR

А.4.4.2

lnq_Hidden_Line_lnvolvement (запрос включения невидимых линий)

HLI, ERR

А.4.4.3

lnq_lnterpolation_Nodes (запрос числа узлов интерполяции)

NODENO, ERR

А.4.4.4

lnq_Geometrical_Power (запрос геометрической мощности)

POWER, ERR

А.4.4.5

lnq_Ovc_Unit (запрос единиц измерения VOVC)

VLUNI, VLSFAC, VAUNI, ERR

А.4.5

Включение системных функций интерфейса

А.4.5.1

Set_Hidden_Line_lnvolvement (включение невидимых линий)

HLI (HLI)

А.5.1.1

Direction (направление)

А.5.1.1.1

Dir_component (составляющая направления)

X, Y, Z, KFIX

А.5.1.1.2

Dir_2_Pnt

STAPNT, ENDPNT, KFIX

А.5.1.1.3

Dir_2_Dir_angle

REFDIR, ZDIR, ANGLE, KFIX

А.5.1.1.4

Dir_A2p_X

A2PNAM, KFIX

А.5.1.1.5

Dir_A2p_Y

A2PNAM, KFIX

А.5.1.3

Axis2_placement (локальная координатная система)

А.5.1.3.1

A2p_3_Pnt

CENPNT, AXSPNT, REFPNT, KFIX

А.5.1.3.2

A2p_2_Dir

CENPNT, AXSDIR, REFDIR, KFIX

А.5.1.3.3

A2p_2_Dir_Xy

CENPNT, REFDIR, YAXDIR, KFIX

А.5.1.3.4

A2p_Position_Relative

REFLST, KFIX

А.5.1.3.5

A2p_Ref_Sys

KFIX

А.5.2.1

Точки с каноническим определением

А.5.2.1.1

Pnt_Cartesian_Absolute

X, Y, Z, KFIX

А.5.2.1.2

Pnt_Cartesian_Relative

PNTNAM, DX, DY, DZ, KFIX

А.5.2.1.3

Pnt_Polar_Absolute

PHI, THETA, RAD, KFIX

А.5.2.1.4

Pnt_Polar_Relative

PNTNAM, PHI, THETA, RAD, KFIX

А.5.2.2

Задание точки ограничениями

А.5.2.2.1

Pnt_Begin_Ent

ENTNAM, KFIX

А.5.2.2.2

Pnt_End_Ent

ENTNAM, KFIX

А.5.2.2.3

Pnt_lntersection_2_Ent

ENTNM1, ENTNM2, KFIX

А.5.2.2.4

Pnt_Tangential_Arc

ARCNAM, LINNAM, KFIX

А.5.2.2.5

Pnt_Center_Arc

ARCNAM, KFIX

А.5.2.2.6

Pnt_Middle_Ent

ENTNAM, KFIX

А.5.2.2.7

Pnt_Projection_Ent

PNTNAM, ENTNAM, KFIX

А.5.2.2.8

Pnt_Projection_A2p

PNTNAM, A2PNAM, KFIX

А.5.3.1.1

Отрезки прямой (api_line)

А.5.3.1.1.1

Lin_2_Pnt

STAPNT, ENDPNT, KFIX

А.5.3.1.1.2

Lin_Pnt_Length_Dir

STAPNT, LEN, DIRNAM, KFIX

А.5.3.1.1.3

Lin_Tangential_Arc

STAPNT, ARCNAM, KFIX

А.5.3.1.1.4

Lin_Tangential_2_Arc

ARCNM1, ARCNM2, KFIX

А.5.3.1.1.5

Lin_Chamfer_2_Lin

LEN1, LEN2, LINNM1, LINNM2, KFIX

А.5.3.1.2

Окружности и дуги окружностей (api_circular_arc)

А.5.3.1.2.1

Circle_Rad_A2p

RAD, A2PNAM, SENSE, KFIX

А.5.3.1.2.2

Arc_3_Pnt

STAPNT, INTPNT, ENDPNT, KFIX

А.5.3.1.2.3

Arc_Rad_2_Angle_A2p

RAD, STAANG, ENDANG, A2P- NAM, SENSE, KFIX

А.5.3.1.2.4

Arc_Rad_3_Pnt

RAD, STAPNT, ENDPNT, HLP- PNT, KFIX

А.5.3.1.2.5

Arc_Rad_2_Pnt_A2p

RAD, PNTNM1, PNTNM2, A2P- NAM, SENSE, KFIX

А.5.3.1.2.6

Arc_Fillet_2_Ent

ENTNM1, ENTNM2, RAD, KFIX

А.5.3.1.2.7

Arc_Tangential_2_Ent

ENTNM1, ENTNM2, RAD, KFIX

А.5.3.1.2.8

Arc_Rad_2_Ent

RAD, ENTNM1, ENTNM2, IN1, IN2, MINLEN, KFIX

А.5.3.1.2.9

Arc_3_Ent

ENTNM1, ENTNM2, ENTNM3, IN1, IN2, IN3, KFIX

А.5.3.2.1

Эллипс и дуга эллипса (api_elliptical_arc)

А.5.3.2.1.1

Ellipse_2_Diameter_A2p

SEMI1, SEMI2, A2PNAM, SENSE, KFIX

А.5.3.2.1.2

Elc_Gen

SEMI1, SEMI2, STAANG, ENDANG, A2PNAM, SENSE, KFIX

А.5.3.2.2

Построение дуги гиперболы (api_hyperbolic_arc)

А.5.3.2.2.1

Hyp_Gen

SEMAXI, SEMIMG, STAANG, ENDANG, A2PNAM, KFIX

А.5.3.2.3

Гиперболические дуги (api_parabolic_arc)

А.5.3.2.3.1

Par_Gen

FOCLEN, STAANG, ENDANG, A2PNAM, KFIX

А.5.3.3.1

Полилинии

А.5.3.3.1.1

Pln_Cartesian_Coordinate

N, XLST, YLST, ZLST, KFIX

А.5.3.3.1.2

Pln_Pnt_List

N, PNTLST, KFIX

А.5.3.3.2

Плоский контур (api_contour)

А.5.3.3.2.1

Ctr_Gen

N, ENTLST, KFIX

А.5.4

Заполненная область

А.5.4.1

Afa_Gen

CTRNAM, N, CTRLST, KFIX

А.5.4.2

Fsh_Gen

REFPNT, DIST1, DIST2, ANGLE

А.5.4.3

Hatch_Afa

HATCH, AFA, REFPNT

А.6.1

Структурные сущности в TDB

А.6.1.1

Create_Grp

-

А.6.1.2

Close_Grp

-

А.6.1.3

Reopen_Grp

GRPNAM

А.6.1.4

Remove_Ent_Grp

ENTNAM

А.6.1.5

Gather_Ent_Grp

N, ENTLST

А.6.1.6

Add_Ent_Grp

GRPNAM,ENTNAM

А.6.2

Структурные сущности, отправляемые в CAD

А.6.2.1

Open_Set

SETNAM

А.6.2.2

Close_Set

-

А.7.1

Дублирующая сущность

А.7.1.1

Dup_Ent

ENTNAM, KFIX

А.7.2

Зеркальное отражение сущностей

А.7.2.1

Mirror_Ent

ENTNAM, LINNAM

А.7.2.2

Dup_Mirror_Ent

ENTNAM, LINNAM, KFIX

А.7.3

Сущности сдвига

А.7.3.1

Shift _Dir_Ent

ENTNAM, DIRNAM, SHFLEN

А.7.3.2

Shift_Displacement_Ent

ENTNAM, DX, DY, DZ

А.7.3.3

Dup_Shift_Dir_Ent

ENTNAM, DIRNAM, SHFLEN, KFIX

А.7.3.4

Dup_Shift_Displacement_Ent

ENTNAM, DX, DY, DZ, KFIX

А.7.4

Сущности вращения

А.7.4.1

Rotate_Ent

ENTNAM, PNTNAM, ANG1, ANG2, ANG3

А.7.4.2

Dup_Rotate_Ent

ENTNAM, PNTNAM, ANG1, ANG2, ANG3, KFIX

А.7.5

Изменение сущностей

А.7.5.1

Chg_Orientation_Ent

ENTNAM

А.7.5.2

Chg_Sense_Ent

ENTNAM

А.7.5.3

Homotetia_Ent

ENTNAM, PNTNAM, К

А.8.1

Утилиты геометрических сущностей

А.8.1.1

Pnt_Retrieve_Coordinate

PNTNAM, X, Y, Z

А.8.1.2

Dir_Retrieve_Component

DIRNAM, X, Y, Z

А.8.1.3

A2p_Retrieve_Location

A2PNAM, PNTNAM

А.8.1.4

Lin_Retrieve_Dir

LINNAM, DIRNAM

А.8.1.6

Arc_Retrieve_A2p

ARCNAM, A2PNAM

А.8.1.7

Arc_Retrieve_Rad

ARCNAM, RAD

А.8.1.8

Arc_Retrieve_Sense

ARCNAM, SENSE

А.8.2

Утилиты запроса сущности

А.8.2.1

Retrieve_Type_Ent

ENTNAM, TYPE

А.8.2.2

Retrieve_Member_Grp

GRPNAM, N, ENTLST

А.8.2.3

Retrieve_Ent_Ctr

CTRNAM, N, ENTLST

А.8.3

Вычисление утилит

А.8.3.1

Distance_2_Pnt

PNTNM1, PNTNM2

А.8.3.2

Start_Angle_Arc

ARCNAM

А.8.3.3

End_Angle_Arc

ARCNAM

А.9.1

Построение и задание новых ссылочных систем

А.9.1.1

Ref_Sys_3_Pnt

CENPNT, AXSPNT, REFPNT

А.9.1.2

Ref_Sys_2_Dir

CENPNT, AXSDIR, REFDIR

А.9.1.3

Ref_Sys_2_Dir_Xy

CENPNT, REFDIR, YAXDIR

А.9.1.4

Ref_Sys_Pоsition_Relative

REFLST

А.9.1.5

Ref_Sys_A2p

A2PNAM

А.10.1

Задание глобальных записей для атрибутов визуализации

А.10.1.1

Set_Point_Style

EXTSOU, PNTSTY

А.10.1.2

Set_Curve_Style

EXTSOU, CURSTY

А.10.1.3

Set_Fill_Area_Style

EXTSOU, AFASTY

А.10.1.4

Set_Surface_Style

EXTSOU, SURSTY

А.10.1.5

Set_Hatching_Width

WIDTH, ERR

А.10.1.6

Set_Hatehing_Curve_Fоnt

FONT

А.10.1.7

Set_Hatching_Colour

COLOUR

А.10.1.8

Set_Hidden_Line_Aspect

HIDSTY

А.10.1.9

Set_Relative_View_Level

RVL

А.10.2

Запросы атрибутов визуализации из глобальных записей

А.10.2.1

lnq_Point_Style

EXTSOU, PNTSTY, ERR

А.10.2.2

lnq_Curve_Style

EXTSOU, CURSTY, ERR

А.10.2.3

Inq_FiIl_Area_StyIe

EXTSOU, AFASTY, ERR

А.10.2.4

lnq_Surface_Style

EXTSOU, SURSTY, ERR

А.10.2.5

lnq_Hatching_Width

WIDTH, ERR

А.10.2.6

lnq_Hatching_Curve_Font

FONT, ERR

А.10.2.7

lnq_Hatching_Colour

COLOUR, ERR

А.10.2.8

lnq_Hidden_Line_Aspect

HIDSTY, ERR

А.10.2.9

Inq_Relative_View_LeveI

RVL, ERR

А.10.3

Изменение стиля воспроизведения сущностей

А.10.3.1

Chg_Point_Style

PNTNAM, EXTSOU, PNTSTY

А.10.3.2

Chg_Curve_Style

ENTNAM, EXTSOU, CURSTY

А.10.3.3

Chg_FiIl_Area_StyIe

AFAN AM, EXTSOU, AFASTY

А.10.3.4

Chg_Surface_StyIe

ENTNAM, EXTSOU, SURSTY

А.10.3.5

Chg_Flatching_Width

FSHNAM, WIDTH

А.10.3.6

Chg_Hatching_Curve_Fоnt

FSHNAM, FONT

А.10.3.7

Chg_Flatching_Colour

FSHNAM, COLOUR

А.10.3.8

Chg_Flidden_Line_Aspect

ENTNAM, HIDSTY

А.10.3.9

Chg_Relative_View_Level

ENTNAM, RVL

А.10.4

Запрос стиля элемента из сущности

А.10.4.1

Retrieve_Point_Style

PNTNAM, EXTSOU, PNTSTY

А.10.4.2

Retrieve_Curve_Style

ENTNAM, EXTSOU, CURSTY

А.10.4.3

Retrieve_Fill_Area_Style

AFAN AM, EXTSOU, AFASTY

А.10.4.4

Retrieve_Surface_Style

ENTNAM, EXTSOU, SURSTY

А.10.4.5

Retrieve_FIatching_Width

FSHNAM, WIDTH

А.10.4.6

Retrieve_FIatching_Curve_Fоnt

FSHNAM, FONT

А.10.4.7

Retrieve_Flatching_Colour

FSHNAM, COLOUR

А.10.4.8

Retrieve_Plidden_Line_Aspect

ENTNAM, HIDSTY

А.10.4.9

Retrieve_Relative_View_Level

ENTNAM, RVL

А.3.2 Перечень функций интерфейса уровня 2

В таблице А.З представлено подмножество функций интерфейса, определяющее полное подмножество добавочных функций интерфейса уровня 2 (см. раздел 5.1.1 и таблицу 20 "Таблица описаний интерфейса"). Эти функции можно вызывать для реализации, соответствующей интерфейсу уровня 2, в добавление к функциям интерфейса уровня 1.

Таблица А.З - Функции интерфейса уровня 2

Раздел

Имя функции

Параметр

Мощность

А.5.1.1

Направление

А.5.1.1.6

Dir_A2P_Z

A2PNAM, KFIX

А.5.1.2

Axis1_placement (одна ось)

А.5.1.2.1

A1p_Gen

PNTNAM, DIRNAM, KFIX

А.5.1.2.2

A1p_2_Pnt

STAPNT, ENDPNT, KFIX

А.5.2.1

Точки с каноническим определением

А.5.2.1.5

PNT_Cylinder_Absolute

PHI, RAD, HEIGHT, KFIX

А.5.2.1.6

PNT_Cylinder_Relative

PNTNAM, PHI, RAD, HEIGHT, KFIX

А.5.5

Сущности поверхности

А.5.5.1

Aps_Gen

CTRNAM, N, CTRLST, KFIX

А.3.3 Перечень функций интерфейса уровня 3

В таблице А.4 представлено подмножество функций интерфейса, определяющее полное подмножество дополнительных функций интерфейса уровня 3 (см. раздел 5.1.1 и таблицу 20 "Таблица описаний интерфейса"). Эти функции вызываются для реализации, соответствующей интерфейсу уровня 3, в добавление к функциям интерфейсов уровней 1 и 2.

Таблица А.4 - Функции интерфейса уровня 3

Раздел

Имя функции

Параметр

Мощность

A.5.6.1

Сущности конструктивной блочной геометрии

A.5.6.1.1

Sph_Gen

RAD, CNTPNT, KFIX

=3

A.5.6.1.2

Con_Gen

ANGLE, HEIGHT, RAD, A1PNAM, KFIX

=3

A.5.6.1.3

Cyl_Gen

RAD, HEIGHT, A1PNAM, KFIX

=3

A.5.6.1.4

Tor_Gen

MAJOR, MINOR, A1PNAM, KFIX

=3

A.5.6.1.5

Blk_Gen

LENX, LENY, LENZ, A2PNAM, KFIX

=3

A.5.6.1.6

Wdg_Gen

LENX, LENY, LENZ, LTX, A2PNAM, KFIX

=3

A.5.6.2

Регуляризованные булевы операции конструктивной блочной геометрии

A.5.6.2.1

Union_Sld

BOPNM1, BOPNM2, KFIX

=3

A.5.6.2.2

lntersection_Sld

BOPNM1, BOPNM2, KFIX

=3

A.5.6.2.3

Difference_Sld

BOPNM1, BOPNM2, KFIX

=3

A.5.6.3

Сущности тел, полученные путем очерчивания

A.5.6.3.1

Sld_Extrusion

SRFNAM, DIRNAM, DEPTH, KFIX

=3

A.5.6.3.2

Sld_Revolution

SRFNAM, ANG, A1PNAM, KFIX

=3

A.5.6.4

Построение "труб" в конструктивной блочной геометрии

A.5.6.4.1

Sld_Pipe

PLNNAM, SRFNAM, RAD, KFIX

=3

A.5.6.5

Построение тела в полупространстве

A.5.6.5.1

Hss_Gen

A2PNAM, AGREMF

=3

A.8.1

Утилиты геометрических сущностей

A.8.1.5

Нss_Retriеve_A2р

HSSNAM, A2PNAM

=3

А.4 Функции управления интерфейсом

Функции управления интерфейсом обеспечивают управление интерфейсом из прикладных программ (например, отправку геометрических данных в CAD), состоянием ошибки, запросом исходных данных из таблицы интерфейса.

А.4.1 Функции управления данными

Очистка временной базы данных

Clear_TDB

Выбор сущности CAD

Fix_Ent

А.4.1.1 Очистка временной базы данных

Имя функции:

Уровень интерфейса:

1

Clear_TDB

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

-

-

-

-

-

Привязка языка FORTRAN:

CALL CLEAR_TDB ( )

Результат применения функции

Очистка временной базы данных (TDB). При возникновении ошибки TDB не изменяется.

Примечание - Если существует открытый 2D-вид и сущности внутри TDB, отправленные виртуально (с назначенным стилем api_pre_defined_vitually_sent_style), то указанные сущности не должны быть стерты. Они остаются в TDB до окончания процесса удаления невидимых линий.

Внутренние ссылки: 5.3.4, 5.3.5, 6.2.5.5.

Ошибки

-

Ошибок нет

А.4.1.2 Выбор сущностей CAD

Имя функции:

Уровень интерфейса:

1

Fix_Ent

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

N

1

Длина ENTLST

Ввод

ENTLST

n х N

Перечень имен сущностей

(pnt, curves, afa, aps, math, solid_model,grp)

Привязка языка FORTRAN:

CALL FIX_ENT (N, ENTLST)

Результат применения функции

Все сущности заданного перечня ENTLST удаляются из групповой структуры, которой они принадлежат, и отправляются из TDB в CAD. Доступ к указанным сущностям прекращается. Имена указанных сущностей становятся неизвестными. При возникновении ошибки никакие изменения не производятся.

Примечания

1 Если используемая сущность является экземпляром типа группы api_group интерфейса прикладного программирования, то данная группа должна быть замкнутой, все сущности, ссылающиеся на данную группу, направляются в CAD. Имя данной группы становится неизвестным, как и имена ссылочных сущностей.

2 Если существует открытый 2D-вид и запись hidden_line в таблице статуса интерфейса содержит ON (включено), то все сущности списка ENTLST с включенными невидимыми линиями (HLI) отправляются только виртуально. Это означает, что указанные сущности приобретают предварительно определенный стиль виртуальной отправки api_pre_defined_vitually_sent_style. После окончания процесса удаления невидимых линий они остаются внутри временных баз данных (TDB) до момента отправки в CAD.

3 Если сущность отправлена виртуально, то она удаляется из структуры api_group. Она должна принадлежать корневой группе, которая не может быть использована в какой-либо групповой функции.

Внутренние ссылки: 5.3.4, 5.3.5, 5.5, 6.1.19, 6.2.5.5.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

5

Целое значение находится вне допустимого диапазона

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

А.4.2 Функции управления ошибками

Запрос состояния ошибки

lnq_Error_State

Перезагрузка состояния ошибки

Reset_Error_State

А.4.2.1 Запрос состояния ошибки

Имя функции:

Уровень интерфейса:

1

lnq_Error_State

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

ERRNUM

I

Текущее значение параметра ошибки

0 или error_variable

Вывод

ERRSRC

S

Имя функции, в которой возникла ошибка

Вывод

ERRTXT

S

Текст сообщения об ошибке

Вывод

ERR

E

error_indicator (индикатор ошибки функции запроса)

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_ERROR_STATE (ERRNUM, ERRSRC, ERRTXT, ERR)

Результат использования функции

Функция обеспечивает текущий статус ошибки интерфейса error_status путем возвращения текущих значений переменных error_variable, error_origin и error_text.

Если интерфейс находится в состоянии ошибки (error_state = true), то:

- текущее значение ошибки переменной и текущие значения строк ошибки адреса и ошибки текста таблицы статуса интерфейса присваиваются переменной ERRNUM и строкам ERRSRC и ERRTXT соответственно;

- значение ERRNUM равно 0, и строки ERRSRC и ERRTXT являются пустыми.

Если интерфейс не находится в состоянии ошибки (error_state = false), то:

- индикатор ошибки error_indicator с именем ERR сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Нет.

Внутренние ссылки: 5.8.

Ошибки

-

Ошибок нет

А.4.2.2 Перезагрузка состояния ошибки

Имя функции:

Уровень интерфейса:

1

Reset_Error_State

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

-

-

-

-

-

Привязка языка FORTRAN:

CALL RESET_ERROR_STATE ( )

Результат использования функции

Функция повторно формирует текущее состояние ошибки интерфейса.

Если интерфейс находится в состоянии ошибки (error_state = true), то:

- интерфейс выходит из состояния ошибки и повторно задает текущее значение ошибки переменной error_variable и текущие значения строк ошибки адреса error_origin и ошибки текста error_text в таблице статуса интерфейса. При этом значение ошибки переменной обнуляется, строки ошибки адреса и ошибки текста становятся пустыми.

Если интерфейс не находится в состоянии ошибки (error_state = false), то:

- функция не выполняется и никакие изменения не производятся.

Примечание - Нет.

Внутренние ссылки: 5.8.

Ошибки

-

Ошибок нет

А.4.3 Функции запроса возможностей интерфейса

Запрос уровня интерфейса

lnq_Level

Запрос включения невидимых линий

lnq_Hidden_Line_Capability

Запрос сущности контура

lnq_Contour_Ent

Запрос размерности интерфейса

lnq_lnterface_Dimension

А.4.3.1 Запрос уровня интерфейса

Имя функции:

Уровень интерфейса:

1

lnq_Level

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

LEVEL

I

Значение записи interface_level

(1-3)

Вывод

ERR

Е

Индикатор запроса error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_LEVEL (LEVEL, ERR)

Результат использования функции

Функция доставляет значение записи interface_level из таблицы описаний интерфейсa. Индикатор ошибки error_indicator (ERR) сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Нет.

Внутренние ссылки: 5.1.1, 8.1.

Ошибки

-

Ошибок нет

А.4.3.2 Запрос включения невидимых линий

Имя функции:

Уровень интерфейса:

1

lnq_Hidden_Line_Capability

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

HLCAPA

Е

Значение записи hidden_line_capability

[OFF, ON]

Вывод

ERR

Е

Индикатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_HIDDEN_LINE_CAPABILITY (HLCAPA, ERR)

Результат использования функции

Функция доставляет значение записи hidden_line_capability из таблицы описаний интерфейсА.Индикатор ошибки error_indicator (ERR) сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Нет.

Внутренние ссылки: 5.3.5, 8.1.

Ошибки

-

Ошибок нет

А.4.3.3 Запрос сущности контура

Имя функции:

Уровень интерфейса:

1

lnq_Contour_Ent

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип
данных

Смысл

Допустимый тип/значение

Вывод

N

I

Длина перечня TYPLST (количество записей)

(2...6)

Вывод

TYPLST

n x S

Перечень кратких имен типов сущностей, допустимых для представления api_contour

(lin, arc, elc, par, hyp, pln)

Вывод

ERR

Е

Индикатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_CONTOUR_ENT (N, TYPLST, ERR)

Результат использования функции

Функция доставляет перечень кратких имен типов сущностей (допустимых для представления контура) в виде записи contour_entities из таблицы описаний интерфейса с двумя добавлениями по умолчанию. Минимальное количество типов сущностей перечня TYPLST равно 2 (это сущность "lin" представления линий api_line и сущность "аrс" представления дуги окружности api_circular_arc, которые непременно должны присутствовать в каждой реализации интерфейса). Индикатор ошибки error_indicator (ERR) сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Количество символов в каждой позиции перечня TYPLST (i) равно 3.

Внутренние ссылки: 6.1.14.2, 7.1.3, 8.1.

Ошибки

-

Ошибок нет

А.4.3.4 Запрос размерности интерфейса

Имя функции:

Уровень интерфейса:

1

lnq_lnterface_Dimension

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

NUMLST

9 х I

Перечень минимальных размерностей буферов интерфейса

См. ниже

Вывод

ERR

Е

Индикатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_INTERFACE_DIMENSION (NUMLST, ERR)

Результат использования функции

Функция доставляет список целых чисел, равных минимальным размерностям буферов интерфейса, в соответствии с таблицей 21 настоящего стандарта:

NUMLST (1) - количество сущностей, содержащихся в TDB;

NUMLST (2) - количество узлов полилинии;

NUMLST (3) - количество сущностей на контуре api_contour интерфейса прикладного программирования;

NUMLST (4) - количество внутренних границ заполненной области комментариев annotation_fill_area;

NUMLST (5) - количество внутренних границ на плоской поверхности api_planar_surface интерфейса прикладного программирования;

NUMLST (6) - количество групп, содержащихся в TDB;

NUMLST (7) - размер стека группы;

NUMLST (8) - размер стека множества;

NUMLST (9) - количество символов в строке.

Индикатор ошибки error_indicator (ERR) сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Нет.

Внутренние ссылки: 9.1.

Ошибки

-

Ошибок нет

А.4.4 Функции запроса системных записей интерфейса

Запрос о невидимых линиях

lnq_Hidden_Line

Запрос включения невидимых линий

lnq_Flidden_Line_lnvolvement

Запрос числа узлов интерполяции

lnq_lnterpolation_Nodes

Запрос геометрической мощности

lnq_Geometrical_Power

Запрос единиц измерения OVC

lnq_OVC_Unit

А.4.4.1 Запрос о невидимых линиях

Имя функции:

Уровень интерфейса:

1

lnq_Hidden_Line

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

HIDMOD

Е

Текущее значение записи hidden_line

[ON, OFF]

Вывод

ERR

Е

Индикатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_HIDDEN_LINE (HIDMOD, ERR)

Результат использования функции

Функция доставляет текущее значение записи hidden_line из таблицы статуса интерфейса. Индикатор ошибки error_indicator (ERR) сообщает о проблемах, возникающих в процессе использования функции.

Примечание - Нет.

Внутренние ссылки: 5.3.5, 8.2.

Ошибки

-

Ошибок нет

А.4.4.2 Запрос включения невидимых линий

Имя функции:

Уровень интерфейса:

1

lnq_Hidden_Line_lnvolvement

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

HLI

Е

Текущее значение записи hidden_line_lnvolved

[TRUE, FALSE]

Вывод

ERR

Е

Индикатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_HIDDEN_LINE_INVOLVEMENT (HLI, ERR)

Результат использования функции

Функция доставляет текущее значение записи hidden_line_involved из таблицы статуса интерфейса. Индикатор ошибки error_indicator (ERR) сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Нет.

Внутренние ссылки: 5.3.5, 8.2.

Ошибки

-

Ошибок нет

А.4.4.3 Запрос числа узлов интерполяции

Имя функции:

Уровень интерфейса:

1

lnq_lnterpolation_Nodes

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

NODENO

I

Текущее значение записи interpolation_nodes_number

Вывод

ERR

Е

Индикатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_INTERPOLATION_NODES (NODENO, ERR)

Результат использования функции

Функция доставляет применимое и доступное значение записи interpolation_nodes_number из таблицы статуса интерфейса. Индикатор ошибки error_indicator (ERR) сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Нет.

Внутренние ссылки: 6.1.13, 8.1.

Ошибки

-

Ошибок нет

А.4.4.4 Запрос геометрической мощности

Имя функции:

Уровень интерфейса:

1

lnq_Geometrical_Power

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

POWER

I

Текущее значение записи geometrical_power_level

(0...3)

Вывод

ERR

Е

Индикатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_GEOMETRICAL_POWER (POWER, ERR)

Результат использования функции

Функция доставляет текущее значение записи geometrical_power_level из таблицы статуса интерфейса. Индикатор ошибки error_indicator (ERR) сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Нет.

Внутренние ссылки: 5.1.1, 8.2.

Ошибки

-

Ошибок нет

А.4.4.5 Запрос единиц измерения OVC

Имя функции:

Уровень интерфейса:

1

lnq_OVC_unit

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

VLUNI

Е

Текущее значение записи view_length_unit

[METRE, INCH]

Вывод

VLSFAC

D

Текущее значение записи view_length_scale_factor

Вывод

VAUNI

Е

Текущее значение записи view_angle_unit

[RAD, DEG, GRAD]

Вывод

ERR

Е

Индикатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_OVC_UNIT (VLUNI, VLSFAC, VAUNI, ERR)

Результат использования функции

Функция доставляет единицы измерения длины OVC_length_unit, единицы измерения угла OVC_angle_unit, текущие значения единицы длины view_length_unit, масштабного фактора единицы длины view_length_scale_factor и единицы угла view_angle_unit из таблицы статуса интерфейса.

Единица измерения длины получается путем умножения текущего значения единицы на масштабный фактор единицы длины. Единица измерения угла соответствует единице угла.

Индикатор ошибки error_indicator (ERR) сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Нет.

Внутренние ссылки: 5.3.2, 8.2.

Ошибки

-

Ошибок нет

А.4.5 Включение системных функций интерфейса

Включение невидимых линий

Set_Hidden_Line_Involvement

А.4.5.1 Включение невидимых линий

Имя функции:

Уровень интерфейса:

1

Set_Hidden_Line_Involvement

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

HLI

Е

Значение записи hidden_line_involved

[TRUE, FALSE]

Привязка языка FORTRAN:

CALL SET_HIDDEN_LINE_INVOLVEMENT (HLI)

Результат использования функции

Функция устанавливает новое текущее значение записи hidden_line_involved таблицы статуса интерфейса, если значение параметра HLI равно "true". При этом каждая сущность кривой и каждая сущность заполненной области, созданная с помощью функции интерфейса, должна быть включена в процесс удаления невидимых линий. Если значение HLI равно "false", то указанные созданные сущности в данный процесс не включены. При возникновении ошибки никакие изменения не производятся.

Примечание - Нет.

Внутренние ссылки: 5.3.5, 8.2.

Ошибки

1001

Перечислимое значение находится вне установленного диапазона

А.5 Функции геометрических данных

А.5.1 Математические сущности

А.5.1.1 Сущность direction

Задание вектора направления его компонентами

Dir_Component

Задание вектора направления двумя точками

Dir_2 Pnt

Задание вектора направления двумя направлениями и углом

Dir_2_Dir_Angle

Задание оси X сущностью axis2_placement

Dir_A2p_X

Задание оси Y сущностью axis2_placement

Dir_A2p_Y

Задание оси Z сущностью axis2_placement

Dir_A2p_Z

А.5.1.1.1 Задание вектора направления его компонентами

Имя функции:

Уровень интерфейса:

1

Dir_Component

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

X

D

Х-компонента в направлении оси (Ох) текущей OVC

См. примечание (1)

Ввод

Y

D

Y-компонента в направлении оси (Оу) текущей OVC

См. примечание (1)

Ввод

Z

D

Z-компонента в направлении оси (Oz) текущей OVC

См. примечание (1)

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданного направления direction

dir

Привязка языка FORTRAN:

NAME = DIR_COMPONENT (X, Y, Z, KFIX)

Результат использования функции

Создает сущность направления direction путем задания компонент направлений direction_ratio вдоль ортогональных направлений х, y и z, вычисленных по заданным параметрам X, Y и Z соответственно. Функция возвращает имя созданного направления. Полученному направлению назначается нулевой стиль null_style.

Значение модуля вектора направления лежит в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечания

1 Значения компонент |Х|, |Y| или |Z| не должны попадать в интервал между нулевым значением ZERO_value и допуском EPS;

2 Если текущий открытый вид определен как 2D-вид (соответствует значению 1 записи geometrical_power_level таблицы статуса интерфейса), то значение компоненты Z игнорируется интерфейсом.

Внутренние ссылки: 6.1.9.3, 6.2.1.2.

Ошибки

7

Действительное значение находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

102

Модуль вектора направления находится вне установленного диапазона [EPS, МАХ]

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.1.1.2 Задание вектора направления двумя точками

Имя функции:

Уровень интерфейса:

1

Dir_2_Pnt

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

STAPNT

N

Имя начальной декартовой точки cartesian_point

pnt

Ввод

ENDPNT

N

Имя конечной декартовой точки cartesian_point

pnt

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданного направления direction

dir

Привязка языка FORTRAN:

NAME = DIR_2_PNT (STAPNT, ENDPNT, KFIX)

Результат использования функции

Функция создает сущность направления direction компонентами сущности direction_ratio вдоль ортогональных направлений х, y и z.

Величины Р1 и Р2 рассматриваются как синонимы двух заданных декартовых точек cartesian_point начальной точки STAPNT и конечной точки ENDPNT соответственно.

Вычисляется разность Р2-Р1. Полученные три производные величины хранятся как компоненты направления для осей X, Y и Z. Функция возвращает имя созданного направления. Стиль полученного направления равен null_style.

Расстояние между двумя указанными декартовыми точками должно лежать в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то значение компоненты Z игнорируется интерфейсом.


Direction_ratios - компонента направления; direction - направление; STAPNT - начальная точка; ENDPNT - конечная точка

Рисунок А.1 - Функция Dir_2_Pnt

Внутренние ссылки: 6.1.9, 6.1.9.3, 6.2.1.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

103

Расстояние между двумя точками лежит вне установленного диапазона [EPS, МАХ]

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.1.1.3 Задание вектора направления двумя направлениями и углом

Имя функции:

Уровень интерфейса:

1

Dir_2_Dir_Angle

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип
данных

Смысл

Допустимый тип/значение

Ввод

REFDIR

N

Имя ссылочного направления direction

dir

Ввод

ZDIR

N

Имя направления z

dir

Ввод

ANGLE

D

Значение угла

(0°360°)

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданного направления direction

dir

Привязка языка FORTRAN:

NAME = DIR_2_DIR_ANGLE (REFDIR, ZDIR, ANGLE, KFIX)

Результат использования функции

Функция создает нормированную сущность direction с помощью сущности direction_ratio по производным компонентам направлений х, y и z, вычисленным для текущей инициализации вида.

Создается поименованная нормированная сущность direction. Параметру ANGLE присваивается значение ориентированного угла из REFDIR.

Открытый 2D-вид отсутствует.

В случае открытого 3D-вида:

- пусть Р - плоскость, перпендикулярная направлению ZDIR. Создается нормированная поименованная сущность direction. При этом значение ориентированного угла ортогональной проекции REFDIR на плоскость Р равно ANGLE.

В обоих случаях функция возвращает имя созданного направления direction. Полученное направление имеет нулевой стиль null_style.

Если заданное значение угла ANGLE, измеренное в текущей координатной системе OVC_angle_unit, меньше 0 ZERO_value, то имя созданной сущности direction - REFDIR. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level таблицы статуса интерфейса равно 1), то заданный параметр ZDIR игнорируется интерфейсом.


ZDIR - направление оси Z; REFDIR - ссылочное направление; ANGLE - угол; NAME (direction) - поименованное направление

Рисунок А.2 - Функция Dir_2_Dir_Angle

Внутренние ссылки: 6.1.9, 6.1.9.3, 6.2.1.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

4

Значение плоского угла находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

117

Заданные направления параллельны

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.1.1.4 Задание оси X сущностью axis2_placement

Имя функции:

Уровень интерфейса:

1

Dir_A2p_X

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

A2PNAM

N

Имя сущности axis2_placement

а2р

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданного направления direction

dir

Привязка языка FORTRAN:

NAME = DIR_A2P_X (A2PNAM, KFIX)

Результат использования функции

Функция создает нормированную сущность направления direction, коллинеарную оси (Ох), заданной сущностью axis2_placement. Функция возвращает имя созданной сущности direction. Полученное направление имеет нулевой стиль null_style.

При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечание - Нет.

Внутренние ссылки: 6.1.9.3, 6.1.9.7, 6.1.9.8.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.1.1.5 Задание оси Y сущностью axis2_placement

Имя функции:

Уровень интерфейса:

1

Dir_A2p_Y

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

A2PNAM

N

Имя сущности axis2_placement

а2р

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданного направления direction

dir

Привязка языка FORTRAN:

NAME = DIR_A2P_Y (A2PNAM, KFIX)

Результат использования функции

Функция создает нормированную сущность направления direction, коллинеарную оси (Оу), заданной сущностью axis2_placement. Функция возвращает имя созданной сущности direction. Полученное направление имеет нулевой стиль null_style.

При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечание - Нет.

Внутренние ссылки: 6.1.9.3, 6.1.9.7, 6.1.9.8.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.1.1.6 Задание оси Z сущностью axis2_placement

Имя функции:

Уровень интерфейса:

2

Dir_A2P_Z

Уровень геометрической мощности:

2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

A2PNAM

N

Имя сущности axis2_placement

а2р

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности direction

dir

Привязка языка FORTRAN:

NAME = DIR_A2P_Z (A2PNAM, KFIX)

Результат использования функции

Функция создает нормированную сущность направления direction, коллинеарную оси (Oz), заданной сущностью axis2_placement. Функция возвращает имя созданной сущности direction. Полученное направление имеет нулевой стиль null_style.

При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level таблицы статуса интерфейса равно 1), то возникает ошибка, значение имени возвращаемой сущности равно 0.

Внутренние ссылки: 6.1.9.3, 6.1.9.8.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с уровнем используемого интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.1.2 Сущность axis1_placement (одна ось)

Генерация axis1_placement

A1p_Gen

Построение axis1_placement по двум точкам

A1p_2_Pnt

А.5.1.2.1 Генерация axis1_placement

Имя функции:

Уровень интерфейса:

2

A1p_Gen

Уровень геометрической мощности:

2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

PNTNAM

N

Имя декартовой точки cartesian_point

pnt

Ввод

DIRNAM

N

Имя направления direction

dir

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Ввод

NAME

N

Имя созданной сущности axis1_placement

a1p

Привязка языка FORTRAN:

NAME = A1P_GEN (PNTNAM, DIRNAM, KFIX)

Результат использования функции

С помощью сущности axis1_placement создается одна координатная ось в 3D-пространстве.

Заданная декартова точка cartesian_point с именем PNTNAM дублируется как точка р1. Данная точка имеет нулевой стиль null_style.

Заданное направление direction с именем DIRNAM дублируется как направление d. Данное направление имеет нулевой стиль.

Создается экземпляр сущности axis1_placement, расположенной в точке р1 вдоль направления d. Функция возвращает имя полученной сущности. Стиль полученной сущности - нулевой.

Все входные параметры являются обязательными. При возникновении ошибки имя сущности равно 0.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level таблицы статуса интерфейса равно 1), то возникает ошибка, значение имени сущности равно 0.


Location - размещение заданной точки; PNTNAM - опорная точка; axis - ось; axis1_placement - сущность axis1_placement; DIRNAM - заданное направление

Рисунок А.З - Функция A1p_Gen

Внутренние ссылки: 6.1.9, 6.1.9.6, 6.2.1.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с применяемым уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.1.2.2 Построение сущности axis1_placement по двум точкам

Имя функции:

Уровень интерфейса:

2

A1p_2_Pnt

Уровень геометрической мощности:

2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

STAPNT

N

Имя начальной точки cartesian_point

pnt

Ввод

ENDPNT

N

Имя конечной точки cartesian_point

pnt

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности axis1_placement

a1p

Привязка языка FORTRAN:

NAME = A1P_2_PNT (STAPNT, ENDPNT, KFIX)

Результат использования функции

Функция создает сущность axis1_placement, которая задает координатную ось в 3D-пространстве. Заданная декартова точка cartesian_point с именем STAPNT дублируется как точка р1, имеющая нулевой стиль null_style. Пусть Р2 является синонимом второй заданной точки cartesian_point ENDPNT. Тогда расстояние между двумя декартовыми точками cartesian_point должно лежать в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Создается экземпляр d направления direction с компонентами direction_ratio, полученными по точкам Р2 - р1. Полученное направление имеет нулевой стиль.

Создается экземпляр сущности axis1_placement по расположению заданной точки р1 и оси d. Функция возвращает имя сущности axis1_placement, ее стиль - нулевой.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level таблицы статуса интерфейса равно 1), то возникает ошибка и значение имени сущности равно 0.


Location - размещение заданной точки; STAPNT - начальная точка; axis - ось; axis1_placement - сущность axis1_placement; ENDPNT - конечная точка

Рисунок А.4 - Функция A1p_Pnt

Внутренние ссылки: 6.1.9, 6.1.9.6, 6.2.1.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

103

Расстояние между двумя точками лежит вне установленного диапазона [EPS, МАХ]

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с применением уровня интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.1.3 Сущность axis2_placement (локальная координатная система)

Построение сущности axis2_placement по трем точкам

A2p_3_Pnt

Построение сущности axis2_placement по двум направлениям

A2p_2_Dir

Построение сущности axis2_placement по двум направлениям (Ох) и (Оу)

A2p_2_Dir_Xy

Построение сущности axis2_placement путем относительного позиционирования

A2p_Position_Relative

Построение сущности axis2_placement с помощью ссылочной координатной системы

A2p_Ref_Sys

А.5.1.3.1 Построение сущности axis2_placement по трем точкам

Имя функции:

Уровень интерфейса:

1

A2p_3_Pnt

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/ значение

Ввод

CENPNT

N

Имя начальной декартовой точки carte- sian_point

pnt

Ввод

AXSPNT

N

Имя декартовой точки cartesian_point, отложенной в направлении оси Z (игнорируется для 2D-вида)

pnt

Ввод

REFPNT

N

Имя декартовой точки cartesian_point, отложенной либо в направлении аппроксимации оси X, либо в точном направлении оси X в случае 2D-вида

pnt

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности axis2_placement

a2p

Привязка языка FORTRAN:

NAME = A2P_3_PNT (CENPNT, AXSPNT, REFPNT, KFIX)

Результат использования функции

Функция создает сущность axis2_placement, которая представляет собой ортогональную локальную координатную систему (LCS) в текущей ссылочной базовой координатной системе OVC. Тип созданной сущности axis2_placement зависит от инициализации открытого вида, то есть создается экземпляр сущности axis2_placement_2d в случае использования 2D-вида или создается экземпляр сущности axis2_placement_3d в случае использования 3D-вида. Для создания сущности axis2_placement_3d используются три точки CENPNT, AXPNT и REFPNT для получения начала координат (О) и две оси (Oz и Ох) локальной координатной системы. Для создания сущности axis2_placement_2d используются только две из трех заданных точек (CENPNT и REFPNT). Их достаточно для создания начала координат (О) и оси (Ох) локальной координатной системы.

Заданная декартова точка cartesian_point с именем CENPNT дублируется как точка р1. Данная декартова точка используется для определения начала LCS, ее стиль - нулевой null_style.

Если создается экземпляр сущности axis2_piacement_3d:

- пусть точки Р2 и РЗ являются синонимами двух заданных декартовых точек AXSPNT и REFPNT соответственно;

- для направления direction d1 создается экземпляр с компонентами direction_ratio, определенными точками Р2 - р1. Указанное направление используется для определения точного направления локальной оси Z. Полученное направление имеет нулевой стиль. При этом расстояние между двумя указанными декартовыми точками должно находиться в диапазоне [EPS, МАХ];

- для направления direction d2 создается экземпляр с компонентами direction_ratio, определенными точками РЗ - р1. Указанное направление используется для определения аппроксимации направления оси X. Полученное направление имеет нулевой стиль. При этом расстояние между двумя декартовыми точками должно находиться в диапазоне [EPS, МАХ];

- для сущности axis2_placement_3d создается экземпляр р1 по точке отсчета location и экземпляр оси d1 по базовому направлению d2 с помощью сущности ref_direction. Стиль данной сущности axis2_placement_3d - нулевой. Функция возвращает имя полученной сущности axis2_placement_3d.

В случае создания экземпляра axis2_piacement_2d:

- пусть РЗ является синонимом одной заданной декартовой точки REFPNT;

- создается экземпляр d2 сущности direction с компонентами direction_ratio, определенными точками РЗ - р1. Указанное направление используется для определения точного направления локальной оси X. Полученное направление имеет нулевой стиль. При этом расстояние между двумя указанными декартовыми точками должно находиться в диапазоне [EPS, МАХ];

- для сущности axis2_placement_2d создается экземпляр р1 по началу координат location и базовому направлению ref_direction d2. Указанная сущность axis2_placement_2d имеет нулевой стиль. Функция возвращает имя полученной сущности axis2_placement_2d.

При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечания

1 При необходимости выполняется настройка базового направления ref_direction для обеспечения его ортогональности направлению оси Y. Настройка выполняется путем проектирования базового направления ref_direction на плоскость, перпендикулярную оси axis.

2 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level таблицы статуса интерфейса равно 1), то заданный параметр AXSPNT игнорируется интерфейсом.


AXSPNT - точка на оси Z; axis - ось; axis2_placement_3d - сущность axis2_placement_3d; location - начало координат; CENPNT - точка отсчета; ref_direction - ссылочное направление; REFPNT - базовая точка; project onto plane normal to axis - проекция на плоскость, перпендикулярную оси

Рисунок - А.5 Функция A2p_3_Pnt

Внутренние ссылки: 6.1.9, 6.1.9.7, 6.1.9.8, 6.2.1.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

103

Расстояние между двумя точками не входит в установленный диапазон [EPS, МАХ]

105

Попытка создания вырожденного направления в процессе создания сущности

116

Заданные точки линейно зависимы

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.1.3.2 Построение сущности axis2_placement по двум направлениям

Имя функции:

Уровень интерфейса:

1

A2p_2_Dir

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

CENPNT

N

Имя декартовой точки cartesian_point, определяющей начало координат

pnt

Ввод

AXSDIR

N

Имя направления оси Z (игнорируется для 2D-вида)

dir

Ввод

REFDIR

N

Имя аппроксимации направления оси X либо точного направления оси X в случае 2D-вида

dir

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности axis2_placement

a2p

Привязка языка FORTRAN:

NAME = A2P_2_DIR (CENPNT, AXSDIR, REFDIR, KFIX)

Результат использования функции

Функция создает сущность axis2_placement, которая является ортогональной локальной координатной системой (LCS) в текущей базовой координатной системе OVC. Тип созданной сущности axis2_placement зависит от инициализации открытого вида, то есть в случае 2D-вида создается экземпляр сущности axis2_placement_2d, а в случае 3D-вида создается экземпляр axis2_placement_3d. При создании сущности axis2_placement_3d три заданных параметра CENPNT, AXDIR и REFDIR используются для создания начала координат (О) и двух осей (Oz и Ох) локальной координатной системы. При создании сущности axis2_placement_2d только два из трех указанных параметров (CENPNT и REFDIR) используются для создания начала координат (О) и оси (Ох) локальной координатной системы.

Заданная декартова точка CENPNT дублируется как точка р1. Данная точка используется для определения локального начала координат и имеет нулевой стиль null_style. Затем:

- два направления direction, AXSDIR и REFDIR, дублируются как направления d1 и d2 соответственно. Указанные направления определяют точное направление локальной оси Z и аппроксимацию направления локальной оси Х. Направления имеют нулевой стиль.

В случае создания экземпляра axis2_piacement_3d:

- сущность axis2_placement_3d создает экземпляр р1 с началом координат location, осью d1 и базовым направлением ref_direction d2. Функция возвращает имя сущности axis2_placement_3d. Сущность имеет нулевой стиль.

Направление REFDIR дублируется как направление d2, имеющее нулевой стиль. Указанное направление используется для определения точного направления локальной оси X.

В случае создания экземпляра axis2_piacement_2d:

- создается экземпляр сущности axis2_placement_2d с началом координат location р1 и базовым направлением ref_direction d2. Функция возвращает имя сущности axis2_placement_2d, имеющей нулевой стиль.

При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечания

1 При необходимости производится настройка базового направления ref_direction для обеспечения его ортогональности направлению оси. Настройка производится путем проектирования направления ref_direction на плоскость, перпендикулярную оси axis.

2 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level таблицы статуса интерфейса равно 1), то параметр AXSDIR игнорируется интерфейсом.


Axis - ось; 3D view - 3D-eud; axis2_placement_3d - сущность axis2_placement_3d; location - размещение; CENPNT - начало координат; ref_direction - ссылочное направление; project onto plane normal to axis - проекция на плоскость, перпендикулярную оси; AXSDIR - вектор направления оси; REFDIR - вектор базового направления

Рисунок А.6 - Функция A2p_2_Dir (3D-вид)


2D view- 2D-вид; axis2_placement_2d - сущность axis2_placement_2d; location - размещение; CENPNT - начало координат; ref_direction - ссылочное направление; REFDIR - вектор базового направления

Рисунок А.7 - Функция A2p_2_Dir (2D-вид)

Внутренние ссылки: 6.1.9, 6.1.9.7, 6.1.9.8, 6.2.1.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

101

Попытка создания вырожденной сущности

117

Заданные направления параллельны

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.1.3.3 Построение сущности axis2_placement по двум направлениям (Ох) и (Оу)

Имя функции:

Уровень интерфейса:

1

A2p_2_Dir_Xy

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

CENPNT

N

Имя декартовой точки cartesian_point, определяющей начало координат

pnt

Ввод

REFDIR

N

Имя точного направления оси X

dir

Ввод

YAXDIR

N

Имя аппроксимации направления оси Y (игнорируется для 2D-вида)

dir

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности axis2_placement

a2p

Привязка языка FORTRAN:

NAME = A2P_2_DIR_XY (CENPNT, REFDIR, YAXDIR, KFIX)

Результат использования функции

Функция создает сущность axis2_placement, которая является ортогональной локальной координатной системой (LCS) в текущей базовой координатной системе OVC. Тип созданной сущности зависит от инициализации открытого вида, то есть создается либо экземпляр сущности axis2_placement_2d в случае 2D-вида, либо экземпляр сущности axis2_placement_3d в случае 3D-видА.При создании сущности axis2_placement_3d три заданных параметра CENPNT, REFDIR и YAXDIR используются для создания начала координат (О) и двух осей (Ох и Оу) локальной координатной системы. При создании сущности axis2_placement_2d только два из трех заданных параметров (CENPNT и REFDIR) используются для создания начала координат (О) и оси (Ох) локальной координатной системы.

Заданная декартова точка cartesian_point CENPNT дублируется как точка р1, используемая для определения положения начала координат локальной системы. Заданное направление direction, REFDIR, дублируется как направление d1, используемое для определения точного направления локальной оси X. Две указанные сущности имеют нулевой стиль null_style.

В случае создания экземпляра axis2_piacement_3d:

- создается направление direction d2 путем вычисления проекции нормированного направления YAXDIR на плоскость, перпендикулярную направлению d1. Указанное направление имеет нулевой стиль null_style;

- создается экземпляр d3 направления direction. Его атрибуты определены векторным произведением направлений d1 и d2. Указанное направление задает точное направление локальной оси Z, имеющее нулевой стиль;

- создается экземпляр сущности axis2_placement_3d с началом координат location р1, осью d3 и базовым направлением ref_direction d1. Функция возвращает имя созданной сущности axis2_placement_3d, имеющей нулевой стиль.

В случае создания экземпляра сущности axis2_placement_2d.

- создается экземпляр сущности axis2_placement_2d с началом координат location р1 и базовым направлением ref_direction d1. Функция возвращает имя созданной сущности axis2_placement_2d, имеющей нулевой стиль.

При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level таблицы статуса интерфейса равно 1), то заданный параметр YAXDIR игнорируется интерфейсом.


AXSDIR - вектор направления оси; 3D view - 3D-вид; ref_direction - ссылочное направление; axis2_placement_3d- сущность axis2_placement_3d; location - размещение; CENPNT - начало координат; YAXDIR - имя аппроксимированного направления оси Y; axis = [d1 х d2]- ось [d1 х d2j; project onto plane normal to AXSDIR - проекция на плоскость, перпендикулярную вектору направления оси

Рисунок А.8 - Функция A2p_2_Dir_Xy

Внутренние ссылки: 6.1.9, 6.1.9.7, 6.1.9.8, 6.2.1.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

101

Попытка создания вырожденной сущности

117

Заданные направления параллельны

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.1.3.4 Построение сущности axis2_placement путем относительного позиционирования

Имя функции:

Уровень интерфейса:

1

A2p_Position_Relative

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/ значение

Ввод

REFLST

6 х D

Перечень из 6 пунктов, содержащий описания последовательных поворотов и смещений

1) поворот в плоскости (Оху) вокруг оси Z в ссылочной координатной системе OVC;

(-360°360°)

2) поворот в плоскости (Ozy) вокруг оси X в базовой системе координат OVC;

(-360°360°)

3) поворот в плоскости (Ozx) вокруг оси Y базовой координатной системы OVC;

(-360°360°)

4) смещение вдоль оси (Ох) базовой координатной системы OVC;

(0.0 или (EPS MAX))

5) смещение вдоль оси (Оу) базовой координатной системы OVC;

(0.0 или (EPSMAX))

6) смещение вдоль оси (Oz) базовой координатной системы OVC

(0.0 или (EPSMAX))

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности axis2_placement

a2p

Привязка языка FORTRAN:

NAME = A2P_POSITION_RELATIVE (REFLST, KFIX)

Результат использования функции

Функция создает сущность axis2_placement, которая является локальной координатной системой (LCS) в базовой координатной системе OVC. Тип созданной сущности axis2_placement зависит от инициализации открытого вида, то есть создается экземпляр сущности axis2_placement_2d в случае 2D-вида или экземпляр сущности axis2_placement_3d в случае 3D-вида.

В случае создания экземпляра сущности axis2_placement_3d:

- создается экземпляр сущности axis2_placement_3d как копия базовой координатной системы OVC. Все неявно созданные экземпляры сущности axis2_placement_3d и сама указанная сущность имеют нулевой стиль null_style;

- матрицы преобразования, содержащиеся внутри заданного параметра REFLIST, применяются к новой сущности axis2_placement_3d в следующей последовательности:

1) вращение вокруг оси Z базовой координатной системы OVC;

2) вращение вокруг оси X базовой координатной системы OVC;

3) вращение вокруг оси Y базовой координатной системы OVC;

4) смещение начала координат новой сущности axis2_placement_3d вдоль осей X, Y и Z базовой координатной системы OVC;

- функция возвращает имя созданной сущности axis2_placement_3d, имеющей нулевой стиль.

В случае создания экземпляра сущности axis2_placement_2d:

- создается экземпляр сущности axis2_placement_2d как копия базовой координатной системы OVC;

- матрицы преобразования, содержащиеся внутри заданного параметра REFLIST, применяются к новой сущности axis2_placement_2d в следующей последовательности:

1) вращение в плоскости (Оху) базовой координатной системы OVC;

2) смещение начала координат новой сущности axis2_placement_2d вдоль осей Х и Y базовой координатной системы OVC;

- функция возвращает имя полученной сущности axis2_placement_2d.

Значения углов измеряются в единицах угла OVC_angle_unit, смещения измеряются в единицах длины OVC_length_unit. Указанные значения либо должны быть равны 0, либо должны находиться в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечания

1 Если вычисленная евклидова норма смещения лежит в диапазоне [ZERO_value, EPS], то смещение не производится, ошибок нет.

2 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level таблицы статуса интерфейса равно 1), то значения переменных REFLST (2, 3) поворотов относительно осей Х и Y и значение переменой REFLST (6) для смещения вдоль оси Z игнорируются интерфейсом.

Внутренние ссылки: 5.1.3, 6.1.9, 6.1.9.7, 6.1.9.8, 6.2.1.2.

Ошибки

3

Значение меры длины находится вне допустимого диапазона

4

Значение меры плоского угла находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.1.3.5 Построение сущности axis2_placement с помощью ссылочной координатной системы

Имя функции:

Уровень интерфейса:

1

А2Р_REF_SYS

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности axis2_placement

а2р

Привязка языка FORTRAN:

NAME = A2P_REF_SYS (KFIX)

Результат использования функции

Функция создает сущность axis2_placement, которая является локальной координатной системой (LCS) (в базовой координатной системе OVC) с расположением и ориентацией, идентичной расположению и ориентации базовой координатной системы OVC.

Тип созданной сущности axis2_placement зависит от инициализации открытого вида, то есть создается экземпляр сущности axis2_placement_2d в случае 2D-вида либо экземпляр сущности axis2_placement_3d в случае 3D-вида.

В случае создания 2D-вида:

- создается экземпляр сущности axis2_placement_2d с расположением, осью и базовым направлением ref_direction, определяемыми относительно текущей базовой координатной системы. Функция возвращает имя сущности axis2_placement_2d, имеющей нулевой стиль null_style. При возникновении ошибки сущность не создается, значение ее имени равно 0.

В случае создания 3D-вида:

- создается экземпляр сущности axis2_placement_3dс расположением и базовым направлением ref_direction, определенными относительно базовой координатной системы OVC. Функция возвращает имя сущности axis2_placement_3d, имеющей нулевой стиль null_style.

Примечание - Нет.

Внутренние ссылки: 5.3.1, 6.1.9.7, 6.1.9.8, 6.2.1.2.

Ошибки

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.2 Сущности point

А.5.2.1 Точки с каноническим определением

Точки с абсолютными декартовыми координатами

Pnt_Cartesian_Absolute

Точки с относительными декартовыми координатами

Pnt_Cartesian_Relative

Точки с абсолютными полярными координатами

Pnt_Polar_Absolute

Точки с относительными полярными координатами

Pnt_Polar_Relative

Точки с абсолютными цилиндрическими координатами

Pnt_Cylinder_Absolute

Точки с относительными цилиндрическими координатами

Pnt_Cylinder_Relative

A.5.2.1.1 Точки с абсолютными декартовыми координатами

Имя функции:

Уровень интерфейса:

1

Pnt_Cartesian_Absolute

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип
данных

Смысл

Допустимый тип/значение

Ввод

X

D

Х-координата декартовой точки cartesian_point

(0.0 или (EPSМАХ))

Ввод

Y

D

Y-координата декартовой точки cartesian_point

(0.0 или (EPSMAX))

Ввод

Z

D

Z-координата декартовой точки cartesian_point

(0.0 или (EPSMAX))

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности cartesian_point

pnt

Привязка языка FORTRAN:

NAME = PNT_CARTESIAN_ABSOLUTE (X, Y, Z, KFIX)

Результат использования функции

Функция создает сущность точки cartesian_point с декартовыми координатами X, Y и Z. Указанные координаты вычисляются по заданным параметрам X, Y и Z соответственно (это декартовы координаты указанной точки в базовой координатной системе OVC). Настоящая сущность имеет текущую запись point_style в таблице статуса интерфейса. Функция возвращает имя полученной сущности cartesian_point.

Заданные координаты измерены в единицах длины OVC_length_unit. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level таблицы статуса интерфейса равно 1), то заданный параметр Z игнорируется интерфейсом.

Внутренние ссылки: 6.1.9.2, 6.2.4, 8.2.

Ошибки

3

Значение меры длины находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.2.1.2 Точки с относительными декартовыми координатами

Имя функции:

Уровень интерфейса:

1

Pnt_Cartesian_Relative

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

PNTNAM

N

Имя ссылочной декартовой точки cartesian_point

pnt

Ввод

DX

D

Координата X декартовой точки cartesian_point

(0.0 или (EPSMAX))

Ввод

DY

D

Координата Y декартовой точки cartesian_point

(0.0 или (EPSMAX))

Ввод

DZ

D

Координата Z декартовой точки cartesian_point

(0.0 или (EPSMAX))

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности cartesian_point

pnt

Привязка языка FORTRAN:

NAME = PNT_CARTESIAN_RELATIVE (PNTNAM, DX, DY, DZ, KFIX)

Результат использования функции

Функция создает сущность cartesian_point декартовой точки с координатами X, Y и Z. Эти координаты вычисляются по параметрам DX, DY и DZ (приращения декартовых координат в базовой координатной системе OVC), заданным относительно ссылочной декартовой точки cartesian_point с именем PNTNAM. Настоящая сущность cartesian_point имеет текущую запись point_style в таблице статуса интерфейсa. Функция возвращает имя полученной сущности cartesian_point.

Заданные координаты измеряются в единицах длины OVC_length_unit. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечания

1 Если вычисленное расстояние между исходной точкой PNTNAM и новой созданной декартовой точкой cartesian_point лежит в диапазоне [ZERO_value, EPS], то копии координат точки PNTNAM можно использовать для создания новой декартовой точки.

2 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level таблицы статуса интерфейса равно 1), то заданный параметр DZ игнорируется интерфейсом.


Cartesian_point- результирующая точка; PNTNAM - исходная точка

Рисунок А.9 - Функция Pnt_Cartesian_Relative

Внутренние ссылки: 6.1.9.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.2.1.3 Точки с абсолютными полярными координатами

Имя функции:

Уровень интерфейса:

1

Pnt Polar Absolute

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

PHI

D

Угол в плоскости (Оху) относительно оси (Ох) текущей OVC

(-360°360°)

Ввод

THETA

D

Угол между осью (Oz) и плоскостью (Оху) текущей OVC

(-360°360°)

Ввод

RAD

D

Расстояние декартовой точки cartesian_point от начала координат

(0.0 или (EPSMAX))

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности cartesian_point

pnt

Привязка языка FORTRAN:

NAME = PNT_POLAR_ABSOLUTE (PHI, THETA, RAD, KFIX)

Результат использования функции

Функция создает сущность декартовой точки cartesian_point с координатами X, Y и Z. Указанные полярные координаты определяются параметрами PHI, THETA и RAD (координатами точки в базовой координатной системе OVC). Данная декартова точка имеет текущую запись point_style в таблице статуса интерфейса. Функция возвращает имя полученной сущности cartesian_point.

Заданные углы вычисляются в единицах угла OVC_angle_unit, расстояния измеряются в единицах длины OVC_length_unit. Измеренные величины равны 0 либо лежат в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level таблицы статуса интерфейса равно 1), то заданный параметр THETA, неявно определяющий значение Z, игнорируется интерфейсом.

Внутренние ссылки: 6.1.9.2, 6.2.4, 8.2.

Ошибки

3

Значение меры длины находится вне допустимого диапазона

4

Значение меры плоского угла находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.2.1.4 Точки с относительными полярными координатами

Имя функции:

Уровень интерфейса:

1

Pnt_Polar_Relative

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

PNTNAM

N

Имя ссылочной декартовой точки cartesian_point

pnt

Ввод

PHI

D

Угол в плоскости (Оху) относительно оси (Ох) виртуальной базовой координатной системы

(-360°360°)

Ввод

THETA

D

Угол между осью (Oz) и плоскостью (Оху) виртуальной базовой координатной системы

(-360° 360°)

Ввод

RAD

D

Расстояние от декартовой точки cartesian_point до начала координат

(0.0 или (EPSMAX))

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности cartesian_point

pnt

Привязка языка FORTRAN:

NAME = PNT_POLAR_RELATIVE (PNTNAM, PHI, THETA, RAD, KFIX)

Результат использования функции

Функция создает сущность cartesian_point декартовой точки с координатами X, Y и Z. Данные координаты вычисляются по полярным координатам, являющимся производными параметров PHI, THETA и RAD (координат в базовой координатной системе OVC) относительно заданной ссылочной декартовой точки cartesian_point PNTNAM. Указанная декартова точка имеет текущую запись point_style в таблице статуса интерфейса. Функция возвращает имя полученной сущности cartesian_point.

Заданные углы вычисляются в единицах угла OVC_angle_unit, а расстояния измеряются в единицах длины OVC_length_unit. Указанные величины равны 0 либо лежат в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечания

1 Если вычисляемое расстояние между исходной точкой PNTNAM и новой созданной декартовой точкой cartesian_point лежит в диапазоне [ZERO_value, EPS], то копии координат точки PNTNAM используются для создания новой сущности cartesian_point.

2 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то заданный параметр THETA, неявно определяющий значение Z, игнорируется интерфейсом.


THETA - угол "тета"; cartesian_point-результирующая декартова точка; RAD - расстояние от исходной точки до результирующей декартовой точки; PNTNAM - исходная точка; PHI - угол "фи"

Рисунок А.10 - Функция Pnt_Polar_Relative

Внутренние ссылки: 6.1.9.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

4

Значение меры плоского угла находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.2.1.5 Точки с абсолютными цилиндрическими координатами

Имя функции:

Уровень интерфейса:

2

Pnt_Cylinder_Absolute

Уровень геометрической мощности:

2, 3

Параметры

Ввод/вывод

Имя

Тип
данных

Смысл

Допустимый тип/значение

Ввод

PHI

D

Угол поворота в плоскости (Оху) относительно оси (Ох) в текущей координатной системе OVC

(-360°360°)

Ввод

RAD

D

Длина проекции на плоскость (Оху) текущей OVC

(0.0 или (EPSMAX))

Ввод

HEIGHT

D

Расстояние декартовой точки cartesian_point от плоскости (Оху) текущей OVC

(EPSMAX)

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности cartesian_point

pnt

Привязка языка FORTRAN:

NAME = PNT_CYLINDER_ABSOLUTE (PHI, RAD, HEIGHT, KFIX)

Результат использования функции

Функция создает сущность cartesian_point с координатами X, Y и Z. Эти координаты вычисляются по цилиндрическим координатам PHI, RAD и HEIGHT базовой координатной системы OVC. Указанная декартова точка cartesian_point имеет текущую запись point_style в таблице статуса интерфейса. Функция возвращает имя полученной сущности cartesian_point.

Заданный угол вычисляется в единицах угла OVC_angle_unit, параметры RAD (радиус) и HEIGHT (высота) измеряются в единицах длины OVC_length_unit. Длина проекции на плоскость (Оху) (радиус RAD) равна 0 либо лежит в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то возникает ошибка, значение имени сущности равно 0.

Внутренние ссылки: 6.1.9.2, 6.2.4, 8.2.

Ошибки

3

Значение меры длины находится вне допустимого диапазона

4

Значение меры плоского угла находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.2.1.6 Точки с относительными цилиндрическими координатами

Имя функции:

Уровень интерфейса:

2

Pnt_Cylinder_Relative

Уровень геометрической мощности:

2, 3

Параметры

Ввод/вывод

Имя

Тип
данных

Смысл

Допустимый тип/значение

Ввод

PNTNAM

N

Имя ссылочной точки cartesian_point

pnt

Ввод

PHI

D

Поворот в плоскости (Оху) относительно оси (Ох) виртуальной ссылочной координатной системы

(-360°360°)

Ввод

RAD

D

Длина проекции на плоскость (Оху) виртуальной ссылочной координатной системы

(0.0 или (EPSMAX))

Ввод

HEIGHT

D

Расстояние по вертикали от декартовой точки cartesian_point до плоскости (Оху) виртуальной ссылочной координатной системы

(EPSMAX)

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности cartesian_point

pnt

Привязка языка FORTRAN:

NAME = PNT_CYLINDER_RELATIVE (PNTNAM, PHI, RAD, HEIGHT, KFIX)

Результат использования функции

Функция создает сущность декартовой точки cartesian_point с координатами X, Y и Z. Эти координаты вычисляют по цилиндрическим координатам PHI, RAD и HEIGHT относительно заданной ссылочной декартовой точки cartesian_point с именем PNTNAM в базовой координатной системе OVC. Данная декартова точка имеет текущую запись point_style в таблице статуса интерфейса. Функция возвращает имя полученной сущности cartesian_point.

Заданный угол вычисляется в единицах угла OVC_angle_unit, параметры RAD (радиус) и HEIGHT (высота) измеряются в единицах длины OVC_length_unit. Длина проекции RAD равна 0 либо лежит в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечания

1 Если вычисленное расстояние между исходной точкой PNTNAM и новой созданной декартовой точкой cartesian_point лежит в диапазоне [ZERO_value, EPS], то для создания новой сущности cartesian_point используются копии координат точки PNTNAM.

2 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то возникает ошибка, значение имени сущности равно 0.


Cartesian_point - новая декартова точка; PNTNAM - исходная декартова точка; RAD - цилиндрическая координата (радиус); HEIGHT - цилиндрическая координата (высота); PHI - цилиндрическая координата (угол "фи")

Рисунок А.11 - Функция Pnt_Cylinder_Relative

Внутренние ссылки: 6.1.9.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

4

Значение меры плоского угла находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.2.2 Задание точки ограничениями

Начальная точка кривой

Pnt_Begin_Ent

Конечная точка кривой

Pnt_End_Ent

Точка пересечения двух базовых сущностей

Pnt_Intersection_2_Ent

Точка касания дуги окружности

Pnt_Tangential_Arc

Точка в центре дуги окружности

Pnt_Center_Arc

Точка в середине базовой сущности

Pnt_Middle_Ent

Точка как проекция на базовую сущность

Pnt_Projection_Ent

Точка как проекция на сущность

a2pPnt_Projection_A2p

A.5.2.2.1 Начальная точка кривой

Имя функции:

Уровень интерфейса:

1

Pnt_Begin_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности

curves

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности cartesian_point

pnt

Привязка языка FORTRAN:

NAME = PNT_BEGIN_ENT (ENTNAM, KFIX)

Результат использования функции

Функция создает сущность декартовой точки cartesian_point в начале заданной сущности кривой ENTNAM. Координаты X, Y и Z созданной декартовой точки вычислены либо по значению параметра (parameter_1), либо по ссылке на декартову точку (point_1) атрибута точки вычленения trim_1 заданной базовой сущности ENTNAM или сущности conic_arc.

Если заданная общая сущность кривой ENTNAM является экземпляром типа полилинии polyline, то функция создает декартову точку с координатами X, Y и Z, вычисленными по первой декартовой точке перечня атрибутов точек.

Если заданная общая сущность кривой ENTNAM является экземпляром типа api_contour, то функция создает декартову точку с координатами X, Y и Z, вычисленными по первой точке первого сегмента комбинированной кривой composite_curve_segment, являющейся начальной точкой контура api_contour интерфейса прикладного программирования.

Указанная декартова точка имеет текущую запись point_style в таблице статуса интерфейса. Функция возвращает имя полученной сущности cartesian_point. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то значение Z игнорируется интерфейсом.

Внутренние ссылки: 6.1.9.2, 6.1.12, 6.1.13, 6.1.14, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.2.2.2 Конечная точка кривой

Имя функции:

Уровень интерфейса:

1

Pnt_End_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности

curves

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности cartesian_point

pnt

Привязка языка FORTRAN:

NAME = PNT_END_ENT (ENTNAM, KFIX)

Результат использования функции

Функция создает сущность декартовой точки cartesian_point в конце заданной сущности кривой ENTNAM. Координаты X, Y и Z созданной декартовой точки cartesian_point вычисляются либо по значению параметра (parameter_2), либо по ссылочной декартовой точке (point_2) атрибута точки вычленения trim_2, заданной базовой сущности ENTNAM или сущности conic_arc.

Если заданная общая сущность кривой ENTNAM является экземпляром типа полилинии polyline, то функция создает декартову точку с координатами X, Y и Z, вычисленную по последней декартовой точке перечня атрибутов точек.

Если заданная общая сущность кривой ENTNAM является экземпляром типа контур api_contour, то функция создает декартову точку cartesian_point с координатами X, Y и Z, вычисленными по первой точке первого сегмента комбинированной кривой composite_curve_segment, которая является конечной точкой контура api_contour интерфейса прикладного программирования.

Полученная декартова точка имеет текущую запись point_style в таблице статуса интерфейса. Функция возвращает имя полученной сущности cartesian_point. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то значение Z игнорируется интерфейсом.

Внутренние ссылки: 6.1.9.2, 6.1.12, 6.1.13, 6.1.14, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.2.2.3 Точка пересечения двух базовых сущностей

Имя функции:

Уровень интерфейса:

1

Pnt_Intersection_2_Ent

Уровень геометрической мощности:

1, 2, 3

Параметр

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNM1

N

Имя первой сущности

basic

Ввод

ENTNM2

N

Имя второй сущности

basic

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности cartesian_point

pnt

Привязка языка FORTRAN:

NAME = PNT_INTERSECTION_2_ENT (ENTNM1, ENTNM2, KFIX)

Результат использования функции

Функция создает сущность cartesian_point как точку, принадлежащую обеим заданным базовым сущностям ENTNM1 и ENTNM2. Координаты X, Y и Z созданной декартовой точки cartesian_point вычисляются в точке пересечения сущностей ENTNM1 и ENTNM2 в указанном порядке. Если результат пересечения не уникален, то вычисляются оба пересечения. Затем одна из двух точек пересечения выбирается в нижеследующем порядке.

Из двух точек пересечения выбирается та, что лежит ближе к первой точке вычленения trim_1 заданной сущности api_line интерфейса прикладного программирования.

Если одна из заданных сущностей ENTNM1 или ENTNM2 является экземпляром типа api_line, а обе заданные сущности ENTNM1 и ENTNM2 являются экземплярами типа api_circular_arc, то:

1) создается вектор v, равный векторному произведению вектора v1 (это вектор, проведенный из центра базовой кривой basis_curve первой дуги окружности api_circular_arc в центр базовой кривой второй дуги окружности) и вектора v2 (это вектор, перпендикулярный плоскости (Оху) первой дуги окружности, если значение флажка обхода кривой sense_agreement равно "true", либо вектор противоположного направления, если значение флажка обхода кривой равно "false");

2) вектор v создается как вектор, проведенный из центра базовой кривой первой дуги окружности в точку пересечения;

3) пересечение точек должно гарантировать, что скалярное произведение положительно.

Полученная декартова точка cartesian_point имеет текущую запись point_style в таблице статуса интерфейса. Функция возвращает имя полученной сущности cartesian_point. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечания

1 Пересечение имеет место, если минимальное расстояние между двумя соединяемыми сущностями (ENTNM1 и ENTNM2) меньше |ZЕRO_value|. При этом существует не более двух точек с указанным качеством, присущим двум отдельным сущностям.

2 Декартова точка cartesian_point создается, если она лежит внутри параметрического диапазона [trim_1, trim_2] для обеих заданных базовых сущностей кривых. В противном случае возникает ошибка.

3 Если расстояние между выбранной декартовой точкой cartesian_point и точкой начала (конца) (trim_1 или trim_2) заданного базовой сущностью кривой лежит в диапазоне [ZERO_value, EPS], то ошибок нет и координаты указанной точки вычленения используются для создания новой декартовой точки.

4 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1) и процесс выбора для сущностей ENTNM1 and ENTNM2 типа api_circular_arc имеет место в виртуальном 3D-пространстве, то значение Z игнорируется интерфейсом.

5 Если текущий открытый вид определен как 3D-вид (значение записи geometrical_power_level в таблице статуса интерфейса не менее 2), то обе заданные сущности ENTNM1 и ENTNM2 должны лежать в одной плоскости.


Sense_agreement = false - значение флага направления обхода контура равно "false"; basis_curve (= circle) - базовая кривая (окружность); ENTNM1 - первая сущность; ENTNM2 - вторая сущность; v - результирующий вектор; v - нормальный вектор; cartesian_point - декартова точка

Рисунок А.12 - Функция Pnt_lntersection_2_Ent (3D-вид)

Внутренние ссылки: 6.1.9.2, 6.1.12, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

110

Попытка создания точки вне параметрического диапазона сущности кривой

115

Заданные сущности являются идентичными

118

Заданные сущности кривой являются параллельными (концентрическими)

119

Заданные сущности не лежат в одной плоскости

122

Нет пересечения заданной сущности кривой

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.2.2.4 Точка касания дуги окружности

Имя функции:

Уровень интерфейса:

1

Pnt_Tangential_Arc

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ARCNAM

N

Имя сущности api_circular_arc

arc

Ввод

LINNAM

N

Имя ссылочной сущности api_line

Iin

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности cartesian_point

pnt

Привязка языка FORTRAN:

NAME = PNT_TANGENTIAL_ARC (ARCNAM, LINNAM, KFIX)

Результат использования функции

Создает декартову точку cartesian_point как точку касания дуги окружности api_circular_arc с именем ARCNAM заданной ссылочной прямой api_line с именем LINNAM. Указанная ссылочная прямая не должна содержать центра базовой кривой basis_curve сущности ARCNAM. Координаты X, Y и Z созданной декартовой точки вычисляются с помощью точек, лежащих на сущности ARCNAM, и точек, лежащих:

- на линии, параллельной ссылочной линии, касающейся базовой кривой заданной сущности ARCNAM;

- ближе к бесконечной прямой LINNAM.

Указанная декартовая точка имеет текущую запись point_style в таблице статуса интерфейса. Функция возвращает имя полученной сущности cartesian_point. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечания

1 Декартова точка cartesian_point создается, если она лежит внутри параметрического диапазона [trim_1, trim_2] заданной базовой кривой ARCNAM. В противном случае возникает ошибка;

2 Если расстояние между выбранной декартовой точкой и точкой начала (конца) (thm_1 или trim_2) заданной базовой кривой ARCNAM лежит в диапазоне [ZERO_value, EPS], то ошибок нет и координаты указанной точки вычленения используются для создания новой сущностью cartesian_point;

3 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то значение Z игнорируется интерфейсом;

4 Если текущий открытый вид определен как 3D-вид (значение записи geometrical_power_level в таблице статуса интерфейса не менее 2), то обе заданные сущности ARCNAM и LINNAM должны лежать в одной плоскости.


LINNAM (reference line) - ссылочная прямая линия; ARCNAM - дуга окружности; cartesian_point - декартова точка; basis_curve (= circle) - базовая кривая (окружность)

Рисунок А.13 - Функция Pnt_Tangential_Arc

Внутренние ссылки: 6.1.9.2, 6.1.12, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

110

Попытка создания точки вне параметрического диапазона сущности кривой

119

Заданные сущности не лежат в одной плоскости

127

Геометрическое построение нецелесообразно

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.2.2.5 Точка в центре дуги окружности

Имя функции:

Уровень интерфейса:

1

Pnt_Center_Arc

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ARCNAM

N

Имя сущности api_circular_arc

curves

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности cartesian_point

pnt

Привязка языка FORTRAN:

NAME = PNT_CENTER_ARC (ARCNAM, KFIX)

Результат использования функции

Функция создает сущность cartesian_point в центре заданной сущности api_circular_arc с именем ARCNAM. Координаты X, Y и Z созданной декартовой точки cartesian_point вычисляются по расположению position.location базовой кривой basis_curve сущности api_circular_arc ARCNAM. Полученная декартова точка имеет текущую запись point_style в таблице статуса интерфейса. Функция возвращает имя полученной сущности cartesian_point. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то значение Z игнорируется интерфейсом.

Внутренние ссылки: 6.1.9.2, 6.1.12, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.2.2.6 Точка в середине базовой сущности

Имя функции:

Уровень интерфейса:

1

Pnt_Middle_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности

basic

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности cartesian_point

pnt

Привязка языка FORTRAN:

NAME = PNT_MIDDLE_ENT (ENTNAM, KFIX)

Результат использования функции

Функция создает сущность cartesian_point в середине заданной базовой сущности ENTNAM. Координаты X, Y и Z созданной декартовой точки cartesian_point вычисляются по точкам, лежащим в середине параметрического диапазона между первой и второй точками вычленения заданной сущности ENTNAM. Указанная декартова точка имеет текущую запись point_style в таблице статуса интерфейса. Функция возвращает имя полученной сущности cartesian_point. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечания

1 Сущность cartesian_point создается, если вычисляемое расстояние между данной декартовой точкой и обеими точками начала и конца (trim_1 или trim_2) заданной базовой кривой ENTNAM больше EPS. В противном случае возникает ошибка.

2 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то значение Z игнорируется интерфейсом.

Внутренние ссылки: 6.1.9.2, 6.1.12, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

110

Попытка создания точки вне параметрического диапазона сущности кривой

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.2.2.7 Точка как проекция на базовую сущность

Имя функции:

Уровень интерфейса:

1

Pnt_Projection_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

PNTNAM

N

Имя проектируемой сущности cartesian_point

pnt

Ввод

ENTNAM

N

Имя сущности

basic

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности cartesian_point

pnt

Привязка языка FORTRAN:

NAME = PNT_PROJECTION_ENT (PNTNAM, ENTNAM, KFIX)

Результат использования функции

Функция создает сущность cartesian_point как точку на заданной базовой сущности ENTNAM путем проецирования заданной декартовой точки cartesian_point с именем PNTNAM.

Если заданная базовая сущность ENTNAM является экземпляром типа линии api_line интерфейса прикладного программирования, то функция создает сущность cartesian_point с координатами X, Y и Z, вычисленными по точке, полученной ортогональным проецированием точки PNTNAM на прямую, которая является базовой кривой basis_curve сущности api_line интерфейса прикладного программирования.

Если заданная базовая сущность ENTNAM является экземпляром типа дуги окружности api_circular_arc, то функция создает сущность cartesian_point с координатами X, Y и Z, полученными в результате пересечения бесконечной прямой, построенной по точке PNTNAM, по центру заданной дуги окружности api_circular_arc ENTNAM и по самой дуге окружности api_circuiar_arc. Если возможны две точки пересечения, то выбирается ближайшая к точке PNTNAM.

Новая созданная декартова точка cartesian_point имеет текущую запись point_style в таблице статуса интерфейса. Функция возвращает имя полученной сущности cartesian_point. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечания

1 Декартова точка cartesian_point создается, если она находится внутри параметрического диапазона [trim_1, trim_2] заданной базовой кривой ENTNAM. В противном случае возникает ошибка.

2 Если расстояние, измеренное между новой декартовой точкой и одной точкой начала (конца) (trim_1 или trim_2) заданной базовой кривой ENTAM, лежит в диапазоне [ZERO_value, EPS], то координаты точки вычленения используются для создания новой декартовой точки cariesian_point.

3 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то значение Z игнорируется интерфейсом.

4 Если текущий открытый вид определен как 3D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 2), то обе заданные сущности PNTNAM и ENTNAM должны лежать в одной плоскости.


Cartesian_point - декартова точка; ENTNAM - сущность; PNTNAM - точка; basis_curve (= circle) - базовая кривая (окружность)

Рисунок А.14 - Функция Pnt_Projection_Ent

Внутренние ссылки: 6.1.9.2, 6.1.12, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

110

Попытка создания точки вне параметрического диапазона сущности кривой

119

Заданные сущности не лежат в одной плоскости

127

Геометрическое построение нецелесообразно

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.2.2.8 Точка как проекция на сущность axis2_placement

Имя функции:

Уровень интерфейса:

1

Pnt_Projection_A2p

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

PNTNAM

N

Имя проектируемой декартовой точки carte- sian_point

pnt

Ввод

A2PNAM

N

Имя сущности axis2_placement

а2р

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности cartesian_point

pnt

Привязка языка FORTRAN:

NAME = PNT_PROJECTION_A2P (PNTNAM, A2PNAM, KFIX)

Результат использования функции

Функция создает сущность cartesian_point путем проецирования заданной декартовой точки cartesian_point с именем PNTNAM на плоскость (Оху) сущности axis2_placement с именем A2PNAM. Координаты X, Y и Z созданной cartesian_point вычисляются по точке на плоскости (Оху) для сущности axis2_placement A2PNAM. Расстояние от данной точки до сущности PNTNAM является наименьшим. Указанная декартова точка имеет текущую запись point_style в таблице статуса интерфейса. Функция возвращает имя полученной сущности cartesian_point. При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то ошибок нет и координаты вновь созданной декартовой точки копируются из сущности PNTNAM.


PNTNAM - исходная точка; A2PNAM (axis2_placement) - координатная плоскость локальной координатной системы; cartesian_point - проекция точки на плоскость

Рисунок А.15 - Функция Pnt_Projection_A2p

Внутренние ссылки: 6.1.9.2, 6.1.9.7, 6.1.9.8, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3 Сущности кривой

А.5.3.1 Базовые сущности кривой

А.5.3.1.1 Отрезки прямой api_line

Построение отрезка по двум точкам

Lin_2_Pnt

Построение отрезка по точке, длине отрезка и его направлению

Lin_Pnt_Length_Dir

Построение отрезка, касательного к дуге одной окружности

Lin_Tangential_Arc

Построение отрезка, касательного к дугам двух окружностей

Lin_Tangential_2_Arc

Диагональное сопряжение двух отрезков

Lin_Chamfer_2_Lin

A.5.3.1.1.1 Построение отрезка по двум точкам

Имя функции:

Уровень интерфейса:

1

Lin_2_Pnt

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

STAPNT

N

Имя начальной точки cartesian_point

pnt

Ввод

ENDPNT

N

Имя конечной точки cartesian_point

pnt

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_line

lin

Привязка языка FORTRAN:

NAME = (STAPNT, ENDPNT, KFIX)

Результат использования функции

Функция создает отрезок прямой api_line по двум заданным декартовым точкам cartesian_point, где PNTNM1 - начальная точка и PNTNM2 - конечная точка.

Начальная и конечная точки дублируются как точки р1 и р2 соответственно. Они имеют нулевой стиль null_style. Затем:

- создается экземпляр d направления direction с компонентами direction_ratio, определенными как разность р2 - р1. Указанное направление имеет нулевой стиль;

- создается экземпляр v вектора vector, направление которого совпадает с направлением d, модуль равен ||р2 - р1||. Настоящий вектор имеет нулевой стиль;

- создается экземпляр линии l по точке pnt р1 и направлению dir v. Настоящая линия имеет нулевой стиль;

- создается экземпляр сущности api_line с линией / в качестве базовой кривой basis_curve, точки р1 и р2 являются точками вычленения trim_1 и trim_2 соответственно. Атрибут направления обхода отрезка sense_agreement равен "true", значение атрибута главного представления master_representation зависит от реализации. Полученная сущность api_line имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной сущности api_line.

Расстояние между двумя заданными точками лежит в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Нет.


Тriт_1 - точка вычленения 1; sense_agreement (sense = TRUE) - положительное направление отрезка (совпадает с направлением оси); STAPNT - начальная точка отрезка; ENDPNT - конечная точка отрезка; api_line - сущность линии; trim_2 - точка вычленения 1; basis_curve (= line) - базовая кривая (прямая линия)

Рисунок А.16 - Функция Lin_2_Pnt

Внутренние ссылки: 6.1.9, 6.1.12.1, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

101

Попытка создания вырожденной сущности

103

Расстояние между двумя точками находится вне установленного диапазона [EPS, МАХ]

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.1.1.2 Построение отрезка по точке, длине отрезка и его направлению

Имя функции:

Уровень интерфейса:

1

Lin_Pnt_Length_Dir

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

STAPNT

N

Имя начальной точки cartesian_point

pnt

Ввод

LEN

D

Длина отрезка api_line

(EPSMAX)

Ввод

DIRNAM

N

Имя направления отрезка

dir

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_line

lin

Привязка языка FORTRAN:

NAME = LIN_PNT_LENGTH_DIR (STAPNT, LEN, DIRNAM, KFIX)

Результат использования функции

Функция создает отрезок прямой api_line по начальной декартовой точке cartesian_point, длине и направлению direction.

Начальная декартова точка с именем STAPNT дублируется как точка р1, направление с именем DIRNAM дублируется как вектор d. Обе сущности имеют нулевой стиль null_style. Затем:

- создается экземпляр v вектора vector с направлением d и единичным модулем magnitude (нормированный вектор). Полученный вектор имеет нулевой стиль;

- создается экземпляр l линии line по точке pnt р1 и направлению dir v. Полученная линия имеет нулевой стиль;

- создается экземпляр api_line интерфейса прикладного программирования с линией / в качестве базовой кривой basis_curve. Точка р1 является точкой вычленения trim_1, значение параметра LEN (длина отрезка) определяет вторую точку вычленения trim_2. Значение атрибута направления обхода отрезка sense_agreement равно "true", значение атрибута главного представления master_representation зависит от реализации. Полученная сущность api_line имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_linejnvolved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной сущности api_line.

Значение параметра длины LEN лежит в диапазоне [EPS, МАХ] и измеряется в единицах длины OVC_length_unit. При возникновении ошибки сущность не создается и функция возвращает нулевое имя элемента.

Примечание - Нет.


Trim_1 - точка вычленения 1; sense_agreement (sense = TRUE) - положительное направление отрезка (совпадает с направлением оси); STAPNT - начальная точка отрезка; LEN - заданная длина отрезка; api_line - сущность линии; trim_2 - точка вычленения 2; basis_curve (= line) - базовая кривая (прямая линия); DIRNAM - заданное направление отрезка

Рисунок А.17 - Функция Lin_Pnt_Length_Dir

Внутренние ссылки: 6.1.9, 6.1.12.1, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.1.1.3 Построение отрезка, касательного к дуге одной окружности

Имя функции:

Уровень интерфейса:

1

Lin_Tangential_Arc

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

STAPNT

N

Имя начальной точки cartesian_point

pnt

Ввод

ARCNAM

N

Имя дуги окружности api_circuiar_arc

arc

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_line

lin

Привязка языка FORTRAN:

NAME = LIN_TANGENTIAL_ARC (STAPNT, ARCNAM, KFIX)

Результат использования функции

Функция создает отрезок прямой api_line, касательный к заданной дуге окружности api_circular_arc с именем ARCNAM. Начальная точка отрезка задается сущностью cartesian_point с именем STAPNT. Данная начальная точка дублируется точкой р1, имеющей нулевой стиль null_style. Затем:

- создаются экземпляры р2 и р3 двух декартовых точек cartesian_point как двух возможных точек касания базовой кривой basis_curve типа дуги окружности api_circular_arc с именем ARCNAM. Полученные декартовы точки имеют нулевой стиль;

- из полученных двух декартовых точек р2 и р3 выбирается та, в которой направление касательной (в положительном направлении с учетом значения флажка сущности ARCNAM) совпадает с направлением перехода из начальной точки р1 в полученную точку касания. Пусть точка р4 является синонимом данной выбранной точки;

- создается экземпляр d направления direction с компонентами direction_ratio, вычисленными как разность р4 - р1. Указанное направление имеет нулевой стиль;

- создается экземпляр v вектора vector с направлением d и модулем ||р4 - р1||. Настоящий вектор имеет нулевой стиль;

- создается экземпляр l линии line по точке pnt р1 и направлению dir v. Данная линия имеет нулевой стиль;

- создается экземпляр l линии api_line как базовой кривой basis_curve. Точки р1 и р4 являются точками вычленения trim_1 и trim_2 соответственно. Значение атрибута направления обхода отрезка sense_agreement равно "true", значение атрибута master_representation зависит от реализации. Настоящая сущность api_line имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной сущности api_line. При возникновении ошибки сущность не создается и функция возвращает нулевое имя элемента.

Примечания

1 Заданная начальная точка отрезка cartesian_point р1 должна лежать вне базовой кривой basis_curve дуги окружности api_circular_arc с именем ARCNAM.

2 Если расстояние между вычисляемой точкой касания р4 и одной из точек вычленения (trim_1 или trim_2) заданной дуги окружности лежит в диапазоне [ZERO_value, EPS], то координаты данной точки вычленения используются вместо координат вычисляемой точки.

3 Сущность api_line создается, если выбранная точка касания р4 лежит внутри параметрического диапазона [trim_1, trim_2] дуги окружности ARCNAM. При этом длина данной сущности лежит в диапазоне [EPS, МАХ]. В противном случае возникает ошибка.

4 Если текущий открытый вид определен как 3D-вид (значение записи geometrical_power_level в таблице статуса интерфейса не менее 2), то декартова точка cartesian_point с именем PNTNAM и дуга окружности ARCNAM должны лежать в одной плоскости.


Basis_curve (= line) - базовая кривая (прямая линия); ARCNAM.sense_agreement = FALSE - отрицательное направление дуги; ARCNAM.sense_agreement = TRUE - положительное направление дуги; ARCNAM - дуга окружности с именем; trim_2 - точка вычленения 2; api_line - отрезок касательной; PNTNAM - начальная точка; trim_1 - точка вычленения 1

Рисунок А.18 - Функция Lin_Tangential_Arc

Внутренние ссылки: 6.1.9, 6.1.12, 6.1.12.1, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

101

Попытка создания вырожденной сущности

105

Попытка создания вырожденного направления в процессе создания сущности

110

Попытка создания точки вне параметрического диапазона сущности кривой

119

Заданные сущности не лежат в одной плоскости

127

Геометрическое построение нецелесообразно

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.1.1.4 Построение отрезка, касательного к дугам двух окружностей

Имя функции:

Уровень интерфейса:

1

Lin_Tangential_2_Arc

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип
Данных

Смысл

Допустимый тип/значение

Ввод

ARCNM1

N

Имя первой дуги окружности api_circular_arc

arc

Ввод

ARCNM2

N

Имя второй дуги окружности api_circular_arc

arc

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_line

lin

Привязка языка FORTRAN:

NAME = LIN_TANGENTIAL_2_ARC (ARCNM1, ARCNM2, KFIX)

Результат использования функции

Функция создает отрезок прямой api_line, направленный по линии касания двух заданных дуг окружностей api_circular_arc. Отрезок начинается из точки касания первой дуги api_circular_arc с именем ARCNM1 и заканчивается в точке касания второй дуги api_circular_arc с именем ARCNM2. Положительное направление обхода дуг (неявно заданное значениями флажков и точками вычленения) определяет направление полученного отрезка api_line. Ниже дуги С1 и С2 рассматриваются как синонимы дуг ARCNMI и ARCNM2 соответственно. Затем:

- создаются экземпляры всех возможных декартовых точек cartesian_point, которые являются точками касания базовых кривых basis_curve с именами С1 и С2. Все указанные декартовы точки имеют нулевой стиль null_style;

- определяются точки касания на дугах С1 и С2. Пусть р1 и р2 - синонимы данных точек соответственно. При построении направление касательной в точке С1 совпадает с направлением касательной в точке С2 (с учетом значения флажка направления обхода дуг окружности api_circular_arc, соответствующих точкам С1 и С2);

- создается экземпляр d направления direction с компонентами direction_ratio, определенными путем вычитания р2 - р1. Полученное направление имеет нулевой стиль;

- создается экземпляр v вектора vector, направление которого совпадает с направлением d, модуль вектора равен ||р2-р1||. Полученный вектор имеет нулевой стиль;

- создается экземпляр l линии line, содержащий точку pnt, равную р1 и имеющий направление dir, равное v. Полученная сущность имеет нулевой стиль;

- создается экземпляр l линии api_line как базовая кривая basis_curve с точками р1 и р2 в качестве точек вычленения trim_1 и trim_2 соответственно. Значение атрибута направления отрезка sense_agreement равно "true", а значение атрибута главного представления master_representation зависит от реализации. Настоящая сущность api_line имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true"), полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной сущности api_line. При возникновении ошибки сущность не создается и функция возвращает нулевое имя элемента.

Примечания

1 Сущность api_line создается, если выбранные точки касания р1 и р2 лежат внутри параметрического диапазона [trim_1, trim_2] соответствующих дуг окружностей api_circuiar_arc. При этом расстояние между двумя точками р1 и р2 находится в диапазоне [EPS, МАХ]. В противном случае возникает ошибка.

2 Если расстояние между вычисленными точками касания р1 и р2 и одной из точек вычленения (trimj или trim_2) соответствующей заданной дуги окружности api_circuiar_arc лежит в диапазоне [ZERO_value, EPS], то ошибок нет и координаты точки вычленения используются вместо вычисленных координат.

3 Если текущий открытый вид определен как 3D-вид (значение записи geometrical_power_level в таблице статуса интерфейса не менее 2), то обе заданные дуги окружности должны лежать в одной плоскости.


ARCNM1.sense_agreement = FALSE - стрелка указывает направление обхода дуги первой окружности (значение флага "false"); ARCNM2.sense_agreement = FALSE - стрелка указывает направление обхода дуги второй окружности (значение флага "false"); trim_1 - точка вычленения 1; ARCNM1 - первая дуга окружности; ARCNM2 - вторая дуга окружности; basis_curve (= line) - базовая кривая (прямая линия); trim_2 - точка вычленения 2; api_line - отрезок касательной; ARCNM2.sense_agreement = TRUE - стрелка указывает направление обхода дуги первой окружности (значение флажка равно "true"); ARCNM1 ,sense_agreement = TRUE - стрелка указывает направление обхода дуги второй окружности (значение флажка равно "true")

Рисунок А.19 - Функция Lin_Tangential_2_Arc

Внутренние ссылки: 6.1.9, 6.1.12, 6.1.12.1, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

101

Попытка создания вырожденной сущности

105

Попытка создания вырожденного направления в процессе создания сущности

110

Попытка создания точки вне параметрического диапазона сущности кривой

115

Заданные сущности идентичны

118

Заданные сущности кривой являются параллельны- ми/концентрическими

119

Заданные сущности не лежат в одной плоскости

127

Геометрическое построение нецелесообразно

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.1.1.5 Диагональное сопряжение двух отрезков

Имя функции:

Уровень интерфейса:

1

Lin_Chamfer_2_Lin

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

LEN1

D

Отрезок на первой прямой api_line

(EPSМАХ)

Ввод

LEN2

D

Отрезок на второй прямой api_line

(EPSМАХ)

Ввод

LINNM1

N

Имя первой прямой api_line

lin

Ввод

LINNM2

N

Имя второй прямой api_line

lin

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_line

lin

Привязка языка FORTRAN:

NAME = LIN_CHAMFER_2_LIN (LEN1, LEN2, LINNM1, LINNM2, KFIX)

Результат использования функции

Функция создает сущность отрезка прямой api_line как скос между двумя прямыми api_line. Исходные прямые типа api_line с именами LINNM1 и LINNM2 соответственно должны иметь точку пересечения, лежащую на каждой из этих прямых. Данные прямые отрезаются, при этом имена их не изменяются. Прямые остаются во временной базе данных до момента их выбора. Вновь созданная сущность api_line (скос chamfer_line) начинается от нового конца первой прямой api_line (точка вычленения trim_2 на прямой LINNM1) и заканчивается новым началом второй прямой api_line (точка вычленения trim_1 на прямой LINNM2). После вычленения прямые больше не пересекаются. Затем:

- создается экземпляр р1 декартовой точки cartesian_point пересечения прямых LINNM1 и LINNM2. Точка пересечения cartesian_point имеет нулевой стиль null_style;

- создается экземпляр р2 декартовой точки на расстоянии LEN1 отточки пересечения р1. Указанная точка отложена на прямой api_line с именем LINNM1 в отрицательном направлении. Точка cartesian_point имеет нулевой стиль;

- создается экземпляр р3 декартовой точки на расстоянии LEN2 от точки пересечения р1. Указанная точка отложена по прямой api_line с именем LINNM2 в положительном направлении. Точка имеет нулевой стиль;

- создается экземпляр d направления direction с компонентами direction_ratio, полученными путем вычитания р3 - р2. Указанное направление имеет нулевой стиль;

- создается экземпляр v вектора с направлением d и модулем ||р3 - р2||. Настоящий вектор имеет нулевой стиль;

- создается экземпляр l линии по точке pnt р2 и направлению dir v. Настоящая линия имеет нулевой стиль;

- создается экземпляр сущности api_line с прямой l как базовой кривой basis_curve и точками р2 и р3 как точками вычленения trim_1 и trim_2 соответственно. Значение атрибута обхода кривой sense_agreement равно "true", значение атрибута главного представления master_representation зависит от реализации. Настоящая сущность api_line имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_linejnvolved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной сущности api_line;

- заданная сущность api_line с именем LINNM1 определяется повторно с точкой вычленения trim_2, равной р2. Заданная сущность с api_line с именем LINNM2 также определяется повторно с точкой вычленения trimj, равной р3.

Значения длин LEN1 и LEN2, лежащие в диапазоне [EPS, МАХ], измеряются в единицах длины OVC_length_unit. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечания

1 Заданная длина LEN1 должна быть меньше расстояния между точкой пересечения р1 и точкой вычленения trim_1 сущности api_line с именем LINNM1. Заданная длина LEN2 должна быть меньше расстояния между точкой пересечения р1 и точкой вычленения trim_2 сущности api_line с именем LINNM2. В противном случае возникает ошибка.

2 Сущность api_line создается, если ее длина находится в диапазоне [EPS, МАХ]. При этом длины обоих заданных сущностей LINNM1 и LINNM2 после вычленения должны быть больше EPS. В противном случае возникает ошибка.

3 Если текущий открытый вид определен как 3D-вид (значение записи geometrical_power_level в таблице статуса интерфейса не менее 2), то обе заданные сущности должны лежать в одной плоскости.


LINNM2.trim_2 - отрезанная прямая 2; LINNM2 - исходная прямая 2; trim_2 - точка вычленения 2; LEN1 - длина 1; api_line - полученный скос; LINNM1 - исходная прямая 1; LEN2 - длина 2; trim_1 - точка вычленения 1; LINNM1.trim_1 - отрезанная прямая 1; basis_curve (= line) - базовая кривая (прямая линия); after shortend - скос прямых после вычленения

Рисунок А.20 - Функция Lin_Chamfer_2_Lin

Внутренние ссылки: 6.1.9, 6.1.12, 6.1.12.1, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

105

Попытка создания вырожденного направления в процессе создания сущности

108

Попытка создания вырожденной базовой кривой в процессе создания сущности

111

Попытка создания сегмента линии, длиной вне установленного диапазона [EPS, МАХ]

115

Заданные сущности являются идентичными

119

Заданные сущности не лежат в одной плоскости

120

Задан слишком длинный отрезок

122

Заданные сущности кривых не пересекаются

127

Геометрическое построение нецелесообразно

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.1.2 Построение окружностей и их дуг (сущности api_circular_arc)

Построение окружности по радиусу и сущности axis2_placement

Circle_Rad_A2p

Построение дуги окружности по трем точкам

Arc_3_Pnt

Построение дуги окружности по радиусу, двум углам и сущности axis2_placement

Arc_Rad_2_angle_A2p

Построение дуги окружности по радиусу и трем точкам

Arc_Rad_3_Pnt

Построение дуги окружности по радиусу, двум точкам и сущности axis 2_placement

Arc_Rad_2_Pnt_A2p

Построение дуги окружности как сопряжение двух сущностей

Arc_Fillet_2_Ent

Построение дуги окружности, касательной к двум сущностям

Arc_Tangential_2_Ent

Построение дуги окружности по радиусу и двум сущностям

Arc_Rad_2_Ent

Построение дуги окружности по трем сущностям

Arc_3_Ent

A.5.3.1.2.1 Построение окружности по радиусу и сущности axis2_placement

Имя функции:

Уровень интерфейса:

1

Circle_Rad_A2p

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

RAD

D

Радиус окружности api_circular_arc

(EPSMAX)

Ввод

A2PNAM

N

Имя сущности axis2_placement

а2р

Ввод

SENSE

Е

Знак направления обхода кривой

[TRUE, FALSE]

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_circular_arc

arc

Привязка языка FORTRAN:

NAME = CIRCLE_RAD_A2P (RAD, A2PNAM, SENSE, KFIX)

Результат использования функции

Функция создает полную окружность как сущность api_circular_arc по радиусу RAD, по сущности axis2_placement (начало локальной координатной системы с именем A2PNAM) и по установленному положительному направлению обхода (заданному значением флажка "sense") окружности api_circular_arc в совокупности с сущностью circle как базовой кривой basis_curve.

Сущность axis2_placement (с именем A2PNAM) дублируется как точка а2р1, имеющая нулевой стиль null_style. Затем:

- создается экземпляр окружности с центром а2р1 и радиусом rad. Данная окружность имеет нулевой стиль;

- создается экземпляр сущности api_circular_arc с элементом с как базовой кривой basis_curve. Значение параметра равно 0° в точке вычленения trim_1, значение параметра равно 360° в точке вычленения trim_2. Флажок направления обхода окружности sense_agreement принимает значение SENSE, значение атрибута master_representation зависит от реализации. Построенный атрибут api_circular_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной дуги окружности api_circular_arc интерфейса прикладного программирования.

Значение радиуса окружности RAD лежит в диапазоне [EPS, МАХ]. Радиус измеряется в единицах длины OVC_length_unit. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Интерфейс обеспечивает замкнутость созданной сущности api_circular_arc (декартовы координаты точки вычленения trim_1 равны декартовым координатам точки вычленения trim_2).


Api_circular_arc - построенная окружность; A2PNAM - центр окружности находится в начале локальной координатной системы; SENSE - положительное направление обхода окружности; RAD - радиус окружности; trim_1 = trim_2 - условие замкнутости окружности (начальная точка окружности совпадает с конечной точкой окружности); basis_curve (= circle) - базовая кривая (окружность)

Рисунок А.21 - Функция Circle_Rad_A2p

Внутренние ссылки: 6.1.9, 6.1.12, 6.1.12.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.1.2.2 Построение дуги окружности по трем точкам

Имя функции:

Уровень интерфейса:

1

Arc_3_Pnt

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

STAPNT

N

Имя начальной точки cartesian_point

pnt

Ввод

INTPNT

N

Имя промежуточной точки cartesian_point

pnt

Ввод

ENDPNT

N

Имя конечной точки cartesian_point

pnt

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_circular_arc

arc

Привязка языка FORTRAN:

NAME = ARC_3_PNT (STAPNT, INTPNT, ENDPNT, KFIX)

Результат использования функции

Функция создает дугу окружности api_circular_arc по трем декартовым точкам cartesian_point (начальная точка STAPNT, промежуточная точка INTPNT и конечная точка ENDPNT). Начальная точка (с именем STAPNT) определяет начало дуги окружности, конечная точка (с именем ENDPNT) определяет конец дуги окружности и промежуточная точка (с именем INTPNT) определяет плоскость, в которой лежит окружность и сектор окружности api_circular_arc.

Декартовы точки STAPNT и ENDPNT дублируются как точки р1 и р3 соответственно. Они имеют нулевой стиль null_style. Точка р2 является синонимом точки INTPNT. Затем:

- создается экземпляр р4 декартовой точки как центр дуги окружности. Ее координаты вычисляются по координатам трех точек: р1, р2 и р3. Полученная декартова точка имеет нулевой стиль;

- создается экземпляр d1 направления direction с компонентами direction_ratio, определенными вычитанием р1 - р4. Указанное направление имеет нулевой стиль.

В случае 3D-вида:

- создается экземпляр направления d0 с компонентами direction_ratio, вычисляемыми посредством векторного произведения вектора р1 - р3 и вектора Р2 - р3. Указанное направление имеет нулевой стиль;

- создается экземпляр а2р1 сущности axis2_placement_3d с началом координат р4, осью d0 и ссылочным направлением d1 сущности ref_direction. Данная сущность имеет нулевой стиль.

В случае 2D-вида:

- создается экземпляр а2р1 сущности axis2_placement_2dс началом координатр4 и ссылочным направлением d1 сущности ref_direction. Данная сущность имеет нулевой стиль.

Затем:

- создается экземпляр с окружности с центром а2р1 в начале координат сущности axis2_placement и радиусом, извлеченным из ||р1 - р4||. Полученная окружность имеет нулевой стиль;

- создается экземпляр с сущности api_circular_arc в качестве базовой кривой basis_curve, точки р1 и р3 используются как точки вычленения trim_1 и trim_2 соответственно. Значение атрибута направления контура sense_agreement вычисляется по положению декартовых точек cartesian_point р1, Р2 и р3, значение атрибута главного представления master_representation зависит от реализации. Полученная дуга окружности api_circular_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя построенной дуги окружности api_circular_arc.

Расстояние между двумя из трех точек не должно лежать в диапазоне [ZERO_value, EPS], Кроме того, промежуточная точка INTPNT не должна лежать на одной прямой с начальной и конечной точками с точностью EPS. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Сущность api_circular_arc создается, если радиус лежит в диапазоне [EPS, МАХ], а длина отрезка, проведенного из точки trim_1 в точку trim_2 (в положительном направлении в соответствии с сущностью sense_agreement), не меньше допуска EPS. В противном случае возникает ошибка.


Api_circular_arc - построенная окружность; 3D view - 3D - вид; trim_1 - первая точка вычленения; INTPNT - промежуточная точка; STAPNT - начальная точка; ref_direction - ссылочное направление; ENDPNT - конечная точка; position - центр окружности; trim_2 - вторая точка вычленения; sense_agreement (sense = TRUE) - направление обхода (значение атрибута SENSE равно "true"); basis_curve (= circle) - базовая кривая (окружность); axis - ось

Рисунок А.22 - Функция Arc_3_Pnt (3D-вид)


Api_circular_arc - построенная окружность; 2D view - 2D-eud; INTPNT - промежуточная точка; STAPNT - начальная точка; trim_1 - первая точка вычленения; trim_2 - вторая точка вычленения; ref_direction - ссылочное направление; ENDPNT - конечная точка; sense_agreement (sense = FALSE) - направление обхода (значение атрибута SENSE равно "false"); position - центр окружности; basis_curve (= circle) - базовая кривая (окружность)

Рисунок А.23 - Функция Arc_3_Pnt (2D-вид)

Внутренние ссылки: 6.1.9, 6.1.12, 6.1.12.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

101

Попытка создания вырожденной сущности

105

Попытка создания вырожденного направления в процессе создания сущности

106

Попытка создания вырожденной локальной координатной системы axis2_placement в процессе создания сущности

112

Попытка создания дуги длиной меньше EPS

115

Заданные сущности являются идентичными

116

Заданные точки линейно зависимы

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.1.2.3 Построение дуги окружности по радиусу, двум углам и сущности axis2_placement

Имя функции:

Уровень интерфейса:

1

Arc_Rad_2_Angle_A2p

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

RAD

D

Радиус окружности api_circular_arc

(EPSMAX)

Ввод

STAPNT

D

Начальный угол в плоскости (Оху) относительно оси (Ох) заданной сущности а2р

(0°360°)

Ввод

ENDANG

D

Конечный угол в плоскости (Оху) относительно оси (Ох) заданной сущности а2р

(0°360°)

Ввод

A2PNAM

N

Имя сущности axis2_placement

a2p

Ввод

SENSE

E

Знак направления обхода кривой

[TRUE, FALSE]

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_circular_arc

arc

Привязка языка FORTRAN:

NAME = ARC_RAD_2_ANGLE_A2P (RAD, STAANG, ENDANG, A2PNAM, SENSE, KFIX)

Результат использования функции

Функция создает дугу окружности api_circular_arc по радиусу (RAD), двум углам, началу координатной системы axis2_placement (с именем A2PNAM) и заданному положительному направлению обхода (параметр SENSE) созданной сущности api_circular_arc в совокупности с сущностью circle в качестве базовой кривой basis_curve и вместе с начальной и конечной точками, неявно определенными по двум углам STAANG (начальный угол) и ENDANG (конечный угол) соответственно.

Сущность axis2_placement (с именем A2PNAM) дублируется как точка а2р1, имеющая нулевой стиль null_style. Затем:

- создается экземпляр с окружности с центром а2р1 и радиусом RAD. Полученная окружность имеет нулевой стиль;

- создается экземпляр с сущности api_circular_arc с базовой кривой basis_curve, значение параметра STAANG соответствует точке вычленения trim_1, значение параметра ENDANG соответствует точке вычленения trim_2. Значение атрибута sense_agreement равно параметру SENSE, значение атрибута master_representation зависит от реализации. Полученная дуга окружности api_circular_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной дуги окружности api_circular_arc интерфейса прикладного программирования.

Значения радиуса RAD лежат в диапазоне [EPS, МАХ] и измеряются в единицах длины OVC_length_unit. Заданные углы измеряются в единицах угла OVC_angle_unit, вычисляются в плоскости (Оху) заданной локальной координатной системы A2PNAM. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечания

1 Сущность api_circular_arc создается, если вычисленное значение радиуса лежит в диапазоне [EPS, МАХ] и длина дуги окружности, проведенной из точки вычленения trim_1 в точку вычленения trim_2 и совместимой с заданным направлением обхода контура sense_agreement, не меньше допуска EPS. В противном случае возникает ошибка.

2 Если два значения параметров STAANG и ENDANG определяют одну и ту же точку в диапазоне [ZERO_value, EPS], то обе точки вычленения trim_1 и trim_2 являются идентичными и созданная дуга окружности является полной окружностью. Интерфейс гарантирует замкнутость созданной сущности api_circular_arc (декартовы координаты точки вычленения trim_1 равны декартовым координатам точки вычленения trim_2).

3 Сущность api_circular_arc создается, если длина дуги окружности, проведенной из точки вычленения trim_1 в точку вычленения trim_2, для заданного значения атрибута обхода контура sense_agreement, не меньше установленного допуска EPS. В противном случае возникает ошибка.


Api_circular_arc - построенная дуга окружности; ENDANG - конечный угол; trim_2 - вторая точка вычленения; trim_1 - первая точка вычленения; RAD - радиус; A2PNAM - начало локальной координатной системы; SENSE (= TRUE) - направление обхода контура ("true"); STAANG - начальный угол; basis_curve (= circle) - базовая кривая (окружность)

Рисунок А.24 - Функция Arc_Rad_2_Angle_A2p

Внутренние ссылки: 6.1.9, 6.1.12, 6.1.12.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

4

Значение меры плоского угла находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

112

Попытка создания дуги длиной меньше EPS

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.1.2.4 Построение дуги окружности по радиусу и трем точкам

Имя функции:

Уровень интерфейса:

1

Arc_Rad_3_Pnt

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

RAD

D

Радиус дуги api_circular_arc

(EPS MAX)

Ввод

STAPNT

N

Имя начальной точки cartesian_point

pnt

Ввод

ENDPNT

N

Имя конечной точки cartesian_point

pnt

Ввод

HLPPNT

N

Имя вспомогательной точки cartesian_point

pnt

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_circuiar_arc

arc

Привязка языка FORTRAN:

NAME = ARC_RAD_3_PNT (RAD, STAPNT, ENDPNT, HLPPNT, KFIX)

Результат использования функции

Функция создает дугу окружности api_circular_arc по радиусу (RAD) и трем декартовым точкам cartesian_point (начальная точка STAPNT, конечная точка ENDPNT и вспомогательная точка НLPPNT). Начальная точка (STAPNT) определяет начало дуги окружности, конечная точка (ENDPNT) определяет конец дуги окружности, вспомогательная точка (FILPPNT) задает плоскость и сектор дуги окружности api_circular_arc интерфейса прикладного программирования.

Точки STAPNT, ENDPNT, НLPPNT дублируются как точки р1, р2, р3 соответственно, они имеют нулевой стиль null_style.

В случае 3D-вида создается экземпляр d0 направления direction с компонентами direction_ratio, вычисляемыми посредством векторного произведения вектора р1 - р3 и вектора р2 - р3. Указанное направление имеет нулевой стиль. Затем:

- определяется виртуальная плоскость путем задания декартовой точки р3 и направления d0, перпендикулярного к виртуальной плоскости;

- создаются экземпляры двух декартовых точек р4 и р5 с координатами, равными координатам точек пересечения двух виртуальных окружностей в предварительно определенной виртуальной плоскости с радиусом RAD и центрами в точках р1 и р2 соответственно. Декартовы точки р4 и р5 имеют нулевой стиль;

- из декартовых точек р4 и р5 выбирается та, которая расположена ближе к точке р3. Она принимается за центр новой дуги окружности api_circuiar_arc. Новому центру назначается имя р6;

- создается экземпляр d1 направления direction с компонентами direction_ratio, определенными вектором р1 - р6. Указанное направление имеет нулевой стиль;

- создается экземпляр а2р1 координатной плоскости axis2_placement_3d с началом координат р6, осью d0 и ссылочным направлением d1 для сущности ref_direction. Сущность axis2_placement_3d имеет нулевой стиль.

В случае 2D-вида создаются экземпляры декартовых точек р4 и р5 с координатами, вычисленными по точкам пересечения двух виртуальных окружностей в плоскости (Оху) текущей базовой координатной системы вида объекта OVC.

Радиус указанных окружностей равен RAD, центры окружностей лежат в декартовых точках р1 и р2 соответственно. Указанные декартовы точки имеют нулевой стиль;

- из двух точек р4 и р5 выбирается та, которая расположена ближе к точке р3. Она является центром новой дуги окружности api_circular_arc, ей назначается имя р6;

- создается экземпляр d1 направления direction с компонентами direction_ratio, определенными вектором р1 - р6. Указанное направление имеет нулевой стиль;

- создается экземпляр а2р1 сущности axis2_placement_2d с началом координат р6 и базовым направлением d1, определяемым сущностью ref_directi on. Данная сущность axis2_placement_2d имеет нулевой стиль;

- создается экземпляр с окружности с центром а2р1 и радиусом RAD. Настоящая окружность имеет нулевой стиль;

- создается экземпляр с дуги окружности api_circular_arc с базовой кривой basis_curve и точками р1 и р2 как точками вычленения trim_1 и trim_2 соответственно. Атрибут направления обхода дуги окружности sense_agreement вычисляется по точке р3, он определяет требуемый сектор окружности. Атрибут сущности главного представления master_representation зависит от реализации. Полученная дуга окружности api_circular_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной дуги окружности api_circuiar_arc интерфейса прикладного программирования.

Расстояние между любыми двумя из трех точек не должно лежать в диапазоне [ZERO_value, EPS], Кроме того, вспомогательная точка р3 не должна находиться в EPS-окрестности центра дуги окружности. Значение радиуса RAD лежит в диапазоне [EPS, МАХ] и измеряется в единицах длины OVC_length_unit. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечания

1 Сущность api_circular_arc создается, если длина дуги окружности, проведенной из точки вычленения trim_1 в точку вычленения trim_2 и совместимой со значением атрибута sense_agreement, не меньше допуска EPS. В противном случае возникает ошибка.

2 Сущность api_circular_arc создается, если вспомогательная точка HLPPNT определяет один уникальный сектор (расстояние между вычисленным центром окружности и настоящей вспомогательной точкой HLPPNT не равно RAD). В противном случае возникает ошибка.


Basis_curve (= circle) - базовая кривая (окружность); sense_agreement (sense = TRUE) - положительное направление обхода кривой; ref_direction - ссылочное направление; axis - ось; RAD - радиус; STAPNT - начальная точка; HLPPNT - вспомогательная точка; trim_1 - первая точка вычленения; ENDPNT - конечная точка; trim_2 - вторая точка вычленения; api_circuiar_arc - построенная дуга окружности

Рисунок А.25 - Функция Arc_Rad_3_Pnt

Внутренние ссылки: 6.1.9, 6.1.12, 6.1.12.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

105

Попытка создания вырожденного направления в процессе создания сущности

106

Попытка создания вырожденной локальной координатной системы axis2_placement в процессе создания сущности

112

Попытка создания дуги длиной меньше EPS

115

Заданные сущности идентичны

116

Заданные точки линейно зависимы

127

Геометрическое построение нецелесообразно

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.1.2.5 Построение дуги окружности по радиусу, двум точкам и сущности axis2_placement

Имя функции:

Уровень интерфейса:

1

Arc_Rad_2_Pnt_A2p

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

RAD

D

Радиус дуги окружности api_cir- cular_arc

(EPSMAX)

Ввод

PNTNM1

N

Имя первой декартовой точки cartesian_point

pnt

Ввод

PNTNM2

N

Имя второй декартовой точки cartesian_point

pnt

Ввод

A2PNAM

N

Имя сущности axis2_placement

A2p

Ввод

SENSE

Е

Знак направления обхода кривой

[TRUE, FALSE]

Вывод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

out

NAME

N

Имя созданной сущности api_circular_arc

arc

Привязка языка FORTRAN:

NAME = ARC_RAD_2_PNT_A2P (RAD, PNTNM1, PNTNM2, A2PNAM, SENSE, KFIX)

Результат использования функции

Функция создает дугу окружности api_circular_arc по радиусу (RAD), двум декартовым точкам cartesian_point, локальной координатной системе axis2_placement (A2PNAM) и заданному положительному направлению обхода контура, соответствующему значению флажка (SENSE) вновь созданной дуги окружности api_circular_arc. Построение производится в совокупности с сущностью circle в качестве базовой кривой basis_curve и вместе с начальной и конечной точками дуги, неявно определенными двумя точками PNTNM1 и PNTNM2 соответственно.

Начало локальной координатной системы A2PNAM дублируется как точка а2р1 и имеет нулевой стиль null_style. Пусть точки Р1 и Р2 являются синонимами PNTNM1 и PNTNM2 декартовых точек соответственно. Затем:

- создается экземпляр с окружности с центром а2р1 и радиусом RAD. Данная окружность имеет нулевой стиль;

- создается экземпляр р3 декартовой точки cartesian_point, координаты которой вычисляются по декартовым координатам cartesian_coordinates начала координат а2р1. Полученная декартова точка является центром окружности и имеет нулевой стиль;

- создается экземпляр d1 направления direction с компонентами direction_ratio, определенными как разность P1 - р3. Указанное направление имеет нулевой стиль;

- создается экземпляр вектора v1 с направлением d1 и модулем ||Р1 - р3||. Данный вектор имеет нулевой стиль;

- создается экземпляр линии l1 с точкой pnt р3 и направлением dir v1. Данная линия имеет нулевой стиль;

- создается экземпляр d2 направления direction с компонентами direction_ratio, определенными разностью Р2 - р3. Указанное направление имеет нулевой стиль;

- создается экземпляр вектора v2 с направлением d2 и модулем ||Р2 - р3||. Данный вектор имеет нулевой стиль;

- создается экземпляр линии l2 с точкой pnt р3 и направлением dir v2. Данная линия имеет нулевой стиль;

- создается экземпляр р4 декартовой точки, координаты которой равны координатам точки пересечения линии l1 с окружностью с для положительного направления линии l1. Полученная декартова точка имеет нулевой стиль;

- создается экземпляр р5 декартовой точки, координаты которой есть координаты точки пересечения линии l2 с окружностью с для положительного направления линии l2. Полученная декартова точка имеет нулевой стиль;

- создается экземпляр сущности api_circuiar_arc с дугой окружности с как базовой кривой basis_curve, точками р4 и р5 как точками вычленения trim_1 и trim_2 соответственно. Значение атрибута обхода кривой sense_agreement равно значению параметра SENSE, значение атрибута главного представления master_representation зависит от реализации. Полученная сущность api_circuiar_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной дуги окружности api_circuiar_arc интерфейса прикладного программирования.

Расстояние между центром дуги окружности api_circuiar_arc и двумя заданными декартовыми точками должно быть не меньше допуска EPS. Кроме того, расстояние между двумя заданными декартовыми точками должно быть не меньше допуска EPS. Значение радиуса RAD лежит в диапазоне [EPS, МАХ] и измеряется в единицах длины OVC_length_unit. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечания

1 Если два неявно заданных направления d1 и d2 идентичны в диапазоне [ZERO_value, EPS], то обе точки вычленения trim_1 и trim_2 также идентичны. При этом созданная дуга образует полную окружность. В этом случае интерфейс гарантирует замкнутость созданной сущности api_circuiar_arc (декартовы координаты точки вычленения trim_1 равны декартовым координатам точки вычленения trim_2).

2 Сущность api_circuiar_arc создается, если длина дуги от точки trim_1 до точки trim_2, совместимая со значением атрибута sense_agreement, не меньше допуска EPS. В противном случае возникает ошибка.

3 Если текущий открытый вид определен как 3D-вид (значение записи geometrical_power_level в таблице статуса интерфейса не менее 2), то точки Р1 и Р2 должны лежать в плоскости (Оху) локальной координатной системы (A2PNAM).


PNTNM1 - первая заданная точка; trim_1 - первая точка вычленения; basis_curve (= circle) - базовая кривая (окружность); api_circular_arc - построенная дуга окружности; SENSE (= TRUE) - обход кривой в положительном направлении; A2PNAM - начало локальной координатной системы; PNTNM2 - вторая заданная точка; trim_2 - вторая точка вычленения; RAD - радиус; SENSE (= FALSE) - обход кривой в отрицательном направлении

Рисунок А.26 - Функция Arc_Rad_2_Pnt_A2p

Внутренние ссылки: 6.1.9, 6.1.12, 6.1.12.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

105

Попытка создания вырожденного направления в процессе создания сущности

112

Попытка создания дуги длиной меньше EPS

119

Заданные сущности не лежат в одной плоскости

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.1.2.6 Построение дуги окружности как сопряжение двух сущностей

Имя функции:

Уровень интерфейса:

1

Arc_Fillet_2_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNM1

N

Имя первой сущности

basic

Ввод

ENTNM1

N

Имя второй сущности

basic

Ввод

RAD

D

Радиус сопряжения

(EPSMAX)

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_circular_arc

arc

Привязка языка FORTRAN:

NAME = ARC_FILLET_2_ENT (ENTNM1, ENTNM2, RAD, KFIX)

Результат использования функции

Функция создает дугу окружности api_circular_arc как сопряжение двух базовых сущностей с радиусом RAD. Данные сущности могут пересекаться или не пересекаться. Указанные сущности с именами ENTNM1 и ENTNM2 вычленяются при построении, при этом их имена не изменяются. Они продолжают оставаться во временной базе данных до окончания построения. Вновь созданная сущность api_circular_arc начинается в новом конце первой сущности ENTNM1 (точка вычленения trim_2 сущности ENTNM1) и заканчивается в новом начале второй сущности ENTNM2 (точка вычленения trim_1 сущности ENTNM2). Направление обхода дуги окружности api_circular_arc совместимо с направлениями обхода указанных сущностей.

Интерфейс выполняет нижеследующие вычисления:

- все возможные геометрические варианты касания окружностей сir сущности circle с радиусом RAD, расположенным между заданными сущностями ENTNM1 и ENTNM2, рассчитываются виртуально. При этом центрами указанных окружностей являются экземпляры pc1 сущностей cartesian_point для точек касания ENTNM1 (как экземпляры pt1 сущностей cartesian_point) и для точек касания ENTNM2 (как экземпляры pt2 сущностей cartesian_point). Указанные точки имеют номер i (i = 1, ..., n), где n равно максимально возможному числу решений. Все указанные созданные экземпляры имеют нулевой стиль null_style.

Если в процессе вычислений происходит сбой, то геометрическое построение нецелесообразно (n = 0) или для касания дуг задан слишком большой (слишком маленький) радиус RAD. В результате:

- возникает ошибка;

- никакие сущности не создаются и никакие изменения существующих сущностей не производятся;

- функция возвращает нулевое имя элемента.

Если первая заданная базовая сущность ENTNM1 является экземпляром сущности api_line, то:

- создается n экземпляров сущности axis2_placements a2p с началом локальной координатной системы pc1 и направлениями обеих локальных осей, расположенных в одной плоскости. Все указанные экземпляры имеют нулевой стиль;

- создается n экземпляров окружностей c сущности circle с центрами а2р и радиусом RAD. Все указанные экземпляры имеют нулевой стиль;

- создается n экземпляров a сущности api_circuiar_arc в виде окружности как базовой кривой basis_curve и точками pt1 как точками вычленения trim_1 и точками pt2 как точками вычленения trim_2. Значение атрибута направления обхода кривой sense_agreement равно "true", если направление обхода задается вектором trim_2 - trim_1 сущности api_line (с именем ENTNM1), направление которого совпадаете направлением касательной в точке pt1 на базовой кривой с сущности basis_curve. В противном случае значение параметра SENSE равно "false". Значение атрибута главного представления master_representation зависит от реализации. Все указанные экземпляры имеют нулевой стиль.

Далее начинается процесс выбора единственного решения для вновь созданной сущности api_circuiar_arc. Выбирается экземпляр а, для которого:

- направление касательной в точке pt2 на дуге окружности а сущности api_circuiar_arc совпадает с направлением обхода второй сущности ENTNM2 (с учетом значения атрибута обхода контура sense_agreement_fiag);

- дуга окружности а сущности api_circuiar_arc имеет наименьший центральный угол;

- вычисленное расстояние между точкой вычленения trim_1 первой сущности ENTNM1 и точкой вычленения trim_1 вновь созданной дуги окружности а сущности api_circuiar_arc имеет наименьшую длину;

- выбранная сущность api_circuiar_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной дуги окружности api_circuiar_arc.

Если первая заданная базовая сущность ENTNM1 является экземпляром api_circular_arc, то:

- создается n экземпляров локальных координатных систем а2р для сущностей axis2_placement с началом координат pc1 и направлением осей, определенным по положению базовой кривой для сущности ENTNM1. Все указанные экземпляры имеют нулевой стиль;

- создается n экземпляров окружностей с с центрами, определенными локальной координатной системой а2р, и радиусом RAD. Все указанные экземпляры имеют нулевой стиль;

- создается n экземпляров а сущности api_circular_arc дуги окружности как базовой кривой с точками pt1 как точками вычленения trim_1 и точками pt2, как точками вычленения trim_2. Направление дуги вычисляется как разность pt1 - pc1, совпадает с направлением разности pt1 - ENTNM1.basis_curve.position.location. При этом направление обхода полученной дуги окружности sense_agreement совпадает с направлением обхода sense_agreement дуги окружности api_circuiar_arc сущности ENTNM1. В противном случае значение атрибута sense_agreement противоположно направлению обхода sense_agreement дуги окружности api_circuiar_arc сущности ENTNM1. Значение атрибута главного представления master_representation зависит от реализации. Все указанные экземпляры имеют нулевой стиль.

Далее начинается процесс выбора единственного решения для вновь созданной дуги окружности api_circular_arc. Выбирается один экземпляр а, для которого:

- направление касательной в точке pt2 дуги окружности а сущности api_circular_arc совпадает с направлением обхода второй сущности ENTNM2 (с учетом значения атрибута направления обхода sense_agreement_flag);

- дуга окружности а сущности api_circular_arc имеет наименьший центральный угол;

- вычисленная длина дуги окружности между точкой вычленения trim_1 первой сущности ENTNM1 и точкой вычленения trim_1 дуги окружности а сущности api_circular_arc (измеренная в направлении из точки вычленения trim_1 в точку вычленения trim_2 сущности ENTNM1) имеет наименьшую длину;

- выбранная дуга окружности api_circular_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя созданной дуги окружности api_circular_arc интерфейса прикладного программирования.

Заданные экземпляры ENTNM1 определяются повторно (с точкой вычленения trim_2, равной точке вычленения trim_1) для выбранной сущности api_circular_arc. Заданные экземпляры ENTNM2 определяются повторно (с точкой вычленения trim_1, равной точке вычленения trim_2) для выбранной сущности api_circular_arc.

Значение радиуса RAD лежит в диапазоне [EPS, МАХ] и измеряется в единицах длины OVC_length_unit. При возникновении ошибки новая сущность не создается, существующие сущности не изменяются. Функция возвращает нулевое имя элемента.

Примечания

1 Параллельные прямые api_line или концентрические окружности api_circular_arc не могут использоваться в качестве сущностей ENTNM1 и ENTNM2.

2 Созданная дуга окружности api_circular_arc не может быть больше полуокружности.

3 Сущность api_circular_arc создается, если длина дуги окружности, проведенной из точки вычленения trim_1 в точку вычленения trim_2 и совместимой со значением атрибута направления обхода кривой sense_agreement, не меньше допуска EPS. При этом длины сегментов обеих заданных сущностей ENTNM1 и ENTNM2 (после их вычленения) больше допуска EPS. В противном случае возникает ошибка.

4 Если текущий открытый вид определен как 3D-вид (значение записи geometrical_power_level в таблице статуса интерфейса не менее 2), то обе заданные сущности ENTNM1 и ENTNM2 должны лежать в одной плоскости.


ENTNM2 - вторая сущность сопряжения; ENTNM1 = api_line - имя сущности 1 api_line; ENTNM2 = api_line - имя сущности два api_line; ENTNM1.trim_2 - точка вычленения 2 первой сущности сопряжения; cir - окружность cir; cir - окружность cir; pt1 - точка pt1; pt1 - точка pt1; result after invoking Arc_Fillet_2_Ent - результат срабатывания функции Arc_Fillet_2_Ent (увеличено); pc1 - центр окружности pc1; RAD - радиус; рс1 - центр окружности рс1; ENTNM2.trim_2 - точка вычленения 2 второй сущности сопряжения; pt1 - точка pt1, pt2 - точка pt2; pt2 - точка pt2; ENTNM2.trim_1 - точка вычленения 1 второй сущности сопряжения; trim_2 - точка вычленения 2; рс1 - центр окружности pc1; trim_1 - точка отрезка 1; new created api_circular_arc with sense_agreement = false - вновь созданная дуга окружности с отрицательным направлением обхода; рс1 - центр окружности рс1; а2р - положение а2р; pt1 - точка pt1; cir - окружность cir; ENTNM1.trim_1 - точка вычленения 1 первой сущности сопряжения; cir - окружность cir

Рисунок А.27 - Функция Arc_Fillet_2_Ent (сопряжение двух прямых)


ENTNM1 = api_circular_arc - имя сущности 1 api_circular_arc; ENTNM2 = api_circular_arc - имя сущности 2 api_circular_arc; ENTNM1.sense_agreement = false - первая исходная сущность с отрицательным направлением обхода; RAD - радиус; result after invoking Arc_Fillet_2_Ent - результат срабатывания функции Arc_Fillet_2_Ent (увеличено); а2р - положение а2р; new created api_circular_arc with sense_agreement = true - вновь созданная дуга окружности с отрицательным направлением обхода; ENTNM1 - первая сущность сопряжения; рс1 - центр окружности рс1; cir - окружность cir; pt1 - точка pt1; ENTNM1.trim_2 - точка вычленения 2 первой сущности сопряжения; cir - окружность cir, pt2 - точка pt2; ENTNM1.trim_1 - точка вычленения 1 первой сущности сопряжения; ENTNM2.trim_1 - точка вычленения 1 второй сущности сопряжения; ENTNM2.sense_agreement = false - вторая исходная сущность с отрицательным направлением обхода; cir - окружность cir; ENTNM2 - вторая сущность сопряжения; ENTNM2.trim_2 - точка вычленения 2 второй сущности сопряжения

Рисунок А.28 - Функция Arc_Fillet_2_Ent (сопряжение дуг двух окружностей)

Внутренние ссылки: 6.1.9, 6.1.12, 6.1.12.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

106

Попытка создания вырожденной локальной координатной системы axis2_placement в процессе создания сущности

108

Попытка создания вырожденной базовой кривой в процессе создания сущности

112

Попытка создания дуги длиной меньше EPS

115

Заданные сущности являются идентичными

118

Заданные сущности кривых являются параллельными (концентрическими)

119

Заданные сущности не лежат в одной плоскости

121

Радиус слишком большой (маленький)

127

Геометрическое построение нецелесообразно

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.1.2.7 Построение дуги окружности, касательной к двум сущностям

Имя функции:

Уровень интерфейса:

1

Arc_Tangential_2_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNM1

N

Имя первой сущности

basic

Ввод

ENTNM1

N

Имя второй сущности

basic

Ввод

RAD

D

Радиус касания сущности api_circular_arc

(EPS MAX)

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_circular_arc

arc

Привязка языка FORTRAN:

NAME = ARC_TANGENTIAL_2_ENT (ENTNM1, ENTNM2, RAD, KFIX)

Результат использования функции

Функция создает дугу окружности api_circular_arc с радиусом RAD, касательную к двум базовым сущностям. Заданные сущности ENTNM1 и ENTNM2 могут пересекаться или не пересекаться. Направление вновь созданной сущности api_circular_arc совместимо с направлениями заданных сущностей.

Интерфейс выполняет нижеследующие вычисления:

- сущности E1 и Е2 рассматриваются как синонимы заданных сущностей ENTNM1 и ENTNM2 соответственно;

- виртуально вычисляются все геометрически возможные касательные к сущностям Е1 и Е2 окружностей cir сущности circle с радиусом RAD. Центры данных окружностей pc1 являются экземплярами сущности cartesian_point. Точки касания базовой кривой basis_curve Е1 являются экземплярами pt1 сущности cartesian_point. Точки касания базовой кривой basis_curve E2 являются экземплярами pt2 сущности cartesian_point. Номера рассматриваемых точек i изменяются в пределах i = 1, ..., n, где n - максимальное количество возможных решений. Все указанные экземпляры имеют нулевой стиль null_style.

Если при вычислениях возникает сбой, то геометрическое построение нецелесообразно (n = 0): заданный радиус RAD касания дуг слишком велик или слишком мал. Затем:

- диагностируется ошибка;

- функция возвращает нулевое имя элемента.

Если первая базовая сущность Е1 является экземпляром прямой api_line, то:

- создается экземпляр а2р локальной координатной системы axis2_placements с началом координат в точке pc1 и локальными осями, лежащими в одной общей плоскости. Все указанные экземпляры имеют нулевой стиль;

- создается n экземпляров с окружностей circle с центрами в точках а2р и радиусом RAD. Все указанные экземпляры имеют нулевой стиль;

- создается n экземпляров дуг окружностей а для сущностей api_circuiar_arc. При этом сущности с являются базовыми кривыми basis_curve, точки pt1 являются точками вычленения trim_1, а точки рt2 являются точками вычленения trim_2. Значение атрибута направления обхода контура sense_agreement равно "true", если направление вектора trim_2 - trim_1 вдоль прямой api_line (Е1) совпадает с направлением касательной в точке pt1 базовой кривой basis_curve (окружности с). В противном случае значение атрибута обхода контура равно "false". Значение атрибута главного представления master_representation зависит от реализации. Все указанные экземпляры имеют нулевой стиль.

Далее из указанного множества возможных решений выбирается единственная дуга окружности api_circular_arc. Таким решением является экземпляр а, для которого:

- направление касательной в точке pt2 на дуге окружности а сущности api_circuiar_arc совпадает с направлением второй сущности E2 (с учетом значения атрибута sense_agreement_fiag);

- дуга окружности а сущности api_circuiar_arc имеет наименьший центральный угол;

- точки вычленения trim_1 и trim_2 дуги окружности а сущности api_circular_arc лежат внутри параметрического диапазона [trim_1, trim_2] для обеих заданных сущностей E1 и E2;

- вычисленное расстояние между точкой вычленения trim_1 первой сущности Е1 и точкой вычленения trim_1 вновь созданной дуги окружности а сущности api_circular_arc является наименьшим;

- выбранная дуга окружности api_circular_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной сущности api_circuiar_arc.

Если первой базовой сущностью Е1 является экземпляр дуги окружности api_circular_arc, то:

- создается n экземпляров а2р локальной координатной системы axis2_placements с началом координат в точке pc1 и осями координат, соответствующими базовой кривой basis_curve для сущности Е1. Все указанные экземпляры имеют нулевой стиль;

- создается n экземпляров с сущности circle с центрами в точках а2р и радиусом RAD. Все указанные экземпляры имеют нулевой стиль;

- создается n экземпляров дуг окружностей а сущности api_circular_arc с кривыми с в качестве базовых кривых, точками pt1 в качестве точек вычленения trim_1 и точками pt2 в качестве точек вычленения trim_2. Если направление вектора pt1 - рс1 совпадает с направлением вектора pt1_ENTNM1.basis_curve.position.location, то значение атрибута направления обхода кривой sense_agreement равно значению соответствующего атрибута sense_agreement для дуги окружности api_circular_arc (сущности Е1). В противном случае направление обхода sense_agreement противоположно направлению обхода sense_agreement дуги окружности api_circular_arc (сущности Е1). Значение атрибута главного представления master_representation зависит от реализации. Все указанные экземпляры имеют нулевой стиль.

Далее из множества возможных решений выбирается только одно решение для вновь созданной дуги окружности api_circuiar_arc. Выбирается такой экземпляр а, что:

- направление касательной в точке pt2 дуги окружности а сущности api_circular_arc совпадает с направлением второй сущности E2 (с учетом значения атрибута sense_agreement_fiag);

- дуга окружности а сущности api_circular_arc имеет наименьший центральный угол;

- точки вычленения trim_1 и trim_2 дуги окружности а сущности api_circular_arc лежат внутри параметрического диапазона [trim_1, trim_2] для обеих заданных сущностей Е1 и E2;

- вычисленная дуга окружности между точкой вычленения trim_1 первой сущности Е1 и точкой вычленения trim_1 дуги окружности а сущности api_circular_arc (измеренные от точки trim_1 к точке trim_2 сущности Е1) имеет наименьшую длину;

- выбранная дуга окружности api_circular_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_linejnvoived равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса.

Функция возвращает имя полученной дуги окружности api_circular_arc интерфейса прикладного программирования.

Значение радиуса RAD лежит в диапазоне [EPS, МАХ]. Оно измеряется в единицах длины OVC_length_unit. При возникновении ошибки сущность не создается, существующие сущности не изменяются. Функция возвращает нулевое имя элемента.

Примечания

1 Параллельные прямые api_line или концентрические дуги окружностей api_circular_arc не допускаются при задании сущностей Е1 и E2.

2 Созданная дуга окружности api_circular_arc не может быть больше полуокружности.

3 Если значение расстояния между выбранными точками касания (используемыми для создания новой дуги окружности api_circular_arc) и одной из точек вычленения (trim_1 или trim_2) соответствующей дуги окружности api_circular_arc лежит в диапазоне [ZERO_vaiue, EPS], то ошибок нет и координаты точек вычленения используются вместо вычисленных координат.

4 Дуга окружности api_circular_arc создается, если длина дуги trim_1-trim_2, совместимая со значением атрибута sense_agreement, не меньше допуска EPS.

5 Если текущий открытый вид определен как 3D-вид (значение записи geometrical_power_level в таблице статуса интерфейса не менее 2), то обе заданные сущности Е1 и E2 должны лежать в одной плоскости.

ENTNM1 .sense_agreement = false - исходная первая сущность ENTNM1 (окружность) с отрицательным направлением обхода; RAD - радиус; а2р - локальная координатная система; new created api_circular_arc with sense_agreement = true - вновь созданная дуга окружности с положительным направлением обхода; ENTNM1 - первая исходная окружность ENTNM1; рс1 - центр окружности сопряжения pc1; - окружность ; pt1 - точка pt1; - окружность , pt2 - точка pt2; - окружность ; - окружность ; ENTNM2.sense_agreement = false - исходная вторая сущность ENTNM1 (окружность) с отрицательным направлением обхода; ENTNM2 - вторая исходная окружность ENTNM2; - окружность ; - окружность ; ENTNM2.basis_curve = circle - базовая кривая (окружность) для второй исходной сущности; ENTNM1.basis_curve = circle - базовая кривая (окружность) для первой исходной сущности

Рисунок А.29 - Функция Arc_Tangential_2_Ent

Внутренние ссылки: 6.1.9, 6.1.12, 6.1.12.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

106

Попытка создания вырожденной локальной координатной системы axis2_placement в процессе создания сущности

110

Попытка создания точки вне параметрического диапазона сущности кривой

112

Попытка создания дуги длиной меньше EPS

115

Заданные сущности являются идентичными

118

Заданные сущности кривой являются параллельными (концентрическими)

119

Заданные сущности не лежат в одной плоскости

121

Радиус является слишком большим (маленьким)

127

Геометрическое построение нецелесообразно

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.1.2.8 Построение дуги окружности по радиусу и двум сущностям

Имя функции:

Уровень интерфейса:

1

Arc_Rad_2_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип
данных

Смысл

Допустимый тип/значение

Ввод

RAD

D

Радиус касания дуги окружности api_circular_arc

(EPSMAX)

Ввод

ENTNM1

N

Имя первой исходной сущности

basic, pnt

Ввод

ENTNM1

N

Имя второй исходной сущности

basic, pnt

Ввод

IN1

Е

Положение новой сущности относительно первой исходной сущности ENTNM1

[TRUE, FALSE]

Ввод

IN2

Е

Положение новой сущности относительно второй исходной сущности ENTNM2

[TRUE, FALSE]

Ввод

MINLEN

Е

Выбор длины дуги

[TRUE, FALSE]

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_circular_arc

arc

Привязка языка FORTRAN:

NAME = ARC_RAD_2_ENT (RAD, ENTNM1, ENTNM2, IN1, IN2, MINLEN, KFIX)

Результат использования функции

К рассмотрению принимаются сущности E1 и Е2 - синонимы исходных сущностей ENTNM1 и ENTNM2.

Функция создает дугу окружности api_circular_arc, определенную двумя ограничениями по двум исходным сущностям Е1 и Е2. Указанные сущности могут быть декартовыми точками cartesian_point, прямыми api_line или дугами окружностей api_circular_arc. При этом сразу обе исходные сущности не могут быть декартовыми точками. Если одной из указанных сущностей является декартова точка, то эта точка должна лежать на результирующей дуге окружности api_circular_arc. В других случаях исходными сущностями могут быть сущность api_line или сущность api_circuiar_arc. При этом результирующая кривая должна касаться базовых кривых basis_curve (соответственно прямой или окружности) указанных сущностей. В данном случае имеет место "правило полиспаста" (одинаковое направление обхода отрезка кривой trimmed_curve в обеих точках касания). Три булева параметра MINLEN, IN1 и IN2 используются для разрешения неоднозначности. Эти параметры задают длину дуги и положение требуемого решения относительно (внутри или снаружи) каждого из возможных параметров сущности api_circuiar_arc.

Прежде всего плоскость геометрических построений ассоциируется с некоторым ссылочным направлением R сущности ref_direction и (в 3D-случае) с ортогональным направлением z сущности axis_direction (в 2D-случае направление z не существует). Указанные направления используются для параметризации требуемой дуги окружности api_circuiar_arc. Вычисления направлений производятся в следующем порядке:

- если текущий открытый вид определен как 2D-вид, то направление R является ссылочным направлением ref_direction базовой координатной системы OVC;

- в случае применения 3D-вида, если сущность Е1 или сущность Е2 являются дугой окружности api_circular_arc, то пусть сущность Е будет первой сущностью (первой дугой окружности) api_circular_arc перечня (Е1, Е2) в указанном списке.

Пусть направление R = E.basis_curve.position.ref_direction соответствует установленному ссылочному направлению, а направление Z = E.basis_curve.position.axis соответствует указанной оси;

- в случае 3D-вида, когда среди исходных сущностей нет дуг окружностей api_circular_arc и если сущности Е1 и E2 являются декартовыми точками cartesian_point, идентифицируется ошибка (плоскость не может быть определена);

- в случае 3D-вида, когда среди исходных сущностей нет дуг окружностей api_circular_arc и есть по крайней мере одна прямая api_line, пусть прямая L будет первой прямой api_line из перечня сущностей (E1, Е2) в указанном порядке и F - оставшаяся сущность. Пусть О будет начальной точкой прямой L. Если F - декартова точка, то пусть G = Е. В противном случае F является прямой линией api_line. Если ее начало не принадлежит базовой кривой L сущности basis_curve, то пусть точка Р является начальной для сущности F. В противном случае Р является его крайней точкой.

Тогда R = L.dir.orientation, a Z = L.dir.orientation x OP (где x - символ векторного произведения). Пусть S - множество дуг окружностей А для сущности api_circular_arc:

- если сущность Е1 является декартовой точкой, то р1 - ее дубликат. В противном случае р1 есть точка касания сущности А и базовой кривой для сущности Е1;

- если сущность Е2 является декартовой точкой, то р2 - ее дубликат. В противном случае р2 есть точка касания сущности А и базовой кривой для сущности Е2;

- точки р1, р2 вычисляются интерфейсом и имеют нулевой стиль null_style;

- для каждого i в диапазоне [1...2]: если сущность Е является дугой окружности api_circular_arc, то элемент А находится внутри Е (если значение параметра IN равно "true"); в противном случае (если значение параметра IN равно "false") элемент А находится вне Е. Если сущность Е не является дугой окружности api_circular_arc, то параметр IN не используется для определения элемента А;

- точка р1 является начальной точкой отрезка (элементом A.trim_1[1]), а точка р2 является концом точки отрезка (элементом A.trim_2[1]);

- изложенные далее постулаты используются для формального задания интуитивно воспринимаемых условий "правила полиспаста" для ориентированных дуг, касательных к сущностям Е1 и Е2 (касательные векторы должны быть когерентными).

Условие A.sense_agreement.

- пусть ВА является базовой кривой для элемента А;

- пусть является базовой кривой для сущности Е, если данная сущность не является декартовой точкой cartesian_point;

- пусть Р является точкой касания кривых ВА и ВЕ;

- пусть Va является вектором касания кривой ВА в точке Р.

- пусть вектор VA равен вектору Va, если значение атрибута направления обхода контура A.sense_agreement равно "true", в противном случае пусть он будет равен ;

- пусть является вектором касания кривой ВЕ в точке Р,

- пусть вектор равен вектору Ve, если значение атрибута обхода контура E.sense_agreement равно "true", и в противном случае равен вектору - Ve.

Тогда для каждого i, для которого сущность Е не является декартовой точкой, векторы VA и имеют одинаковые направления.

Множество S содержит не более двух элементов. Если множество S содержит только один элемент, то пусть этим элементом будет сущность NAME. В противном случае если множество S содержит два элемента, то (если параметр MINLEN равен "true") сущность NAME из них та, которая имеет меньшую дугу. В противном случае (если параметр MINLEN равен "false") сущностью NAME является оставшаяся сущность.

Далее создается экземпляр сущности NAME с точкой вычленения trim_1, точкой вычленения trim_2, значением атрибута направления обхода кривой sense_agreement и заданным положением базовой кривой basis_curve. position.location. При этом ссылочное направление для базовой кривой basis_curve.position.ref_direction равно R, и (при необходимости для 3D-вида) заданное направление оси базовой кривой basis_curve.position.axis, равное Z.

Если геометрическое построение нецелесообразно, то возникает ошибка.

Сущность NAME.master_representation зависит от реализации.

Созданная дуга окружности api_circular_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной дуги окружности api_circular_arc интерфейса прикладного программирования.

При возникновении ошибки сущность не создается, значение ее имени равно 0.

Примечания

1 Если решения нет (принимая во внимание значение параметра IN), то возникает ошибка.

2 Параметр IN игнорируется, если соответствующие параметры ENTNM не являются дугами окружностей api_circuiar_arc.

3 Параметр MINLEN игнорируется, если существует только одна дуга окружности api_circular_arc, вычисленная по заданному алгоритму.

4 Сущность api_circular_arc создается, если длина дуги, идущей из точки trim_1 в точку trim_2 и совместимой со значением атрибута sense_agreement, не меньше допуска EPS. В противном случае возникает ошибка.

5 Если текущий открытый вид определен как 3D-вид (значение записи geometrical_power_level в таблице статуса интерфейса не менее 2), то сущности Е1 и Е2 должны лежать в одной плоскости.


NAME - результирующая сущность; E2.basis_curve (ВЕ2) - базовая кривая для исходной сущности Е2 (ВЕ2); E2.sense_agreement = FALSE - значение атрибута направления обхода сущности Е2 равно "false"; NAME.sense_agreement = TRUE - значение атрибута обхода сущности равно "true"; discarded arc (MINLEN = TRUE) - исключенная дуга (значение параметра MINLEN равно "true")


Рисунок А.30 - Функция Arc_Rad_2_Ent

Внутренние ссылки: 6.1.9.2, 6.1.12.1, 6.1.12.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

106

Попытка создания вырожденной локальной координатной системы axis2_placement в процессе создания сущности

110

Попытка создания точки вне параметрического диапазона сущности кривой

112

Попытка создания дуги, длиной меньше EPS

115

Заданные сущности являются идентичными

118

Заданные сущности кривой являются параллельными (концентрическими)

119

Заданные сущности не лежат в одной плоскости

121

Радиус слишком большой (маленький)

127

Геометрическое построение нецелесообразно

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.1.2.9 Построение дуги окружности по трем сущностям

Имя функции:

Уровень интерфейса:

1

Arc_3_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNM1

N

Имя первой сущности

basic, pnt

Ввод

ENTNM1

N

Имя второй сущности

basic, pnt

Ввод

ENTNM3

N

Имя третьей сущности

basic, pnt

Ввод

IN1

Е

Положение новой сущности NAME относительно первой исходной сущности ENTNM1

[TRUE, FALSE]

Ввод

IN2

Е

Положение новой сущности NAME относительно второй исходной сущности ENTNM2

[TRUE, FALSE]

Ввод

IN3

Е

Положение новой сущности NAME относительно третьей исходной сущности ENTNM3

[TRUE, FALSE]

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_circular_arc

arc

Привязка языка FORTRAN:

NAME = ARC_3_ENT (ENTNM1, ENTNM2, ENTNM3, IN1, IN2, IN3, KFIX)

Результат использования функции

К рассмотрению принимаются сущности Е1, Е2 и ЕЗ как синонимы исходных сущностей ENTNM1, ENTNM2 и ENTNM3.

Функция создает дугу окружности api_circular_arc по трем ограничениям, задаваемым тремя исходными сущностями Е1, Е2 и ЕЗ. Исходные сущности являются либо декартовыми точками cartesian_point, либо прямыми api_line, либо дугами окружности api_circular_arc. Если исходная сущность является декартовой точкой, то данная точка должна лежать на результирующей дуге окружности api_circular_arc с именем NAME. Если исходной сущностью является прямая или дуга окружности, то результирующая дуга окружности с именем NAME должна касаться базовой кривой basis_curve (прямой или окружности соответственно) исходной сущности. При этом выполняется "правило полиспаста" (обе отрезанные кривые trimmed_curve имеют одинаковое направление в точке касания). Функция имеет три булева параметра IN. Их задание устраняет неоднозначность решения путем задания относительного положения требуемой дуги окружности. Относительное положение (внутри или снаружи) задается для каждого параметра сущности api_circular_arc.

Если исходная сущность Е1 является декартовой точкой, то пусть точка р1 является ее дубликатом. В противном случае точка р1 является точкой касания результирующей сущности NAME и базовой кривой basis_curve для сущности Е1.

Если исходная сущность Е2 является декартовой точкой, то пусть точка р2 является ее дубликатом. В противном случае точка р2 является точкой касания результирующей сущности NAME и базовой кривой для сущности Е2.

Если исходная сущность ЕЗ является декартовой точкой, то пусть точка р3 является ее дубликатом. В противном случае точка р3 является точкой касания результирующей сущности NAME и базовой кривой для сущности ЕЗ.

Точки р1, р2, р3 вычисляются интерфейсом, им назначается нулевой стиль null_style.

Требования к результирующей дуге окружности api_circular_arc с именем NAME:

- для каждого i в интервале [1...3], если сущность E является дугой окружности api_circular_arc и IN равно "true", то результирующая сущность NAME находится внутри Е. В противном случае (когда IN равно "false") результирующая сущность NAME находится вне сущности E. Если же сущность E не является дугой окружности api_circular_arc, то параметр IN не используется для определения результирующей сущности NAME;

- точка р1 является начальной точкой отрезка дуги NAME (обозначается NAME.trim_1[1]), точка р3 является конечной точкой отрезка дуги (обозначается NAME.trim_2[1]), точка р2 принадлежит параметрическому диапазону, определенному точками вычленения р1, р3. Расстояние от точки р2 до точки р1 (или до точки р3) может быть меньше 0 ZERO_value. Это означает идентичность двух точек;

- создается экземпляр положения результирующей сущности NAME (локальная координатная система axis_2_placement) с началом координат в вычисленном центре. При этом:

- если текущий открытый вид определен как 2D-вид, то ссылочным направлением базовой кривой NAME. basis_curve.position.ref_directionis является направление оси X OVC;

- если текущий открытый вид определен как 3D-вид, а одна из трех параметрических сущностей является дугой окружности api_circular_arc, то направления локальной координатной системы результирующей сущности NAME.basis_curve.position копируются по направлениям локальной координатной системы axis_2_placement первой дуги окружности api_circular_arc для перечня сущностей (E1, E2, E3) в указанном порядке;

- если текущий открытый вид определен как 3D-вид, когда исходные сущности Е1, Е2 и E3 являются декартовыми точками cartesian_point, то ссылочным направлением для результирующей сущности является направление NAME.basis_curve.position.ref_direction=Е1Е2 (считается из начальной точки сущности E1 до крайней точки сущности E2). Направлением оси результирующей сущности является направление NAME.basis_curve.position.axis=Е1Е2 x Е1ЕЗ (где х - символ векторного произведения). Указанные три точки не должны совпадать и лежать на одной прямой;

- если текущий открытый вид определен как 3D-вид, когда исходные сущности не являются дугами окружностей api_circular_arc, и по крайней мере одна сущность является прямой api_line, пусть сущность L является первой прямой из перечня (E1, E2, E3) в указанном порядке. Обозначим E1 и E2 как две оставшиеся сущности (в указанном порядке). Если данные сущности являются декартовыми точками, то точка Р является первой из точек, не принадлежащих базовой кривой basis_curve сущности L. Если сущность E1 или сущность E2 являются прямыми api_line, то точка G является первой из точек, принадлежащих прямой api_line для сущностей (E1, E2) в указанном порядке. Пусть точка Р является начальной точкой указанной прямой, если она не принадлежит базовой кривой basis_curve сущности L или в противном случае - конечной точкой. Пусть точка О является начальной точкой сущности L.

Тогда ссылочным направлением для результирующей дуги окружности является направление NAME.basis_curve.position. ref_direction = L.dir.orientation. Направлением координатной оси для результирующей сущности является направление NAME.basis_curve.position.axis = L.dir.orientation х OP.

Условия задания значения атрибута обхода кривой sense_agreement.

- пусть BN является базовой кривой для результирующей сущности NAME;

- пусть ВE является базовой кривой для исходной сущности E, если E не является декартовой точкой;

- пусть Р является точкой касания кривых BN и ВЕ,

- пусть вектор Vn касается кривой BN в точке Р,

- пусть вектор VN равен вектору Vn, если значение атрибута обхода контура NAME.sense_agreement равно "true", и в противном случае равен вектору - Vn;

- пусть вектор VE касается кривой ВE в точке Р;

- пусть вектор Ve равен вектору VE, если значение атрибута направления обхода контура E.sense_agreement равно "true", и в противном случае равен вектору - VE.

Тогда для каждого i, для которого исходная сущность E не является декартовой точкой, вектор Vn и вектор Ve имеют одинаковые направления. Если все три исходные сущности являются декартовыми точками, то значение атрибута NAME.sense_agreement для результирующей сущности равно "true".

Если геометрическое построение нецелесообразно, то возникает ошибка.

Значение радиуса результирующей сущности NAME лежит в диапазоне [EPS, МАХ].

Значение атрибута NAME.master_representation результирующей сущности зависит от реализации.

Результирующая дуга окружности api_circuiar_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной дуги окружности api_circular_arc интерфейса прикладного программирования.

Если возникает ошибка, то сущность не создается, значение ее имени равно 0.

Примечания

1 Если решения нет (принимая во внимание значение параметра IN), то возникает ошибка.

2 Параметры IN игнорируются, если соответствующие параметры исходных сущностей ENTNM не являются дугами окружности api_circular_arc.

3 Сущность api_circular_arc создается, если длина дуги, проведенной из точки вычленения trim_1 в точку вычленения trim_2, совместимая с соответствующим значением атрибута направления обхода контура sense_agreement, не меньше допуска EPS. В противном случае возникает ошибка.

4 Если текущий открытый вид определен как 3D-вид (значение записи geometrical_power_level в таблице статуса интерфейса не менее 2), то исходные сущности E1, E2 и E3 должны лежать в одной плоскости.


NAME - результирующая сущность (дуга окружности) NAME; ENTNM1 - исходная сущность (дуга окружности) ENTNM1; ENTNM2 - исходная сущность (дуга окружности ENTNM2); ENTNM3 - исходная сущность (дуга окружности ENTNM3); ВЕ1 - базовая кривая (прямая) для исходного примитива Е1 (также прямая); ВЕЗ - базовая кривая (прямая) для исходной сущности ЕЗ (также прямая); BN - базовая кривая (прямая) имени; ВЕ2 - базовая кривая (прямая) для исходной сущности Е2 (также прямая); ЕЗ is а - исходная сущность ЕЗ является декартовой точкой

Рисунок А.31 - Функция Arc_3_Ent

Внутренние ссылки: 6.1.9.2, 6.1.12.1, 6.1.12.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

101

Попытка создания вырожденной сущности

106

Попытка создания вырожденной локальной координатной системы axis2_placement в процессе создания сущности

110

Попытка создания точки вне параметрического диапазона сущности кривой

112

Попытка создания дуги длиной меньше EPS

115

Заданные сущности являются идентичными

118

Заданные сущности кривой являются параллельными (концентрическими)

119

Заданные сущности не лежат в одной плоскости

127

Геометрическое построение нецелесообразно

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.2 Сущности дуг конических кривых

А.5.3.2.1 Эллипс и дуга эллипса (сущность арi_elliptical_arс интерфейса прикладного программирования)

Построение эллипса по двум диаметрам и центру

Ellipse_Diameter_A2p

Построение дуги эллипса

Elc_Gen

А.5.3.2.1.1 Построение эллипса по двум диаметрам и центру

Имя функции:

Уровень интерфейса:

1

Ellipse_2_Diameter_A2p

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

SEMI1

D

Большая полуось semi_axis_1 эллипса api_elliptical_arc

(EPSМАХ)

Ввод

SEMI2

D

Малая полуось semi_axis_2 эллипса api_elliptical_arc

<EPSМАХ)

Ввод

A2PNAM

N

Имя локальной координатной системы axis2_placement

а2р

Ввод

SENSE

Е

Знак направления обхода кривой

[TRUE, FALSE]

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_elliptical_arc

elc

Привязка языка FORTRAN:

NAME = ELLIPSE_2_DIAMETER_A2P (SEM11, SEMI2, A2PNAM, SENSE, KFIX)

Результат использования функции

Функция создает полный эллипс как сущность api_elliptical_arc по большой полуоси эллипса (SEMI1), по малой полуоси эллипса (SEMI2), положению локальной координатной системы axis2_placement (A2PNAM) и значению атрибута направления обхода (SENSE) вновь созданной дуги api_elliptical_arc в совокупности с сущностью ellipse как базовой кривой basis_curve. Направление оси (Ох) локальной координатной системы A2PNAM определяет направление большой полуоси эллипса.

Сущность локальной координатной системы axis2_placement (A2PNAM) дублируется как сущность а2р1, имеющая нулевой стиль null_style. Затем:

- создается экземпляр е сущности ellipse с центром position локальной координатной системы а2р1, большая полуось semi_axis_1 равна SEMI1 и малая полуось semi_axis_2 равна SEMI2. Данный эллипс имеет нулевой стиль;

- создается экземпляр api_elliptical_arc с сущностью е в качестве базовой кривой basis_curve. Значение параметра кривой равно 0° в точке вычленения trim_1, значение параметра кривой равно 360° в точке вычленения trim_2. Значение атрибута направления обхода кривой sense_agreement равно SENSE, значение атрибута главного представления master_representation зависит от реализации. Полученная кривая api_elliptical_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученного эллипса api_elliptical_arc.

Значения параметров MAJA и MINA должны лежать в диапазоне [EPS, МАХ], они измеряются в единицах длины OVC_length_unit. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Интерфейс гарантирует замкнутость созданной сущности api_elliptical_arc (декартовы координаты точки вычленения trim_1 равны декартовым координатам точки вычленения trim_2).


Api_elliptical_arc - результирующий эллипс; SEMI2 - малая полуось эллипса; A2PNAM - локальная координатная система; SENSE (= TRUE) - направление обхода - положительное (против часовой стрелки); SEMI1 - большая полуось эллипса; trim_1 = trim_2 - условие замкнутости кривой (начальная точка вычленения совпадает с конечной точкой вычленения); basis_curve (= ellipse) - базовая кривая (эллипс)

Рисунок А.32 - Функция Ellipse_2_Diameter_A2p

Внутренние ссылки: 6.1.9, 6.1.13.1, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.2.1.2 Построение дуги эллипса

Имя функции:

Уровень интерфейса:

1

Elc Gen

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

SEMI1

D

Большая полуось semi_axis_1 эллипса api_elliptical_arc

(EPSМАХ)

Ввод

SEMI2

D

Малая полуось semi_axis_2 эллипса api_elliptical_arc

<EPSМАХ)

Ввод

STAANG

D

Начальный угол в плоскости (Оху) относительно оси (Ох) заданной локальной координатной системы а2р

(0°360°)

Ввод

ENDANG

D

Конечный угол в плоскости (Оху) относительно оси (Ох) заданной локальной координатной системы а2р

(0°360°)

Ввод

A2PNAM

N

Имя локальной координатной системы axis2_placement

а2р

Ввод

SENSE

E

Знак направления обхода кривой

[TRUE, FALSE]

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_eiliptical_arc

elc

Привязка языка FORTRAN:

NAME = ELC_GEN (SEMI1, SEMI2, STAANG, ENDANG, A2PNAM, SENSE, KFIX)

Результат использования функции

Функция создает дугу эллипса api_elliptical_arc по большой полуоси (SEMI1), малой полуоси (SEMI2), локальной координатной системе axis2_placement (A2PNAM) и заданному направлению обхода контура (SENSE) вновь созданной сущности api_elliptical_arc в совокупности с сущностью ellipse в качестве базовой кривой basis_curve. Начальная и конечная точки дуги неявно определяются углами STAANG и ENDANG соответственно. Направление оси (Ох) локальной координатной системы A2PNAM определяет направление большой полуоси эллипса.

Локальная координатная система axis2_placement (A2PNAM) дублируется как сущность а2р1, имеющая нулевой стиль null_style. Затем:

- создается экземпляр е эллипса с центром position в начале координат а2р1, большая полуось semi_axis_1 равна SEMI1, малая полуось semi_axis_2 равна SEMI2. Полученный эллипс имеет нулевой стиль;

- создается экземпляр дуги эллипса api_elliptical_arc с кривой е в качестве базовой кривой basis_curve. Значение параметра STAANG соответствует точке вычленения trim_1, значение параметра ENDANG соответствует точке вычленения trim_2. Значение атрибута направления обхода кривой sense_agreement равно параметру SENSE, значение атрибута главного представления master_representation зависит от реализации. Полученная дуга эллипса api_elliptical_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя построенной дуги эллипса api_elliptical_arc.

Значения параметров SEMI1 и SEMI2 лежат в диапазоне [EPS, МАХ] и измеряются в единицах длины OVC_length_unit. Углы измеряются в единицах угла OVC_angle_unit и вычисляются в плоскости (Оху) заданной локальной координатной системы A2PNAM. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечания

1 Если два указанных параметра (STAANG и ENDANG) определяют одну и ту же точку в диапазоне [ZERO_value, EPS], то точки вычленения trim_1 и trim_2 совпадают. При этом созданная дуга окружности является полным эллипсом. Интерфейс гарантирует замкнутость созданной сущности api_elliptical_arc.

2 Сущность api_elliptical_arc создается, если длина дуги, проведенной из точки вычленения trim_1 в точку вычленения trim_2 и совместимой с соответствующим значением атрибута sense_agreement, больше допуска EPS. В противном случае возникает ошибка.


Api_elliptical_arc - результирующая дуга эллипса; STAANG - начальный угол дуги; trim_1 - первая точка вычленения; trim_2 - вторая точка вычленения; SEMI2 - малая полуось эллипса SEMI2; ENDANG - конечный угол дуги; A2PNAM - локальная координатная система; SEMI1 - большая полуось эллипса SEMI1; SENSE (= FALSE) - направление обхода дуги - отрицательное (по часовой стрелке); basis_curve (= ellipse) - базовая кривая (эллипс)

Рисунок А.ЗЗ - Функция Elc_Gen

Внутренние ссылки: 6.1.9, 6.1.13.1, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

4

Значение меры плоского угла находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

112

Попытка создания дуги длиной меньше EPS

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.2.2 Построение дуги гиперболы (api_hyperbolic_arc)

Построение дуги гиперболы

Hyp_Gen

А.5.3.2.2.1 Построение дуги гиперболы

Имя функции:

Уровень интерфейса:

1

Hyp_Gen

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

SEMAXI

D

Действительная полуось гиперболы hyperbola

(EPSMAX)

Ввод

SEMIMG

D

Мнимая полуось гиперболы hyperbola

(EPSMAX)

Ввод

STAANG

D

Начальный угол в плоскости (Оху) локальной координатной системы а2р, отсчитывается вокруг фокусной точки от оси (Ох)

(0°360°)

Ввод

ENDANG

D

Конечный угол в плоскости (Оху) заданной локальной координатной системы а2р, отсчитывается вокруг фокусной точки от оси (Ох)

(0°360°)

Ввод

A2PNAM

N

Имя локальной координатной системы axis2_placement

a2p

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_hyperbolic_arc

hyp

Привязка языка FORTRAN:

NAME = HYP_GEN (SEMAXI, SEMIMG, STAANG, ENDANG, A2PNAM, KFIX)

Результат использования функции

Функция создает сущность api_hyperbolic_arc, которая является дугой гиперболы hyperbola, определенной по действительной полуоси (SEMAXI), мнимой полуоси (SEMIMG) и по локальной координатной системе axis2_placement (A2PNAM), задающей расположение и направление осей гиперболы. Ветви гиперболы расположены вдоль оси (Ох) локальной координатной системы A2PNAM. Направление обхода вновь созданной дуги гиперболы api_hyperbolic_arc неявно задается начальной точкой дуги и конечной точкой дуги, соответствующими начальному углу STAANG и конечному углу ENDANG. Направление оси (Ох) локальной координатной системы A2PNAM определяет направление действительной полуоси гиперболы.

Локальная координатная система axis2_placement (A2PNAM) дублируется как сущность а2р1, имеющая нулевой стиль null_style. Затем:

- создается экземпляр h гиперболы с центром локальной координатной системы а2р1, действительная полуось semi_axis_1 равна SEMAXI, мнимая полуось semi_imag_axis_2 равна SEMIMG. Данная гипербола имеет нулевой стиль;

- создается экземпляр р1 декартовой точки cartesian_point, являющейся точкой пересечения прямой, проведенной из фокуса гиперболы h под углом STAANG, и самой гиперболой h. Данная точка имеет нулевой стиль;

- создается экземпляр р2 декартовой точки, являющейся точкой пересечения прямой, проведенной из фокуса гиперболы h под углом ENDANG, и самой гиперболы h. Данная точка имеет нулевой стиль;

- создается экземпляр сущности api_hyperbolic_arc с гиперболой h как базовой кривой basis_curve, точкой р1 как точкой вычленения trim_1 и точкой р2 как точкой вычленения trim_2. При этом значение атрибута направления обхода контура sense_agreement равно "true", если для начального и конечного углов справедливо соотношение STAANG<ENDANG (в противном случае значение атрибута sense_agreement равно "false"), значение атрибута master_representation зависит от реализации. Полученная дуга гиперболы api_hyperbolic_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя построенной сущности api_hyperbolic_arc.

Значения SEMAXI и SEMIMG лежат в диапазоне [EPS, МАХ] и измеряются в единицах длины OVC_length_unit. Заданные углы измеряются в единицах угла OVC_angle_unit. Углы вычисляются в плоскости (Оху) заданной локальной координатной системы A2PNAM. Они откладываются вокруг фокусной точки гиперболы от оси (Ох). При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Если начальное STAANG и конечное ENDANG значения угла определяют одну и ту же точку в диапазоне [ZERO_value, EPS] (длина дуги гиперболы api_hyperbolic_arc меньше допуска EPS) или если процесс вычислений для двух декартовых точек р1 и р2 не дает решения, то дуга гиперболы api_hyperbolic_arc не создается и возникает ошибка.


Sense_agreement (sense = TRUE) - положительное направление обхода гиперболы (против часовой стрелки); SEMIMG - мнимая полуось гиперболы; ENDANG - конечный угол дуги; A2PNAM - локальная координатная система; api_hyperbolic_arc - результирующая дуга гиперболы; trim_2 - вторая точка вычленения; trim_1 - первая точка вычленения; STAANG - начальный угол дуги; SEMAXI - действительная полуось гиперболы; focus - фокус; basis_curve (= hyperbola) - базовая кривая (гипербола)

Рисунок А.34 - Функция Hyp_Gen

Внутренние ссылки: 6.1.9, 6.1.13.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

4

Значение меры плоского угла находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

112

Попытка создания дуги длиной меньше EPS

128

Неустойчивость процесса вычисления конической дуги

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.2.3 Построение дуги параболы (сущность api_parabolic_arc)

Построение дуги параболы

Par_Gen

А.5.3.2.3.1 Построение дуги параболы

Имя функции:

Уровень интерфейса:

1

Par Gen

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

FOCLEN

D

Фокусное расстояние параболы

(EPSMAX)

Ввод

STAANG

D

Начальный угол в плоскости (Оху) в локальной координатной системе а2р, отложенный вокруг фокусной точки от оси (Ох)

(0°360°)

Ввод

ENDANG

D

Конечный угол в плоскости (Оху) в локальной координатной системе а2р, отложенный вокруг фокусной точки от оси (Ох)

(0°360°)

Ввод

A2PNAM

N

Локальная координатная система axis2_placement

a2p

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_hyperbolic_arc

par

Привязка языка FORTRAN:

NAME = PAR_GEN (FOCLEN, STAANG, ENDANG, A2PNAM, KFIX)

Результат использования функции

Функция создает сущность api_parabolic_arc, которая является дугой параболы parabola, определенной фокусным расстоянием (FOCLEN), локальной координатной системой axis2_placement (A2PNAM), определяющей положение вершины и оси параболы. Значение параметра FOCLEN определяет расстояние от вершины параболы до ее фокуса в направлении оси (Ох) локальной координатной системы A2PNAM. Направление вновь созданной дуги параболы api_parabolic_arc неявно определяется начальной и конечной точками, соответствующими начальному STAANG и конечному ENDANG углам соответственно. Ось (Ох) локальной координатной системы A2PNAM определяет ось симметрии параболы.

Локальная координатная система axis2_placement (A2PNAM) дублируется сущностью а2р1, имеющей нулевой стиль null_style. Затем:

- создается экземпляр р параболы с началом координат локальной координатной системы а2р1, фокусное расстояние focal_dist равно FOCLEN. Построенная кривая имеет нулевой стиль;

- создается экземпляр р1 декартовой точки cartesian_point, являющейся точкой пересечения прямой, проведенной из фокуса параболы р под углом STAANG, и самой параболы р. Данная декартова точка cartesian_point имеет нулевой стиль;

- создается экземпляр р2 декартовой точки, являющейся точкой пересечения прямой, проведенной из фокуса параболы р под углом ENDANG, и самой параболы р. Данная декартова точка имеет нулевой стиль;

- создается экземпляр сущности api_parabolic_arc с параболой р в качестве базовой кривой basis_curve, точкой р1 как точкой вычленения trim_1 и точкой р2 как точкой вычленения trim_2. Значение атрибута направления обхода кривой sense_agreement равно "true", если выполняется соотношение STAANG<ENDANG (в противном случае значение атрибута sense_agreement равно "false"). Значение атрибута master_representation зависит от реализации. Результирующая дуга параболы api_parabolic_arc имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя построенной дуги параболы api_parabolic_arc.

Значение фокусного расстояния FOCLEN лежит в диапазоне [EPS, МАХ] и измеряется в единицах длины OVC_length_unit. Углы измеряются в единицах угла OVC_angle_unit и откладываются в плоскости (Оху) заданной локальной координатной системы A2PNAM вокруг фокусной точки от оси (Ох). При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Если начальное и конечное значения угла STAANG и ENDANG определяют одну и ту же точку в диапазоне [ZERO_value, EPS] (длина созданной дуги параболы api_parabolic_arc меньше допуска EPS) или если используемый процесс вычислений декартовых точек р1 и р2 не дает решения, то дуга параболы api_parabolic_arc не создается и возникает ошибка.


Sense_agreement (sense = FALSE) - направление обхода дуги отрицательное (по часовой стрелке); trim_1 - первая точка вычленения; STAANG - начальный угол дуги параболы; A2PNAM - локальная координатная система; api_parabolic_arc - результирующая дуга параболы; trim_2 - вторая точка вычленения; focus - фокус; FOCLEN - фокусное расстояние; ENDANG - конечный угол дуги параболы; basis_curve (= parabola) - базовая кривая (парабола)

Рисунок А.35 - Функция Par_Gen

Внутренние ссылки: 6.1.9, 6.1.13.3, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

4

Значение меры плоского угла находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

112

Попытка создания дуги длиной меньше EPS

128

Неустойчивость процесса вычисления конической дуги

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.3 Общие сущности кривых

А.5.3.3.1 Построение полилинии

Построение полилинии по декартовым координатам

Pln_Cartesian_Coordinate

Построение полилинии по заданному перечню точек

Pln_Pnt_List

А.5.3.3.1.1 Построение полилинии по декартовым координатам

Имя функции:

Уровень интерфейса:

1

Pln_Cartesian_Coordinate

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

N

1

Длина каждого из перечней координат XLST, YLST и ZLST, определяющих количество (n) декартовых точек cartesian_point в перечне точек полилинии polyline

Ввод

XLST

nxD

Перечень координат X декартовых точек cartesian_point р [см. примечание (1)]

(0.0 или

Ввод

YLST

nxD

Перечень координат Y декартовых точек cartesian_point р [см. примечание (1)]

(0.0 или

Ввод

ZLST

nxD

Перечень координат Z декартовых точек cartesian_point р [см. примечания (1) и (2)]

(0.0 или

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности polyline

pin

Привязка языка FORTRAN:

NAME = PLN_CARTESIAN_COORDINATE (N, XLST, YLST, ZLST, KFIX)

Результат использования функции

Функция создает сущность polyline, определенную тремя перечнями декартовых координат (XLST, YLST, ZLST). Каждая тройка координат X, Y и Z (XLST(i), YLST(i), ZLST(i) для каждого 1<i<n) указанных перечней определяет декартову точку cartesian_point из перечня декартовых точек, являющуюся атрибутом полилинии. Затем:

- создается n наборов декартовых точек р с координатами X, Y и Z, равными XLST, YLST и ZLST, где i = 1, ..., n, соответственно. Все указанные декартовы точки имеют нулевой стиль null_style;

- создается экземпляр полилинии с точками из перечня декартовых точек р полилинии, где i = 1, .... n. Полученная полилиния имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя построенной полилинии.

Длина каждого линейного сегмента полилинии, построенного по двум декартовым точкам р и р, где i = 1, ..., n - 1, лежит в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечания

1 Длины (n) перечней декартовых координат XLST, YLST и ZLST, определяющих количество точек р, необходимых для построения полилинии с линейными сегментами, должны быть одинаковыми для всех перечней.

2 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то перечень с декартовыми координатами Z (ZLST) игнорируется интерфейсом.

Внутренние ссылки: 6.1.9, 6.1.14.1, 6.2.4, 8.2.

Ошибки

3

Значение меры длины находится вне допустимого диапазона

5

Целочисленное значение находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

103

Значение расстояния между двумя точками находится вне установленного диапазона [EPS, МАХ]

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

205

Превышено максимально допустимое количество точек полилинии

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.3.1.2 Построение полилинии по заданному перечню точек

Имя функции:

Уровень интерфейса:

1

Pln_Pnt_List

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

N

I

Длина перечня PNTLST, определяющего количество точек полилинии

Ввод

PNTLST

nxN

Перечень имен декартовых точек cartesian_point (см. ниже)

pnt

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности polyline

pln

Привязка языка FORTRAN:

NAME = PLN_PNT_LIST (N, PNTLST, KFIX)

Результат использования функции

Функция создает сущность polyline, определенную перечнем заданных декартовых точек cartesian_point (PNTLST). Длина указанного перечня PNTLST, равная N (n), определяет количество точек, необходимых для построения линейных сегментов полилинии.

Перечень list1 декартовых точек, обозначенных р, где i = 1, ..., n, создан путем дублирования n декартовых точек перечня PNTLST. Все указанные декартовы точки имеют нулевой стиль null_style. Затем:

- создается экземпляр полилинии с точками перечня list1. Указанная полилиния имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной полилинии.

Длина каждого линейного сегмента, построенного по двум декартовым точкам, обозначенным р и р, где i = 1, ..., n - 1, лежит в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Нет.

Внутренние ссылки: 6.1.9, 6.1.14.1, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

5

Целочисленное значение находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

103

Расстояние между двумя точками находится вне установленного диапазона [EPS, МАХ]

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

205

Превышение максимально допустимого количества точек полилинии

1001

Перечислимое значение находится вне установленного диапазона

А.5.3.3.2 Плоский контур (сущность api_contour)

Построение плоского контура

Ctr_Gen

А.5.3.3.2.1 Построение плоского контура

Имя функции:

Уровень интерфейса:

1

Ctr_Gen

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

N

I

Длина перечня ENTLST, определяющего количество элементов

Ввод

ENTLST

nxN

Перечень имен сущностей, определяющих контур api_contour

basic, conic_arc, pin, grp

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_contour

ctr

Привязка языка FORTRAN:

NAME = CTR_GEN (N, ENTLST, KFIX)

Результат использования функции

Функция создает сущность api_contour несамопересекающейся ориентированной плоской замкнутой комбинированной кривой composite_curve, построенной с помощью перечня заданных сущностей (ENTLST). Данный перечень сущностей кривых может быть упорядоченным или неупорядоченным. Все экземпляры указанных сущностей, определенные перечнем ENTLST, дублируются. Они имеют нулевой стиль null_style. Затем:

- интерфейсом вычисляется перечень list1 сегментов комбинированной кривой composite_curve_segment с помощью точной копии заданной сущности. Процесс вычислений, установленный в подразделе 6.1.14.2, гарантирует замкнутость полученного контурa. Данный процесс доставляет необходимое количество n сегментов комбинированной кривой composite_curve_segment, используемых атрибутом n_segment;

- создается экземпляр контура api_contour с сегментами, определенными перечнем list1. Значение атрибута self_intersect равно "false", значение атрибута n_segment равно n и значение атрибута closed_curve равно "true". Полученный контур api_contour имеет текущую запись curve_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя полученной сущности api_contour.

При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечания

1 Внутри результирующего контура api_contour должна помещаться окружность диаметром EPS.

2 Если экземпляр сущности, заданной перечнем ENTLST, имеет тип api_group, то все экземпляры сущностей (содержащиеся внутри данной группы и существующие в параметрическом диапазоне настоящей функции, например, basic, conic_arc и pin) дублируются для создания перечня list1 сегментов комбинированной кривой composite_curve_segment.

3 Сущности, используемые для представления контура, имеют соответствующие записи contour_entities в таблице описаний интерфейсa. Если существуют допустимые сущности кривых, используемые настоящей функцией, но не попадающие в диапазон contour_entities, то данные сущности моделируются особым образом, определенным интерфейсом для указанных сущностей.

4 Если текущий открытый вид определен как 3D-вид (значение записи geometrial_power_level в таблице статуса интерфейса не менее 2), то все элементы перечня ENTLST должны лежать в одной плоскости.

Внутренние ссылки: 6.1.12, 6.1.13, 6.1.14, 6.1.14.2, 6.1.19, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

5

Целочисленное значение находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

113

Попытка создания самопересекающейся сущности контура

115

Заданные сущности являются идентичными

119

Заданные сущности не лежат в одной плоскости

129

Сбой процесса аппроксимации, гарантирующего замыкание контура

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

206

Превышение максимально допустимого количества сущностей контура

1001

Перечислимое значение находится вне установленного диапазона

А.5.4 Сущности создания заполненной области

Построение заполненной области комментариев annotation_fill_area

Afa_Gen

Задание стиля штриховки заполненной области fill_area_style_hatching

Fsh_Gen

Штриховка заполненной области комментариев annotation_fill_area

Hatch_Afa

A.5.4.1 Построение заполненной области комментариев annotatiоn_fiIl_area

Имя функции:

Уровень интерфейса:

1

Afa_Gen

Уровень геометрической мощности:

1

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/ значение

Ввод

CTRNAM

N

Имя контура api_contour наружной границы

ctr

Ввод

N

I

Длина перечня CTRLST, определяющего количество контуров api_contour внутренних границ

Ввод

CTRLST

nxN

Перечень имен внутренних контуров api_contour

ctr

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности заполненной области комментариев annotation_fill_area

afa

Привязка языка FORTRAN:

NAME = AFA_GEN (CTRNAM, N, CTRLST, KFIX)

Результат использования функции

Функция создает сущность annotation_fill_area, представляющую собой множество кривых, область между которыми может быть заполнена штриховкой, затенением, цветом или мелким узором. Сущность annotation_fill_area описывается путем задания границ, представляющих собой непересекающиеся и несамопересекающиеся замкнутые кривые. Эти кривые задают границы плоской области, заполненной в соответствии с установленным стилем. Сущность annotation_fill_area представляет собой плоскую двусвязную область, внешняя граница которой является заданным контуром api_contour с именем CTRNAM. Данная область может иметь внутреннюю границу, определенную перечнем контуров api_contour с именем CTRLST.

Все контуры лежат в одной плоскости. Они не должны пересекать друг другa. Все (возможные) контуры внутренних границ заполненной области должны находиться внутри наружного контурa. Внутренние контуры не пересекаются.

Заданные сущности api_contour интерфейса прикладного программирования дублируются как контуры а... а. Указанные сущности имеют нулевой стиль null_style. Затем:

- создается экземпляр сущности annotation_fill_area с границами в виде множества контуров api_contour а... а. Данная сущность имеет текущую запись fill_area_style в таблице статуса интерфейса. В случае открытого 2D-вида (если значение записи hidden_line равно "оn" (включено) и значение записи hidden_line_involved равно "true") полученная сущность приобретает предварительно установленный стиль затенения api_pre_defined_occlusion_style с текущими значениями записей уровня вида view_level и аспекта невидимых линий hidden_line_aspect таблицы статуса интерфейса. Функция возвращает имя построенной заполненной области annotation_fill_area. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечания

1 В контексте схемы api_abstract_schema использование сущностей annotation_fill_area допустимо только для 2D-видов (уровень геометрической мощности geometrical_power_level интерфейса равен 1).

2 Если внутренних границ нет (длина перечня внутренних контуров CTRLST равна 0), то параметр CTRLST игнорируется.

3 Если существует два и более контура api_contour в описании заполненной области комментариев annotation_fill_area, то расстояние между двумя контурами api_contour не лежит в диапазоне [ZERO_value, EPS],

Внутренние ссылки: 6.1.14, 6.1.15.1, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

5

Целочисленное значение находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

104

Расстояние между двумя контурами меньше EPS

119

Заданные сущности не лежат в одной плоскости

123

Выявлено пересечение заданных контуров

125

Выявлено перекрытие заданных контуров

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

207

Превышено максимально допустимое количество внутренних границ

1001

Перечислимое значение находится вне установленного диапазона

А.5.4.2 Задание стиля штриховки заполненной области fiIl_area_styIe_hatching

Имя функции:

Уровень интерфейса:

1

Fsh_Gen

Уровень геометрической мощности:

1

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

REFPNT

N

Имя декартовой точки cartesian_point начала отображения

pnt

Ввод

DIST1

D

Расстояние между параллельными линиями штриховки

(EPSMAX)

Ввод

DIST2

D

Расстояние от точки REFPNT, задающей начальную точку шаблона

(0.0 или (EPSMAX))

Ввод

ANGLE

D

Угол штриховки относительно оси (Ох) текущей OVC

(0°180°)

Вывод

NAME

N

Имя созданной сущности fill_area_style_hatching

fsh

Привязка языка FORTRAN:

NAME = FSH_GEN (REFPNT, DIST1, DIST2, ANGLE)

Результат использования функции

Функция создает сущность fill_area_style_hatching, определяющую стилизованный шаблон для линий штриховки видимых заполненных областей.

Заданная декартова точка cartesian_point с именем REFPNT, определяющая начальную точку отображения сущности fill_area_style_hatching с именем NAME, дублируется как точка р1 с нулевым стилем null_style. Пусть прямая l является виртуальной ссылочной линией штриховки, проходящей через точку р1 под заданным углом ANGLE. Затем:

- создается экземпляр v вектора, перпендикулярного ссылочной линии штриховки l. Модуль данного вектора равен DIST1. Вектор имеет нулевой стиль;

- создается экземпляр о фактора повторения заданного направления one_direction_repeat_factor в виде фактора повторения repeat_factor вектора v;

- создается экземпляр р2 декартовой точки либо путем дублирования ссылочной точки REFPNT (если заданное расстояние DIST2 равно 0), либо путем вычисления точки на ссылочной линии штриховки l на расстоянии DIST2 от заданной ссылочной точки REFPNT. Полученная декартова точка имеет нулевой стиль;

- стиль кривой curve_style определяется значениями записей таблицы статуса интерфейса: толщина линий штриховки hatch_width, тип линий штриховки hatch_curve_font и цвет штриховки hatch_colour,

- создается экземпляр стиля штриховки заполненной области fill_area_style_hatching со значением атрибута вида линий штриховки hatch_line_appearance равным с, значением атрибута начала следующей линии штриховки start_of_next_hatching_line, равным о, значением атрибута линии штриховки, проходящей через ссылочную точку point_of_reference_hatching_line, равным р1, значением атрибута начала шаблона pattern_start, равным р2, и значением атрибута угла наклона линий штриховки hatch_line_angle равным ANGLE.

Оба заданных расстояния DIST1 и DIST2 измеряются в единицах длины OVC_length_unit. Значение DIST1 лежит в диапазоне [EPS, МАХ]. Значение DIST2 либо равно 0, либо лежит в диапазоне [EPS, МАХ]. Значение угла наклона ANGLE вычисляется в единицах угла OVC_angle_unit. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечания

1 В контексте схемы api_abstract_schema сущность fill_area_style_hatching используется только для стилизации штриховки заполненной области annotation_fill_area. Следовательно, указанная сущность стиля штриховки хранится только во временной базе данных.

2 В контексте схемы api_abstract_schema вид линий штриховки hatch_line_appearance задается предварительно определенными элементами pre_defined_item.

3 Создание сущности fill_area_style_hatching для 2D-вида допускается, если уровень геометрической мощности интерфейса geometrical_power_level равен 1.


DIST1 - расстояние между линиями штриховки; reference hatch line - ссылочная линия штриховки; start_of_next_hatch_line - начало следующей линии штриховки; pattern_start - начало шаблона; ANGLE - угол наклона штриховки; REFPNT - ссылочная точка; DIST2 - расстояние от ссылочной точки до начала шаблона; point_of_reference_hatch_line - точка ссылочной линии штриховки

Рисунок А.36 - Функция Fsh_Gen

Внутренние ссылки: 6.1.9, 6.1.15, 6.2.3.6, 6.2.5, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

4

Значение меры плоского угла находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

201

Переполнение временной базы данных

204

Функция несовместима с текущим уровнем мощности

А.5.4.3 Штриховка заполненной области комментариев annotatiоn_fiIl_areа

Имя функции:

Уровень интерфейса:

1

Hatch_Afa

Уровень геометрической мощности:

1

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

HATCH

N

Имя отображаемой сущности fill_area_style_hatching

fsh

Ввод

AFA

N

Имя заполненной области annotation_fill_area

afa

Ввод

TARPNT

N

Имя декартовой точки cartesian_point, задающей исходное положение для штриховки

pnt

Привязка языка FORTRAN:

CALL HATCH_AFA (HATCH, AFA, REFPNT)

Результат использования функции

Функция назначает стиль штриховки fill_area_style_hatching (HATCH) заполненной области annotation_fill_area (AFA). Целевая точка задается сущностью cartesian_point (TARPNT). Целевая точка описывает начальную точку стиля заполнения области. Указанная точка с именем TARPNT дублируется как точка р1, она имеет нулевой стиль null_style. Затем создается экземпляр сущности annotation_fill_area_occurrence. При этом целевая точка задания стиля fill_style_target равна р1, значение атрибута стиля заполнения SELF.styles равно HATCH, элемент представления SELF.item равен AFA.

Назначение выполняется с помощью преобразования, выполняемого для начальной точки ссылочной линии штриховки HATCH (как начала координат) и целевой точки стиля заполнения fill_style_target (с именем р1). При этом производится неявное отображение оси Х ссылочной координатной системы OVC, которой принадлежит сущность HATCH, на ось X ссылочной координатной системы OVC, которой принадлежит целевая точка REFPNT. При возникновении ошибки никаких назначений не производится.

Примечание - В контексте схемы api_abstract_schema назначение указанного стиля допустимо только для 2D-видов (геометрическая мощность интерфейса geometrical_power_level равна 1).


AFANAM - область штриховки; REFPNT - ссылочная точка; FSHNAM - стиль штриховки

Рисунок А.37 - Функция Hatch_Afa

Внутренние ссылки: 6.1.9, 6.1.15, 6.2.3.13, 6.2.3.6, 6.2.5, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

201

Переполнение временной базы данных

204

Функция несовместима с текущим уровнем мощности

403

Сбой при назначении стиля штриховки

А.5.5 Сущности поверхности

Построение плоской поверхности api_planar_surface

Aps_Gen

А.5.5.1 Построение плоской поверхности api_planar_surface

Имя функции:

Уровень интерфейса:

2

Aps_Gen

Уровень геометрической мощности:

2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

CTRNAM

N

Имя наружной границы api_contour

ctr

Ввод

N

I

Длина перечня CTRLST, определяющего количество контуров api_contour внутренних границ

Ввод

CTRLST

n N

Перечень имен внутренних контуров api_contour

ctr

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности api_planar_surface

aps

Привязка языка FORTRAN:

NAME = APS_GEN (CTRNAM, N, CTRLST, KFIX)

Результат использования функции

Сущность api_planar_surface определяется контуром api_contour (с именем CTRNAM), соответствующим внешней границе поверхности, и перечнем контуров api_contour (с именем CTRLST), соответствующим внутренним (возможным) границам поверхности. Если внутренних границ нет, то параметр N (определяющий длину перечня CTRLST) равен 0. Все контуры должны лежать в одной плоскости и не пересекаться. Контуры, соответствующие внутренним границам, должны принадлежать ограниченной поверхности, определенной контуром api_contour (с именем CTRNAM), соответствующим внешней границе, ни один из них не должен принадлежать ограниченной поверхности, определенной другим контуром api_contour. Вышесказанное означает, что плоская поверхность api_planar_surface образована дугами. Если указанные условия выполняются, то плоская поверхность api_planar_surface вычисляется интерфейсом. Все сущности api_contour дублируются и имеют нулевой стиль null_style. Затем:

1) плоскость указанной поверхности вычисляется по ее положению. Положение плоскости position.location определяется первой точкой первого сегмента комбинированной кривой composite_curve_segmentof контура api_contour с именем CTRNAM. Положение плоскости определяется также осью X (прямой position.р[1]), касательной к сегменту данной комбинированной кривой composite_curve_segment, определенному атрибутом same_sense. Ocь Z положения плоскости (прямая position.р[3]) ортогональна плоскости, содержащей данный контур api_contour CTRNAM. Направление обхода контура api_contour положительно, если относительно оси Z обход производится против часовой стрелки;

2) для каждого контура api_contour, определяющего плоскую поверхность api_planar_surface, создается экземпляр кривой на поверхности surface_curve, ссылающийся на настоящий контур как на пространственную кривую curve_3d. Атрибут associated_geometry данной кривой на поверхности содержит только один элемент, который является плоскостью поверхности api_planar_surface, вычисленной на этапе 1. Значение атрибута главного представления master_representation настоящей кривой на поверхности равно curve_3d;

3) для каждой вычисленной кривой на поверхности создается экземпляр замкнутого сегмента комбинированной кривой composite_curve_segment, который:

- относится к соответствующей кривой на поверхности как к первоначальной (исходной) кривой parent_curve;

- содержит значение атрибута перехода для последнего сегмента комбинированной кривой composite_curve_segment контура api_contour, который является сущностью curve_3d соответствующей кривой на поверхности;

- содержит атрибут same_sense, значение которого равно "true" для сегмента комбинированной кривой composite_curve_segment, соответствующей внешней границе. Это значение гарантирует, что все прочие замкнутые сегменты комбинированной кривой ориентированы по часовой стрелке относительно оси Z для плоскости поверхности api_planar_surface (прямая position.р[3], описанная на этапе 1);

4) создается экземпляр внешней границы outer_boundary_curve, сегменты которой содержат только один элемент: сегмент комбинированной кривой composite_curve_segment, первоначальная (исходная) кривая которого parent_curve относится как пространственная кривая curve_3d к контуру api_contour соответствующей внешней границы плоской поверхности api_planar_surface;

5) для каждого сегмента комбинированной кривой composite_curve_segment создается экземпляр граничной кривой boundary_curve, сегменты которой содержат только данный сегмент composite_curve_segment;

6) создается экземпляр плоской поверхности api_planar_surface. Ее базовой поверхностью basis_surface является плоскость для указанной сущности api_planar_surface. Границами являются (возможные) граничные кривые boundary_curve. Кривая наружной границы outer_boundary_curve вычисляется на этапах 4 и 5. Значение ее атрибута implicit_outer равно "false". Полученная плоская поверхность api_planar_surface имеет текущую запись surface_style в таблице статуса интерфейса. Функция возвращает имя полученной плоской поверхности. Все сущности имеют нулевой стиль null_style.

Примечания

1 Создание плоской поверхности api_planar_surface для 3D-видов допустимо, если уровень геометрической мощности интерфейса geometrical_power_level больше 2.

2 Если внутренних границ нет (длина перечня CTRLST равна 0), то параметр CTRLST игнорируется.

3 Если существует два и более контура api_contour в спецификации плоской поверхности api_planar_surface, то расстояние между двумя контурами расположено вне диапазона [ZERO_value, EPS].

Внутренние ссылки: 6.1.15, 6.1.16, 6.1.17.1, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

5

Целочисленное значение находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

104

Расстояние между двумя контурами меньше EPS

119

Заданные сущности не лежат в одной плоскости

123

Выявлено пересечение заданных контуров

125

Выявлено перекрытие заданных контуров

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

207

Превышение максимально допустимого количества внутренних границ

1001

Перечислимое значение находится вне установленного диапазона

А.5.6 Сущности геометрических тел

А.5.6.1 Сущности конструктивной блочной геометрии (CSG-сущности)

Построение сферы

Sph_Gen

Построение конуса

Con_Gen

Построение цилиндра

Cyl_Gen

Построение тора

Tor_Gen

Построение блока

Blk_Gen

Построение клина

Wdg_Gen

А.5.6.1.1 Построение сферы

Имя функции:

Уровень интерфейса:

3

Sph_Gen

Уровень геометрической мощности:

3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

RAD

D

Радиус сферы

(EPSMAX)

Ввод

CNTPNT

N

Имя декартовой точки carte- sian_point

pnt

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности sphere

sph

Привязка языка FORTRAN:

NAME = SPH_GEN (RAD, CNTPNT, KFIX)

Результат использования функции

Сущность конструктивной блочной геометрии sphere задает сферу. Она определяется центром (декартовой точкой cartesian_point с именем CNTPNT) и радиусом RAD. Центр сферы CNTPNT дублируется как точка р1, имеющая нулевой стиль null_style.

Затем создается экземпляр сферы с радиусом RAD и центром в точке р1. Настоящая сфера имеет один стиль представления presentation_style_assignment, содержащий текущие записи таблицы статуса интерфейса для стиля поверхности surface_style и стиля кривой curve_style. Функция возвращает имя полученной сущности sphere.

Радиус RAD измеряется в единицах длины OVC_length_unit, его значение находится в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Нет.


Sphere - сфера; RAD - радиус; CNTNAM - центр

Рисунок А.38 - Функция Sph_Gen

Внутренние ссылки: 6.1.9, 6.1.18.4.1, 6.2.4, 6.2.3.2, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.6.1.2 Построение конуса

Имя функции:

Уровень интерфейса:

3

Con_Gen

Уровень геометрической мощности:

3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ANGLE

D

Угол полураствора конуса (между центральной осью и образующей конической поверхности)

(0°90°)

Ввод

HEIGHT

D

Высота конуса

(EPSMAX)

Ввод

RAD

D

Радиус конуса в заданной точке на оси конуса

(0.0 или (EPSMAX))

Ввод

A1PNAM

N

Имя локальной координатной системы axis1_placement

a1p

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности right_circulаr_соnе

con

Привязка языка FORTRAN:

NAME = CON_GEN (ANGLE, HEIGHT, RAD, A1PNAM, KFIX)

Результат использования функции

Сущность конструктивной блочной геометрии right_circular_cone задает прямой круговой конус. Конус может быть усеченным. Конус задается локальной координатной системой axis1_placement (с именем A1PNAM), углом полураствора конуса ANGLE и высотой конуса HEIGHT. Локальная координатная система axis1_placement определяет направление центральной оси симметрии конуса и точку на координатной оси, лежащую на одном из плоских круговых оснований (усеченного) конуса. Если радиус основания равен 0, то точка попадает в вершину конусa. Если радиус основания задан и не равен 0, то указанный радиус задает размеры и расположение малого основания усеченного конусa. Если радиус RAD больше допуска EPS, то высота конуса HEIGHT задает расстояние между плоскими круговыми основаниями (усеченного) конуса. Если радиус равен 0, то высота конуса есть расстояние от основания конуса до его вершины. Заданная локальная координатная система axis1_placement дублируется как сущность а1р1. Данная сущность имеет нулевой стиль null_style.

Затем создается экземпляр прямого кругового конуса right_circular_cone с локальной координатной системой а1р1, высотой, равной HEIGHT, радиусом, равным RAD, и углом полураствора конуса semi_angle, равным ANGLE. Созданному прямому круговому конусу right_circular_cone назначен единственный стиль презентации presentation_style_assignment, содержащий записи в таблице статуса интерфейса для стиля поверхности surface_style и стиля кривой curve_style. Функция возвращает имя полученного прямого кругового конуса right_circular_cone.

Высота HEIGHT и радиус RAD измеряются в единицах длины OVC_length_unit. Радиус RAD либо равен 0, либо находится в диапазоне [EPS, МАХ]. Угол полураствора конуса вычисляется в единицах угла OVC_angle_unit. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Нет.


RAD>0 (truncated) - радиус больше 0 (усеченный конус); RAD = 0 - радиус равен 0; A1PNAM - локальная координатная система; ANGLE (semi-angle) - угол полураствора конуса; RAD - радиус; apex of the cone - вершина конуса; central axis of the cone - центральная ось конуса; right_circular_cone - прямой круговой конус; HEIGHT - высота; circular face of the cone - основание конуса

Рисунок A.39 - Функция Con_Gen

Внутренние ссылки: 6.1.9, 6.1.18.4.2, 6.2.4, 6.2.3.2, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

4

Значение меры плоского угла находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.6.1.3 Построение цилиндра

Имя функции:

Уровень интерфейса:

3

Cyl_Gen

Уровень геометрической мощности:

3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

RAD

D

Радиус цилиндра

(EPSMAX)

Ввод

HEIGHT

D

Высота цилиндра

(EPSMAX)

Ввод

A1PNAM

N

Имя локальной координатной системы axis1_placement

a1p

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности right_circular_cylinder

cyl

Привязка языка FORTRAN:

NAME = CYL_GEN (RAD, HEIGHT, A1PNAM, KFIX)

Результат использования функции

Сущность конструктивной блочной геометрии right_circular_cylinder представляет собой прямой круговой цилиндр. Он строится по радиусу RAD, высоте HEIGHT и локальной координатной системе axis1_placement с именем A1PNAM. Сущность axis1_placement определяет ось цилиндра и центр одного из оснований цилиндрa. Высота цилиндра - это расстояние от центра первого основания до центра второго основания, измеренное вдоль оси в положительном направлении. Сущность axis1_placement дублируется сущностью а1р1, имеющей нулевой стиль null_style.

Затем создается экземпляр прямого кругового цилиндра right_circular_cylinder с локальной координатной системой а1р1, высотой, равной HEIGHT, и радиусом, равным RAD. Настоящему цилиндру right_circular_cylinder назначен единственный стиль представления presentation_style_assignment, который содержит текущие записи в таблице статуса интерфейса для стиля поверхности surface_style и стиля кривой curve_style. Функция возвращает имя построенной сущности right_circular_cylinder.

Высота цилиндра HEIGHT и радиус RAD измеряются в единицах длины OVC_length_unit. Значения параметров RAD и HEIGHT располагаются в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Нет.


Right_circular_cylinder - прямой круговой цилиндр; axis of the cylinder - ось цилиндра; circular face - основание цилиндра; A1PNAM - локальная координатная система; RAD - радиус; HEIGHT - высота

Рисунок А.40 - Функция Cyl_Gen

Внутренние ссылки: 6.1.9, 6.1.18.4.3, 6.2.4, 6.2.3.2, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.6.1.4 Построение тора

Имя функции:

Уровень интерфейса:

3

Tor_Gen

Уровень геометрической мощности:

3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

MAJOR

D

Радиус направляющей окружности тора

(MINORMAX)

Ввод

MINOR

D

Радиус образующей окружности тора

(EPSMAX)

Ввод

A1PNAM

N

Имя локальной координатной системы axis1_placement

a1p

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности torus

tor

Привязка языка FORTRAN:

NAME = TOR_GEN (MAJOR, MINOR, A1PNAM, KFIX)

Результат использования функции

Функция создает сущность конструктивной блочной геометрии torus, представляющую собой тор. Он получается путем очерчивания образующей окружности радиусом MINOR вдоль направляющей окружности радиусом MAJOR. Центр и плоскость направляющей окружности определяются заданием локальной координатной системы axis1_placement с именем A1PNAM. Данная локальная координатная система дублируется как сущность а1р1, имеющая нулевой стиль null_style.

Затем создается экземпляр сущности torus с локальной координатной системой а1р1, радиусом направляющей окружности major_radius, равным MAJOR, и радиусом образующей окружности minor_radius, равным MINOR. Полученной сущности назначается единственный стиль представления presentation_style_assignment, содержащий текущие записи в таблице статуса интерфейса для стиля поверхности surface_style и стиля кривой curve_style. Функция возвращает имя полученной сущности torus.

Радиусы окружностей измеряются в единицах длины OVC_length_unit в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Нет.


Torus - тор; MINOR - радиус образующей окружности; generatrix - образующая линия; A1PNAM - локальная координатная система; MAJOR - радиус направляющей окружности; directrix- направляющая линия

Рисунок А.41 - Функция Tor_Gen

Внутренние ссылки: 6.1.9, 6.1.18.4.4, 6.2.4, 6.2.3.2, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.6.1.5 Построение блока

Имя функции:

Уровень интерфейса:

3

Blk_Gen

Уровень геометрической мощности:

3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

LENX

D

Длина блока вдоль оси X

(EPSMAX)

Ввод

LENY

D

Длина блока вдоль оси Y

(EPSMAX)

Ввод

LENZ

D

Длина блока вдоль оси Z

(EPSMAX)

Ввод

A2PNAM

N

Имя локальной координатной системы axis2_placement_3d

a2p

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности block

blk

Привязка языка FORTRAN:

NAME = BLK_GEN (LENX, LENY, LENZ, A2PNAM, KFIX)

Результат использования функции

Функция создает сущность конструктивной блочной геометрии block, представляющую собой прямоугольный параллелепипед (кирпич). Он определяется начальной точкой и локальной координатной системой. Блок описывается положительными размерами LENX, LENY и LENZ, отложенными вдоль осей локальной координатной системы axis2_placement_3d с именем A2PNAM. Блок имеет одну вершину в начале локальной координатной системы. Заданная сущность axis2_placement_3d дублируется как сущность а2р1, имеющая нулевой стиль null_style.

Затем создается экземпляр сущности block с локальной координатной системой а2р1 и длинами блока х, y и z, равными LENX, LENY и LENZ соответственно. Для блока назначен стиль представления presentation_style_assignment, содержащий текущие записи в таблице статуса интерфейса для стиля поверхности surface_style и стиля кривой curve_style. Функция возвращает имя полученной сущности block.

Значения длин блока измеряются в единицах длины OVC_length_unit. Они расположены в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Нет.


Block - блок; A2PNAM - имя локальной координатной системы; LENX - длина блока по оси X; LENY - длина блока по оси Y; LENZ - длина блока по оси Z

Рисунок А.42 - Функция Blk_Gen

Внутренние ссылки: 6.1.9, 6.1.18.4.5, 6.2.4, 6.2.3.2, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.6.1.6 Построение клина

Имя функции:

Уровень интерфейса:

3

Wdg_Gen

Уровень геометрической мощности:

3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

LENX

D

Размер клина по оси X

(EPSMAX)

Ввод

LENY

D

Размер клина по оси Y

(EPSMAX)

Ввод

LENZ

D

Размер клина по оси Z

(EPSMAX)

Ввод

LTX

D

Вспомогательный размер клина

(0.0 или (EPSMAX))

Ввод

A2PNAM

N

Имя локальной координатной системы axis2_placement_3d

a2p

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности right_angular_wedge

wdg

Привязка языка FORTRAN:

NAME = WDG_GEN (LENX, LENY, LENZ, LTX, A2PNAM, KFIX)

Результат использования функции

Функция создает сущность конструктивной блочной геометрии right_angular_wedge, представляющую собой прямой клин. Это тело получено сечением блока плоскостью, перпендикулярной одной из его граней. Грань клина получается треугольной (трапецеидальной), если размеры клина LENX и LENY вдоль осей X и Y являются положительными, если имеется вспомогательный (ненулевой) размер LTX, отложенный параллельно оси (Ох) на расстоянии LENY от начала координат, и если имеется линия, соединяющая концы сегментов LENX и LTX. Положительный размер LENZ определяет расстояние экструдирования полученного (полученной) в основании треугольника (трапеции) вдоль оси (Oz).

Локальная координатная система axis2_placement_3d с именем A2PNAM дублируется как сущность а2р1, имеющая нулевой стиль null_style.

Затем создается экземпляр прямого клина right_angular_wedge с локальной координатной системой а2р1 и размерами LENX, LENY, LENZ и LTX. Для данной сущности right_angular_wedge назначен стиль представления presentation_style_assignment, содержащий текущие записи в таблице статуса интерфейса для стиля поверхности surface_style и стиля кривой curve_style. Функция возвращает имя полученной сущности right_angular_wedge.

Значения размеров LENX, LENY и LENZ определяются в единицах длины OVC_length_unit и находятся в диапазоне [EPS, МАХ]. Вспомогательный размер LTX может быть равен 0. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Если вспомогательный размер LTX равен 0.0, то клин имеет пять граней и треугольник в основании. В противном случае он имеет шесть граней и трапецию в основании.


LTX >0 - вспомогательный размер больше 0; right_angular_wedge - прямой клин; LTX - вспомогательный размер; LENZ - размер клина по оси Z; LENY - размер клина по оси Y; A2PNAM - локальная координатная система; LENX - размер клина по оси X

Рисунок А.43 - Функция Wdg_Gen

Внутренние ссылки: 6.1.9, 6.1.18.4.6, 6.2.4, 6.2.3.2, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.6.2 Регуляризованные булевы операции конструктивной блочной геометрии

Объединение тел

Union_Sld

Пересечение тел

lntersection_Sld

Вычитание тел

Difference_Sid

А.5.6.2.1 Объединение тел

Имя функции:

Уровень интерфейса:

3

Union_Sld

Уровень геометрической мощности:

3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

BOPNM1

N

Имя первого операнда boolean_operand

solids

Ввод

BOPNM2

N

Имя второго операнда boolean_operand

solids

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности boolean_result

brs

Привязка языка FORTRAN:

NAME = UNION_SLD (BOPNM1, BOPNM2, KFIX)

Результат использования функции

Функция выполняет регуляризованную булеву операцию объединения тел. Булевы операнды boolean_operand с именами BOPNM1 и BOPNM2 дублируются как сущности b1 и b2. Указанные сущности имеют нулевой стиль null_style. Создается экземпляр о булева оператора boolean_operator, выполняющего объединение тел. Затем создается сущность результата выполненной булевой операции boolean_result, созданная из первого операнда first_operand b1, второго операнда second_operand b2 и оператора объединения о. Для сущности boolean_result назначается стиль представления presentation_style_assignment, содержащий текущую запись в таблице статуса интерфейса для стиля поверхности surface_style и для стиля кривой curve_style. Функция возвращает имя полученной сущности boolean_result.

Сущность boolean_operand не должна содержать несоединенных частей. Объединение тел не должно быть пустым. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Нет.


Boolean_operator = union - булев оператор объединения тел; first_operand = block - первый операнд - блок; second_operand = nght_circular_cylinder - второй операнд - прямой круговой цилиндр; BOPNM2 - обозначение второго операнда; boolean_result - результат выполнения булевой операции объединения геометрических тел; BOPNM1 - обозначение первого операнда

Рисунок А.44 - Функция Union_Sld

Внутренние ссылки: 6.1.18, 6.1.18.3, 6.2.3.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

101

Попытка создания вырожденной сущности

130

Сбой при выполнении булевой операции

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.6.2.2 Пересечение тел

Имя функции:

Уровень интерфейса:

3

Intersection_Sld

Уровень геометрической мощности:

3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

BOPNM1

N

Имя первого операнда boolean_operand

solids

Ввод

BOPNM2

N

Имя второго операнда boolean_operand

solids

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности boolean_result

brs

Привязка языка FORTRAN:

NAME = INTERSECTION_SLD (BOPNM1, BOPNM2, KFIX)

Результат использования функции

Функция выполняет булеву операцию регуляризованного пересечения двух тел. Булевы операнды boolean_operand с именами BOPNM1 и BOPNM2 дублируются как сущности b1 и b2. Данные сущности имеют нулевой стиль null_style. Создается экземпляр о булева оператора boolean_operator пересечения тел. Далее создается сущность результата выполнения булевой операции boolean_result, созданная с помощью первого операнда first_operand b1, второго операнда second_operand b2 и оператора их пересечения о. Сущности boolean_result назначен стиль представления presentation_style_assignment, содержащий текущую запись в таблице статуса интерфейса для стиля поверхности surface_style для стиля кривой curve_style. Функция возвращает имя полученного результата выполнения булевой операции boolean_result.

Результат булевой операции может быть получен для нескольких отдельных частей. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Нет.


Boolean_operator=intersection - булев оператор пересечения тел; first_operand = block - первый операнд - блок; second_operand = right_circular_cylinder - второй операнд - прямой круговой цилиндр; BOPNM2 - обозначение второго операнда; BOPNM1 - обозначение первого операнда; boolean_result- результат выполнения булевой операции объединения геометрических тел

Рисунок А.45 - Функция lntersection_Sld

Внутренние ссылки: 6.1.18, 6.1.18.3, 6.2.3.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

101

Попытка создания вырожденной сущности

130

Сбой при выполнении булевой операции

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.6.2.3 Вычитание тел

Имя функции:

Уровень интерфейса:

3

Difference_Sld

Уровень геометрической мощности:

3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

BOPNM1

N

Имя первого операнда boolean_operand

sollids

Ввод

BOPNM2

N

Имя второго операнда boolean_operand

solids

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности boolean_result

brs

Привязка языка FORTRAN:

NAME = DIFFERENCE_SLD (BOPNM1, BOPNM2, KFIX)

Результат использования функции

Функция выполняет булеву операцию boolean_operand регуляризованного вычитания двух геометрических тел. Булевы операнды boolean_operand с именами BOPNAM1 и BOPNM2 дублируются как сущности b1 и b2. Данные сущности имеют нулевой стиль null_style.

Создается экземпляр о булева оператора boolean_operator вычитания геометрических тел. Затем создается сущность результата выполнения булевой операции boolean_result с помощью первого операнда first_operand b1, второго операнда second_operand b2 и булева оператора о. Для сущности boolean_result назначен стиль представления presentation_style_assignment, содержащий текущую запись в таблице статуса интерфейса для стиля поверхности surface_style и стиля кривой curve_style. Функция возвращает имя результата выполнения булевой операции boolean_result.

Результат выполнения булевой операции может быть получен из нескольких отдельных частей. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Нет.


Boolean_operator = difference - булев оператор вычитания тел; first_operand = block - первый операнд - блок; second_operand = right_circular_cylinder - второй операнд - прямой круговой цилиндр; BOPNM2 - обозначение второго операнда; boolean_result - результат выполнения булевой операции объединения геометрических тел; BOPNM1 - обозначение первого операнда

Рисунок А.46 - Функция Difference_Sld

Внутренние ссылки: 6.1.18, 6.1.18.3, 6.2.3.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

101

Попытка создания вырожденной сущности

130

Сбой при выполнении булевой операции

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.6.3 Сущности тел, полученных путем очерчивания (сущности swept_area)

Экструдирование

Sld_Extrusion

Вращение

Sld_Revolution

А.5.6.3.1 Экструдирование

Имя функции:

Уровень интерфейса:

3

Sld_Extrusion

Уровень геометрической мощности:

3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

SRFNAM

N

Имя переносимой плоской поверхности api_planar_surface

aps

Ввод

DIRNAM

N

Направление параллельного переноса

dir

Ввод

DEPTH

D

Расстояние параллельного переноса

(EPSMAX)

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности extruded_area_solid

eas

Привязка языка FORTRAN:

NAME = SLD_EXTRUSION (SRFNAM, DIRNAM, DEPTH, KFIX)

Результат использования функции

Функция создает геометрическое тело extruded_area_solid путем параллельного переноса и очерчивания ограниченной плоской поверхности api_planar_surface с именем SRFNAM заданной формы вдоль прямой. Направление параллельного переноса задается вектором направления с именем DIRNAM. Расстояние параллельного переноса определяется параметром DEPTH.

Направление DIRNAM дублируется как вектор d, имеющий нулевой стиль null_style. Затем:

- плоская поверхность api_planar_surface SRFNAM дублируется как сущность s, имеющая нулевой стиль;

- создается экземпляр экструдированного геометрического тела extruded_area_solid с заданной формой s плоской поверхности переноса swept_area для заданного направления d параллельного переноса extruded_direction и расстояния DEPTH параллельного переносa. Для экструдированного геометрического тела назначен стиль представления presentation_style_assignment, содержащий текущую запись в таблице статуса интерфейса для стиля поверхности surface_style и стиля кривой curve_style. Функция возвращает имя геометрического тела extruded_area_solid, полученного экструдированием.

Значение расстояния параллельного переноса DEPTH лежит в диапазоне [EPS, МАХ]. Плоская поверхность переноса может иметь вырезы, которые в результате очерчивания (зкструдирования, параллельного переноса) превращаются в отверстия объемного телa. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Нет.


Extruded_area_solid - геометрическое тело, полученное экструдированием; SRFNAM (api_planar_surface) - плоская поверхность с вырезом, переносимая параллельно самой себе; DEPTH - расстояние параллельного переноса; DIRNAM (direction of the sweep) - направление параллельного переноса

Рисунок А.47 - Функция Sld_Extrusion

Внутренние ссылки: 6.1.9, 6.1.17, 6.1.18.6, 6.2.3.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.6.3.2 Вращение

Имя функции:

Уровень интерфейса:

3

Sld_Revolution

Уровень геометрической мощности:

3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

SRFNAM

N

Имя вращаемой плоской ограниченной поверхности api_ptanar_surface

aps

Ввод

ANG

D

Угол поворота

(0°360°)

Ввод

A1PNAM

N

Имя локальной координатной системы axis1_placement

a1p

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности revolved_area_solid

ras

Привязка языка FORTRAN:

NAME = SLD_REVOLUTION (SRFNAM, ANG, A1PNAM, KFIX)

Результат использования функции

Создание геометрического тела revolved_area_solid путем вращения плоской ограниченной поверхности api_planar_surface с именем SRFNAM вокруг заданной оси. Указанная ограниченная плоская поверхность поворачивается по часовой стрелке относительно оси A1PNAM на угол ANG.

Локальная координатная система axis1_placement дублируется сущностью a. Она имеет нулевой стиль null_style. Затем:

- плоская поверхность api_planar_surface с именем SRFNAM дублируется сущностью s, имеющей нулевой стиль;

- создается экземпляр геометрического тела revolved_area_solid путем поворота плоской поверхности swept_area сущности s относительно оси а на угол ANG. Для полученного тела назначен стиль представления presentation_style_assignment, содержащий текущую запись в таблице статуса интерфейса для стиля поверхности surface_style и стиля кривой curve_style. Функция возвращает имя геометрического тела revolved_area_solid, полученного очерчиванием.

Угол поворота измеряется в единицах угла OVC_angle_unit. Он вычисляется по часовой стрелке, если смотреть вдоль оси в положительном направлении. Отсчет ведется от исходного положения вращаемой плоской области api_planar_surface. Вращаемая плоская область может иметь вырезы. В результате очерчивания вырезы превращаются в объемные отверстия. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Нет.


SRFNAM (api_planar_surface) - вращаемая ограниченная плоская поверхность SRFNAM (api_planar_surface); revolved_area_solid - тело, полученное вращением ограниченной плоской поверхности вокруг оси; ANG - угол поворота плоской поверхности; A1PNAM - локальная координатная система; axis of revolution - ось вращения

Рисунок А.48 - Функция Sld_Revolution

Внутренние ссылки: 6.1.9, 6.1.17, 6.1.18.7, 6.2.3.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

4

Значение меры плоского угла находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

124

Выявлено пересечение осей вращаемой плоской поверхности

126

Ось вращения не лежит во вращаемой плоской поверхности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.6.4 Построение "труб" с помощью сущностей конструктивной блочной геометрии

Построение "трубы"

Sld_Pipe

А.5.6.4.1 Построение "трубы"

Имя функции:

Уровень интерфейса:

3

Sld_Pipe

Уровень геометрической мощности:

3

Параметры:

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

PLNNAM

N

Имя сущности polyline

pin

Ввод

SRFNAM

N

Имя локальной координатной системы api_planar_surface

aps

Ввод

RAD

D

Радиус округления

(EPSMAX)

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя созданной сущности boolean_result

brs

Привязка языка FORTRAN:

NAME = SLD_PIPE (PLNNAM, SRFNAM, RAD, KFIX)

Результат использования функции

"Труба" формируется с помощью булевой операции boolean_result путем вращения заданной ограниченной поверхности api_planar_surface с именем SRFNAM вокруг направляющей, которая представляет собой округление в виде полилинии радиусом RAD. Округление производится автоматически. При этом проверяется возможность появления самопересечений.

Плоская поверхность api_planar_surface с именем SRFNAM дублируется как сущность s, имеющая нулевой стиль null_style. Полилиния с n+1 точками делится на несколько прямолинейных сегментов api_line, обозначенных и соединенных дугами окружностей api_circular_arc, обозначенных а ..., а радиусом RAD. Все указанные экземпляры имеют нулевой стиль null_style. Затем:

- выполняется экструдирование тела е (для сущности extruded_area_solid) с помощью плоской поверхности s, заданного направления параллельного переноса extruded_direction (для сущности api_line.basis_curve.dir) и расстояния параллельного переноса, полученного в результате вычитания параметра первой точки вычленения api_line.trim[1] и параметра второй точки вычленения api_iine.trim[2] из сегмента (для сущности api_iine);

- создается экземпляр а1р1 локальной координатной системы axis1_placement, определяющей положение кривой а (для сущности api_circular_arc.basis_curve.position.р[3]) и угол поворота аng1, полученный путем вычитания параметра первой точки вычленения api_circular_arc.trim[1] и параметра второй точки вычленения api_circular_arc.trim[2] из сегмента а сущности api_circular_arc. Сущность локальной координатной системы axis1_placement имеет нулевой стиль. Создается экземпляр тела, очерченного вращением revolved_area_solid плоской поверхности s относительно оси а1р1 под углом аng1;

- создается экземпляр в результате выполнения булевой операции объединения boolean_operator первого операнда е сущности first_operand и второго операнда сущности second_operand;

- для следующих сегментов прямых , j = 2,...n (сущностей api_line), для дуг окружности а (сущностей api_circular_arc), к =2,...n-1 и i = 2, ..., 2n - 2 выполняются нижеследующие операции:

1) геометрические тела e (сущности extruded_area_solid), построенные параллельным переносом плоских поверхностей s в направлении extruded_direction (сущность api_line.basis_curve.dir) на расстояние, равное разности значения атрибута точки вычленения 1 api_line.trim[1] и атрибута точки вычленения 2 api_line.trim[2] для сегмента сущности api_line;

2) создается экземпляр в результате выполнения булевой операции boolean_operator объединения первого операнда сущности first_operand и второго операнда е сущности second_operand;

3) создается экземпляр а1р сущности axis1_placement для базовой кривой а (сущности api_circular_arc.basis_curve.position.p[3]). Угол поворота аng получается путем вычитания параметра первой точки вычленения api_circular_arc.trim[1] и параметра второй точки вычленения api_circular_arc.trim[2] из дуги окружности а (сущность api_circular_arc). Локальная координатная система axis1_placement имеет нулевой стиль. Создается экземпляр тела revolution_area_solid, очерчиваемого путем поворота плоской поверхности s вокруг оси а1рк на угол аng;

4) создается экземпляр b булевой операции boolean_operator объединения (с результатом boolean_result) первого операнда b сущности first_operand и второго операнда сущности second_operand. Для булева результата boolean_result назначен стиль представления presentation_style_assignment, содержащий текущую запись в таблице статуса интерфейса для стиля поверхности surface_style и стиля кривой curve_style. Функция возвращает имя полученного результата булевой операции boolean_result (приращение индексов i и j равно 1, приращение индекса к равно 2).

Радиус скругления измеряется в единицах длины OVC_length_unit. Он расположен в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Если плоская поверхность api_planar_surface с именем SRFNAM (очерчиваемая вокруг направляющей) имеет форму окружности (кольца), то результатом выполнения функции интерфейса boolean_result является тело, называемое "труба".

Api_circular_arc а1 - дуга окружности а; api_line l1 - расстояние параллельного переноса api_line l2 - расстояние параллельного переноса ; PNT2 - точка 2; PNT1 - точка 1; RAD - радиус; PNT3 - точка 3; rounding radius - радиус скругления; SRFNAM - вращаемая ограниченная плоская поверхность SRFNAM; PLNNAM - имя кривой линии PLNNAM; sweeping planar surface - очерчивающая плоская поверхность; guide line - направляющая очерчивания; boolean_result - булев результат

Рисунок A.49 - Функция Sld_Pipe

Внутренние ссылки: 6.1.14, 6.1.17, 6.1.18, 6.2.3.2, 6.2.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

107

Попытка создания вырожденной локальной координатной системы axis1_placement в процессе создания сущности

109

Попытка создания вырожденного тела в процессе создания сущности

114

Попытка создания тела с перекрытием

130

Сбой при выполнении булевой операции

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.5.6.5 Построение тела в полупространстве

Построение тела в полупространстве half_space_solid

Hss_Gen

А.5.6.5.1 Построение тела в полупространстве (сущность half_space_solid)

Имя функции:

Уровень интерфейса:

3

Hss_Gen

Уровень геометрической мощности:

3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

A2PNAM

N

Имя локальной координатной системы axis2_placement_3d

а2р

Ввод

AGREMF

Е

Значение сущности обхода контура agreement_ftag

[TRUE, FALSE]

Вывод

NAME

N

Имя созданной сущности half_space_solid

hss

Привязка языка FORTRAN:

NAME = HSS_GEN (A2PNAM, AGREMF)

Результат использования функции

Сущность half_space_solid определяется заданным полупространством, которое является регулярным подмножеством области, лежащей с одной стороны неограниченной поверхности. Сторона поверхности, находящаяся в указанном полупространстве, определяется перпендикуляром к поверхности и значением флажка перпендикуляра. Если значение флажка равно "true", то перпендикуляр направлен от заданного полупространства. Если значение флажка равно "false", перпендикуляр направлен в заданное полупространство.

Локальная координатная система axis2_placement_3d дублируется как сущность а, имеющая нулевой стиль null_style. Затем:

- создается экземпляр р плоскости с локальной координатной системой а. Плоскости назначен нулевой стиль;

- создается экземпляр тела в полупространстве half_space_solid с базовой поверхностью base_surface, равной р, и флажком перпендикуляра agreement_ftag, равным AGREMF. Данная сущность half_space_solid имеет нулевой стиль;

- функция возвращает имя полученной сущности. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечание - Геометрическая сущность тела в полупространстве half_space_solid не является подтипом твердотельной модели solid_model. Тело в полупространстве можно использовать только как операнд булева выражения boolean_expression. Следовательно, тело в полупространстве может храниться только в TDB.

Внутренние ссылки: 6.1.9, 6.1.16, 6.1.17.1, 6.1.18.8, 6.2.1.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

201

Переполнение временной базы данных

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

1001

Перечислимое значение находится вне установленного диапазона

А.6 Функции структурных сущностей

А.6.1 Структурные сущности в TDB

Создание группы

Create_Grp

Закрытие группы

Close_Grp

Повторное открытие группы

Reopen_Grp

Удаление сущности из группы

Remove_Ent_Grp

Сборка сущностей в новую группу

Gather_Ent_Grp

Добавление сущности в группу

Add_Ent_Grp

A.6.1.1 Создание группы

Имя функции:

Уровень интерфейса:

1

Create_Grp

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

NAME

N

Имя созданной группы

grp

Привязка языка FORTRAN:

NAME = CREATE_GRP ( )

Результат использования функции

Функция создает новую группу api_group со значением атрибута имени nате, равным пустой строке. Вновь созданная сущность api_group принадлежит текущей открытой группе. Она помещается в вершину стека группы и становится текущей открытой группой. Функция возвращает имя NAME вновь созданной группе api_group.

При возникновении ошибки группа не создается, имя группы равно 0.

Примечание - Нет.

Внутренние ссылки: 5.4.1, 6.1.19, 6.1.19.1.

Ошибки

201

Переполнение временной базы данных

204

Функция несовместима с текущим уровнем мощности

208

Превышено максимально допустимое количество групп

210

Переполнение стека группы

А.6.1.2 Закрытие группы

Имя функции:

Уровень интерфейса:

1

Close_Grp

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

-

-

-

-

-

Привязка языка FORTRAN:

CALL CLOSE_GRP ( )

Результат использования функции

Закрывается группа api_group, находящаяся на вершине стека группы. Настоящая группа удаляется из стека группы, при этом новой вершиной стека группы становится текущая открытая группа. При возникновении ошибки закрытие группы не происходит.

Примечание - Если текущая открытая группа является корневой группой, то возникает ошибка и никакая группа не закрывается.

Внутренние ссылки: 5.4.1, 6.1.19, 6.1.19.1.

Ошибки

204

Функция несовместима с текущим уровнем мощности

301

Попытка закрыть корневую группу

А.6.1.3 Повторное открытие группы

Имя функции:

Уровень интерфейса:

1

Reopen_Grp

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

GRPNAM

N

Имя группы api_group

grp

Привязка языка FORTRAN:

CALL REOPEN_GRP(GRPNAM)

Результат использования функции

Функция повторно открывает существующую группу api_group. Настоящая группа не должна быть текущей открытой группой одной из групп стека открытых групп. Группа api_group с именем GRPNAM помещается в вершину стека группы и становится текущей открытой группой. Настоящий процесс не изменяет групповую структуру. Все сущности, созданные в TDB после повторного открытия группы, принадлежат указанной группе до ее закрытия. При возникновении ошибки группа повторно не открывается.

Примечание - Нет.

Внутренние ссылки: 5.4.1, 6.1.19, 6.1.19.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

210

Переполнение стека группы

302

Попытка повторно открыть уже открытую группу

А.6.1.4 Удаление сущности из группы

Имя функции:

Уровень интерфейса:

1

Remove_Ent_Grp

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности, удаляемой из группы, api_group

Все графические сущности, grp

Привязка языка FORTRAN:

CALL REMOVE_ENT_GRP (ENTNAM)

Результат использования функции

Удаляется сущность (геометрическая или структурированная) из группы api_group, которой она принадлежит. Удаляемая сущность становится членом корневой группы. Сущность ENTNAM удаляется из множества items назначенной сущности api_group_assignment его группы api_group. Затем сущность размещается для хранения на множестве сущности api_group_assignment, принадлежащей корневой группе. При возникновении ошибки удаление сущности не происходит.

Примечание - Удаление сущности из корневой группы не допускается.

Внутренние ссылки: 5.4.1, 6.1.19, 6.1.19.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

204

Функция несовместима с текущим уровнем мощности

303

Сущность является членом корневой группы

А.6.1.5 Сборка сущностей в новую группу

Имя функции:

Уровень интерфейса:

1

Gather_Ent_Grp

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

N

I

Длина ENTLST

Ввод

ENTLST

nN

Перечень сущностей для формирования группы

Все графические сущности, grp

Вывод

NAME

N

Имя созданной сущности api_group

grp

Привязка языка FORTRAN:

NAME = GATHER_ENT_GRP (N, ENTLST)

Результат использования функции

Функция производит сборку перечня сущностей (геометрических или структурированных) в новую группу. Все указанные сущности удаляются из группы, которой они принадлежат, и помещаются в новую группу. Указанная новая группа должна принадлежать текущей открытой группе. Она закрывается, когда заканчивается процесс создания. Перечень сущностей, собираемых в новую группу, не должен содержать группы, включающие текущую открытую группу.

Создается экземпляр новой группы api_group с атрибутом имени nаmе, равным пустой строке. Указанный экземпляр принадлежит текущей открытой группе. Заданные сущности удаляются из группы, которой они принадлежат, и помещаются на хранение в множество items сущностей api_group_assignment. Функция возвращает имя GRPNAM вновь созданной группе api_group. При возникновении ошибки никакая группа не создается, возвращаемое имя равно 0.

Примечание - Нет.

Внутренние ссылки: 5.4.1, 6.1.19, 6.1.19.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

5

Целочисленное значение находится вне допустимого диапазона

201

Переполнение временной базы данных

204

Функция несовместима с текущим уровнем мощности

208

Превышение максимально допустимого количества групп

210

Переполнение стека группы

304

Сущность содержит текущую открытую группу

А.6.1.6 Добавление сущности в группу

Имя функции:

Уровень интерфейса:

1

Add_Ent_Grp

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

GRPNAM

N

Имя группы api_group

grp

Ввод

ENTNAM

N

Имя добавляемой сущности

Все графические сущности, grp

Привязка языка FORTRAN:

CALL ADD_ENT_GRP (GRPNAM, ENTNAM)

Результат использования функции

Функция добавляет сущность (геометрическую или структурированную) в группу GRPNAM. Сущность удаляется из множества items сущности api_group_assignment, принадлежащей ее группе api_group. Затем сущность ENTNAM помещается для хранения в множество items сущности api_group_assignment, принадлежащей группе api_group с именем GRPNAM.

Если сущность является группой, то данная группа не должна содержать группы с указанным именем. При возникновении ошибки никаких изменений не вносится.

Примечание - Нет.

Внутренние ссылки: 5.4.1, 6.1.19, 6.1.19.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

304

Сущность содержит текущую открытую группу

305

Попытка создания цикличной групповой структуры

А.6.2 Структурные сущности, отправляемые в CAD

Открытие множества

Open_Set

Закрытие множества

Close_Set

А.6.2.1 Открытие множества

Имя функции:

Уровень интерфейса:

1

Open_Set

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

SETNAM

S

Имя множества

Привязка языка FORTRAN:

CALL OPEN_SET (SETNAM)

Результат использования функции

Функция создает новую сущность api_set с атрибутом имени name, полученную из множества SETNAM в качестве уникального идентификатора и принадлежащую текущему открытому множеству. Сущность помещается на вершине стека множества и становится текущим открытым множеством. При возникновении ошибки множество не создается.

Примечание - Интерфейс должен гарантировать уникальность имени сущности api_set.

Внутренние ссылки: 5.4.2, 6.1.19, 6.1.19.3.

Ошибки

204

Функция несовместима с текущим уровнем мощности

209

Превышение максимально допустимого количества символов в строке

211

Переполнение стека множества

306

Имя множества не является уникальным

А.6.2.2 Закрытие множества

Имя функции:

Уровень интерфейса:

1

Close_Set

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

-

Привязка языка FORTRAN:

CALL CLOSE_SET ( )

Результат использования функции

Сущность api_set на вершине стека множества закрывается. Данное множество удаляется из стека, новой вершиной стека становится текущее открытое множество. При возникновении ошибки множество не закрывается.

Примечания

1 Если текущая открытая сущность api_set является корневым множеством, то возникает ошибка и множество не закрывается.

2 Закрытое множество api_set не может быть открыто повторно с помощью прикладного программирования.

Внутренние ссылки: 5.4.2, 6.1.19, 6.1.19.3.

Ошибки

204

Функция несовместима с текущим уровнем мощности

307

Попытка закрыть корневое множество

А.7 Функции геометрических манипуляций с сущностями

А.7.1 Дублирующие сущности

Дублирование сущности

Dup_Ent

А.7.1.1 Дублирование сущности

Имя функции:

Уровень интерфейса:

1

Dup_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности

Все графические сущности, grp

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя дублированной сущности

Тип сущности ENTNAM

Привязка языка FORTRAN:

NAME = DUP_ENT (ENTNAM, KFIX)

Результат использования функции

Функция создает новую сущность путем дублирования заданной сущности ENTNAM. Дублированная сущность содержит копии всех внутренних атрибутов исходной сущности ENTNAM и назначает тот же стиль воспроизведения. Функция возвращает имя дублированной сущности. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечания

1 Внутри TDB допускаются манипуляции только с сущностями, которые являются экземплярами типа fill_area_style_hatching или типа half_space_solid. Дублированная сущность остается внутри TDB. Значение параметра KFIX, равное CAD (размещение в CAD), игнорируется.

2 Дублем сущности группы group является новая группа. Если сущность group не является пустой группой, то содержание группы дублируется один к одному.

Внутренние ссылки: 6.1, 6.2.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

208

Превышение максимально допустимого количества групп

212

Сущность может использоваться только внутри временной базы данных

1001

Перечислимое значение находится вне установленного диапазона

А.7.2 Зеркальное отражение сущностей

Зеркальное отражение

Mirror_Ent

Дублирование и зеркальное отражение

Duplicate_Mirror_Ent

А.7.2.1 Зеркальное отражение

Имя функции:

Уровень интерфейса:

1

Mirror_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности

Все графические сущности, grp

Ввод

LINNAM

N

Имя сущности прямой api_line

lin

Привязка языка FORTRAN:

CALL MIRROR ENT (ENTNAM, LINNAM)

Результат использования функции

Результатом использования функции является зеркальное отражение сущности относительно оси. Прямая api_line с именем LINNAM задает ось зеркального отражения с помощью атрибута pnt, атрибута dir и сущности line в качестве базовой кривой basis_cirve.

Если зеркально отражаемая сущность ENTNAM является сущностью конической кривой conic (в контексте схемы api_abstract_schema это может быть дуга окружности api_circular_arc, дуга эллипса api_elliptical_arc, дуга гиперболы api_hyperbolic_arc или дуга параболы api_parabolic_arc), то выполняется следующая процедура.

В случае 2D-вида:

- для сущностей конических кривых прежде всего производится зеркальное отражение положения базовой кривой SELF\basis_curve.position. Затем создается коническая кривая с параметрами базовой кривой с помощью зеркально отраженной локальной координатной системы axis2_piacement_2d;

- создается экземпляр отрезка кривой trimmed_curve с направлением обхода sense_agreement, противоположным направлению обхода исходной дуги конической кривой. Параметры вычленения кривой вычисляются интерфейсом. Они гарантируют, что зеркально отраженная сущность состоит из зеркально отраженных точек исходной дуги конической кривой (см. примечание 1).

В случае 3D-вида:

- для сущностей конических кривых conic производится зеркальное отражение правосторонней локальной координатной системы axis2_placement_3d сущности SELF\basis_curve.positionis. Затем создается дуга конической кривой с параметрами базовой кривой basis_curve с помощью локальной координатной системы axis2_piacement_3d;

- создается экземпляр отрезка кривой trimmed_curve с направлением обхода sense_agreement, совпадающим с направлением sense_agreement исходной дуги конической кривой. Параметры вычленения дуги вычисляются интерфейсом. При этом зеркальное отражение сущности состоит из зеркально отраженных точек исходной дуги конической кривой (см. примечание 2).

Имя зеркально отраженной сущности ENTNAM, имена характеристик визуальных представлений (например, стиля воспроизведения, уровня вида view_level), структуры групп и множеств сущностей не изменяются. При возникновении ошибки никакие изменения не производятся.

Примечания

1 Если точки вычленения trim_1 и trim_2 являются декартовыми точками cariesian_point, то параметры вычленения зеркально отраженных конических дуг также являются декартовыми точками, вычисляемыми по указанным точкам trim_1 и trim_2 в установленном порядке.

2 Направление обхода базовой кривой изменяется. Значение атрибута sense_agreement и параметризация кривой не изменяются.

3 Если заданная зеркально отражаемая сущность ENTNAM является экземпляром группы api_group, то зеркально отражаются все сущности, ссылающиеся на данную группу.


ENTNAM after mirroring - зеркально отраженная сущность; original entity ENTNAM - прообраз исходной сущности; same entity ENTNAM - зеркально отраженная дуга окружности ENTNAM; mirror axis - ось зеркального отражения; ENTNAM - исходная сущность; api_circular_arc - примитив дуги окружности; trim_1' - первая точка вычленения; trim_1 - первая точка вычленения; ref_direction'- ссылочное направление; ref_direction - ссылочное направление; position'- зеркально отраженное начало координат; position - зеркально отраженное начало координат; trim_2'- вторая точка вычленения; trim_2 - вторая точка вычленения; sense_agreement (sense = TRUE) - положительное направление обхода кривой (значение атрибута sense равно "true"); basis_curve (= circle) - базовая кривая (окружность); axis - ось; LINNAM - прямая с именем LINNAM

Рисунок А.50 - Функция Mirror_Ent (3D-вид)


ENTNAM after mirroring - зеркально отраженная сущность; original entity ENTNAM - прообраз исходной сущности; basis_curve (= circle) - базовая кривая (окружность); mirror axis - ось зеркального отражения; ref_direction' - ссылочное направление; LINNAM - прямая с именем LINNAM; ref_direction - ссылочное направление; trim_2'- вторая точка вычленения; position' - зеркально отраженное начало координат; trim_2 - вторая точка вычленения; position - зеркально отраженное начало координат; ENTNAM - дуга окружности ENTNAM; trim_1' - первая точка вычленения; trim_1 - первая точка вычленения; api_circular_arc - сущность дуги окружности; sense_agreement (sense = FALSE) - отрицательное направление обхода кривой (значение атрибута sense равно "false"); sense_agreement (sense = TRUE) - положительное направление обхода кривой (значение атрибута sense равно "true"); same entity ENTNAM - зеркально отраженная дуга окружности ENTNAM

Рисунок А.51 - Функция Mirror_Ent (2D-вид)

Внутренние ссылки: 6.1, 6.2.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

А.7.2.2 Дублирование и зеркальное отражение

Имя функции:

Уровень интерфейса:

1

Dup_Mirror_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности

Все графические сущности, grp

Ввод

LINNAM

N

Имя сущности прямой api_line

Iin

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя дублированной и зеркально отраженной сущности

Тип сущности ENTNAM

Привязка языка FORTRAN:

NAME = DUP_MIRROR_ENT (ENTNAM, LINNAM, KFIX)

Результат использования функции

Настоящая функция осуществляется в два этапа: сначала исходная сущность дублируется функцией Dup_Ent, полученная сущность зеркально отображается функцией Mirror_Ent. Рассматриваемая функция Dup_Mirror_Ent возвращает имя полученной сущности. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечания

1 Манипуляции с сущностями, являющимися экземплярами типа fill_area_style_hatching и half_space_solid, допустимы только внутри TDB. При этом дубликат сущности остается внутри TDB. Значение параметра KFIX, равное CAD (при этом результат отправляется в CAD), игнорируется.

2 Если заданная сущность ENTNAM является экземпляром типа группы api_group, то все сущности, содержащие ссылки на данную группу, также отражаются зеркально.


ENTNAM (block) - исходная сущность (блок); mirror axis - ось зеркального отражения; LINNAM - прямая; new entity (NAME) after mirroring - результирующая сущность с именем NAME после зеркального отражения

Рисунок А.52 - Функция Dup_Mirror_Ent

Внутренние ссылки: 6.1, 6.2.1, А.7.1.1, А.7.2.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

208

Превышение максимально допустимого количества групп

212

Сущность может использоваться только внутри временной базы данных

1001

Перечислимое значение находится вне установленного диапазона

А.7.3 Сущности сдвига

Сущность сдвига в заданном направлении

Shift_Dir_Ent

Сущность сдвига по вектору перемещения

Shift_Displacement_Ent

Сущность дублирования и сдвига в заданном направлении

Dup_Shift_Dir_Ent

Сущность дублирования и сдвига по вектору перемещения

Dup_Shift_Displacement_Ent

А.7.3.1 Сущность сдвига в заданном направлении

Имя функции:

Уровень интерфейса:

1

Shift_Dir_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности

Все графические сущности, grp

Ввод

DIRNAM

N

Имя направления direction

dir

Ввод

SHFLEN

D

Величина сдвига

(0.0 или (EPSMAX))

Привязка языка FORTRAN:

CALL SHIFT_DIR_ENT (ENTNAM, DIRNAM, SHFLEN)

Результат использования функции

Функция выполняет постуnameльное смещение исходной сущности ENTNAM. Постуnameльное смещение задается направлением с именем DIRNAM и величиной сдвига SHFLEN. При этом имя сущности ENTNAM, все характеристики визуального представления (например, стиль воспроизведения, уровень вида view_level), структура группы и множества сущностей не изменяются. Величина сдвига SHFLEN измеряется в единицах длины OVC_length_unit. Она либо равна 0, либо находится в диапазоне [EPS, МАХ]. При возникновении ошибки никакие изменения сущности не производятся.

Примечание - Если заданная сущность ENTNAM является экземпляром типа группы api_group, то все сущности, ссылающиеся на данную группу, также сдвигаются.

Внутренние ссылки: 6.1, 6.2.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

204

Функция несовместима с текущим уровнем мощности

А.7.3.2 Сущность сдвига по вектору перемещения

Имя функции:

Уровень интерфейса:

1

Shift_Displacement_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности

Все графические сущности, grp

Ввод

DX

D

Составляющая вектора перемещения по оси X

(0.0 или (EPSMAX))

Ввод

DY

D

Составляющая вектора перемещения по оси Y

(0.0 или (EPSMAX))

Ввод

DZ

D

Составляющая вектора перемещения по оси Z

(0.0 или (EPSMAX))

Привязка языка FORTRAN:

CALL SHIFT_DISPLACEMENT_ENT (ENTNAM, DX, DY, DZ)

Результат использования функции

Функция сдвигает сущность ENTNAM из исходного положения по заданному вектору перемещения. Заданные составляющие вектора перемещения по осям измеряются в единицах длины OVC_length_unit. Они либо равны 0, либо находятся в диапазоне [EPS, МАХ]. Имя сущности ENTNAM, все характеристики визуального представления (например, стиль воспроизведения, уровень вида view_level), структура группы и множества сущностей не изменяются. При возникновении ошибки никакие изменения сущности не производятся.

Примечания

1 Если заданная сущность ENTNAM является экземпляром типа группы api_group, то все сущности, ссылающиеся на данную группу, также сдвигаются.

2 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то заданная составляющая вектора смещения DZ игнорируется интерфейсом.

Внутренние ссылки: 6.1, 6.2.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

204

Функция несовместима с текущим уровнем мощности

А.7.3.3 Сущность дублирования и сдвига в заданном направлении

Имя функции:

Уровень интерфейса:

1

Dup_Shift_Dir_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя исходной сущности

Все графические сущности, grp

Ввод

DIRNAM

N

Имя направления direction

dir

Ввод

SHFLEN

D

Величина сдвига

(0.0 или (EPSMAX))

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя дублированной и сдвинутой сущности

Тип сущности ENTNAM

Привязка языка FORTRAN:

NAME = DUP_SHIFT_DIR_ENT (ENTNAM, DIRNAM, SHFLEN, KFIX)

Результат использования функции

Настоящая функция осуществляется в два этапа: сначала производится дублирование сущности с помощью функции Dup_Ent, затем полученная сущность сдвигается в заданном направлении с помощью функции Shift_Dir_Ent. Рассматриваемая функция возвращает имя полученной сущности. Величина сдвига SFIFLEN измеряется в единицах длины OVC_length_unit. Она либо равна 0, либо находится в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечания

1 Если заданная величина сдвига равна 0, то в результате выполнения функции Dup_Ent получается только копия сущности ENTNAM.

2 Манипуляции с сущностями допустимы только внутри TDB, если они являются экземплярами типа fill_area_style_hatching или half_space_solid. Дублированнная сущность остается внутри TDB. Параметр KFIX, равный CAD (результат функции направляется в CAD), игнорируется.

3 Если заданная сущность ENTNAM является экземпляром типа группы api_group, то все сущности, ссылающиеся на данную группу, также сдвигаются.

Внутренние ссылки: 6.1, 6.2.1, А.7.1.1, А.7.3.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

3

Значение меры длины находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

208

Превышение максимально допустимого количества групп

212

Сущность может быть использована только внутри временной базы данных

1001

Перечислимое значение находится вне установленного диапазона

А.7.3.4 Сущность дублирования и сдвига по вектору перемещения

Имя функции:

Уровень интерфейса:

1

Dup_Shift_Displacement_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя исходной сущности

Все графические сущности, grp

Ввод

DX

D

Составляющая вектора перемещения по оси X

(0.0 или (EPSMAX))

Ввод

DY

D

Составляющая вектора перемещения по оси Y

(0.0 или (EPSMAX))

Ввод

DZ

D

Составляющая вектора перемещения по оси Z

(0.0 или (EPSMAX))

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя дублированной и сдвинутой сущности

Тип сущности ENTNAM

Привязка языка FORTRAN:

NAME = DUP_SHIFT_DISPLACEMENT_ENT (ENTNAM, DX, DY, DZ, KFIX)

Результат использования функции

Настоящая функция осуществляется в два этапа: сначала выполняется дублирование сущности с помощью функции Dup_Ent, затем полученный дубликат сдвигается с помощью функции Shift_Displacement_Ent. Рассматриваемая функция возвращает имя сдвинутой сущности. Заданное значение сдвига измеряется в OVC_length_unit. Оно либо равно 0, либо находится в диапазоне [EPS, МАХ]. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечания

1 Если евклидова норма сдвига равна 0, то результатом использования функции Dup_Ent будет только копия сущности ENTNAM.

2 Манипуляции с сущностями, являющимися экземплярами типа fill_area_style_hatching или half_space_solid, допускаются только внутри TDB. Дублированная сущность остается внутри TDB. Значение параметра KFIX, равное CAD (результат вычисления функции направляется в CAD), игнорируется интерфейсом.

3 Если заданная сущность ENTNAM является экземпляром типа группы api_group, то все сущности, ссылающиеся на данную группу, также дублируются и сдвигаются.

4 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то заданная составляющая смещения DZ игнорируется интерфейсом.

Внутренние ссылки: 6.1, 6.2.1, А.7.1.1, А.7.3.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

3

Значение меры длины находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

208

Превышение максимально допустимого количества групп

212

Сущность может быть использована только внутри временной базы данных

1001

Перечислимое значение находится вне установленного диапазона

А.7.4 Сущности вращения

Вращение

Rotate_Ent

Дублирование и вращение

Dup_Rotate_Ent

А.7.4.1 Вращение

Имя функции:

Уровень интерфейса:

1

Rotate_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя исходной сущности

Все графические сущности, grp

Ввод

PNTNAM

N

Имя указателя cartesian_point для вращения

pnt

Ввод

ANG1

D

Угол поворота в плоскости (Оху) вокруг оси (Oz)

(-360°360°)

Ввод

ANG2

D

Угол поворота в плоскости (Oyz) вокруг оси (Ох)

(-360°360°)

Ввод

ANG3

D

Угол поворота в плоскости (Ozx) вокруг оси (Оу)

(-360°360°)

Привязка языка FORTRAN:

CALL ROTATE_ENT (ENTNAM, PNTNAM, ANG1, ANG2, ANG3)

Результат использования функции

Производится поворот сущности ENTNAM. Указатель cartesian_point начала координат виртуальной координатной системы, в которой производится вращение. Данная виртуальная координатная система определена путем параллельного переноса текущей ссылочной координатной системы OVC в PNTNAM. Вращение производится в следующем порядке:

1) поворот вокруг оси (Oz);

2) поворот вокруг оси (Ох);

3) поворот вокруг оси (Оу).

Углы измеряются в единицах угла OVC_angle_unit. Имя сущности ENTNAM, все характеристики визуального представления (например, стиль воспроизведения, уровень вида view_level), структура группы и множества сущностей не изменяются. При возникновении ошибки никакие изменения сущностей не производятся.

Примечания

1 Если вычисленное смещение сущности из исходного положения по указателю вращения находится в диапазоне [ZERO_value, EPS], то никакие модификации не производятся и ошибки не возникают.

2 Если заданная сущность ENTNAM является экземпляром типа группы api_group, то все сущности, ссылающиеся на данную группу, также должны быть повернуты.

3 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то заданные углы ANG2 и ANG3 поворота относительно осей игнорируются интерфейсом. Производится только вращение в плоскостях х, y вокруг PNTNAM.

Внутренние ссылки: 6.1, 6.2.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

4

Значение меры плоского угла находится вне допустимого диапазона

204

Функция несовместима с текущим уровнем мощности

А.7.4.2 Дублирование и вращение

Имя функции:

Уровень интерфейса:

1

Dup_Rotate_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности

Все графические сущности, grp

Ввод

PNTNAM

N

Имя указателя cartesian_point для вращения

pnt

Ввод

ANG1

D

Угол поворота в плоскости (Оху) вокруг оси (Oz)

(-360°360°)

Ввод

ANG2

D

Угол поворота в плоскости (Oyz) вокруг оси (Ох)

(-360°360°)

Ввод

ANG3

D

Угол поворота в плоскости (Ozx) вокруг оси (Оу)

(-360°360°)

Ввод

KFIX

E

Хранение построенной сущности

[TDB, CAD]

Вывод

NAME

N

Имя дублированной и повернутой сущности

Тип сущности ENTNAM

Привязка языка FORTRAN:

NAME = DUP_ROTATE_ENT (ENTNAM, PNTNAM, ANG1, ANG2, ANG3, KFIX)

Результат использования функции

Настоящая функция осуществляется в два этапа: сначала выполняется параллельный перенос с помощью функции Dup_Ent. Затем полученная сущность поворачивается с помощью функции Rotate_Ent. Функция возвращает имя сущности, полученной параллельным переносом. При возникновении ошибки сущность не создается, функция возвращает нулевое имя элемента.

Примечания

1 Если вычисленное смещение из исходного положения сущности по указателю вращения находится в диапазоне [ZERO_value, EPS], то в результате выполнения функции Dup_Ent создается только копия сущности ENTNAM.

2 Манипуляции с сущностями, являющимися экземплярами типа fill_area_style_hatching или half_space_solid, допускаются только внутри TDB. Дублированная сущность остается внутри TDB. Значение параметра KFIX, равное CAD (результат вычисления функции отправляется в CAD), игнорируется интерфейсом.

3 Если заданная сущность ENTNAM является экземпляром типа группы api_group, то все сущности, ссылающиеся на данную группу, также дублируются и сдвигаются.

4 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то заданные углы ANG2 и ANG3 поворота относительно осей игнорируются интерфейсом. Производится только вращение в плокостях х, y вокруг PNTNAM.

Внутренние ссылки: 6.1, 6.2.1, А.7.1.1, А.7.4.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

4

Значение меры плоского угла находится вне допустимого диапазона

201

Переполнение временной базы данных

202

Ошибка при отправке сущности в CAD

204

Функция несовместима с текущим уровнем мощности

208

Превышение максимально допустимого количества групп

212

Сущность может быть использована только внутри временной базы данных

1001

Перечислимое значение находится вне установленного диапазона

А.7.5 Изменения сущностей

Изменение направления сущностей кривой

Chg_orientation_Ent

Изменение положительного направления обхода круговой или эллиптической сущности

Chg_Sense_Ent

Сущность гомотетии

Homotetia_Ent

А.7.5.1 Изменение направления сущностей кривой

Имя функции:

Уровень интерфейса:

1

Chg_Orientation_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности

curves

Привязка языка FORTRAN:

CALL CHG_ORIENTATION_ENT (ENTNAM)

Результат использования функции

Функция изменяет направление сущности кривой ENTNAM. Если заданная сущность лежит в диапазоне базовых или конических кривых, то выполняется следующая процедура:

- меняются местами две точки вычленения trim_1 и trim_2;

- изменяется положительное направление обхода кривой sense_agreement.

Если заданная сущность кривой ENTNAM является экземпляром типа полилинии polyline, то выполняется следующая процедура:

- порядок перечня точек полилинии cartesian_point изменяется на противоположный.

Если заданная сущность кривой ENTNAM является экземпляром типа контур api_contour, то выполняется нижеследующая процедура:

- каждый элемент перечня сегментов комбинированной кривой composite_curve_segment изменяется в соответствии с процедурой, описанной выше;

- порядок перечня сегментов изменяется на противоположный.

Имя сущности ENTNAM, все характеристики визуального представления (например, стиль воспроизведения, уровень вида view_level), структура группы и множества сущностей не изменяются. При возникновении ошибки изменения сущностей не производятся.

Примечание - Нет.


Basis_curve (= circle) - базовая кривая (окружность); trim_2 - вторая точка вычленения; trim_1 - первая точка вычленения; position - центр окружности; given entity ENTNAM (api_circuiar_arc) - исходная сущность ENTNAM (дуга окружности); same entity ENTNAM after changing the orientation - исходная сущность ENTNAM (дуга окружности) после смены положения; sense_agreement (sense = TRUE) - положительное направление обхода кривой; sense_agreement (sense = FALSE) - отрицательное направление обхода кривой

Рисунок А.53 - Функция Chg_Orientation_Ent

Внутренние ссылки: 6.1.12, 6.1.13, 6.1.14, 6.2.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

А.7.5.2 Изменение положительного направления обхода круговой или эллиптической сущности

Имя функции:

Уровень интерфейса:

1

Chg_Sense_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности

arc, elc

Привязка языка FORTRAN:

CALL CHG_SENSE_ENT (ENTNAM)

Результат использования функции

Функция изменяет значение флажка sense_agreement (направления обхода дуги окружности api_circular_arc или дуги эллипса api_elliptical_arc с именем ENTNAM) на противоположное. Имя сущности ENTNAM, все характеристики визуального представления (например, стиля воспроизведения, уровня вида view_level), структуры группы и множества сущностей не изменяются. При возникновении ошибки сущности не изменяются.

Примечание - Настоящая функция использует либо дугу окружности api_circular_arc, либо дугу эллипса api_elliptical_arc.


Basis_curve (= circle) - базовая кривая (окружность); sense_agreement (sense = FALSE) - отрицательное направление обхода контура (значение флажка равно "false"); given entity ENTNAM (api_circuiar_arc) after changing sense_agreement flag - заданная сущность ENTNAM (дуга окружности) после изменения значения флажка направления обхода контура; trim_2 - вторая точка вычленения; position - центр окружности; given entity ENTNAM (api_circular_arc) - заданная сущность ENTNAM (дуга окружности); trim_1 - первая точка вычленения; sense_agreement (sense = TRUE) - положительное направление обхода контура (значение флажка равно "true")

Рисунок А.54 - Функция Chg_Sense_Ent

Внутренние ссылки: 6.1.12.2, 6.1.13.1, 6.2.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

А.7.5.3 Сущность гомотетии

Имя функции:

Уровень интерфейса:

1

Homotetia_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности

curves, solid_model, grp

Ввод

PNTNAM

N

Имя декартовой точки cartesian_point

pnt

Ввод

К

D

Коэффициент гомотетии

(EPSMAX)

Привязка языка FORTRAN:

CALL HOMOTETIA_ENT (ENTNAM, PNTNAM, K)

Результат использования функции

Функция изменяет сущность ENTNAM с помощью преобразования гомотетии. Для этого задается центр С с именем PNTNAM и коэффициент гомотетии K. В процессе преобразования каждая точка Р, принадлежащая исходной сущности ENTNAM, переходит в точку Р' по правилу СР' = К СР (где жирным шрифтом выделены векторы СР' и СР).

Имя сущности ENTNAM, все характеристики визуального представления (например, стиль воспроизведения, уровень вида view_level), структура группы и множества сущностей не изменяются. При возникновении ошибки никакие изменения не производятся.

Примечания

1 Данная функция интерфейса гарантирует, что построение вырожденных сущностей не производится.

2 Если заданная сущность ENTNAM является экземпляром типа группы api_group, то все сущности, ссылающиеся на данную группу, подвергаются преобразованию гомотетии.


ENTNAM (api_line) - исходная сущность ENTNAM (отрезок); generated entity (here, -1 > К > -MAX) - полученная сущность (здесь -1 > К > -MAX); PNTNAM cartesian_point - центр гомотетии PNTNAM; ENTNAM - исходная сущность; api_circular_arc - исходная сущность (дуга окружности); generated entity (here, 1 > К > EPS) - полученная сущность (здесь -1 > К > -EPS)

Рисунок А.55 - Функция Homotetia_Ent

Внутренние ссылки: 6.1, 6.2.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

7

Действительное значение находится вне допустимого диапазона

101

Попытка создания вырожденной сущности

204

Функция несовместима с текущим уровнем мощности

А.8 Утилиты

Утилиты позволяют прикладным программам получать характеристики сущностей путем вычислений, проводимых интерфейсом, с учетом ограничений.

А.8.1 Утилиты геометрических сущностей

Определение декартовых координат точки

Pnt_Retrieve_Coordinate

Определение компонент вектора направления

Dir_Retrieve_component

Определение начала локальной координатной системы axis2_placement

A2p_Retrieve_Location

Определение компонент вектора направления по отрезку

Lin_Retrieve_Dir

Определение размещения тела в полупространстве

Нss_Retrieve_A2p

Определение размещения дуги окружности

Arc_Retrieve_A2p

Определение радиуса дуги окружности

Arc_Retrieve_Rad

Определение направления обхода дуги окружности (эллипса)

Arc Retrieve Sense

A.8.1.1 Определение декартовых координат точки

Имя функции:

Уровень интерфейса:

1

Pnt_Retrieve_Coordinate

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

PNTNAM

N

Имя декартовой точки cartesian_point

pnt

Вывод

X

D

Координата Х заданной декартовой точки с именем PNTNAM

(0.0 или (EPSMAX))

Вывод

Y

D

Координата Y заданной декартовой точки с именем PNTNAM

(0.0 или (EPSMAX))

Вывод

Z

D

Координата Z заданной декартовой точки с именем PNTNAM

(0.0 или (EPSMAX))

Привязка языка FORTRAN:

CALL PNT_RETRIEVE_COORDINATE (PNTNAM, X, Y, Z)

Результат использования функции

Функция извлекает декартовы координаты заданного экземпляра сущности cartesian_point с именем PNTNAM. Полученные координаты измеряются в единицах длины OVC_length_unit и относятся к базовой координатной системе OVC. При необходимости интерфейс преобразуется к текущей OVC. При возникновении ошибки (например, если значение координаты больше максимально допустимого значения МАХ), значения координат точки X, Y и Z не определяются.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то значение координаты Z точки равно 0.

Внутренние ссылки: 6.1.9.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

А.8.1.2 Определение компонент вектора направления

Имя функции:

Уровень интерфейса:

1

Dir_Retrieve_Component

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

DIRNAM

N

Имя сущности direction

dir

Вывод

X

D

Составляющая X вектора направления по оси (Ох)

Вывод

Y

D

Составляющая Y вектора направления по оси (Оу)

Вывод

Z

D

Составляющая Z вектора направления по оси (Oz)

Привязка языка FORTRAN:

CALL PNT_RETRIEVE_COMPONENT (DIRNAM, X, Y, Z)

Результат использования функции

Функция извлекает компоненты вектора направления direction_ratio из заданного экземпляра сущности direction с именем DIRNAM. Полученные значения компонент direction_ratio относятся к базовой координатной системе OVC. При возникновении ошибки (например, если компонента превышает максимально допустимое значение МАХ) значения компонент X, Y и Z не определены.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то значение составляющей Z вектора направления равно 0.

Внутренние ссылки: 6.1.9.3.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

А.8.1.3 Определение начала локальной координатной системы axis2_placement

Имя функции:

Уровень интерфейса:

1

А2p_Retrieve_Locatiоn

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

A2PNAM

N

Имя локальной координатной системы axis2_placement

а2р

Вывод

PNTNAM

N

Имя начала координат

pnt

Привязка языка FORTRAN:

CALLA2P_RETRIEVE_LOCATION (A2PNAM, PNTNAM)

Результат использования функции

Функция извлекает начало координат заданного экземпляра A2PNAM локальной координатной системы axis2_placement. Полученная декартова точка cartesian_point относится к базовой координатной системе OVC. При возникновении ошибки значение сущности PNTNAM равно 0.

Примечание - Нет.

Внутренние ссылки: 6.1.9, 6.1.9.2, 6.1.9.7, 6.1.9.8.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

А.8.1.4 Определение компонент вектора направления по отрезку

Имя функции:

Уровень интерфейса:

1

Lin_Retrieve_Dir

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

LINNAM

N

Имя сущности отрезка прямой api_line

lin

Вывод

DIRNAM

N

Имя сущности направления direction

dir

Привязка языка FORTRAN:

CALL LIN_RETRIEVE_DIR (LINNAM, DIRNAM)

Результат использования функции

Функция извлекает направление из заданного экземпляра LINNAM отрезка api_line. Утилита возвращает имя сущности direction, построенной на отрезке api_line. При возникновении ошибки значение сущности DIRNAM равно 0.

Примечание - Нет.

Внутренние ссылки: 6.1.9, 6.1.9.3, 6.1.12.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

А.8.1.5 Определение размещения тела в полупространстве

Имя функции:

Уровень интерфейса:

3

Нss_Retriеve_A2р

Уровень геометрической мощности:

3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

HSSNAM

N

Имя тела в полупространстве half_space_solid

hss

Вывод

A2PNAM

N

Имя локальной координатной системы axis2_placement

а2р

Привязка языка FORTRAN:

CALL HSS_RETRIEVE_A2P (HSSNAM, A2PNAM)

Результат использования функции

Функция определяет положение и направление заданного экземпляра HSSNAM сущности half_space_solid. Утилита возвращает имя сущности положения как A2PNAM. Полученная локальная координатная система axis2_placement относится к базовой координатной системе OVC. При возникновении ошибки значение сущности A2PNAM равно 0.

Примечание - Нет.

Внутренние ссылки: 6.1.9, 6.1.9.7, 6.1.9.8, 6.1.18.8.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

203

Функция несовместима с текущим уровнем интерфейса

204

Функция несовместима с текущим уровнем мощности

А.8.1.6 Определение размещения дуги окружности

Имя функции:

Уровень интерфейса:

1

Arc_Retrieve_A2p

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ARCNAM

N

Имя дуги окружности api_circular_arc

arc

Вывод

A2PNAM

N

Имя локальной координатной системы axis2_placement

а2р

Привязка языка FORTRAN:

CALL ARC_RETRIEVE_A2P (ARCNAM, A2PNAM)

Результат использования функции

Функция определяет положение и направление по заданному экземпляру ARCNAM дуги окружности api_circular_arc. Утилита возвращает имя сущности положения базовой кривой basis_curve кaк A2PNAM. Полученная локальная координатная система axis2_placement относится к базовой координатной системе OVC. При возникновении ошибки значение сущности A2PNAM равно 0.

Примечание - Нет.

Внутренние ссылки: 6.1.9, 6.1.9.7, 6.1.9.8, 6.1.12.2.

Ошибки:

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

А.8.1.7 Определение радиуса дуги окружности

Имя функции:

Уровень интерфейса:

1

Arc_Retrieve_Rad

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ARCNAM

N

Имя дуги окружности api_circular_arc

arc

Вывод

RADIUS

D

radius

(EPS MAX)

Привязка языка FORTRAN:

CALL ARC_RETRIEVE_RAD (ARCNAM, RADIUS)

Результат использования функции

Функция определяет радиус заданного экземпляра ARCNAM дуги окружности api_circular_arc. Утилита возвращает значение радиуса базовой кривой basis_curve как переменную RADIUS. При возникновении ошибки значение RADIUS равно 0.

Примечание - Нет.

Внутренние ссылки: 6.1.12.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

А.8.1.8 Определение направления обхода дуги окружности (эллипса)

Имя функции:

Уровень интерфейса:

1

Arc_Retrieve_Sense

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ARCNAM

N

Имя сущности api_circular_arc или сущности api_elliptical_arc

arc, elc

Вывод

SENSE

Е

Значение атрибута sense_agreement_flag

[TRUE, FALSE, UNKNOWN]

Привязка языка FORTRAN:

CALL ARC_RETRIEVE_SENSE (ARCNAM, SENSE)

Результат использования функции

Функция доставляет информацию о значении флажка направления обхода заданного экземпляра ARCNAM дуги окружности api_circular_arc или дуги эллипса api_elliptical_arc. Утилита возвращает логическое значение (TRUE или FALSE) атрибута SENSE сущности sense_agreement базовой кривой basis_curve. При возникновении ошибки значение данного атрибута сущности неизвестно (UNKNOWN).

Примечание - Нет.

Внутренние ссылки: 6.1.12.2, 6.1.13.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

А.8.2 Утилиты запроса

Запрос типа сущности

Retrieve_Type_Ent

Запрос перечня членов группы

Retrieve_Member_Grp

Запрос перечня сущностей контура

Retrieve_Ent_Ctr

А.8.2.1 Запрос типа сущности

Имя функции:

Уровень интерфейса:

1

Retrieve_Type_Ent

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности

Все типы сущностей

Вывод

TYPE

S

Строка, содержащая 3 символа аббревиатуры типа сущности

См. таблицу А.5

Привязка языка FORTRAN:

CALL RETRIEVE_TYPE_ENT (ENTNAM, TYPE)

Результат использования функции

Функция определяет тип экземпляра существующей сущности ENTNAM. Утилита возвращает тип сущности в виде аббревиатуры из 3 символов (см. таблицу А.5).

Таблица А.5 - Аббревиатуры типов сущностей ENTNAM

Аббревиатура в полученной строке

Соответствующий тип экземпляра сущности

а1р

Локальная координатная система axis1_placement

а2р

Локальная координатная система axis2_placement

afa

Заполненная область annotation_fill_area

aps

Плоская поверхность api_planar_surface интерфейса прикладного программирования

arc

Дуга окружности api_circular_arc интерфейса прикладного программирования

blk

Блок block

brs

Результат выполнения булевой операции boolean_result

con

Прямой круговой конус right_circular_cone

ctr

Контур api_contour интерфейса прикладного программирования

cyl

Прямой круговой цилиндр right_circular_cylinder

dir

Направление direction

eas

Экструдированное геометрическое тело extruded_area_solid

elc

Дуга эллипса api_elliptical_arc интерфейса прикладного программирования

fsh

Стиль штриховки заполненной области fill_area_style_hatching

grp

Группа api_group интерфейса прикладного программирования

hss

Тело в полупространстве half_space_solid

hyp

Дуга гиперболы api_hyperbolic_arc интерфейса прикладного программирования

lin

Прямая линия api_line интерфейса прикладного программирования

par

Дуга параболы api_parabolic_arc интерфейса прикладного программирования

pln

Полилиния polyline

pnt

Декартова точка cartesian_point

ras

Геометрическое тело, полученное очерчиванием образующего контура вдоль направляющей revolved_area_solid

sph

Сфера sphere

tor

Top torus

wdg

Прямой клин right_angular_wedge

Примечания

1 Если возникает ошибка, то полученная строка содержит три символа "звездочка" (***).

2 Количество символов в полученной строке всегда равно 3.

Внутренние ссылки: 5.1.3.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

204

Функция несовместима с текущим уровнем мощности

1003

Неправильное количество символов в строке

А.8.2.2 Запрос перечня членов группы

Имя функции:

Уровень интерфейса:

1

Retrieve_Member_Grp

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

GRPNAM

N

Имя группы api_group

grp

Вывод

N

I

Длина перечня ENTLST, определяющего количество сущностей

Вывод

ENTLST

nxN

Перечень имен сущностей членов группы api_group

Графические сущности, grp

Привязка языка FORTRAN

Ввод/вывод

Имя

Тип данных FORTRAN

Смысл

Допустимый тип/значение

Ввод

DIMLST

Integer (целое)

Длина выходного перечня ENTLST

1max

CALL RETRIEVE_MEMBER_GRP (GRPNAM, DIMLST, N, ENTLST)

Результат использования функции

Функция извлекает имена сущностей (геометрических или структурированных), принадлежащих существующей группе api_group с именем GRPNAM. При возникновении ошибки функция выдает значение N, равное 0.

Примечание - Если имя группы GRPNAM является именем текущей открытой группы api_group, то данная группа временно закрывается и открывается повторно после выполнения запроса.

Внутренние ссылки: 6.1.19.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

1002

Несоответствие номера сущности и длины перечня

А.8.2.3 Запрос перечня сущностей контура

Имя функции:

Уровень интерфейса:

1

Retrieve_Ent_Ctr

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

CTRNAM

N

Имя контура api_contour

ctr

Вывод

N

I

Длина перечня ENTLST

Вывод

ENTLST

n х N

Перечень имен сущностей, составляющих api_contour

basic, conic_arc, pin

Привязка языка FORTRAN

Ввод/вывод

Имя

Тип данных FORTRAN

Смысл

Допустимый тип/значение

Ввод

DIMLST

Integer (целое)

Длина выходного перечня ENTLST

1max

CALL RETRIEVE_ENT_CTR (CTRNAM, DIMLST, N, ENTLST)

Результат использования функции

Функция извлекает перечень CTRNAM имен сущностей, составляющих контур api_contour. При возникновении ошибки функция возвращает значение N = 0.

Примечание - Если одна сущность или более из составляющих контур api_contour, является экземпляром типа группы api_group, то имена сущностей, содержащих данные группы, возвращаются в перечень сущностей ENTLST, а не в перечень имен членов группы.

Внутренние ссылки: 6.1.14.2, 6.1.19.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

1002

Несоответствие задаваемого номера и длины перечня

А.8.3 Вычислительные утилиты

Вычисление расстояния между двумя точками

Distance_2_Pnt

Вычисление начального угла дуги окружности

Start_Angle_Arc

Вычисление конечного угла дуги окружности

End_Angle_Arc

А.8.3.1 Вычисление расстояния между двумя точками

Имя функции:

Уровень интерфейса:

1

Distance_2_Pnt

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

PNTNM1

N

Имя первой декартовой точки cartesian_point

pnt

Ввод

PNTNM1

N

Имя второй декартовой точки cartesian_point

pnt

Вывод

DIST

D

Декартово расстояние между двумя точками

(EPSMAX)

Привязка языка FORTRAN:

DIST = DISTANCE_2_PNT (PNTNM1, PNTNM2)

Результат использования функции

Функция вычисляет и возвращает значение декартова расстояния между двумя заданными декартовыми точками cartesian_point с именами PNTNM1 и PNTNM2. Расстояние измеряется в единицах длины OVC_length_unit. При возникновении ошибки значение расстояния DIST не определяется.

Примечание - Если данная функция используется в совокупности с функцией PNT_PROJECTION_ENT, то она может вычислить расстояние между точкой и любой другой базовой сущностью (например, декартова точка cartesian_point, прямая линия api_line, дуга окружности api_circular_arc). Если данная функция используется в совокупности с функцией PNT_PROJECTION_A2P, то она может вычислить расстояние между точкой и плоскостью (Оху) локальной координатной системы axis2_placement.

Внутренние ссылки: 6.1.9.2, А.5.2.2.7, А.5.2.2.8.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

А.8.3.2 Вычисление начального угла дуги окружности

Имя функции:

Уровень интерфейса:

1

Start_Angle_Arc

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип
данных

Смысл

Допустимый тип/значение

Ввод

ARCNAM

N

Имя дуги окружности api_circular_arc

arc

Вывод

STAANG

D

Начальный угол дуги окружности

(0°360°)

Привязка языка FORTRAN:

STAANG = START_ANGLE_ARC (ARCNAM)

Результат использования функции

Функция вычисляет и возвращает значение ориентированного начального угла заданной дуги окружности api_circular_arc с именем ARCNAM с учетом текущего положительного направления обхода дуги sense_agreement_flag. Вычисленный угол измеряется в единицах угла OVC_angle_unit в координатной плоскости (Оху), в которой размещена заданная плоская дуга окружности api_circular_arc с именем ARCNAM. Угол отсчитывается от оси (Ох) локальной координатной системы и заканчивается в начальной точке указанной дуги api_circular_arc. При возникновении ошибки значение угла STAANG не определяется.


ARCNAM (api_circular_arc) - дуга окружности ARCNAM; end point (trim_2) - конечная точка дуги (точка вычленения 2); start point (trim_1) - начальная точка дуги (точка вычленения 1); sense_agreement (sense = TRUE) - положительное направление обхода кривой; position - центр окружности; STAANG - вычисляемый начальный угол дуги

Рисунок А.56 - Функция Start_Angle_Arc

Примечание - Нет.

Внутренние ссылки: 6.1.12.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

А.8.3.3 Вычисление конечного угла дуги окружности

Имя функции:

Уровень интерфейса:

1

End_Angle_Arc

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ARCNAM

N

Имя дуги окружности api_circular_arc

arc

Вывод

ENDANG

D

Конечный угол дуги окружности

(0°360°)

Привязка языка FORTRAN:

ENDANG = END_ANGLE_ARC (ARCNAM)

Результат использования функции

Функция вычисляет и возвращает значение ориентированного конечного угла заданной дуги окружности api_circular_arc с именем ARCNAM с учетом положительного направления дуги sense_agreement_flag. Вычисляемый угол измеряется в единицах угла OVC_angle_unit в плоскости (Оху) заданной дуги окружности api_circular_arc с именем ARCNAM. Угол отсчитывается от оси (Ох) до конечной точки заданной дуги окружности api_circular_arc. При возникновении ошибки полученное значение угла ENDANG не определяется.

Примечания - Нет.


ARCNAM (api_circular_arc) - дуга окружности ARCNAM; end point (trim_2) - конечная точка дуги (точка вычленения 2); ENDANG - конечный угол дуги окружности; start point (trim_1) - начальная точка дуги (точка вычленения 1); position - центр окружности; sense_agreement (sense = TRUE) - положительное направление обхода кривой

Рисунок А.57 - Функция End_Angle_Arc

Внутренние ссылки: 6.1.12.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

А.9 Вспомогательные функции для выполнения преобразований

А.9.1 Построение и задание новых ссылочных координатных систем

Построение ссылочной координатной системы по трем точкам

Ref_Sys_3_Pnt

Построение ссылочной координатной системы по двум направлениям

Ref_Sys_2_Dir

Построение ссылочной координатной системы по двум направлениям (Ох) и (Оу)

Ref_Sys_2_Dir_Xy

Построение ссылочной координатной системы с помощью относительного позиционирования

Ref_Sys_Position_Relative

Построение ссылочной координатной системы с помощью сущности axis2_placement

Ref_Sys_A2p

A.9.1.1 Построение ссылочной координатной системы по трем точкам

Имя функции:

Уровень интерфейса:

1

Ref_Sys_3_Pnt

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

CENPNT

N

Имя декартовой точки cartesian_point, определяющей начало координат

pnt

Ввод

AXSPNT

N

Имя декартовой точки cartesian_point, отложенной в направлении оси Z (игнорируется для 2D-вида)

pnt

Ввод

REFPNT

N

Имя декартовой точки cartesian_point, отложенной либо в направлени аппроксимаци оси Х, либо в направлении точной оси X в случае 2D-вида

pnt

Ввод

KFIX

Е

Хранение построенной сущности

[TDB, CAD]

Привязка языка FORTRAN:

CALL REF_SYS_3_PNT (CENPNT, AXSPNT, REFPNT)

Результат использования функции

Производится построение новой ссылочной OVC по заданным параметрам, относящимся к текущей ссылочной системе. Новая ссылочная система создается как ортогональная правосторонняя координатная система типа axis2_placement. Созданная сущность axis2_placement зависит от инициализации открытого вида: экземпляр сущности axis2_placement_2d создается в случае 2D-вида, экземпляр сущности axis2_placement_3d создается в случае 3D-вида. Для создания сущности axis2_placement_3d задаются три точки CENPNT, AXPNT и REFPNT, определяющие начало координат (О), и две оси (Oz и Ох) локальной координатной системы. Для создания сущности axis2_placement_2d необходимы только две точки вместо трех (CENPNT и REFPNT), которые определяют начало координат (О) и ось (Ох) локальной координатной системы.

Заданная декартова точка cartesian_point с именем CENPNT дублируется как точка р1. Данная точка cartesian_point определяет начало координат, она имеет нулевой стиль null_style.

В случае создания экземпляра локальной координатной системы axis2_piacement_3d;

- пусть точки Р2 и Р3 являются синонимами двух заданных декартовых точек AXSPNT и REFPNT соответственно;

- создается экземпляр d1 направления direction с компонентами direction_ratio, определенными путем вычитания координат точек P2 - р1. Указанное направление используется для определения точного направления локальной оси Z и имеет нулевой стиль. При этом расстояние между двумя декартовыми точками находится в диапазоне [EPS, МАХ];

- создается экземпляр d2 направления direction с компонентами direction_ratio, определенными путем вычитания координат точек P3 - р1. Указанное направление используется для определения аппроксимации направления оси X и имеет нулевой стиль. При этом расстояние между двумя декартовыми точками находится в диапазоне [EPS, МАХ];

- создается экземпляр локальной координатной системы axis2_placement_3d с началом координат в точке р1, осью d1 и ссылочным направлением d2. Полученная локальная координатная система axis2_placement_3d имеет нулевой стиль. Она принимается в качестве новой ссылочной OVC.

В случае создания экземпляра локальной координатной системы axis2_piacement_2d;

- пусть точка P3 является синонимом одной заданной декартовой точки cartesian_point с именем REFPNT;

- создается экземпляр d2 направления direction с компонентами direction_ratio, определенного путем вычитания координат точек Р3 - р1. Указанное направление используется для определения точного направления локальной оси X и имеет нулевой стиль. Расстояние между двумя декартовыми точками находится в диапазоне [EPS, МАХ];

- создается экземпляр локальной координатной системы axis2_placement_2d с началом координат в точке р1 и ссылочным направлением d2. Полученная локальная координатная система axis2_placement_2d имеет нулевой стиль и принимается в качестве новой ссылочной OVC.

При возникновении ошибки никакие изменения сущностей не производятся.

Примечания

1 При необходимости выполняется корректировка ссылочного направления ref_direction для обеспечения его ортогональности направлению оси путем проектирования указанного направления ref_direction на плоскость, перпендикулярную направлению оси axis.

2 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то заданный параметр AXSPNT игнорируется интерфейсом.


AXSPNT - точка на новой оси Т; axis - ось; new Reference System - новая ссылочная система; location - начало координат новой системы; CENPNT - точка CENPNT; ref_direction - ссылочное направление; REFPNT - ссылочная точка REFPNT; axis2_placement-3d - локальная координатная система; project onto plane normal to axis - проекция на плоскость, перпендикулярную оси; current Reference System - текущая ссылочная система

Рисунок А.58 - Функция Ref_Sys_3_Pnt (3D-вид)

Внутренние ссылки: 5.3.1, 6.1.9.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

103

Расстояние между двумя точками находится вне установленного диапазона [EPS, МАХ]

105

Попытка создания вырожденного направления в процессе создания сущности

106

Попытка создания вырожденной локальной координатной системы axis2_ptacement в процессе создания сущности

116

Заданные точки являются линейно зависимыми

201

Переполнение временной базы данных

204

Функция несовместима с текущим уровнем мощности

А.9.1.2 Построение ссылочной координатной системы по двум направлениям

Имя функции:

Уровень интерфейса:

1

Ref_Sys_2_Dir

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

CENPNT

N

Имя декартовой точки cartesian_point, определяющей начало координат

pnt

Ввод

AXSDIR

N

Имя направления оси Z (игнорируется для 2D-вида)

dir

Вывод

REFDIR

N

Имя либо аппроксимации направления оси X, либо точного направления оси X в случае 2D-вида

dir

Привязка языка FORTRAN:

CALL RЕF_SYS_2_DIR (CENPNT, AXSDIR, REFDIR)

Результат использования функции

Функция строит и задает новую ссылочную OVC путем задания параметров, относящихся к текущей ссылочной системе. Новая ссылочная система является ортогональной правосторонней координатной системой типа axis2_placement. Созданная сущность axis2_placement зависит от инициализации открытого вида. В случае 2D-вида создается экземпляр сущности axis2_placement_2d, в случае 3D-вида - экземпляр сущности axis2_placement_3d. Для создания локальной координатной системы типа axis2_placement_3d задаются три параметра (CENPNT, AXDIR и REFDIR) для построения начала координат (О) и двух координатных осей (Oz и Ох) локальной координатной системы. Для создания локальной координатной системы axis2_placement_2d задаются только два параметра (CENPNT и REFDIR) для построения начала координат (О) и координатной оси (Ох).

Заданная декартова точка cartesian_point CENPNT дублируется как точка р1. Полученная декартова точка определяет начало координат и имеет нулевой стиль null_style.

В случае создания экземпляра сущности axis2_placement_3d;

- два направления AXSDIR и REFDIR дублируются как направления d1 и d2 соответственно. Настоящие направления определяют точное направление локальной оси Z и аппроксимацию направления локальной оси X. Указанные направления имеют нулевой стиль;

- создается экземпляр сущности axis2_placement_3d с началом координат в точке р1, осью d1 и ссылочным направлением ref_direction d2. Функция возвращает имя полученной сущности axis2_placement_3d. Сущности назначен нулевой стиль, она является новой ссылочной OVC.

В случае создания экземпляра сущности axis2_piacement_2d;

- ссылочное направление REFDIR дублируется как направление d2, ему назначен нулевой стиль. Данное направление используется для определения точного направления локальной оси Х;

- создается экземпляр сущности axis2_placement_2d с началом координат р1 и ссылочным направлением ref_direction d2. Функция возвращает имя построенной сущности axis2_placement_2d. Сущности назначен нулевой стиль, она является новой ссылочной OVC.

При возникновении ошибки никакие изменения не производятся.

Примечания

1 При необходимости производится корректировка ссылочного направления ref_direction для обеспечения ортогональности направлению оси. Корректировка производится путем проецирования ссылочного направления ref_direction на плоскость, перпендикулярную направлению оси axis.

2 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то заданный параметр AXSDIR игнорируется интерфейсом.


New Reference System - новая ссылочная система; location - начало координат новой системы; CENPNT - точка CENPNT; ref_direction - ссылочное направление; axis2_placement-2d - локальная координатная система (сущность axis2_placement-2d); current Reference System - текущая ссылочная система; REFDIR - ссылочное направление

Рисунок А.59 - Функция Ref_Sys_2_Dir (2D-вид)

Внутренние ссылки: 5.3.1, 6.1.9.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

106

Попытка создания вырожденной локальной координатной системы axis2_placement в процессе создания сущности

117

Заданные направления параллельны

201

Переполнение временной базы данных

204

Функция несовместима с текущим уровнем мощности

А.9.1.3 Построение ссылочной координатной системы по двум направлениям (Ох) и (Оу)

Имя функции:

Уровень интерфейса:

1

Ref_Sys_2_Dir_Xy

Уровень геометрической мощности:

1, 2, 3

Ref_Sys_2_Dir_Xy

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

CENPNT

N

Имя декартовой точки cartesian_point, определяющей начало координат

pnt

Ввод

REFDIR

N

Имя точного направления оси X

dir

Ввод

YAXDIR

N

Имя аппроксимации направления оси Y (игнорируется для 2D-вида)

dir

Привязка языка FORTRAN:

CALL REF_SYS_2_DIR_XY (CENPNT, REFDIR, YAXDIR)

Результат использования функции

Строится новая ссылочная OVC путем задания параметров, относящихся к текущей ссылочной системе. Новая ссылочная система является ортогональной правосторонней координатной системой типа axis2_placement. Создание сущности axis2_placement зависит от инициализации открытого вида. В случае 2D-вида создается экземпляр сущности axis2_placement_2d, в случае 3D-вида создается экземпляр сущности axis2_placement_3d. При создании локальной координатной системы axis2_placement_3d задаются три параметра (CENPNT, REFDIR и YAXDIR) для построения начала координат (О) и двух координатных осей (Ох и Оу). При создании локальной координатной системы axis2_placement_2d задаются только два из этих трех параметров (CENPNT и REFDIR) для построения начала координат (О) и координатной оси (Ох).

Декартова точка cartesian_point CENPNT дублируется как точка р1 для задания начала координат. Направление REFDIR дублируется как направление d1 для задания точного направления локальной оси X. Указанным двум сущностям назначен нулевой стиль null_style.

В случае создания экземпляра сущности axis2_placement_3d:

- направление d2 создается путем вычисления проекции нормированного направления YAXDIR на плоскость, перпендикулярную направлению d1. Указанному направлению назначен нулевой стиль;

- создается экземпляр направления d3 с атрибутами, вычисленными по векторному произведению направлений d1 и d2. Данное направление задает точное направление локальной оси Z, имеющей нулевой стиль;

- создается экземпляр сущности axis2_placement_3d с началом координат в точке р1, осью d3 и ссылочным направлением d1. Функция возвращает имя полученной сущности axis2_placement_3d. Сущности назначен нулевой стиль, он задается как новая ссылочная OVC.

В случае создания экземпляра сущности axis2_ptacement_2d:

- создается экземпляр сущности axis2_placement_2d с началом координат в точке р1 и ссылочным направлением d1. Функция возвращает имя полученной сущности axis2_placement_2d. Сущности назначен нулевой стиль, она задается как новая ссылочная OVC.

При возникновении ошибки никакие изменения не производятся.

Примечание - Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то параметр YAXDIR игнорируется интерфейсом.

Внутренние ссылки: 6.1.9, 6.1.9.7, 6.1.9.8, 6.2.1.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

106

Попытка создания вырожденной локальной координатной системы axis2_placement в процессе создания сущности

117

Заданные направления параллельны

201

Переполнение временной базы данных

204

Функция несовместима с текущим уровнем мощности

А.9.1.4 Построение ссылочной координатной системы с помощью относительного позиционирования

Имя функции:

Уровень интерфейса:

1

Ref_Sys_Pоsition_Relative

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

REFLST

6 D

Перечень описаний шести последовательных вращений и относительных перемещений:

1) поворот в плоскости (Оху) вокруг оси Z OVC

(-360°360°)

2) поворот в плоскости (Ozy) вокруг оси X OVC

(-360°360°)

3) поворот в плоскости (Ozx) вокруг оси Y OVC

(-360°360°)

4) смещение в направлении оси (Ох) текущей ссылочной OVC

(0.0 или (EPSMAX))

5) смещение в направлении оси (Оу) текущей ссылочной OVC

(0.0 или (EPSMAX))

6) смещение в направлении оси (Oz) текущей ссылочной OVC

(0.0 или (EPSMAX))

Привязка языка FORTRAN:

CALL REF_SYS_POSITION_RELATIVE (REFLST)

Результат использования функции

Строится новая ссылочная OVC путем задания параметра REFLST, значения которого относятся к текущей ссылочной системе. Новая ссылочная система является ортогональной правосторонней координатной системой типа axis2_placement. Тип созданной локальной координатной системы axis2_placement зависит от инициализации открытого вида. В случае 2D-вида создается экземпляр локальной координатной системы axis2_placement_2d. В случае 3D-вида создается экземпляр локальной координатной системы axis2_placement_3d.

В случае создания экземпляра сущности axis2_placement_3d:

- создается экземпляр локальной координатной системы axis2_placement_3d как копии базовой OVC. Для всех неявно созданных экземпляров сущности axis2_placement_3d и самой сущности назначен нулевой стиль null_style;

- матрицы преобразования, содержащиеся внутри заданного параметра REFLIST, применяются к новой системе axis2_placement_3d в следующей последовательности:

1) вращение вокруг оси Z текущей ссылочной OVC;

2) вращение вокруг оси X текущей ссылочной OVC;

3) вращение вокруг оси Y текущей ссылочной OVC;

4) смещение начала координат новой сущности axis2_placement_3d по осям X, Y и Z текущей ссылочной OVC;

- задается локальная координатная система axis2_placement_3d как новая ссылочная OVC.

В случае создания экземпляра сущностьа axis2_placement_2d:

- создается экземпляр сущности axis2_placement_2d как копии текущей ссылочной OVC;

- матрицы преобразования, содержащиеся внутри заданного параметра REFLIST, применяются к новой сущности axis2_placement_2d в следующей последовательности:

1) вращение в плоскости (Оху) текущей ссылочной OVC;

2) смещение начала координат новой сущности axis2_placement_2d по осям Х и Y текущей ссылочной OVC;

- задание сущности axis2_placement_2d как новой ссылочной OVC.

Углы поворота измеряются в единицах угла OVC_angle_unit. Смещения измеряются в единицах длины OVC_length_unit. Указанные величины либо равны 0, либо лежат в диапазоне [EPS, МАХ]. При возникновении ошибки никакие изменения не производятся.

Примечания

1 Если вычисленная евклидова норма смещения находится в диапазоне [ZERO_value, EPS], то никакие смещения не производятся и никакие ошибки не возникают.

2 Если текущий открытый вид определен как 2D-вид (значение записи geometrical_power_level в таблице статуса интерфейса равно 1), то значения параметра REFLST для углов поворота и значения параметра REFLST для смещения по оси Z игнорируются интерфейсом.

Внутренние ссылки: 5.3.1, 6.1.9.

Ошибки

3

Значение меры длины находится вне допустимого диапазона

4

Значение меры плоского угла находится вне допустимого диапазона

106

Попытка создания вырожденной локальной координатной системы axis2_placement в процессе создания сущности

201

Переполнение временной базы данных

204

Функция несовместима с текущим уровнем мощности

А.9.1.5 Построение ссылочной координатной системы с помощью сущности axis2_placement

Имя функции:

Уровень интерфейса:

1

Ref_Sys_A2p

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

A2PNAM

N

Имя декартовой точки cartesian_point, определяющей начало координат

а2р

Привязка языка FORTRAN:

CALL REF_SYS_A2P (A2PNAM)

Результат использования функции

Строится и задается новая ссылочная OVC с положением начала координат и направлением, идентичными положению и направлению заданной сущности axis2_placement с именем A2PNAM. Новая сущность является ортогональной правосторонней координатной системой типа axis2_placement.

Тип созданной локальной координатной системы axis2_placement зависит от инициализаци открытого вида. В случае 2D-вида создается экземпляр сущности axis2_placement_2d, в случае 3D-вида - экземпляр сущности axis2_placement_3d.

В случае создания экземпляра сущности axis2_placement_2d:

- создается экземпляр сущности axis2_placement_2d с началом координат, осью и ссылочным направлением ref_direction по заданной сущности axis2_placement с именем A2PNAM. Полученная сущность axis2_placement_2d задается как новая ссылочная OVC.

В случае создания экземпляра сущности axis2_placement_3d:

- создается экземпляр локальной координатной системы axis2_placement_3d с началом координат, осью и ссылочным направлением ref_direction, определяемым по заданной локальной координатной системе axis2_placement с именем A2PNAM. Сущность axis2_placement_3d задает новую ссылочную OVC.

При возникновении ошибки никакие изменения не производятся.

Примечание - Нет.

Внутренние ссылки: 5.3.1, 6.1.9.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

201

Переполнение временной базы данных

204

Функция несовместима с текущим уровнем мощности

А.10 Функции визуального представления

Данные функции позволяют прикладным программам задавать и запрашивать свойства глобальной визуализации элементов геометрического представления, а также изменять атрибуты визуализации для сущностей, созданных во временной базе данных (TDB).

А.10.1 Задание глобальных записей для атрибутов визуализации

Задание записи стиля точки

Set_Point_Style

Задание записи стиля кривой

Set_Curve_Style

Задание записи стиля заполненной области

Set_Fill_Area_Style

Задание записи стиля поверхности

Set_Surface_Style

Задание записи толщины линий штриховки

Set_Hatching_Width

Задание записи типа линий штриховки

Set_Hatching_Curve_Font

Задание записи цвета штриховки

Set_Hatching_Colour

Задание аспекта невидимых линий

Set_Hidden_Line_Aspect

Задание записи относительного уровня вида

Set_Relative_View_Level

А.10.1.1 Задание записи стиля точки

Имя функции:

Уровень интерфейса:

1

Set_Point_Style

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

EXTSOU

S

Имя источника, содержащего определение стиля точки

(ISO_13584 31, ISO_13584-1 + )

Ввод

PNTSTY

S

Идентификатор стиля точки

Привязка языка FORTRAN:

CALL SET_POINT_STYLE (EXTSOU, PNTSTY)

Результат использования функции

Функция задает новое текущее значение записи point_style в таблице статуса интерфейса, определенное именем EXTSOU и идентификатором PNTSTY. Источником внешне определенного стиля должен быть настоящий стандарт или любой протокол обмена видами, соответствующий ИСО 13584. При возникновении ошибки никакие изменения не производятся.

Примечания

1 Стиль воспроизведения сущности точки определен экземпляром сущности api_externally_defined_point_style с источником source, равным EXTSOU и идентификатором item_id, равным PNTSTY.

2 Если требуемый внешне определенный стиль externally_defined_style для интерфейса не задан, то используется стиль точки asterisk_point. При этом ошибка не возникает.

Внутренние ссылки: 6.2.4.1, 8.2.

Ошибки

209

Превышение максимально допустимого количества символов в строке

401

Источник протокола обмена неизвестен

402

Идентификатор внешнего стиля неизвестен

А.10.1.2 Задание записи стиля кривой

Имя функции:

Уровень интерфейса:

1

Set_Curve_Style

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

EXTSOU

S

Имя источника, содержащего определение стиля кривой

(ISO_13584 31, ISO_13584-1 + )

Ввод

CURSTY

S

Идентификатор стиля кривой

Привязка языка FORTRAN:

CALL SET_CURVE_STYLE (EXTSOU, CURSTY)

Результат использования функции

Функция задает новое текущее значение стиля кривой curve_style в таблице статуса интерфейса с именем EXTSOU и идентификатором CURSTY. Источником внешне определенного стиля является настоящий стандарт или любой протокол обмена видами, соответствующий ИСО 13584. При возникновении ошибки никакие изменения не производятся.

Примечания

1 Стиль воспроизведения сущности кривой определен экземпляром сущности api_externally_defined_curve_style с источником source, равным EXTSOU, и идентификатором item_id, равным CURSTY.

2 Стиль кривой также используется сущностью назначения стиля презентации presentation_style_assignment для твердотельной модели solid_model.

3 Если требуемый внешне определенный стиль кривой externally_defined_style для интерфейса не задан, то используется стиль кривой plain_solid_line. При этом ошибки не возникают.

Внутренние ссылки: 6.2.4.2, 8.2.

Ошибки

209

Превышение максимально допустимого количества символов в строке

401

Неизвестный источник протокола обмена

402

Неизвестный идентификатор внешнего стиля

А.10.1.3 Задание записи стиля заполненной области

Имя функции:

Уровень интерфейса:

1

Set_Fill_Area_Style

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

EXTSOU

S

Имя источника, содержащего определение стиля заполненной области

(ISO_13584 31, ISO_13584-1 + )

Ввод

AFASTY

S

Идентификатор стиля заполненной области

Привязка языка FORTRAN:

CALL SET_FILL_AREA_STYLE (EXTSOU, AFASTY)

Результат использования функции

Функция задает новые текущие значения записи fill_area_style в таблице статуса интерфейса, определенные именем EXTSOU и идентификатором AFASTY. Источником внешне определенного стиля является настоящий стандарт или любой протокол обмена видами, соответствующий ИСО 13584. При возникновении ошибки никакие изменения не производятся.

Примечания

1 Стиль воспроизведения сущности заполненной области определен экземпляром сущности api_externally_defined_fill_area_style с источником source, равным EXTSOU и идентификатором item_id, равным AFASTY.

2 Если требуемый внешне определенный стиль externally_defined_style для настоящего интерфейса не задан, то используется стиль заполненной области opaque_fill_area. При этом ошибка не возникает.

Внутренние ссылки: 6.2.4.3, 8.2.

Ошибки

209

Превышение максимально допустимого количества символов в строке

401

Неизвестный источник протокола обмена

402

Неизвестный идентификатор внешнего стиля

А.10.1.4 Задание записи стиля поверхности

Имя функции:

Уровень интерфейса:

1

Set_Surface_Style

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

EXTSOU

S

Имя источника, содержащего определение стиля поверхности

(ISO_13584_31, ISO_13584-1 + )

Ввод

SURSTY

S

Идентификатор стиля поверхности

Привязка языка FORTRAN:

CALL SET_SURFACE_STYLE (EXTSOU, SURSTY)

Результат использования функции

Функция задает новые текущие значения записи surface_style в таблице статуса интерфейса, определенные именем EXTSOU и идентификатором SURSTY. Источником внешне определенного стиля является настоящий стандарт или любой протокол обмена видами, соответствующий ИСО 13584. При возникновении ошибки никакие изменения не производятся.

Примечания

1 Стиль воспроизведения сущности поверхности определен экземпляром сущности api_externally_defined_surface_style с источником source, равным EXTSOU, и идентификатором item_id, равным SURSTY.

2 Стиль поверхности также используется для назначения стиля презентации presentation_style_assignment твердотельных моделей solid_model.

3 Если требуемый внешне определенный стиль externally_defined_style в настоящем интерфейсе не задан, то используется стиль поверхности solid_surface. При этом ошибка не возникает.

Внутренние ссылки: 6.2.4.4, 8.2.

Ошибки

209

Превышение максимально допустимого количества символов в строке

401

Неизвестный источник протокола обмена

402

Неизвестный идентификатор внешнего стиля

А.10.1.5 Задание записи толщины линий штриховки

Имя функции:

Уровень интерфейса:

1

Set_Hatching_Width

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

WIDTH

S

Метка предварительно определенной толщины линий штриховки, описанной в настоящем стандарте

(thin_hatching_line, middle_thick_hatching_line, thick_hatching_line)

Привязка языка FORTRAN:

CALL SET_HATCHING_WIDTH (WIDTH, ERR)

Результат использования функции

Функция задает новые текущие значения записи hatch_width в таблице статуса интерфейса, определенные заданной меткой WIDTH. При возникновении ошибки никакие изменения не производятся.

Примечание - Стиль толщины линий штриховки заполненной области fill_area_style_hatching определен как экземпляр сущности api_pre_defined_hatching_width с именем WIDTH.

Внутренние ссылки: 6.2.5.1, 8.2.

Ошибки

6

Значение строки находится вне допустимого диапазона

А.10.1.6 Задание записи типа линий штриховки

Имя функции:

Уровень интерфейса:

1

Set_Hatching_Curve_Font

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

FONT

S

Метка предварительно определенного типа линий штриховки, описанная в настоящем стандарте

(continuous, dashed, chain, chain_double_dash, dotted)

Привязка языка FORTRAN:

CALL SET_HATCHING_CURVE_FONT (FONT)

Результат использования функции

Функция задает новое текущее значение записи hatch_curve_font в таблице статуса интерфейса, определенное заданной меткой FONT. При возникновении ошибки никакие изменения не производятся.

Примечание - Стиль типа линий штриховки заполненной области fill_area_style_hatching определен как экземпляр сущности api_pre_defined_hatching_curve_font с именем FONT.

Внутренние ссылки: 6.2.5.2, 8.2.

Ошибки

6

Значение строки находится вне допустимого диапазона

А.10.1.7 Задание записи цвета штриховки

Имя функции:

Уровень интерфейса:

1

Set_Hatching_Colour

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

COLOUR

S

Метка предварительно определенного цвета штриховки, описанная в настоящем стандарте

hatch_line_colour

Привязка языка FORTRAN:

CALL SET_HATCHING_COLOUR (COLOUR)

Результат использования функции

Функция задает новое текущее значение записи hatch_colour в таблице статуса интерфейса, определенное заданной меткой COLOUR. При возникновении ошибки никакие изменения не производятся.

Примечание - Стиль толщины линий штриховки заполненной области fill_area_style_hatching определен как экземпляр сущности api_pre_defined_hatching_colour с именем COLOUR.

Внутренние ссылки: 6.2.5.3, 8.2.

Ошибки

6

Значение строки находится вне допустимого диапазона

А.10.1.8 Задание аспекта невидимых линий

Имя функции:

Уровень интерфейса:

1

Set_Hidden_Line_Aspect

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

HIDSTY

S

Метка стиля невидимой линии, описанная в настоящем стандарте

(hidden_line_no_changed, hidden_line_dashed, hidden_line_invisible)

Привязка языка FORTRAN:

CALL SET_HIDDEN_LINE_ASPECT (HIDSTY)

Результат использования функции

Функция задает новое текущее значение записи hidden_line_aspect в таблице статуса интерфейса, определенное заданной меткой HIDSTY. При возникновении ошибки никакие изменения не производятся.

Примечание - Изображение невидимых линий определяется в таблице статуса интерфейса атрибутом сущности api_pre_defined_occlusion_style с именем HIDSTY и уровнем вида view_level, равным соответствующей текущей записи view_level.

Внутренние ссылки: 6.2.2.1, 6.2.5.4, 8.2.

Ошибки

6

Значение строки находится вне допустимого диапазона

А.10.1.9 Задание записи относительного уровня вида

Имя функции:

Уровень интерфейса:

1

Set_Relative_View_Level

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

RVL

D

Виртуальная высота (уровень вида)

Привязка языка FORTRAN:

CALL SET_RELATIVE_VIEW_LEVEL (RVL)

Результат использования функции

Функция задает новое текущее значение записи view_level в таблице статуса интерфейса, определенное заданным значением RVL. При возникновении ошибки никакие изменения не производятся.

Примечания

1 Значение |RVL| не может находиться в интервале между ZERO_value и EPS.

2 Относительный уровень вида определен атрибутом view_level сущности api_pre_defined_occlusion_style.

Внутренние ссылки: 6.2.2.1, 6.2.5.4, 8.2.

Ошибки

7

Действительное значение находится вне допустимого диапазона

А.10.2 Запросы атрибутов визуализации из глобальных записей

Запрос записи стиля точки

lnq_Point_Style

Запрос записи стиля кривой

lnq_Curve_Style

Запрос записи стиля заполненной области

lnq_Fill_Area_Style

Запрос записи стиля поверхности

lnq_Surface_Style

Запрос записи толщины линий штриховки

lnq_Hatching_Width

Запрос записи типа линий штриховки

lnq_Hatching_Curve_Font

Запрос записи цвета штриховки

lnq_Hatching_Colour

Запрос записи аспекта невидимых линий

lnq_Hidden_Line_Aspect

Запрос записи относительного уровня вида

lnq_Relative_View_Level

А.10.2.1 Запрос записи стиля точки

Имя функции:

Уровень интерфейса:

1

lnq_Point_Style

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

EXTSOU

S

Имя источника, содержащего определение стиля точки

(ISO_13584_31, ISO_13584-1 + )

Вывод

PNTSTY

S

Идентификатор стиля точки

Вывод

ERR

Е

Индикатор ошибки error_indicato

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_POINT_STYLE (EXTSOU, PNTSTY, ERR)

Результат использования функции

Функция доставляет текущее значение записи стиля точки point_style из таблицы статуса интерфейсa. Индикатор ошибки error_indicator с именем ERR сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Стиль воспроизведения точки определен экземпляром сущности api_externally_defined_point_style с источником source, равным EXTSOU, и идентификатором item_id, равным PNTSTY.

Внутренние ссылки: 6.2.4.1, 8.2.

Ошибки

-

Ошибок нет

А.10.2.2 Запрос записи стиля кривой

Имя функции:

Уровень интерфейса:

1

lnq_Curve_Style

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

EXTSOU

S

Имя источника, содержащего определение стиля кривой

(ISO_13584_31, ISO_13584-1 + )

Ввод

CURSTY

S

Идентификатор стиля кривой

Вывод

ERR

Е

Индикатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_CURVE_STYLE (EXTSOU, CURSTY, ERR)

Результат использования функции

Функция доставляет текущее значение записи curve_style из таблицы статуса интерфейсa. Индикатор ошибки error_indicator с именем ERR сообщает о проблемах, возникающих в процессе выполнения функции.

Примечания

1 Стиль воспроизведения кривой определен экземпляром сущности api_externally_defined_curve_style с источником, равным EXTSOU, и идентификатором item_id, равным CURSTY.

2 Стиль кривой используется также при назначении стиля представления presentation_style_assignment твердотельной модели solid_model.

Внутренние ссылки: 6.2.4.2, 8.2.

Ошибки

-

Ошибок нет

А.10.2.3 Запрос записи стиля заполненной области

Имя функции:

Уровень интерфейса:

1

lnq_Fill_Area_Style

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

EXTSOU

S

Имя источника, содержащего определение стиля заполненной области

(ISO_13584_31, ISO_13584-1 + )

Вывод

AFASTY

S

Идентификатор стиля заполненной области

Вывод

ERR

Е

Идентификатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_FILL_AREA_Style (EXTSOU, AFASTY, ERR)

Результат использования функции

Функция доставляет текущее значение записи fill_area_style из таблицы статуса интерфейсa. Индикатор ошибки error_indicator с именем ERR сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Стиль воспроизведения заполненной области определяется экземпляром сущности api_externally_defined_fill_area_style с источником source, равным EXTSOU, и идентификатором item_id, равным AFASTY.

Внутренние ссылки: 6.2.4.3, 8.2.

Ошибки

-

Ошибок нет

А.10.2.4 Запрос записи стиля поверхности

Имя функции

Уровень интерфейса:

1

lnq_Surface_Style

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

EXTSOU

S

Имя источника, содержащего определение стиля поверхности

(ISO_13584_31, ISO_13584-1 + )

Вывод

SURSTY

S

Идентификатор стиля поверхности

Вывод

ERR

Е

Индикатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_SURFACE_STYLE (EXTSOU, SURSTY, ERR)

Результат использования функции

Функция доставляет текущее значение записи surface_style из таблицы статуса интерфейсa. Индикатор ошибки error_indicator с именем ERR сообщает о проблемах, возникающих в процессе выполнения функции.

Примечания

1 Стиль воспроизведения поверхности определен экземпляром сущности api_externally_defined_surface_style с источником source, равным EXTSOU, и идентификатором item_id, равным SURSTY.

2 Стиль поверхности используется также при назначении стиля представления presentation_style_assignment твердотельной модели solid_model.

Внутренние ссылки: 6.2.4.4, 8.2.

Ошибки

-

Ошибок нет

А.10.2.5 Запрос записи толщины линий штриховки

Имя функции:

Уровень интерфейса:

1

lnq_Hatching_Width

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

WIDTH

S

Метка предварительно определенной толщины линий штриховки, описанной в настоящем стандарте

(thin_hatching_line, middle_thick_hatching_line, thick_hatching_line)

Вывод

ERR

Е

Индикатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_HАТСНING_WIDTH (WIDTH, ERR)

Результат использования функции

Функция доставляет текущее значение записи hatch_width из таблицы статуса интерфейсa. Индикатор ошибки error_indicator с именем ERR сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Стиль толщины линий штриховки заполненной области fill_area_style_hatching определен экземпляром сущности api_pre_defined_hatching_width с именем WIDTH.

Внутренние ссылки: 6.2.5.1, 8.2.

Ошибки

-

Ошибок нет

А.10.2.6 Запрос записи типа линий штриховки

Имя функции:

Уровень интерфейса:

1

lnq_Hatching_Curve_Font

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

FONT

S

Метки предварительно определенных типов линий штриховки, описанных в настоящем стандарте

continuous, dashed, chain, chain double dash, dotted

Вывод

ERR

Е

Индикатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_HATCHING_CURVE_FONT (FONT, ERR)

Результат использования функции

Функция доставляет текущее значение записи hatch_curve_font из таблицы статуса интерфейсa. Индикатор ошибки error_indicator с именем ERR сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Тип кривой штриховки заполненной области fill_area_style_hatching определен экземпляром сущности api_pre_defined_hatching_curve_font с именем FONT.

Внутренние ссылки: 6.2.5.2, 8.2.

Ошибки

-

Ошибок нет

А.10.2.7 Запрос записи цвета штриховки

Имя функции:

Уровень интерфейса:

1

lnq_Hatching_Colour

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

COLOUR

S

Метка предварительно определенного цвета штриховки, описанного в настоящем стандарте

hatch_line_colour

Вывод

ERR

Е

Индикатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_HATCHING_COLOUR (COLOUR, ERR)

Результат использования функции

Функция доставляет текущее значение записи hatch_colour из таблицы статуса интерфейсa. Индикатор ошибки error_indicator с именем ERR сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Толщина линий штриховки заполненной области fill_area_style_hatching определена экземпляром сущности api_pre_defined_hatching_colour с именем COLOUR.

Внутренние ссылки: 6.2.5.3, 8.2.

Ошибки

-

Ошибок нет

А.10.2.8 Запрос записи аспекта невидимых линий

Имя функции:

Уровень интерфейса:

1

lnq_Hidden_Line_Aspect

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

HIDSTY

S

Метка стиля невидимых линий, описанного в настоящем стандарте

(hidden_line_no_changed, hidden_line_dashed, hidden_line_invisible)

Вывод

ERR

Е

Индикатор ошибки еrrоr_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_HIDDEN_LINE_ASPECT (HIDSTY, ERR)

Результат использования функции

Функция доставляет текущее значение записи hidden_line_aspect из таблицы статуса интерфейсa. Индикатор ошибки error_indicator с именем ERR сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Стиль изображения невидимой линии определен атрибутом сущности api_pre_defined_occlusion_style с именем HIDSTY и уровнем вида view_level, равным текущей записи view_level таблицы статуса интерфейса.

Внутренние ссылки: 6.2.2.1, 6.2.5.4, 8.2.

Ошибки

-

Ошибок нет

А.10.2.9 Запрос записи относительного уровня вида

Имя функции:

Уровень интерфейса:

1

lnq_Relative_View_Level

Уровень геометрической мощности:

0, 1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Вывод

RVL

D

Виртуальная высота (уровень вида)

Вывод

ERR

Е

Индикатор ошибки error_indicator

[NOERROR, ERROR]

Привязка языка FORTRAN:

CALL INQ_RELATIVE_VIEW_LEVEL (RVL, ERR)

Результат использования функции

Функция доставляет текущее значение записи view_level из таблицы статуса интерфейсa. Индикатор ошибки error_indicator с именем ERR сообщает о проблемах, возникающих в процессе выполнения функции.

Примечание - Относительный уровень вида определен атрибутом view_level сущности api_pre_defined_occlusion_style.

Внутренние ссылки: 6.2.2.1, 6.2.5.4, 8.2.

Ошибки

-

Ошибок нет

А.10.3 Изменение стиля воспроизведения сущностей

Изменение стиля воспроизведения точки

Chg_Point_Style

Изменение стиля воспроизведения кривой (тела)

Chg_Curve_Style

Изменение стиля воспроизведения заполненной области

Chg_Fill_Area_Style

Изменение стиля воспроизведения поверхности (тела)

Chg_Surface_Style

Изменение толщины линий штриховки сущности fill_area_style_hatching

Chg_Hatching_Width

Изменение типа линий штриховки сущности fill_area_style_hatching

Chg_Hatchmg_Curve_Font

Изменение цвета штриховки сущности fill_area_style_hatching

Chg_Hatching_Aolour

Изменение аспекта невидимых линий

Chg_Hidden_Line_Aspect

Изменение относительного уровня вида для сущности включения невидимых линий

Chg_Relative_View_Level

А.10.3.1 Изменение стиля воспроизведения точки

Имя функции:

Уровень интерфейса:

1

Chg_Point_Style

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

PNTNAM

N

Имя декартовой точки cartesian_point

pnt, grp

Ввод

EXTSOU

S

Имя источника, содержащего определение стиля точки

(ISO_13584_31, ISO_13584-1 + )

Ввод

PNTSTY

S

Идентификатор стиля точки

Привязка языка FORTRAN:

CALL CHG_POINT_STYLE (PNTNAM, EXTSOU, PNTSTY)

Результат использования функции

Функция изменяет стиль воспроизведения декартовой точки cartesian_point с именем PNTNAM путем его переназначения. Новый стиль воспроизведения сущности определен источником с именем EXTSOU и идентификатором PNTSTY. Источником внешне определенного стиля является настоящий стандарт или любой протокол обмена видами, соответствующий ИСО 13584. При возникновении ошибки стиль воспроизведения не изменяется.

Примечания

1 Стиль воспроизведения сущности точки определен экземпляром сущности api_externally_defined_point_style с источником source, равным EXTSOU, и идентификатором item_id, равным PNTSTY.

2 Если требуемый внешне определенный стиль externally_defined_style для интерфейса не задан, то используется стиль точки asterisk_point. При этом ошибка не возникает.

3 Если заданная сущность PNTNAM является экземпляром типа группы api_group, то все сущности cartesian_point, ссылающиеся на данную группу, модифицируются.

Внутренние ссылки: 6.1.9.2, 6.1.19.1, 6.2.4.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

209

Превышение максимально допустимого количества символов в строке

401

Неизвестный источник протокола обмена

402

Неизвестный идентификатор внешнего стиля

А.10.3.2 Изменение стиля воспроизведения кривой (тела)

Имя функции:

Уровень интерфейса:

1

Chg_Curve_Style

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности кривой или твердотельной модели solid_model

curves, solid_model, grp

Ввод

EXTSOU

S

Имя источника, содержащего определение стиля кривой

(ISO_13584_31, ISO_13584-1 + )

Ввод

CURSTY

S

Идентификатор стиля кривой

Привязка языка FORTRAN:

CALL CHG_CURVE_STYLE (ENTNAM, EXTSOU, CURSTY)

Результат использования функции

Функция изменяет стиль воспроизведения заданной кривой или твердотельной модели solid_model с именем ENTNAM путем его переназначения. Новый стиль воспроизведения определен источником с именем EXTSOU и идентификатором CURSTY стиля кривой. Источником внешне определенного стиля является настоящий стандарт или любой протокол обмена видами, соответствующий ИСО 13584. При возникновении ошибки стиль текущего воспроизведения не изменяется.

Примечания

1 Стиль воспроизведения сущности кривой определен экземпляром сущности api_externally_defined_curve_style с источником source, равным EXTSOU, и идентификатором item_id, равным CURSTY.

2 Стиль кривой также используется при назначении стиля представления presentation_style_assignment сущности твердотельной модели solid_model.

3 Если требуемый внешне определенный стиль externally_defined_style в настоящем интерфейсе не задан, то используется стиль кривой plain_solid_line. При этом ошибка не возникает.

4 Если заданная сущность ENTNAM является экземпляром типа группы api_group, то все кривые и твердотельные модели solid_model, ссылающиеся на данную группу, должны быть модифицированы.

Внутренние ссылки: 6.1.10, 6.1.19.1, 6.2.4.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

209

Превышение максимально допустимого количества символов в строке

401

Неизвестный источник протокола обмена

402

Неизвестный идентификатор внешнего стиля

А.10.3.3 Изменение стиля воспроизведения заполненной области

Имя функции:

Уровень интерфейса:

1

Сhg_FiIl_Area_StyIe

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

AFANAM

N

Имя сущности заполненной области

afa, grp

Ввод

EXTSOU

S

Имя источника, содержащего определение стиля заполненной области

(ISO_13584_31, ISO_13584-1 + )

Ввод

AFASTY

S

Идентификатор стиля заполненной области

Привязка языка FORTRAN:

CALL CHG_FILL_AREA_STYLE (AFANAM, EXTSOU, AFASTY)

Результат использования функции

Функция изменяет стиль воспроизведения заданной заполненной области annotation_fill_area с именем AFANAM путем его переназначения. Новый стиль воспроизведения определен источником source с именем EXTSOU и идентификатором AFASTY стиля кривой. Источником внешне определенного стиля является настоящий стандарт или любой протокол обмена видами, соответствующий ИСО 13584. При возникновении ошибки стиль текущего воспроизведения не изменяется.

Примечания

1 Стиль воспроизведения заполненной области определяется экземпляром сущности api_externally_defined_fill_area_style с источником source, равным EXTSOU, и идентификатором item_id, равным AFASTY.

2 Если требуемый внешне определенный стиль externally_defined_style в настоящем интерфейсе не задан, то используется стиль заполненной области opaque_fill_area. При этом ошибка не возникает.

3 Если заданная сущность AFANAM является экземпляром типа группы api_group, то все сущности annotation_fill_area, ссылающиеся на данную группу, модифицируются.

Внутренние ссылки: 6.1.15, 6.1.19.1, 6.2.4.3.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

209

Превышение максимально допустимого количества символов в строке

401

Неизвестный источник протокола обмена

402

Неизвестный идентификатор внешнего стиля

А.10.3.4 Изменение стиля воспроизведения поверхности (тела)

Имя функции:

Уровень интерфейса:

1

Сhg_Surface_StyIe

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя поверхности или сущности solid_model

aps, solid_model, grp

Ввод

EXTSOU

S

Имя источника, содержащего определение стиля поверхности

(ISO_13584_31, ISO_13584-1 + )

Ввод

SURSTY

S

Идентификатор стиля поверхности

Привязка языка FORTRAN:

CALL CHG_SURFACE_STYLE (ENTNAM, EXTSOU, SURSTY)

Результат использования функции

Функция изменяет стиль воспроизведения заданной плоской поверхности api_planar_surface или твердотельной модели solid_model с именем ENTNAM путем его переназначения. Новый стиль воспроизведения определен источником с именем EXTSOU и идентификатором AFASTY стиля поверхности. Источником внешне определенного стиля является настоящий стандарт или любой протокол обмена видами, соответствующий ИСО 13584. При возникновении ошибки стиль текущего воспроизведения не изменяется.

Примечания

1 Стиль воспроизведения поверхности определяется экземпляром сущности api_externally_defined_surface_style с источником source, равным EXTSOU, и идентификатором item_id, равным SURSTY.

2 Стиль поверхности используется также для назначения стиля представления presentation_style_assignment твердотельной модели solid_model.

3 Если требуемый внешне определенный стиль externally_defined_style в настоящем интерфейсе не задан, то используется стиль поверхности solid_surface. При этом ошибка не возникает.

4 Если заданная сущность ENTNAM является экземпляром типа группы api_group, то все плоские поверхности api_planar_surface и твердотельные модели solid_model, ссылающиеся на данную группу, модифицируются.

Внутренние ссылки: 6.1.17, 6.1.18, 6.1.19.1, 6.2.3.2, 6.2.4.4.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

209

Превышение максимально допустимого количества символов в строке

401

Неизвестный источник протокола обмена

402

Неизвестный идентификатор внешнего стиля

А.10.3.5 Изменение толщины линий штриховки сущности fiIl_area_styIe_hatching

Имя функции:

Уровень интерфейса:

1

Chg_Flatching_Width

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

FSHNAM

N

Имя сущности fill_area_style_hatching

fsh, grp

Ввод

WIDTH

S

Метка предварительно определенной толщины линий штриховки, описанной в настоящем стандарте

(thin_hatching_line, middle_thick_hatching_lin, thick_hatching_line)

Привязка языка FORTRAN:

CALL CHG_HATCHING_WIDTH (FSHNAM, WIDTH)

Результат использования функции

Функция изменяет толщину линий штриховки заданной сущности fill_area_style_hatching с именем FSHNAM путем ее переназначения. Новая толщина линий штриховки определена именем WIDTH предварительно определенного стиля штриховки. При возникновении ошибки стиль текущего воспроизведения не изменяется.

Примечания

1 Толщина линий штриховки сущности fill_area_style_hatching определяется экземпляром сущности api_pre_defined_hatching_width с именем WIDTH.

2 Если заданная сущность FSHNAM является экземпляром типа группы api_group, то все сущности fill_area_style_hatching, ссылающиеся на данную группу, модифицируются.

Внутренние ссылки: 6.2.3.2, 6.2.5.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

6

Значение строки находится вне допустимого диапазона

204

Функция несовместима с текущим уровнем мощности

А.10.3.6 Изменение типа линий штриховки сущности fiIl_area_styIe_hatching

Имя функции:

Уровень интерфейса:

1

Chg_Hatching_Curve_Font

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

FSHNAM

N

Имя сущности fill_area_style_hatching

fsh, grp

in

FONT

S

Метка предварительно определенного типа линий штриховки, описанного в настоящем стандарте

continuous, dashed, chain, chain double dash, dotted

Привязка языка FORTRAN:

CALL CHG_HATCHING_CURVE_FONT (FSHNAM, FONT)

Результат использования функции

Функция изменяет тип линий штриховки заданной заполненной области fill_area_style_hatching с именем FSHNAM путем его переназначения. Новый тип линий штриховки определен именем FONT предварительно определенного типа линий штриховки. При возникновении ошибки стиль текущего воспроизведения не изменяется.

Примечания

1 Тип линий штриховки сущности fill_area_style_hatching определен экземпляром сущности api_pre_defined_hatching_curve_font с именем FONT.

2 Если заданная сущность FSHNAM является экземпляром типа группы api_group, то все сущности fill_area_style_hatching, ссылающиеся на данную группу, модифицируются.

Внутренние ссылки: 6.2.3.2, 6.2.5.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

6

Значение строки находится вне допустимого диапазона

204

Функция несовместима с текущим уровнем мощности

А.10.3.7 Изменение цвета штриховки сущности fiIl_area_styIe_hatching

Имя функции:

Уровень интерфейса:

1

Chg_Hatching_Colour

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

FSHNAM

N

Имя сущности fill_area_style_hatching

fsh, grp

Ввод

COLOUR

S

Метка предварительно определенного цвета штриховки, описанного в настоящем стандарте

hatch_line_colour

Привязка языка FORTRAN:

CALL CHG_HATCHING_COLOUR (FSHNAM, COLOUR)

Результат использования функции

Функция изменяет цвет штриховки fill_area_style_hatching сущности FSHNAM путем его переназначения. Новый цвет штриховки определен именем COLOUR предварительно определенного цвета штриховки. При возникновении ошибки стиль текущего воспроизведения не изменяется.

Примечания

1 Цвет штриховки сущности fill_area_style_hatching определяется экземпляром сущности api_pre_defined_hatching_colour с именем COLOUR.

2 Если заданная сущность FSHNAM является экземпляром типа группы api_group, то все сущности fill_area_style_hatching, ссылающиеся на данную группу, модифицируются.

Внутренние ссылки: 6.2.3.2, 6.2.5.3.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

6

Значение строки находится вне допустимого диапазона

204

Функция несовместима с текущим уровнем мощности

А.10.3.8 Изменение аспекта невидимых линий

Имя функции:

Уровень интерфейса:

1

Chg_Hidden_Line_Aspect

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности включения невидимых линий (HLI)

curves, afa, pnt, grp

Ввод

HIDSTY

S

Метка стиля невидимых линий, описанного в настоящем стандарте

hidden_line_no_changed, hidden_line_dashed, hidden_line_invisible

Привязка языка FORTRAN:

CALL CHG_HIDDEN_LINE_ASPECT (ENTNAM, HIDSTY)

Результат использования функции

Функция изменяет стиль представления невидимых линий, если сущность HLI с именем ENTNAM включена. При этом атрибут nаmе с именем HIDSTY соответствующей сущности api_pre_defined_occlusion_style изменяется.

Если глобальные значения записей таблицы статуса интерфейса равны "оn" (включено) для записи hidden_line и "true" для записи hidden_line_involved соответственно, то к сущности ENTNAM подключается сущность api_pre_defined_occlusion_style в процессе ее создания. Заданная сущность может быть экземпляром декартовой точки cariesian_point, экземпляром кривой или экземпляром заполненной области annotation_fill_area. Атрибут nаmе корректируется, если два предшествующих утверждения справедливы. В противном случае возникает ошибка и изображение невидимых линий сущности ENTNAM не изменяется.

Примечания

1 Изображение невидимых линий задается сущностью api_pre_defined_occlusion_style с атрибутом name, равным HIDSTY, и уровнем вида view_level, равным текущей записи view_level таблицы статуса интерфейса.

2 Если заданная сущность ENTNAM является экземпляром типа группы api_group, то все включенные сущности невидимых линий, ссылающиеся на данную группу, модифицируются.

3 Алгоритм включения точек в глобальный процесс удаления невидимых линий в настоящем стандарте не рассматривается. Поэтому если заданная сущность ENTNAM является экземпляром декартовой точки, то интерфейс может изменять или не изменять изображение невидимой линии. Но в любом случае ошибка допустимого типа сущности не возникает.

Внутренние ссылки: 5.3.5, 6.1.12, 6.1.13, 6.1.14, 6.1.15, 6.1.19.1, 6.2.2.1, 6.2.5.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

6

Значение строки находится вне допустимого диапазона

204

Функция несовместима с текущим уровнем мощности

А.10.3.9 Изменение относительного уровня вида для сущности включения невидимых линий

Имя функции:

Уровень интерфейса:

1

Сhg_Relative_View_LeveI

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности включения невидимых линий (HLI)

curves, afa, pnt, grp

Ввод

RVL

D

Виртуальная высота (уровень вида)

Привязка языка FORTRAN:

CALL CHG_RELATIVE_VIEW_LEVEL (ENTNAM, RVL)

Результат использования функции

Функция изменяет изображение невидимых линий для сущности включения невидимых линий (HLI) с именем ENTNAM путем изменения значения атрибута view_level (заданного величиной RVL) сущности api_pre_defined_occlusion_style. Это означает, что если глобальные значения записей таблицы статуса интерфейса равны "оn" (включено) для записи hidden_line и "true" для записи hidden_line_involved соответственно, то к сущности ENTNAM подключается сущность api_pre_defined_occlusion_style в процессе ее создания. Заданная сущность может быть экземпляром декартовой точки cartesian_point, экземпляром кривой или экземпляром заполненной области annotation_fill_area. Атрибут name корректируется, если два предшествующих утверждения справедливы. В противном случае возникает ошибка и изображение текущих невидимых линий сущности ENTNAM не изменяется.

Примечания

1 Значение |RVL| должно находиться в интервале между ZERO_value и EPS.

2 Относительный уровень вида для сущности включения невидимых линий (HLI) определяется атрибутом сущности api_pre_defined_occlusion_style. Поэтому атрибут экземпляра данной сущности, подключенного к сущности ENTNAM, должен быть скорректирован.

3 Если заданная сущность ENTNAM является экземпляром типа группы api_group, то все сущности HLI, ссылающиеся на данную группу, модифицируются.

4 Алгоритм включения точек в глобальный процесс удаления невидимых линий в настоящем стандарте не рассматривается. Поэтому если заданная сущность ENTNAM является экземпляром декартовой точки cartesian_point, то интерфейс может изменять или не изменять изображение невидимой линии. Но в любом случае ошибка диапазона допустимого типа сущности не возникает.

Внутренние ссылки: 5.3.5, 6.1.12, 6.1.13, 6.1.14, 6.1.15, 6.1.19.1, 6.2.2.1, 6.2.5.4.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

7

Действительное значение находится вне допустимого диапазона

204

Функция несовместима с текущим уровнем мощности

404

Стиль затенения невидимых линий не подключен

А.10.4 Запрос стиля элемента из сущности

Запрос стиля точки из сущности точки

Retrieve_Point_Style

Запрос стиля кривой из сущности кривой (тела)

Retrieve_Curve_Style

Запрос стиля заполненной области из сущности заполненной области

Retrieve_Fill_Area_Style

Запрос стиля поверхности из сущности поверхности (тела)

Retrieve_Surface_Style

Запрос толщины линий штриховки из сущности fill_area_style_hatching

Retrieve_Hatching_Width

Запрос типа линий штриховки из сущности fill_area_style_hatching

Retrieve_Hatching_Curve_Font

Запрос цвета штриховки из сущности fill_area_style_hatching

Retrieve_Hatching_Colour

Запрос аспекта невидимых линий из HLI-сущности

Retrieve_Hidden_Line_Aspect

Запрос относительного уровня вида из HLI-сущности

Retrieve_Relative_View_Level

А.10.4.1 Запрос стиля точки из сущности точки

Имя функции:

Уровень интерфейса:

1

Retrieve_Point_Style

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип
данных

Смысл

Допустимый тип/значение

Ввод

PNTNAM

N

Имя сущности cartesian_point

pnt

Вывод

EXTSOU

S

Имя источника, содержащего определение стиля точки

(ISO_13584 31, ISO_13584-1 +)

Вывод

PNTSTY

S

Идентификатор стиля точки

Привязка языка FORTRAN:

CALL RETRIEVE_POINT_STYLE (PNTNAM, EXTSOU, PNTSTY)

Результат использования функции

Функция запрашивает стиль точки из существующей сущности cartesian_point с именем PNTNAM. Если возникает ошибка, то выходным значением для параметров EXTSOU и PNTSTY является пустая строка.

Примечание - Стиль воспроизведения точки определен экземпляром сущности api_externally_defined_point_style с источником, равным EXTSOU, и идентификатором item_id, равным PNTSTY.

Внутренние ссылки: 6.1.9.2, 6.1.19.1, 6.2.4.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

1003

Неправильная длина строки

А.10.4.2 Запрос стиля кривой из сущности кривой (тела)

Имя функции:

Уровень интерфейса:

1

Retrieve_Curve_Style

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности кривой curve или твердотельной модели solid_model

curves, solid_model

Вывод

EXTSOU

S

Имя источника, содержащего определение стиля кривой

(ISO_13584_31, ISO_13584-1 + )

Вывод

CURSTY

S

Идентификатор стиля кривой

Привязка языка FORTRAN:

CALL RETRIEVE_CURVE_STYLE (ENTNAM, EXTSOU, CURSTY)

Результат использования функции

Функция запрашивает стиль кривой из существующей сущности кривой curve или сущности твердотельной модели solid_model с именем ENTNAM. Если возникает ошибка, то выходным значением параметров EXTSOU и CURSTY является пустая строка.

Примечания

1 Стиль воспроизведения кривой определен экземпляром сущности api_externally_defined_curve_style с источником, равным EXTSOU, и идентификатором item_id, равным CURSTY.

2 Стиль кривой используется также для назначения стиля представления presentation_style_assignment для сущности твердотельной модели solid_model.

Внутренние ссылки: 6.1.10, 6.1.19.1, 6.2.4.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

1003

Неправильная длина строки

А.10.4.3 Запрос стиля заполненной области из сущности заполненной области

Имя функции:

Уровень интерфейса:

1

Retrieve_FiIl_Area_StyIe

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

AFANAM

N

Имя сущности заполненной области

afa

Вывод

EXTSOU

S

Имя источника, содержащего определение стиля заполненной области

(ISO_13584_31, ISO_13584-1 + )

Вывод

AFASTY

S

Идентификатор стиля заполненной области

Привязка языка FORTRAN:

CALL RETRIEVE_FILL_AREA_STYLE (AFANAM, EXTSOU, AFASTY)

Результат использования функции

Функция запрашивает стиль заполненной области из существующей сущности annotation_fill_area с именем AFANAM. Если возникает ошибка, то выходным значением для параметров EXTSOU и AFASTY является пустая строка.

Примечание - Стиль воспроизведения заполненной области определен экземпляром сущности api_externally_defined_fill_area_style с источником, равным EXTSOU, и идентификатором item_id, равным AFASTY.

Внутренние ссылки: 6.1.15, 6.1.19.1, 6.2.4.3.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

1003

Неправильная длина строки

А.10.4.4 Запрос стиля поверхности из сущности поверхности (тела)

Имя функции:

Уровень интерфейса:

1

Retrieve_Surface_Style

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности поверхности api_planar_surface или твердотельной модели solid_model

aps, solid_model

Вывод

EXTSOU

S

Имя источника, содержащего определение стиля поверхности

(ISO_13584_31, ISO_13584-1 + )

Вывод

SURSTY

S

Идентификатор стиля поверхности

Привязка языка FORTRAN:

CALL RETRIEVE_SURFACE_STYLE (ENTNAM, EXTSOU, SURSTY)

Результат использования функции

Функция запрашивает стиль поверхности из существующей сущности плоской поверхности api_planar_surface или сущности твердотельной модели solid_model с именем ENTNAM. При возникновении ошибки выходным значением параметров EXTSOU и SURSTY является пустая строка.

Примечания

1 Стиль воспроизведения поверхности определен экземпляром сущности api_externally_defined_surface_style с источником, равным EXTSOU, и идентификатором item_id, равным SURSTY.

2 Стиль поверхности используется также при назначении стиля представления presentation_style_assignment твердотельной модели solid_model.

Внутренние ссылки: 6.1.17, 6.1.18, 6.1.19.1, 6.2.3.2, 6.2.4.4.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

1003

Неправильная длина строки

А.10.4.5 Запрос толщины линий штриховки из сущности fill_area_style_hatching

Имя функции:

Уровень интерфейса:

1

Retrieve_Hatching_Width

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/
вывод

Имя

Тип
данных

Смысл

Допустимый тип/значение

Ввод

FSHNAM

N

Имя сущности fill_area_style_hatching

fsh

Вывод

WIDTH

S

Метка предварительно определенной толщины линий штриховки, описанной в настоящем стандарте

thin_hatching_line, middle_thick_hatching_line, thick_hatching_line

Привязка языка FORTRAN:

CALL RETRIEVE_HATCHING_WIDTH (FSHNAM, WIDTH)

Результат использования функции

Функция запрашивает толщину линий штриховки из существующей сущности fill_area_style_hatching с именем FSHNAM. Если возникает ошибка, то выходное значение параметра WIDTH является пустой строкой.

Примечание - Толщина линий штриховки заполненной области fill_area_style_hatching определена экземпляром сущности api_pre_defined_hatching_width с именем WIDTH.

Внутренние ссылки: 6.2.3.2, 6.2.5.1.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

1003

Неправильная длина строки

А.10.4.6 Запрос типа линий штриховки из сущности fiIl_area_styIe_hatching

Имя функции:

Уровень интерфейса:

1

Retrieve_Hatching_Curve_Font

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

FSHNAM

N

Имя сущности fill_area_style_hatching

fsh

Вывод

FONT

S

Метка предварительно определенного типа линий штриховки, описанного в настоящем стандарте

continuous, dashed, chain, chain_double_dash, dotted

Привязка языка FORTRAN:

CALL RETRIEVE_HATCHING_CURVE_FONT (FSHNAM, TYPE)

Результат использования функции

Функция запрашивает тип линий штриховки из существующей сущности fill_area_style_hatching с именем FSHNAM. Если возникает ошибка, то выходным значением является пустая строка.

Примечание - Тип линий штриховки заполненной области fill_area_style_hatching определен экземпляром сущности api_pre_defined_hatching_curve_font с именем FONT.

Внутренние ссылки: 6.2.3.2, 6.2.5.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

1003

Неправильная длина строки

А.10.4.7 Запрос цвета штриховки из сущности fiIl_area_styIe_hatching

Имя функции:

Уровень интерфейса:

1

Retrieve_Hatching_Colour

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

FSHNAM

N

Имя сущности fill_area_style_hatching

fsh

Вывод

COLOUR

S

Метка предварительно определенного цвета штриховки, описанного в настоящем стандарте

hatch_line_colour

Привязка языка FORTRAN:

CALL RETRIEVE_HATCHING_COLOUR (FSHNAM, COLOUR)

Результат использования функции

Функция запрашивает цвет штриховки из существующей сущности fill_area_style_hatching с именем FSHNAM. Если возникает ошибка, то выходным значением параметра COLOUR является пустая строка.

Примечание - Цвет штриховки заполненной области fill_area_style_hatching определен экземпляром сущности api_pre_defined_hatching_colour с именем COLOUR.

Внутренние ссылки: 6.2.3.2, 6.2.5.3.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

1003

Неправильная длина строки

А.10.4.8 Запрос аспекта невидимых линий из HLI-сущности

Имя функции:

Уровень интерфейса:

1

Retrieve_Hidden_Line_Aspect

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности включения невидимых линий

curves, afa, pnt

Вывод

HIDSTY

S

Метка стиля невидимых линий, описанного в настоящем стандарте

hidden_line_no_changed, hidden_line_dashed, hidden_line_invisible

Привязка языка FORTRAN:

CALL RETRIEVE_HIDDEN_LINE_ASPECT (ENTNAM, HIDSTY)

Результат использования функции

Функция запрашивает стиль невидимых линий из существующей HLI-сущности с именем ENTNAM. Заданная сущность может быть экземпляром кривой, заполненной областью annotation_fill_area или декартовой точкой cartesian_point. При возникновении ошибки выходным значением параметра HIDSTY является пустая строка.

Примечания

1 Если ни один из стилей невидимых линий не подключен к рассматриваемой сущности ENTNAM, то ошибка не возникает, но выходным значением параметра HIDSTY является пустая строка.

2 Изображение невидимых линий определено атрибутом сущности api_pre_defined_occlusion_style с именем HIDSTY и уровнем вида view_level, равным текущей записи view_level из таблицы статуса интерфейса.

3 Включение точек в глобальный процесс удаления невидимых линий в настоящем стандарте не рассматривается.

Внутренние ссылки: 5.3.5, 6.1.12, 6.1.13, 6.1.14, 6.1.15, 6.1.19.1, 6.2.2.1, 6.2.5.4, 8.2.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

1003

Неправильная длина строки

А.10.4.9 Запрос относительного уровня вида из HLI-сущности

Имя функции:

Уровень интерфейса:

1

Retrieve_Relative_View_Level

Уровень геометрической мощности:

1, 2, 3

Параметры

Ввод/вывод

Имя

Тип данных

Смысл

Допустимый тип/значение

Ввод

ENTNAM

N

Имя сущности включения невидимых линий

curves, afa, pnt

Вывод

RVL

D

Виртуальная высота (уровень вида)

Привязка языка FORTRAN:

CALL RETRIEVE_RELATIVE_VIEW_LEVEL (ENTNAM, RVL)

Результат использования функции

Функция запрашивает относительный уровень вида RVL подключенного атрибута api_pre_defined_occlusion_style существующей сущности включения невидимых линий с именем ENTNAM. При возникновении ошибки выходным значением параметра RVL является пустое множество.

Примечания

1 Если ни один из стилей невидимых линий настоящей сущности ENTNAM не назначен, то ошибка не возникает и выходным значением параметра RVL является пустое множество.

2 Относительный уровень вида для HLI-сущности определен атрибутом view_level сущности api_pre_defined_occlusion_style, поэтому значение данного атрибута и является выходным.

3 Включение точек в глобальный процесс удаления невидимых линий в настоящем стандарте не рассматривается.

Внутренние ссылки: 5.3.5, 6.1.12, 6.1.13, 6.1.14, 6.1.15, 6.1.19.1, 6.2.2.1, 6.2.5.4.

Ошибки

1

Имя сущности не определено (равно 0 или неизвестно)

2

Недопустимый тип сущности

204

Функция несовместима с текущим уровнем мощности

Приложение В
(справочное)


Регистрация информационного объекта

В.1 Идентификатор документа

Для обеспечения однозначной идентификации информационных объектов в открытых системах настоящего стандарта присвоен идентификатор:

{ISO standard 13584 part (31) version (1)}.

Значение данного идентификатора определено ИСО 8824-1.

В.2 Идентификатор схемы

Схеме API_ABSTRACT_SCHEMA интерфейса прикладного программирования (см. раздел 6) присвоен идентификатор:

{ISO standard 13584 part (31) version (1) object (1) API-abstract-schema (1)}.

B.3 Идентификатор интерфейса

Интерфейсу программирования, определенному в приложении А, присвоен идентификатор:

{ISO standard 13584 part (31) version (1) object (1) interface (2)}.

Приложение ДА
(справочное)


Сведения о соответствии ссылочных международных стандартов ссылочным национальным стандартам Российской Федерации

Таблица ДА.1

Обозначение ссылочного международного стандарта

Степень
соот-
ветствия

Обозначение и наименование соответствующего национального стандарта

ИСО 128:1982

*

ИСО 1539:1991

*

ИСО/МЭК 8824-11

*

ИСО 10303-11:1994

IDT

ГОСТ Р ИСО 10303-11-2009 "Системы промышленной автоматизации и их интеграция. Представление данных о продукции и обмен данными. Часть 11. Методы описания: справочное руководство по языку EXPRESS"

ИСО 10303-41:1994

IDT

ГОСТ Р ИСО 10303-41-99 "Системы промышленной автоматизации и их интеграция. Представление данных о продукции и обмен данными. Часть 41. Основные понятия описания и поддержки продукта"

ИСО 10303-42:1994

*

ИСО 10303-43:1994

IDT

ГОСТ Р ИСО 10303-43-2002 "Системы промышленной автоматизации и их интеграция. Представление данных о продукции и обмен данными. Часть 43. Интегрированный ресурс: структуры представлений"

ИСО 10303-46:1994

IDT

ГОСТ Р ИСО 10303-46-2002 "Системы промышленной автоматизации и их интеграция. Представление данных о продукции и обмен данными. Часть 46. Интегрированный групповой ресурс: визуальное представление"

* Соответствующий национальный стандарт отсутствует (в разработке). До его утверждения рекомендуется использовать перевод на русский язык данного международного стандартa. Перевод данного международного стандарта находится в Федеральном информационном фонде технических регламентов и стандартов.

Примечание - В настоящей таблице использовано следующее условное обозначение степени соответствия стандартов:

- IDT - идентичные стандарты.

Библиография

[1]

ИСО 4014:1988 (ISO 4014:1988) Болты с шестигранной головкой. Классы изделия A и B (Hexagon head bolts - Product grades A and B)

[2]

ИСО 10303-22:1998 (ISO 10303-22:1998) Системы промышленной автоматизации и их интеграция. Представление данных о продукции и обмен данными. Часть 22. Методы реализации. Стандартный интерфейс по доступу к данным (Industrial automation systems - Product data representation and exchange - Part 22: Implementation methods: Standard data access interface)

УДК 658.52.011.56:006.354

OKC 25.040.40

T58

Ключевые слова: автоматизированные промышленные системы, интеграция, жизненный цикл систем, управление производством

Электронный текст документа

и сверен по:

, 2016