Разработка метода информационной совместимости программных средств автоматизации начальных этапов проектирования изделий
Изучение программно-математического обеспечения информационной совместимости, анализ проблем. Реализация и преимущества преобразования данных в CAD/CAM-системах. Представление кривых и поверхностей в NURBS. Проблемы сохранения точности и валидации.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | диссертация |
Язык | русский |
Дата добавления | 13.09.2014 |
Размер файла | 3,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
P->lsKind(STANDARD_TYPE(Geom_CartesianPoint)); ij(result)
cout«»P - CartesianPoint»«endl;
//Пример использования DynamicType, когда нам требуется знать
//что два объекта одного и того же типа.
Handle(Standard_Type) DYNCP = CP->DynamicType();
Handle(StandardType) DYNP = P->DynamicType();
result = D YNC->Sub Type(DYNCP);
2.4 Структуризация начальных этапов проектирования изделий
Начальный этап проектирования нового изделия обычно называют разработкой технических требований, хотя это название не является ни строгим, ни единственным [1]. Структуризация начального этапа проектирования новых изделий является необходимой как для понимания протекающих здесь процессов, так и для построения той модели предметной области, которая должна быть положена в основу при использовании PLM-решений.
Процесс разработки носит поэтапно-итеративный характер, то есть протекает не в виде строгой последовательности, когда каждый этап завершается до начала следующего. В реальности этапы могут перекрываться во времени или выполняться с проведением итераций. Содержание этапов процесса разработки концепции изделия состоит в следующем:
* идентификация запросов потребителей. Цель данного этапа -- понять запросы потребителей и установить связь между ними и разработчиками изделия. Результатом работы на данном этапе является тщательно составленное описание перечня запросов потребителей, оформленное в виде иерархического списка, с указанием весовых коэффициентов значимости для каждого вида запросов;
* установка целевых технических требований. Технические требования определяют основные характеристики изделия. Они представляют собой перевод запросов потребителя на язык технических терминов. Целевые технические требования отражают наиболее оптимистичные прогнозы разработчиков. Впоследствии эти технические требования дорабатываются с учетом ограничений, налагаемых особенностями тех концепций изделия, которые выбраны разработчиками для дальнейшего продвижения;
* выработка концепций изделия. Цель этапа выработки концепций -- всесторонне исследовать область таких концепций изделия, которые могли бы обеспечить удовлетворение запросов потребителей. Выработка концепций сочетает в себе внешний поиск, разработку собственных методов решения проблемы и изучение различных частных решений, предлагаемых разработчиками. В данном случае результатом работы является набор концепций, каждая из которых представлена в виде эскизов и краткого текстового описания;
* отбор концепций изделия. На данном этапе различные концепции изделия подвергаются анализу и последовательной отбраковке с целью выявления наиболее перспективной концепции (или концепций). Процесс обычно требует нескольких итераций и может инициировать формирование новых концепций или доработку имеющихся;
* тестирование концепций изделия. Одна или несколько концепций тестируются для проверки того, насколько хорошо они учитывают запросы потребителей, а также с целью оценки потенциала рынка и выявления любых недостатков, которые должны быть устранены при последующей разработке. Если отклики потребителей неблагоприятны, проект может быть остановлен или, если это необходимо, некоторые предыдущие шаги процесса могут быть повторены;
* фиксация конечных технических требований. На данном этапе установленные ранее целевые технические требования подвергаются ревизии. Разработчики должны зафиксировать конкретные значения показателей с учетом ограничений, присущих концепции изделия и ограничений, выявленных при техническом моделировании, а также с учетом компромиссов между стоимостью и изготовлением изделия;
* планирование следующих этапов разработки. На этом завершающем этапе разработки концепции формируются план-график, определяющий сроки разработки, и перечень ресурсов, необходимых для выполнения проекта;
* проведение экономического анализа. Команда разработки, обычно с помощью специалистов финансовых служб, строит для нового изделия экономическую модель. Эта модель используется в целях обоснования продолжения общей программы разработки и для расчета отдельных компромиссных решений, например для нахождения компромисса между стоимостью разработки и стоимостью производства изделия;
* оценка конкурирующих изделий. Знание конкурирующих изделий крайне необходимо для правильного позиционирования нового изделия и может послужить источником идей при разработке, как самого изделия, так и процессов его изготовления;
* создание тестируемых моделей и прототипов. На каждом из этапов разработки концепции изделия используются различные виды моделей и прототипов. Такие модели могут включать следующие разновидности: доказывающие модели, которые помогают команде разработчиков продемонстрировать осуществимость проекта; дизайнерские модели, которые могут быть продемонстрированы потребителям для оценки внешнего вида и эргономичности изделия; табличные модели -- для оценки технических компромиссов.
Даже из поверхностного рассмотрения перечисленных этапов, очевидно, что в них циркулируют большие объемы разнородной информации. Эта информация является составной частью проекта и должна храниться таким образом, чтобы исключить дублирование данных, обеспечить возможность коллективной работы над проектом, реализовать распределение прав доступа, облегчить и автоматизировать управление проектом. Как известно, все эти функции реализуются с помощью PDM-системы, обеспечивающей поддержку информации об изделии на различных этапах его жизненного цикла и позволяющей организовать совместную работу над проектом в едином информационном пространстве.
Рис. 2.5. Структуризация этапа разработки концепции нового изделия
Описанная выше структуризация может служить основой для построения объектно-ориентированной модели предметной области на этапе разработки концепции изделия. Для этого используются специальные средства PDM-системы. Предварительно модель может быть построена в виде диаграммы классов графического языка UML.
Конкретный вид объектно-ориентированной модели зависит от ряда факторов: от характера разрабатываемого изделия, от существующих на предприятии подходов к начальным этапам проектирования, от имеющегося уровня компьютеризации и уровня понимания методов PLM. Однако, в любом случае, предприятие не должно рассчитывать на то, что построение модели предметной области выполнит поставщик PDM-системы-- он может сделать это только при активном участии специалистов и руководящего технического персонала предприятия.
Формализация проектных процедур на этапе разработки концепции изделия не только обеспечивает построение модели предметной области, но и создает предпосылки для автоматизации управления проектными работами с помощью средств PDM-системы.
Помимо задач хранения и управления проектной информацией, PDM-система позволяет при необходимости реализовать в своей среде некоторые проектные процедуры, которые не поддерживаются средствами CAD- или CAE-систем, выполняющих вместе с PDM-системой роль штатных PLM-решений. К числу таких проектных процедур, выполняемых на этапе разработки концепции изделия, можно отнести, например, табличные процедуры отбраковки и ранжирования, выполняемые при отборе перспективных концепций. Для реализации подобных процедур в PDM-системе существуют средства программирования.
Средства CAD- и CAE-систем на этапе разработки концепции изделия могут применяться так же, как и на более поздних этапах. Например, при выработке концепции изделия могут быть построены упрощенные ЗО-модели или чертежи (эскизы), выполнены прочностные расчеты. ЗВ-модели могут играть роль виртуальных прототипов, представляемых потребителю для тестирования концепций. Эти модели могут быть тем первичным материалом, на основании которого впоследствии разрабатываются окончательная модель и цифровой макет изделия. Упрощенный (концептуальный) характер моделей не означает, что для их построения достаточно применения несложных CAD-систем. Так, при разработке концепции дизайна изделия может понадобиться работа со сложными поверхностями, а при оценке эргономичности -- специальные средства системного синтеза, которые характерны для такой мощной CAD-системы, как CATIA. Еще раз подчеркнем, что все полученные значимые результаты должны храниться в единой базе данных PDM-системы как составные части проекта.
2.5 Выводы
Стандарт STEP и реализованный для него язык Express помогают внедрению CALS-технологий на производственных предприятиях. Их преимущества видны прежде всего в рамках разработки конструкторской документации. Системы предоставят лёгкий поиск, редактирование и передачу документов. Они помогут в разработке, автоматически заполняя поля, беря данные из текущего профиля пользователя. Однако данные технологии имеют два существенных недостатка:
1. Высокая цена, включающая не только цены оборудования, программного обеспечения и внедрения, но и обучения персонала;
2. Сложности обеспечения сохранности данных и защиты информации.
Также необходимо отметить тот факт, что успех, достигнутый на начальных этапах разработки нового изделия, не только существенно сокращает последующие сроки и стоимость проектирования, но и во многом определяет конечный успех проекта. Поэтому при разработке новых изделий необходимо обращать особое внимание на автоматизацию начальных этапов проектирования новых изделий.
Инвариантность методики по отношению к различному математическому обеспечению. Преимуществом предлагаемой методики является её инвариантность по отношению к использованию того или иного математического ядра. Действительно, идеология передачи информационного потока не зависит от конкретных математических функций. Главным условием является согласованность математического аппарата на уровне управления (и хранения данных), и уровне реализации. Тем самым методика позволяет разработчикам использовать наиболее подходящее математическое обеспечение для решения конкретных задач.
Глава 3. Вопросы разработки программно-математического обеспечения метода информационной совместимости
В данной главе подробно описаны структуры и алгоритмы, использованные в работе. Обоснован выбор формата для хранения данных при преобразовании между различными программными средствами автоматизации начальных этапов проектирования изделий.
3.1 Внутренние структуры данных
Структуры данных для хранения геометрической информации.
Поскольку в качестве языка программирования был выбран объектно- ориентированный язык С++, то было решено представить все множество геометрических объектов в виде иерархии классов, пронаследованных от одного единственного (общего) предка [28], называемого «базовым классом». Данный базовый класс назовем Geometricltem (сразу же необходимо отметить, что подобный же подход использован при реализации стандарта ISO 10303 (STEP), который реализован на объектно-ориентированном языке ЭКСПРЕСС). Такая реализация имеет следующие преимущества:
а)Возможно получение единой структуры, подчиненной общим правилам.
б)Благодаря наследованию исчезает необходимость переписывать одни и те же процедуры и функции несколько раз.
в)Общий набор функций в базовых объектах может быть описан как виртуальный.
В качестве хранилища объектов внутреннего формата был выбран простой одномерный массив указателей на базовый объект с возможностью динамического изменения размера. Преимущества такого подхода очевидны (мы получаем возможность мгновенного индексированного доступа к любому элементу, например, запомнив нужный индекс при обработке). Кроме того, динамическое изменение размера предоставляет нам возможность не «заботиться» о размере массива. В случае статического выделения памяти приходится или сразу выделять произвольно большое количество памяти, или помещать вызов процедуры изменения размера выделенного блока непосредственно в код программы в необходимых местах. Благодаря средствам ООП, в частности, перегрузке операций [28], многие действия скрыты от пользователя.
В диссертационной работе применяется класс, основанный на динамическом массиве. Ниже приводится описание этого класса, включая все необходимые для работы с ним методы. Данный класс является надстройкой над классом РАггау, и предоставляет удобный интерфейс для работы с набором геометрических элементов.
В свою очередь, класс Раггау реализован как класс-шаблон [28].
Еще один аргумент в пользу массива указателей на объекты. Как следует из описания операционной системы Microsoft Windows [1], указатель (не void*) занимает в памяти 8 байт. При этом указатель всегда занимает в статической памяти одинаковое число байт, независимо от того, на объект какого типа он указывает.
Обратимся к рассмотрению реализации методов класса Geometricltem. Часть методов в нем объявлены как виртуальные методы. Виртуальность, вообще говоря, это одно из важнейших свойств ООП. Это свойство неоднократно будет использовано в нашей работе, «...если у статических методов код и экземпляр объекта связываются во время компиляции, то у виртуальных связь устанавливается во время выполнения программы... Суть виртуального метода заключается в общности использования его действия по одному и тому же имени всеми объектами дерева иерархии, при этом каждый из объектов реализует это действие по-своему. Виртуальность как понятие в данном случае говорит о том, что при вызове такого метода <программиста> больше интересует само действие, чем конкретный экземпляр, посредством методов которого оно будет производиться».[5]
Более того, всю предложенную методологию работы с некоторыми допущениями можно рассматривать как пример виртуального подхода (в виде позднего связывания). Ведь исполняемому модулю не известно, как именно реализована функция экспорта или импорта. Реализация определяется самим источником.
Прочие структуры данных.
Кроме структур данных для хранения геометрической информации, в работе используются ряд дополнительных классов и структур.
Особо следует остановиться на информационном обмене данными между вызываемой библиотекой и вызывающей программой. При разработке модели обмена информацией была поставлена следующая задача: сообщать вызывающей программе полную информацию о библиотеке (включая поддерживаемый формат, расширения файлов, местоположение самой библиотеки, дополнительная текстовая информация для пользователя, необходимая для идентификации пользователем используемого формата в предлагаемом списке доступных форматов) на этапе выполнения программы.
3.2 Внутренний формат представления данных
В настоящее время существует множество САПР, поддерживающих различные форматы представления данных. Это означает, что при написании программного средства следует учитывать особенности каждой из систем, для которых он предназначен. Очевидно, что это может привести излишнему количеству преобразований между различными представлениями одной сущности в процессе преобразования данных, и, как следствие, к потере точности.
В процессе работы над конвертером был проведен анализ нескольких систем на предмет наличия в них возможности чтения/записи наиболее распространенных обменных форматов. Результаты анализа приведены в таблице 3.1.
Таблица 3.1 Результаты анализа наиболее распространенных систем проектирования
Система |
Тип |
Формат |
||||||||
STEP |
IGES |
DXF |
VDA-FS |
|||||||
Импорт |
Экспорт |
Импорт |
Экспорт |
Импорт |
Экспорт |
Импорт |
Экспорт |
|||
Компас- График 5 |
CAD |
нет |
нет |
да |
да |
да |
да |
нет |
нет |
|
T-Flex CAD |
CAD |
да |
нет |
да |
да |
да |
да |
нет |
нет |
|
Кредо |
CAD/CAM |
да |
да |
да |
да |
да |
да |
да |
да |
|
TeMMa-3D |
CAM +CAD |
через IGES В комплект поставки входит специальный конвертер для преобразования из Step в Iges. |
нет |
да |
да |
да |
да Однако существует ряд ограничений, например, при сохранении сплайнов они преобразуются в полилинии. |
нет |
нет |
|
Z-Cad |
CAD |
нет |
нет |
да |
да |
да |
да |
да |
да |
|
Solid Art Studio |
CAD/CAM |
да |
нет |
нет |
да |
да |
нет |
да |
да |
|
Unigraphics |
CAD/CAM |
да |
да |
да |
да |
да |
да |
нет |
нет |
CATIA |
CAD/CAM |
да |
да |
да |
да Не все отечественные системы корректно зачитывают IGES, созданный в CATIA |
да |
да |
Catia Machinist |
Catia Machinist |
|
PRO/Engineer - приложение Foundation |
CAD/CAM |
да |
да |
да |
да |
да |
да |
да |
да |
|
SolidWorks 2000 |
CAD |
да |
да |
да |
да |
да |
да |
да |
да |
Размещено на http://www.allbest.ru/
Из приведенной таблицы видно, что любая система «умеет» импортировать и экспортировать хотя бы один из основных обменных форматов. Следовательно, необходимо создавать программное средство, ориентированное в первую очередь на преобразование между основными обменными форматами. Создание дополнительных библиотек для работы с собственными форматами необходимо проводить по желанию заказчика. Разработанная идеология позволяет резко ускорить и упростить этот процесс.
При разработке системы необходимо было решить вопрос о выборе внутреннего формата хранения данных. Для его решения были изучены несколько CAD/CAM систем отечественного и импортного производства.
Проведенные исследования показывают - в обменных форматах используются следующие геометрические и негеометрические типы:
• местные системы координат;
• точки;
• векторы;
• кривые;
• поверхности.
• топологические связи
К типу «точки» относятся 2х и Зх мерные точки, точки на кривой и точки на плоскости.
Кривые бывают простые (прямые линии), конические (эллипсы,...), ограниченные (ломаные, сплайны), усеченные (точками или параметрами), параметрические (например, параметризованными в пространстве заданной поверхности), составные, офсетные.
Поверхности встречаются следующих типов: элементарные (плоскость, цилиндр, сфера, др.), кинематические, ограниченные (сплайновые, топологически обрезанные), усеченные, офсетные и другие.
Часто возникает ситуация, когда средств системы-приёмника недостаточно для адекватного приёма информации (и сущности преобразуются не напрямую, а как «сущность А --» сущность Б»), Идеальным можно считать случай, когда и в системе - источнике, и в системе-приёмнике содержатся сущности, эквивалентные с математической точки зрения (включая параметризацию) (т.е. позволяющие прямое преобразование типа «сущность А1 --> сущность А2»), Например, в системе «Гемма- 3D» при преобразовании из формата IGES в формат DSW NURBS-поверхность (сущность «rational_b_spline_surface_entity») может быть напрямую преобразована в NURBS поверхность «тип 6» (и наоборот). Это относится ко всем параметрам поверхности, включая веса, и порядок записи точек в n и v направлениях. Очевидно, что в этом случае особых проблем не возникает, а точность определяется способом выбора типа переменной с плавающей точкой, а также способом записи данных в обменном файле. Иными словами, при прочих равных условиях значащих разрядов будет столько, сколько записано в текстовом обменном файле.
Более сложный случай представляет первая ситуация, т.е. когда нельзя найти точного соответствия между сущностями. Зачастую для передачи одной сущности требуется создать несколько дополнительных сущностей и промежуточных структур данных. Подчеркнем - именно создать в выходном файле, а не использовать какие- либо исходные.
Приведем пример.
В формате STEP существует сущность «plane» (плоскость), задаваемая с помощью локальной системы координат в заданной точке. Параметризация
o(u, v)=C+XM+yy
В формате IGES плоскость определена как сущность №108. Она определяется 4- мя коэффициентами в уравнении
А* ХТ+В *ZT+C *ZT=D
Кроме того, записываются XT,YT,ZT координаты размещения символа отображения плоскости, размер символа отображения плоскости и указатель на замкнутую кривую, лежащую в этой плоскости (внешнюю границу), который обычно равен 0.
Данный пример позволяет сделать вывод, что при решении данной проблемы следует максимально осторожно подходить к выбору результирующей сущности. Даже правильная передача параметров не гарантирует, что одна из систем-приёмников сможет распознать этот тип сущности.
Таким образом, нам предстоит решить 2 проблемы:
- выбрать способ внутреннего представления данных;
- определить, какие сущности будут входить во внутреннее представление.
Согласно проведенному исследованию было решено внутренний формат будет содержать только 1 тип кривых - NURBS кривые, все прочие будут преобразовываться к нему на этапе импорта во внутренний формат.
Внутренний формат будет содержать только 3 типа поверхностей: NURBS поверхности, поверхности вращения и линейчатые поверхности.
Существует еще насколько замечаний по вышеизложенному, все образующие кривые для линейчатых поверхностей и поверхностей выдавливания будут иметь NURBS представление; при необходимости NURBS - кривые достаточно просто преобразовать в Безье представление, или даже в полигональное представление (что справедливо для любой системы). Все необходимые преобразования будут происходить на этапе экспортирования в выбранный формат.
3.3 Выбор NURBS в качестве внутреннего представления кривых и поверхностей
Впервые NURBS были применены в системе Taiger фирмы Boeing в 1979 году [35]. Первый опыт оказался настолько удачным, что NURBS были внесены на рассмотрение в качестве стандартных сущностей формата IGES в августе 1981 года.
Математическое определение NURBS кривых и поверхностей относительно просто. NURBS кривая - это кусочная рациональная полиномиальная функция вида (векторное представление):
(3.1)
где wi - это веса, pi - это контрольные точки, а Ni,P(u) это нормализованная базисная функция степени р, рекурсивно заданная как:
(3.2)
где Uj это узлы, образующие «вектор узлов»
(3.3)
Порядок, число узлов и число контрольных точек имеют следующую зависимость между собой: m=n+p+l. Для не униформы и непериодических B-сплайнов вектор узлов принимает следующие значения:
(3.4)
где концевые узлы а и b повторяются в соответствии с множителем р+1. В большинстве практических применений а=0 и b=1. Базисная функция (3.2) определена на всей кривой. NURBS кривая (3.1) с вектором узлов (3.4) имеет Безье-подобный вид. Она интерполирует концевые точки, и касается первого и последнего отрезков контрольного полигона.
NURBS поверхность, в свою очередь, определяется как:
(3.5)
где wi - это веса, Рi - это контрольная сетка, а Ni,p(u) и Nj,q(v) - это нормализованные В-сплайны степени p и й в направлении u и v, соответственно. Они определяются векторами узлов:
(3.6a)
(3.6b)
где концевые узлы повторяются в соответствии с множителями р+1 и q+l, соответсвенно, и r=n+p+1 и s=m+q+l.
Аналитические и геометрические свойства NURBSов
Уравнение NURBS-кривой (3.1) может быть записано в следующей эквивалентной форме:
(3.7)
где Ri,p(и) - это рациональные базисные функции. Их аналитические свойства определяют геометрическое поведение кривых. Наиболее значимыми свойствами являются:
Генерализация: если все веса установлены в 1, то
где 0 и 1 в U повторяются в соответствии с множителем р+1, a Bi,p(u) определяет полигон Бернштейна степени р.
Локальность: Ri,P(u)=0 если
Дифференцируемость: Внутри области значений узлов базисные рациональные функции бесконечна непрерывно дифференцируемы, если знаменатель не равен нулю. В узле они непрерывны р-k раз непрерывно дифференцируемы, где к это множитель узла.
Кроме того, NURBS кривая обладает следующими геометрическими характеристиками: информационный совместимость nurbs валидация
- Безье и нерациональные В-сплайны являются специальными случаями
- Локальная аппроксимация: если контрольная точка перемещается или изменяется узел, это влияет только на p+1 участок кривой;
если , то кривая C(u) всегда лежит внутри выпуклой оболочки Pi-p,…,Pi;
NURBSы инвариантны к аффинному и перспективному преобразованиям;
функция дифференцируема также, как базисная функция;
если некоторый вес устанавливается равным нулю, то положение
соответствующей ему контрольной точки не влияет на кривую в целом;
3.4 Проблемы сохранения точности и валидации внутреннего формата
Одной из основных проблем при преобразовании данных из одного формата в другой является проблема максимального соответствия исходного и результирующего файла. Данная проблема может быть декомпозирована на следующие подзадачи:
максимальное сохранение точности, сюда относится адекватная передача геометрических объектов, подлежащих и не подлежащих математическому преобразованию,
передача максимально возможного числа сущностей. Эта подзадача включает в себя максимально адекватную передачу геометрических сущностей системы-источника с помощью средств системы-приемника, а также возможность передачи дополнительной (конструкторской, технологической) информации чертежа.
Прежде, чем рассматривать каждый компонент более подробно, следует ввести несколько терминов. Под системой-источником понимается набор математических и программных средств, использующихся при генерации обменного файла соответствующего исходного формата. Под системой-приёмником, в свою очередь, - набор математических и программных средств, использующихся при генерации обменного файла соответствующего результирующего формата.
Наиболее адекватная передача геометрических объектов, подлежащих математическому преобразованию. Математический корректор.
Одним из преимуществом ADC является наличие специального блока математической коррекции обрезки поверхностей.
При создании программного обеспечения одной из главных задач является сохранение точности при преобразовании данных. Наибольшие сложности обычно вызывают обрезка поверхностей. Рассмотрим возникающие трудности более подробно.
Большинство форматов имеют сущность «обрезанная поверхность». Как правило, она представляет собой 2 ссылки: ссылку на обрезаемую поверхность и на набор границ (одна внешняя, остальные внутренние). В различных форматах границы могут быть представлены по-разному. В формате STEP, например, границами являются пространственные кривые, усеченные вершинами (x,y,z представление). В формате IGES в качестве границ могут выступать как полигоны в (u,v)-представлении (в пространстве поверхности), так и набор пространственных кривых (x,y,z).
Проблема заключается в том, при импорте, в частности, IGES-файлов, многие системы не умеют производить обрезку по пространственным кривым, и требуют наличия кривой обрезки в (u,v)-представлении. Следовательно, возникает задача - при преобразовании (в данном примере, из STEP в IGES) преобразовывать границы обрезки из пространственных кривых в (u,v) - полигоны в пространстве поверхности.
(u,v) - полигон обрезки создаётся путем проецирования всех точек исходной кривой на поверхность. Существуют 2 способа решения этой задачи.
Обычный способ - это проецировать пространственную кривую на поверхность. Данный путь весьма трудоёмкий и влечет за собой большее количество вычислений.
В ADC реализован новый способ, более быстрый и простой. Идея состоит в том, чтобы преобразовать пространственную кривую в полигон с определённым шагом, а затем спроецировать все точки полигона на поверхность.
Рис.3.3. Алгоритм преобразования обрезанной поверхности
На рисунке 3.3 приведен алгоритм записи обрезанной поверхности в выходной файл.
На первом шаге в файл записывается обрезаемая поверхность. Затем определяется, сколько границ содержит поверхность (обрезанная поверхность всегда имеет 1 внешнюю границу, и может иметь или не иметь внутренние границы, т.е. отверстия). Поскольку граница обрезки может состоять из нескольких кривых, в цикле последовательно обрабатываются все эти кривые, входящие в эту границу. Из них составляется «контур обрезки».
После того, как сформирован контур, он преобразуется в «полигон обрезки». Преобразование идет путем вызова виртуальной функции каждой кривой, входящей в контур. В качестве параметра этой функции передается величина стрелки прогиба. На основании параметрической длины и стрелки рассчитывается шаг разбиения кривой.
Следующим шагом является проецирование получившегося полигона (набора точек) на обрезаемую поверхность. Результатом этого является набор точек в виде (u,v) - пар, который и записывается в выходной файл.
Рис.3.4. Алгоритм проецирования точек контура обрезки на поверхность
На рисунке 3.4 приведен алгоритм проецирования точек контура обрезки на поверхность. Входными данными являются поверхность, величина стрелки прогиба и полигон обрезки.
Определяется количество точек полигона. Далее в цикле по всем точкам: находится ближайшая проекция текущей точки на поверхность с учётом стрелки прогиба, выходным значением является пара значений (u,v).
По найденным значениям (u,v) с помощью виртуальной функции, принадлежащей классу поверхности, функции находится трехмерная точка, лежащая на обрезаемой поверхности.
Исходная и найденная точка сравниваются. Если расстояние между двумя точками попадает в допустимый интервал, то данная точка добавляется в список спроецированных точек, в противном случае она отбрасывается и вычисления продолжаются для следующей точки.
Данный алгоритм используется потому, что кривые обрезки, входящие в границу, далеко не всегда лежат на близком расстоянии, и уж тем более на поверхности обрезаемой поверхности. Обычно это связано с несовершенством алгоритмов записи обменных файлов экспортирующих систем.
После окончания работы данной подпрограммы результатом является полигон обрезки в (u,v) представлении.
Необходимо отметить, что при таком подходе необходимо отслеживать шаг (величину стрелки прогиба), с которым исходная граница разбивается на точки полигона.
Существует два нежелательных случая.
1. Если кривизна поверхности достаточно велика, и шаг тоже велик, то полигон обрезки может получиться неточным. В данном случае качество результирующего файла напрямую связано с точностью проецирования.
2. Если габаритные линейные размеры чертежа (поверхности и границ) велики, а заданная величина стрелки прогиба мала, то количество точек полигона оказывается неоправданно завышенным. В этом случае потери качества чертежа не происходит, однако его размер существенно увеличивается.
Точность можно сделать фиксированной (и тогда она должна являться параметром, задаваемым пользователем). Также можно сделать ее переменной, зависимой от кривизны кривой и поверхности, а также от линейных размеров сущностей. Конкретный выбор остается за программистом.
Поскольку количество значащих цифр ограниченно при записи информации в текстовый файл, и изменяется от системы к системе, появляются определенные погрешности. Это выражается в «биении» сплайновых кривых около точек контрольного полигона. Корректор устраняет это биение.
В данной реализации величина стрелки прогиба задаётся пользователем вручную. Пример влияния выбора величины стрелки прогиба на результат преобразования файлов приведен в главе 4.
Необходимо отслеживать шаг, с которым кривая разбивается на точки полигона. Если кривизна поверхности достаточно велика, и шаг тоже велик, то полигон обрезки может получиться неточным. Следовательно, в данном случае качество результирующего файла напрямую связано с точностью проецирования. Точность можно сделать фиксированной (и тогда она должна являться параметром, задаваемым пользователем). Также можно сделать ее переменной, зависимой от кривизны кривой и поверхности, а также от линейных размеров сущностей. Конкретный выбор остается за программистом.
Максимально точная передача геометрических сущностей системы-источника с помощью средств системы приемника.
Еще одной трудностью может стать необходимость перепараметризации. Легко представить себе следующий случай. В системе-источнике существует NURBS-кривая, усеченная двумя точками. Точки при этом задаются в параметрическом виде. Пусть NURBS-кривая имеет параметрический диапазон [0;1], а точки усечения имеют значения 0.3 и 0.6 соответственно.
В свою очередь, в системе-приемнике отсутствует тип NURBS-кривая. Вместо этого все кривые представляются в виде сплайнов Безье. На первый взгляд проблема неочевидна, и ход действий представляется таким:
NURBS-кривая -> Безье - кривая -> Усечение по параметру -> Безье - кривая
Однако данный вариант является ошибочным. Ведь параметризация у NURBS - кривых и Безье - кривых абсолютно разная. Следовательно, параметрическая точка 0.3 может оказаться на Безье-кривой совсем в другом месте, чем она была на NURBS- кривой. Устранение этого эффекта носит название «перепараметризации». Правильный вариант преобразования должен быть следующим:
NURBS -кривая -> Усечение по параметру -> NURBS - кривая -> Безье - кривая
Передача дополнительной (конструкторской, технологической) информации чертежа.
Задача точной передачи дополнительной (конструкторской, технологической) информации чертежа априори не может быть решена в полном объёме. Это следует из существования тех фактов, что:
а) нет единого способа представления информации, относящейся к разным стандартам (ЕСКД, ИСО, др.), а также нет единого способа преобразования этой информации между стандартами;
б) большинство форматов просто не поддерживают включение подобной информации в обменный файл (DXF, например). Если же информация и находится в таком файле, то только в виде общих геометрических сущностей, например, текста.
В качестве иллюстрации приведём пример разработки алгоритмов сохранения и чтения основной надписи чертежа (штампа). Информация о штампе хранится в базе данных. Названия полей базы соответствуют ЕСКД названиям полей штампа (Чертил, Проверил, …). Была поставлена задача: при сохранении файлов формата STEP сохранять эту информацию внутри STEP файла. При загрузке STEP файлов - считывать соответствующие сущности (если они имеются), и записывать в специальный текстовый файл, который затем автоматически подгружается в систему.
Стандарт STEP не предусматривает сохранение информации о штампе в соответствии с ЕСКД. Однако некоторая информация о создателях и проверяющих все же существует. Такие сущности, как: PERSON, ORGANIZATION, DATEANDTIME, SECURITYCLASSIFICATION, PERS ON_ ANDORGANIZ ATIONROLE, APPROVAL ROLE, APPROVAL STATUS, APPROVAL и ряд других пригодны для использования в качестве носителей подобной информации. В качестве основной сущности-определения была выбрана сущность PERSON AND ORGANIZATION ROLE, параметром которой является идентификатор лица, имевшего то или иное отношение к чертежу. В результате многочисленных экспериментов были установлены следующие зависимости:
Таблица 3.3. Зависимости между полями основной надписи чертежа и сущностями языка STEP
При сохранении STEP файла из системы информация записывается непосредственно в выбранные сущности с указанными в таблице параметрами. Дополнительно сохраняются дата и время в соответствии с требованиями формата STEP. Хотим заметить, что получившиеся файлы были протестированы с помощью инструмента StepCheck Online (http://www.iti.org/cec/steptest/rvsf/index.htm) и полностью соответствовали спецификации ISO.
Также при разработке программного средства была сформирована методика информационной совместимости в соответствии со стандартом STEP (Приложение).
Таким образом, можно сделать вывод, что задача передачи негеометрической информации может быть решена только в частных случаях.
Приложение. Метод информационной совместимости в соответствии со стандартом внутреннего языка моделирования
Внутренний язык моделирования добавляет синтаксическую и семантическую поддержку доступа и правил, основанных на модификации реляционных источников данных языка программирования Java, что является реализацией исчислений реляционного роста грамматики [1]. Грамматика определяется как граф с основой в виде расширения формализации системы [2] , который широко используется в моделировании. Однако область применения внутреннего языка моделирования не ограничивается описанием графикой и моделирования, а именно он может быть использован для любых реляционных источников данных путем реализации внутренней модели данных интерфейса. Внутренний язык можно рассматривать как реализацию исчисления запрограммированных графиков замены систем [3].
Внутренний язык моделирования - расширение языка программирования Java, таким образом, внутренний язык основан на обоснованной концепции структурированного, модульного и объектно-ориентированного языков программирования, на которых и основан язык программирования Java. Внутренний язык является дополнением не только на уровне спецификации, но и на уровне двоичных файлов, всех существующих Java-библиотек, которые могут быть использованы в любой момент. Это добавляет новые возможности внутреннего языка, т.к. язык программирования Java является одним из самых популярным в настоящий момент и имеет большой набор высококачественных и бесплатных библиотек, в том числе и сложных графических компонентов пользовательского интерфейса, коммуникаций, двухмерной и трехмерной графики и поддержки XML.
Данная спецификация организована следующим образом:
1. Ключевые особенности - обзор основных функций внутреннего языка моделирования.
2. Модель данных - представление о модели данных и зависимости от нее интерфейса языка.
3. Виртуальная машина - описывает расширенное состояние виртуальной машины, которая будет использоваться во время работы и помогать в реализации ключевых функций языка моделирования.
4. Лексическая структура - лексический состав языка моделирования и набор маркеров.
5. Типы данных - типы языка моделирования, которые частично заимствованы и пересекаются с типами языка программирования Java.
6. Переменные - в основном это переменные языка программирования Java, с использованием переменных запросов и свойств.
7. Преобразования и расширения - преобразования языка моделирования.
8. Имена - декларации, имена и области, а именно описание модулей и переменных запроса.
9. Пакеты - структура исходного кода, как и для языка программирования Java, исходный код состоит из набора блоков компиляции, организованных в иерархической структуре пакета.
10. Классы и интерфейсы - на уровне класса, есть четыре расширения языка программирования Java, где определены: методы генерации, операторные методы, примеры методов и аннотаций.
11. Класс предикатов - класс предикатов, используемый в запросах.
12. Сигнатуры - применимость и специфичность.
13. Модуль компиляции - описание особенности использования модуля компиляции внутреннего языка моделирования.
Вышеуказанные главы не могут охватить все аспекты внутреннего языка моделирования. Для прочих аспектов внутреннего языка необходимо использовать спецификацию языка программирования Java.
Внутренний язык моделирования не может быть определен независимо от заранее определенных классов языка программирования Java. Кроме того, эти классы являются основными классами языка программирования Java в пакете java.lang.
1. КЛЮЧЕВЫЕ ОСОБЕННОСТИ
В данном разделе описаны основные возможности внутреннего языка моделирования. Большинство примеров являются отрывками программ и не являются самостоятельными программами. Некоторые примеры действительны только в рамках определенной модели данных, а именно - модель данных, которая содержится в plugin'е моделирования программного обеспечения.
1.1 Реляционные расширения
В настоящем разделе приводятся примеры реляционных расширений. Принципы реляционной модели были сформулированы в 1969 - 1970 годах Э. Ф. Коддом. Идеи Кодда были впервые публично изложены в статье «A Relational Model of Data for Large Shared Data Banks»[6].
1.1.1 Правила
Возможность использования правил является главной особенностью внутреннего языка моделирования. Она будет проиллюстрировано с помощью трех кривых Коха.
Кривая Коха является типичным геометрическим фракталом. Процесс её построения выглядит следующим образом: берётся единичный отрезок, разделяется на три равные части и заменяется средний интервал равносторонним треугольником без этого сегмента. В результате образуется ломаная, состоящая из четырех звеньев 1/3 длины. На следующем шаге повторяется операция для каждого из четырёх получившихся звеньев и т.д. Предельная кривая и есть кривая Коха.
Рис. 1.1. Построение кривой Коха.
Рис. 1.2. Построение снежинки Коха.
Парадигма строительства шага Коха и есть правило. В контексте грамматик - это специальные виды правил, ссылающиеся на особый вид грамматик, а именно на L-систему формализма.
L-системы формализма, в сочетании с фундаментальной геометрией, определяют символические обозначения, которые могут быть использованы, например, для спецификации снежинки в форме, которую обрабатывает программа. А именно, пусть символ F представляют собой сегмент линий, а RU(a) - угол поворота, то первоначальный треугольник может быть указан в виде параметризованной последовательности:
F RU(120) F RU(120) F
Это следует толковать в контексте фундаментальной геометрии, т.е. как последовательность инструкций и чертежей. Теперь строительство шага Коха может быть задано так же, как и в L-системе:
F ==> F RU(-60) F RU(120) F RU(-60) F
Иными словами, заменить все совпадения для F в последовательность инструкций по последовательности, состоящей из F и RU. В контексте программы модель данных снежинка описана следующим образом:
[
Axiom ==> F(1) RU(120) F(1) RU(120) F(1);
F(x) ==> F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3);
]
В этом примере используются следующие функции:
- Правила указаны стрелками (==> в данном случае) и сгруппированы в блоки [ ... ].
- С левой стороны строки указываются имена классов (Axiom) и предикаты (F(x), т.е. класс, имя и значение параметра x).
- Параметр x обозначает длину отрезка, который находится в сегменте класса F.
- С правой стороны строки может содержаться последовательность выражений, в частности, все выражения - это просто конструктор запусков, но без ключевого слова new. Таким образом, когда первое правило применяется, новые экземпляры классов F и RU создаются.
- Структура фактически представляет собой график узлов.
- Axiom, F, RU - классы.
Стрелка ==> указывает на правило с неявным вложением. Выше был указан отрезок программы, а далее представлен полноценный пример программы:
import de.grogra.rgg.*;
import de.grogra.lsystem.*;
public class Koch extends RGG {
public void derivation() [
Axiom ==> F(1) RU(120) F(1) RU(120) F(1);
F(x) ==> F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3);
]
}
Внутренний язык моделирования использует и другие виды правил. Правило ==>> указывает на правило без неявных вложений, правило::> указывает на правило, которое выполняет заявления ее правой стороны каждого цикла с левой стороны.
1.1.2 Запросы
Правила используются для создания и преобразования чертежей. Запросы же используются для запроса существующих чертежей или конкретных функций. Их синтаксис точно такой же, как и для левой стороны, который можно рассматривать как запрос для чертежа, который должен быть заменен с правой стороны. Например, рассмотрим запрос выражения:
(* F *)
В скобках звездочками обозначается запрос выражения, содержащего идентификатор F, который указывает на то, что запрос передает все узлы класса F. С помощью совокупности методов запрос может быть использован для определения числа запросов F в чертеже:
count((* F *))
С помощью совокупности метода суммы, общее количество всех запросов F можно вычислить:
sum((* F *).length)
As a more complex example, consider the following:
sum((* d:Individual, ((d != c) && (distance(c, d) < 2)),
d ( -(branch|successor)-> )* f:F, (isRelevant(f))
*).length);
1.1.3 Квазипараллельные процессы
Для внутреннего языка моделирования применяются правила параллельности. Например, правило:
a:A ==>> a A;
добавляет новый узел класса A на каждый существующий узел а класса А. Таким образом, это правило создает узлы, которые совпадают с левой стороны. Однако, поскольку правила вступают в силу квазипараллельно, т.е. так если бы они были выполнены параллельно, то вновь созданных узлов не видно для соответствующих процессов до тех пор, пока правило не будет выполнено полностью:
a:A b:A ::> b.x = a.x;
Для каждого узла a класса А, имеющих правопреемника b класса А, значение переменной a.x передается переменной b.x. Это можно рассматривать как распространение значений последовательности узлов класса А.
В данном случае сложность заключается в том, что граф состоит из последовательности узлов класса А и что циклы для запроса a:b находятся слева направо. Это приводит к непредсказуемому поведению, потому что во внутреннем языке моделирования нельзя указать условия параллельного выполнения. Эта проблема решается за счет использования квазипараллельных процессов, т.е. если правило будет изменено на:
a:A b:A ::> b[x] := a[x];
то программа будет выполняться квазипараллельно, т.е. их изменения не видны, пока не закончится трансформация границы. Использование квазипараллельных процессов последовательно использует текущие значения. Этот пример показывает состав квазипараллельных операторов:
:= :+= :-=
:*= :/= :&=
:|= :^=
1.2 Императивное программирование
Императивное программирование - это парадигма программирования, которая, в отличие от декларативного программирования, описывает процесс вычисления в виде инструкций, изменяющих состояние программы.
Императивная программа очень похожа на приказы, выражаемые повелительным наклонением в естественных языках, то есть это последовательность команд, которые должен выполнить компьютер.
Данный раздел содержит примеры императивного программирования, не относящиеся к реляционным данным и рассматривающимся как самостоятельное расширение языка программирования Java. Однако они остаются в рамках императивного программирования.
1.2.1 Построение выражений и списков
Язык внутреннего моделирования определяет операторы, которые могут быть использованы для построения выражений и списков, например:
(t = a*sin(x), sqrt(1 - t*t))
Выражения и списки полезны, если функция:
(t -> sqrt(1 - t*t) в этом примере)
применяется к выражению:
(a*sin(x))
Временная переменная (t) необходима, если может быть явно объявлена в списке выражений:
(double t = a*Math.sin(x), Math.sqrt(1 - t*t))
или неявно:
($ = a*Math.sin(x), Math.sqrt(1 - $*$))
используя специальный идентификатор $.
1.2.2 Рамки выражения
Рамки выражения похожи на выражения языков программирования Basic и Pascal. Они могут быть использованы при нескольких последовательных выражениях доступа к полю или методу:
c.getBounds().setLocation(0, 0);
c.getBounds().width = 100;
c.getBounds().height = 50;
Здесь, c.getBounds() является общим определением. Использование экземпляра рамки выражения сводится к:
C.getBounds().(SetLocation(0, 0), width = 100, height = 500)
1.2.3 Перегрузка
Если два метода класса (либо объявленные в одном и том же классе, либо наследованы одним классом, либо один объявлен в классе, а другой наследован тем же самым классом) имеют одно и то же имя но различные сигнатуры, тогда имя метода перегружается. Этот факт не причиняет никаких трудностей и никогда не приводит к ошибкам времени компиляции. Не существует никаких ограничений на взаимосвязь между типом возвращения или между методами throws двух методов с одним и тем же именем, но с различной сигнатурой.
Внутренний язык моделирования имеет механизм перегрузки операторов, так же как и другие языки программирования, например C++. Это позволяет добавить новые значения для операторов, такие как +. Например класс Complex, который объявляется следующим образом:
class Complex {
double real;
double imag;
Complex (double real, double imag) {
this.real = real;
this.imag = imag;
}
Complex operator+ (Complex b) {
return new Complex(this.real + b.real, this.imag + b.imag);
}
}
В декларации метода оператора + определяется оператор метода. Этот метод дает оператору + значение в контексте комплексных чисел следующим образом: выражение a + b, где a и b - комплексные числа, которые переводятся на вызов метода выражения a.operator+b.
1.2.4 Массивы
Массивы являются объектами, которые создаются динамически, и могут иметь значение переменных типа Object. Все методы класса Object могут быть вызваны массивом.
Объект массива содержит ряд переменных. Число переменных может быть нулевым, в случае, когда массив является пустым. Переменные, содержащиеся в массиве, не имеют никаких имен; вместо этого ссылаются на массив с помощью выражений доступа, которые используют неотрицательные целые значения индекса. Эти переменные называются компонентами массива. Если массив имеет n компонент, мы говорим, что длина массива - n. При обращении к компонентам массива используют целочисленные индексы от 0 до n-1 включительно.
Подобные документы
Программная и техническая характеристика информационных систем предприятия. Требования к информационной и программной совместимости. Проектирование программного обеспечения с использованием специализированных программных пакетов. Разработка базы данных.
отчет по практике [1,3 M], добавлен 11.04.2019Документ, на основании которого ведется разработка. Требования к составу и параметрам технических средств, к информационной и программной совместимости. Проработка программных средств. Переопределение стандартных операций для абстрактных типов данных.
курсовая работа [371,5 K], добавлен 21.02.2012Разработка игровой программы "разгадывания кроссворда". Создание схемы хранения данных, изучение возможности среды программирования. Требования к функциональным характеристикам, составу и параметрам технических средств, информационной совместимости.
курсовая работа [403,9 K], добавлен 26.03.2015Требования к составу и параметрам технических средств, информационной и программной совместимости. Разработка функциональных моделей автоматизированной системы "Деятельность бетонно-растворного узла". Интерфейс Web-приложения, руководство пользователя.
курсовая работа [4,6 M], добавлен 04.10.2014Этапы решения задачи классификации цифр арабского алфавита на основе нейронных сетей: выбор класса, структуры и пакета нейронной сети, ее обучение, требования к информационной и программной совместимости, составу и параметрам технических средств.
реферат [111,6 K], добавлен 19.10.2010Цели и задачи проектирования информационной системы, основные требования к ней, внутренняя структура и взаимосвязь отдельных компонентов. Обзор и анализ существующих программных разработок. Обоснование стратегии автоматизации и технологии проектирования.
курсовая работа [3,3 M], добавлен 12.01.2015Среда проектирования программного обеспечения Rational Rose. Унифицированный язык моделирования UML. Требования к функциональности, к безопасности, интерфейсу, настраиваемости, информационной и программной совместимости, программная документация.
курсовая работа [582,0 K], добавлен 20.07.2011Анализ проблем, возникающих при совмещении изображений в корреляционно-экстремальных навигационных системах. Использование двумерного дискретного преобразования Фурье. Нахождение корреляционной функции радиолокационного и моделируемого изображений.
дипломная работа [3,6 M], добавлен 07.07.2012Анализ и разработка информационной системы, структура сети предприятия. Описание процесса разработки конфигураций и выявление потребностей в автоматизации функций. Средства разработки проектирования и архитектура базы данных. Разработка модели угроз.
дипломная работа [1,4 M], добавлен 13.07.2011Появление системы управления базами данных. Этапы проектирования базы данных "Строительная фирма". Инфологическая и даталогическая модель данных. Требования к информационной и программной совместимости для работы с базой данных "Строительная фирма".
курсовая работа [93,0 K], добавлен 31.03.2010