Содержание Введение Немного истории Для чего нужны 3D- системы Что такое параметризация и когда она нужна Принцип мастер-модели Ассоциативные связи в модели Unigraphics – комплексная система 1.Начинаем работу в Unigraphics Настройки системы Начинаем работу в Unigraphics Типовые функции 2.Методология построения детали в Unigraphics Построение модели детали с использованием эскизов и кривых Построение кривой по точкам из файла Создание эскиза Определение геометрических зависимостей в эскизе Нанесение размеров в эскизе Использование типовых элементов формы (Feature Modeling) Управление слоями Построение базовых кривых (линии, окружности, дуги) Построение кривой по математической формуле Построение кривой по точкам Использование приемов поверхностного моделирования при построении детали Построение скруглений Операции прямого моделирования (Direct Modeling) Работа с Навигатором модели Трансформирование объектов Булевы операции Определение ссылочного набора Построение кривой, заданной системой математических уравнений Пример построения параметрической модели без применения эскизов и кривых. Создание базового элемента модели Создание дополнительных элементов Создание вспомогательных плоскостей и осей Использование вспомогательных плоскостей для позиционирования элементов. Создание элемента типа «резьба» на модели Создание массива элементов. 3.Поверхностное моделирование (Free Form Modeling) Поверхность по точкам (Free Form Modeling) Линейчатая поверхность (Ruled Surface) Поверхность по кривым (Through Curves Surface) Поверхность по сетке кривых (Through Curve Mesh) 4.Пример формирования модели сборки (Assembly Modeling) Формирование сборки «снизу-вверх»: добавление компонентов в сборку Назначение условий сопряжения Определение положений деталей в сборках разного уровня Создание массива деталей Применение ссылочных наборов Формирование сборки «сверху-вниз»: конструирование деталей в контексте сборки Проверка пересечений деталей в сборке 5.Управление ассоциативными зависимостями между деталями в Unigraphics Терминология модуля WAVE Создание управляющей схемы Создание компонентов управляющей схемы Создание исходных частей Создание связанных частей Формирование обзорной сборки Получение новых вариантов и управление обновлением частей Несколько замечаний по формированию управляющей схемы 6. Подготовка конструкторской документации (UG/Drafting) Создание чертежа детали по существующей модели Нанесение основной надписи Создание чертежных проекций (видов) Добавление проекционных видов Построение чертежных разрезов (сечений) Построение выносных видов Изменение расположения видов на поле чертежа Изменение границ видов Выравнивание видов Редактирование элементов чертежа Нанесение дополнительных обозначений Нанесение размеров Определение толщины линий Нанесение специальных символов Нанесение технических требований Ассоциативная связь чертежа и параметрической модели детали Создание библиотеки чертежных символов 7.Программирование в Unigraphics Модули UG/Open UG/GRIP Программная оболочка GRADE Инструкция языка GRIP Построение исполняемого GRIP-приложения Запуск GRIP-приложения Создаем панель инструментов для GRIP-программ Загрузка панели инструментов 8.UG/Open User Function Общие положения Создаем проект UG/Open Запуск приложения User Function Введение «Windows/NT для “чайников”!», «Autocad 2000 для “чайников”!», « JAVA за 21 день!»- на прилавке любого книжного магазина вы встречали подобные издания, гарантирующие скорейшее освоение самых различных программных продуктов, операционных систем, программных оболочек. Эти книги находят своего читателя, помогая ему самостоятельно, шаг за шагом, освоить приемы работы с достаточно сложными программами. Как правило, вопрос о происхождении программного пакета, с которым книга знакомит пользователя, остается за пределами ee объема. Предполагается, что, будь-то операционная система или текстовый процессор, система автоматизированного проектирования или расчетная программа – они приобретены на законных основаниях и используются в соответствии с лицензионным соглашением (в этом случае пользователь вправе рассчитывать на помощь службы технической поддержки поставщика и разработчика программного продукта). В случае же применения программного продукта на домашнем компьютере вопрос о законности эксплуатации программных средств остается на совести пользователя. Кому адресована эта книга? Прежде чем ответить на этот вопрос, следует сказать несколько слов о том что же такое система Unigraphics, о которой и пойдет речь. Unigraphics – не просто мощная система построения математических 3D-моделей, сочетающая приемы твердотельного и поверхностного моделирования. Unigraphics – это целый комплекс программных модулей, образующих единую систему. Он предназначен для решения задач промышленного дизайна и формирования облика будущего изделия; для высокоточного описания отдельных деталей и крупных сборочных узлов и агрегатов, состоящих из сотен и тысяч компонентов; для проведения сложных инженерных расчетов и моделирования поведения изделия в реальных условиях; для выпуска конструкторской документации и управления сложнейшими станками с числовым программным управлением. Исходя из этого, становится очевидным, что ни о каком «домашнем» применении Unigraphics не может быть и речи, а предприятия, эксплуатирующие такое программное обеспечение нелегально, вступают в совершенно особые отношения с законом. Именно поэтому в книге вы не найдете советов и рекомендаций по установке системы. Мы справедливо полагаем, что всю необходимую помощь в этом вам оказал поставщик программного обеспечения. Назвав книгу «Unigraphics для профессионалов», мы адресуем ее высококвалифицированным инженерам и специалистам и хотим поделиться нашими знаниями и опытом работы с этой системой, накопленными за годы продвижения Unigraphics в России и в процессе внедрения системы на реальных предприятиях. Надеемся, что вы найдете много нового, что, возможно, осталось за пределами курса базового обучения Unigraphics. Мы построили эту книгу не в виде справочника по отдельным командам, а попытались поговорить о способах и методах моделирования отдельных деталей, узлов, о подготовке конструкторской документации и многом другом, что окажется полезным в вашей ежедневной работе. Еще одно замечание. Unigraphics имеет весьма гибкую систему лицензирования отдельных модулей (например, модуль проектировния и анализа механизмов), и вполне может оказаться, что рассматриваемые нами примеры вы не сможете повторить на своем рабочем месте из-за отсутствия лицензии на тот или иной программный модуль. В этом случае за необходимыми разъяснениями следует обратиться в службу технической поддержки вашего поставщика Unigraphics. Для чего нужны 3-D системы? Человек мыслит трехмерными образами, но описать их посредством слов удается далеко не всегда. Как утверждают психологи, 80% информации человек получает посредством органов зрения. Поэтому проще всего передать информацию о каком-то объекте (тем более о пока еще не существующем, но только задуманном) через его макет или модель. Еще можно нарисовать этот объект. Если он достаточно сложный одним рисунком не обойтись, нужно несколько рисунков с разных точек зрения на него. Это требует от человека определенного умения, чем могут похвастаться далеко не все. Были разработаны определенные правила выполнения таких рисунков через связанную систему проекций объекта на оговоренные плоскости, условных разрезов и сечений. Рисунок стал более простым, выполнение его более не требовало от человека наличия особых художественных навыков. Оно стало ремесленничеством, а сам рисунок получил название чертежа. Это была единственная возможность передать информацию о трехмерных объектах с помощью двухмерных объектов. Человеку приходилось вычерчивать проекции и сечения воображаемого трехмерного объекта на бумаге. Это был путь от трехмерного воображения к двумерному изложению. Обратный процесс – сформировать в воображении трехмерный объект по набору его плоских проекций – опять-таки требовал наличия трехмерного воображения и соответствующего опыта. Первые CAD системы (от Computer Aided Design – проектирование с помощью компьютера) позволили человеку выйти из-за кульмана, автоматизировать отдельные операции. Одним словом, освободившись от некоторой части рутинного труда, конструктор-проектировщик стал создавать те же чертежи на компьютере. При этом остался конфликт между трехмерным воображением и необходимостью отражения объемного мира в плоском виде. С появлением трехмерных систем твердотельного моделирования конструктор получил возможность создать модель проектируемого объекта такой, какой она и является. На первых порах зрительное представление модели было каркасным - в виде проволоки ребер. С развитием аппаратного обеспечения появилась возможность изобразить модель в виде твердого тела в динамическом режиме и с учетом различных характеристик поверхности этой модели. Что это такое параметризация и когда она нужна. С помощью системы Unigraphics инженер создаёт модель изделия или его элементов такими, какими он их себе представляет. Unigraphics – это система трёхмерного твёрдотельного гибридного моделирования, в котором инженеру предоставляется полный набор функций работы с твёрдым телом, поверхностью и каркасной моделью. Что такое гибридное моделирование? Это объединение возможности строить модель с помощью компонентов, определяемых набором параметров-размеров, и с помощью созданных в пространстве модели элементов, которые в явном виде не определяются никакими числовыми параметрами. В первом случае модель составляется посредством операций с элементарными компонентами (типа параллелепипед, цилиндр, конус, сфера) в качестве базовых и дополнительными компонентами (типа карман, бобышка, проточка и т.п.). Кроме того, может быть использован эскиз (Sketch). Эскиз является полностью параметризованным объектом. Для точной привязки к модели эскиза либо дополнительных компонентов используются специальные объекты – ассоциативно связанные с этой моделью оси и плоскости. Модифицировать такую модель можно путём изменения значений параметров. Во втором случае модификация осуществляется через геометрическое редактирование имеющихся элементов, которые представляют собой набор отрезков, дуг окружностей и кривых. Иногда при построении модели можно полностью обойтись без таких геометрических объектов, как точки, прямые, окружности, в качестве вспомогательных, а использовать их только при необходимости. Во всех случаях модель ассоциативно завязана с определяющими её элементами и будет изменяться в случае их редактирования. Таким образом, в системе Unigraphics одна и та же модель может быть создана множеством способов, и от выбранного способа построения будет лёгкость её дальнейшего редактирования и использования в сборке. Если впоследствии эту модель необходимо будет редактировать в достаточно широком диапазоне, то используют только инструменты создания полностью параметризованной модели. В других случаях, например, когда создается модель покупного изделия, и задачи получения параметрической модели не стоят, используют весь набор имеющихся инструментов. С помощью булевых операций, построенное каким-либо образом базовое тело дополняется другими компонентами. При этом позиционировать их можно просто по пространственным координатам, без затраты времени на определение ассоциативно связанных с моделью осей и плоскостей. Редактирование такой модели также возможно, но оно потребует затраты чуть большего времени и дополнительных действий инженера. Наличие таких возможностей дает больше свободы действиям инженера и ставит систему Unigraphics на порядок выше по сравнению с чисто параметрическими системами. Когда впервые появились параметрические CAD системы, казалось, что инженер теперь сможет разработать любое изделие, быстро получить его новую модификацию. Практический опыт работы показал, что сквозная параметризация изделий со сложными внешними формами не всегда возможна. Большие многокомпонентные модели не так-то легко модифицировать, просто изменив несколько размеров. Часто между компонентами возникают конфликты, которые трудно бывает предусмотреть заранее. Существующая практика конструирования такова. Когда конструктор разрабатывает оригинальную деталь, не имеющую прототипа, то он больше думает о внешнем виде этой детали и ее функциональности. Необходимость удобной параметризации отодвигается на второй план. Модель такой детали формируется теми инструментами, которые инженер считает удобными для применения. Больший диапазон инструментов дает большую свободу выражения замыслов инженера. Он думает о создаваемой конструкции, а не об алгоритме построения модели. В дальнейшем модель можно перестроить, компоненты одного типа заменить другими, изменить привязку и их позиционирование. Построенная модель ассоциативно зависит от всех элементов, на основе которых она была создана. Это означает, что при редактировании любого элемента будут изменяться результаты всех последующих построений вплоть до окончательной модели. Принцип мастер-модели Один из основополагающих принципов работы в системе UG – это принцип мастер-модели. Именно принцип, а не технология. Заключается он в том, что любая модель детали или сборки создается один раз. Впоследствии, во всех приложениях используется именно эта модель, а не ее копии. Необходимая нам модель вставляется в качестве единственного компонента в сборку. Эта модель является мастер-моделью. Поступать так порою необходимо по нескольким причинам. Конечно же, работая с моделью, можно в том же файле запустить любое приложение системы Unigraphics, выполнить необходимые расчеты, создать чертеж и т.д. Если работает специалист широкого профиля, знающий инструмент разных приложений, и нет ограничений на объем файла, все можно выполнить в этом файле. При групповой же работе над серьезным проектом обязательно существуют зоны ответственности, специализация между членами коллектива разработчиков. У модели есть свой круг инженеров-конструкторов, которые ее разработали и могут вносить в нее изменения. Другие инженеры, в частности: инженер, не разрабатывавший эту модель, но составляющий чертежную документацию на нее; расчетчик-прочнист; технолог, формирующий набор управляющих программ для станка с ЧПУ; и др. имеют только право чтения на файл данной модели. Разумеется, всем этим специалистам можно предоставить право редактировать файл модели, но, во-первых, все они одновременно не смогут работать с одним и тем же файлом. Во-вторых, и это наиболее важно, модель может быть несанкционированно изменена без ведома конструктора, который отвечает за эту деталь или сборку. Тогда каждый из специалистов создает свою сборку, вставляет данную модель в качестве компонента и в соответствующем модуле UG выполняет свою часть работы. Теперь уже у каждого из них будут полные права на свой файл и право чтения на остальные. Каждый из специалистов, участвующих в проекте, отвечает за выполнение своей работы и уверен в том, что информация не будет изменена без его ведома. При изменении же основы, то есть самой мастер-модели, во всех дочерних файлах результаты будут пересчитаны автоматически или по вызову функции обновления, поскольку все связанные с мастер-моделью файлы ассоциативно зависимы от нее. При разработке чертежей оправдана практика, когда чертежи деталей создаются непосредственно в файле самой модели с использованием функционала модуля Drafting. Для создания чертежей сборок, особенно больших, содержащих более сотни компонентов, настоятельно рекомендуем работать по вышеописанному принципу мастер-модели. Для проведения инженерного анализа интересующей нас модели она также вставляется в сборку. Теперь можно приступать к решению задач анализа. Здесь нет проблем согласования работы с одной моделью всех участников, поскольку подобный анализ выполняется, как правило, одним инженером. Но проанализировать чаще всего необходимо целый набор всевозможных случаев эксплуатации проектируемого изделия. Поэтому при работе с модулями инженерного анализа тот же принцип мастермодели еще раз срабатывает в скрытом виде. Мастер-моделью служит та модель, в которой были открыты соответствующие модули. Далее, например для прочностного анализа каждого случая нагружения, назначается свой сценарий. Аналогично назначаются сценарии при анализе работы механизмов в различных условиях. Все сценарии ассоциативно зависимы от модели, на которой они были первоначально определены, но для нахождения оптимального решения в любом сценарии существует возможность изменить модель. Изменения остаются в данном сценарии. Мастер-модель будет находиться в первоначальном виде, пока не будут приняты решения о внесении в нее предлагаемых изменений. Ассоциативные связи в модели Ассоциативностью называют способность системы запоминать логические связи между операциями построения и геометрическими объектами, которые использовались в этих операциях. В процессе построения модели создается связь, зависимость одних объектов (дочерних) от первоначальных объектов (родительских). Любые изменения родительских элементов приводят к автоматическому обновлению операции построения. Ассоциативность дает возможность без прохождения всего пути создания конечного объекта получать измененный конечный объект путем редактирования его родительских объектов. Сколько бы ни было уровней между родительскими и дочерними объектами, редактирование родителя повлечет изменение всех дочерних объектов на всех уровнях. Такая зависимость напоминает параметризацию объекта, когда изменение начальных параметров приводит к изменению конечного построения. Сочетание функционала параметрического моделирования с отслеживанием ассоциативных зависимостей открывает широкие возможности быстрого создания измененной модели на основе базовой. Инженерная практика устанавливает требования на ассоциативную зависимость между различными объектами. Одно дело, когда должна меняться поверхность при изменении кривой, по которой она была определена, и все построение было выполнено в одном файле. Совсем другое дело, когда в одном файле необходимо построить объект и связать его с объектом из другого файла. Механизмы реализации таких зависимостей различны. Первый случай реализован «по умолчанию»; при этом сохраняется возможность управлять, т.е. принять или отказаться от сохранения ассоциативных зависимостей между объектами. Для второго случая разработан специальный модуль UG/WAVE, который позволяет связать объекты, находящиеся в различных файлах, и задействовать их в последующих построениях, управлять этими связями и анализировать результаты, к которым приведут изменения родительских объектов. Unigraphics – комплексная система По тому, насколько широк круг решаемых системой задач, их делят на уровни: начальный, средний, высокий. К высокому уровню относят комплексные системы, которые связывают воедино все процессы проектирования и изготовления изделия. Они помогают решать задачи, стоящие в ходе разработки больших сложных изделий - от эскизного проектирования до реализации проекта, - через этап расчетов и оптимизации изделия. Для решения каждой из задач разработан законченный пакет программ, который называют модулем или приложением. Любое рабочее место в системе Unigraphics формируется набором модулей, что позволяет составить оптимальный по функциональности инструмент для дизайнера, конструктора, прочниста, технолога, конструктора технологической оснастки. В результате развития программного обеспечения коренным образом изменился процесс проектирования, конструирования и изготовления изделий. Человек всё больше передает компьютеру рутинную работу, освобождая свое время для творчества. Этапы создания новых изделий сегодня выглядят так: сначала разрабатывается трехмерная модель изделия. Затем проводится всесторонний анализ, вносятся изменения с целью получения наиболее оптимальной конструкции. После этого параллельно выпускается чертежная документация и разрабатываются технологические процессы изготовления деталей. Начинаем работу в Unigraphics Настройки системы Сеанс работы в системе Unigraphics начинается с теми настройками, которые были установлены в специальном файле. Этот файл находится в папке <BASE>\UGII (<BASE> - базовый каталог, в котором установлена система) и имеет имя ugii_env.dat . Он содержит настройки по умолчанию: значения, а также ссылки на файлы, в которых более подробно описано множество, относящихся к данной области параметров. В качестве установочных значений могут быть либо цифровые значения, либо выключатели соответствующих функций. В этом же файле указывается путь к каталогам на диске, где хранятся файлы, описывающие структуру хранения наборов шаблонов, библиотек, символов и прочих элементов. В качестве примера рассмотрим настройку системы мер. Когда создается новый файл, в окне предлагается выбрать либо метрическую систему мер, либо дюймовую. В начальный момент переключатель установлен на той системе мер, которая указана в файле настроек. Любая установка производится через системную переменную, которую еще называют логическим ключом. Переменная, отвечающая за систему мер, называется UGII_DEFAULTS_FILE. Эта системная переменная может быть настроена на файл ug_english.def илu ug_metric.def , т.е. на английскую или метрическую систему мер. Полностью вся настройка системной переменной на метрическую систему мер будет иметь вид: UGII_DEFAULTS_FILE=${UGII_BASE_DIR}\ugii\ug_metric.def После выполнения настроек файл необходимо сохранить (Save). Новый сеанс работы системы начнется с новыми настройками. В файле ug_metric.def содержится множество переменных, которые присваивают значения по умолчанию параметрам в отдельных областях различных приложений (т.е. модулей), как-то: модуля Gateway, области Sketch и области твердотельного моделирования модуля Modeling, модулей Drafting, Assemblies и прочих. Допускаемые настройки перечислены в комментариях, описывающих данную системную переменную. Например: · Переменная UG_objectColor определяет номер цвета для создаваемого объекта. В начальный момент переменная установлена на значении 2, что соответствует зеленому цвету. · Переменная UG_fitPercentage определяет соотношение площади экрана, занимаемой моделью, ко всей площади экрана в процентах после выполнения видовой операции Fit. Первоначальное значение 100%, рекомендуемое: 80-85%. · Переменная Solids_tolerDist_MU устанавливает значение линейной точности (в мм), с которой производятся вычисления при построениях. · Переменная Solids_tolerAngl устанавливает значение угловой точности (в градусах), с которой производятся вычисления при построениях. Рекомендуется после задания различных настроек в файле ug_metric.def проверять правильность их определения. Такую проверку осуществляет специальная программа ug_validate.exe , которая находится в той же директории: <BASE>\UGII. Формат запуска этой программы выглядит так: ug_validate -g ug_metric.def . Аналогично выполняются настройки для отдельных приложений - Modeling, CAM, Sheet Metal, Die Engineering – в файлах ug_modeling.def, ug_cam.def, ug_smd.def и ug_bodydes.def. Проверка настроек в этих файлах выполняется путем запуска той же программы в следующих форматах: ug_validate -m ug_modeling.def ug_validate -c ug_cam.def ug_validate -s ug_smd.def ug_validate -b ug_bodydes.def . Для того чтобы посмотреть все переменные и их значения в файлах, где они хранятся, не обязательно искать и открывать эти файлы. Можно в течение сеанса работы в системе выбрать из главного меню File → Utilities → Customer Defaults. Опция Customer Defaults выведет в информационном окне общесистемный файл значений по умолчанию ug_metric.def (или ug_english.def) и файлы параметров Modeling, CAM, Sheet Metal, Die Engineering. Для наглядности эти файлы выводятся в одном листинге. Начинаем работу в Unigraphics После запуска системы Unigraphics на экране появляется большое окно (первичное), которое еще называют главным окном. Внутри главного окна располагаются вторичные окна и компоненты. К вторичным окнам относят: графическое окно, информационное окно, различные диалоговые окна, инструментальные панели. Компонентами главного окна являются: панель заголовка, главное меню, строка подсказки и строка состояния. Заголовок главного окна – это строка, содержащая символ и название системы Unigraphics с указанием номера версии и названием текущего приложения (см. рис. 1.1). Рис.1.1. Главное окно системы Под панелью заголовка расположено главное меню, представляющее собой заголовки объединенных по назначению наборов функций. Главное меню состоит из пунктов: File, Edit, View, Insert, Format, Tools, Assemblies, WCS, Information, Analysis, Preferences, Application, Window, Help. Строка подсказки и строка состояния находятся в нижней части главного окна. В строке подсказки выводятся сообщения о том, какое действие необходимо выполнить в данный момент. Строка состояния расположена справа от строки подсказки. В ней отображается информация о текущей опции или последней выполненной функции. Эти сообщения носят информативный характер и не требуют ответного действия. Сразу после запуска системы название текущего приложения будет Gateway, в строке подсказки – сообщение: Use Open or New in File Menu. При выборе пункта главного меню под ним появляется выпадающее меню с набором функций. Функции, отмеченные значком треугольника, открывают каскадные меню (см. рис. 1.2). Рис.1.2. Пример выпадающего меню Инструментальная панель - это группа иконок, позволяющая напрямую обратиться к нужной функции, минуя многоступенчатый выбор через главное меню, выпадающие и каскадные меню. Unigraphics имеет большой набор инструментальных панелей. Поскольку инструментальная панель является разновидностью диалогового окна, они имеют одинаковые свойства и поведение на экране. Панели иконок легко настраиваются в зависимости от того, какие операции будут выполняться в текущем сеансе. Для этого в главном меню выбираем Tools → Customize. В появившемся меню в разделе Toolbars включается изображение соответствующих инструментальных панелей, а в разделе Commands определяется набор операций, иконки которых изображены на данной инструментальной панели (см. рис. 1.3). Рис.1.3. Меню настройки инструментальной панели После настройки под рукой будут наиболее востребованные функции. Расположить панели иконок можно вертикально или горизонтально по границе графического окна, а также на самом графическом окне; можно включать и выключать видимость всей панели или отдельных иконок. Используемая настройка иконок запоминается и восстанавливается при следующих сеансах работы. Выбираем из главного меню: File → New, находим каталог на диске, набираем имя файла. Оно не должно содержать букв кириллицы и пробелов. Для открытия уже существующего файла выбираем: File → Open, находим нужный файл. Порою высказываются сожаления, что названием файла (и каталогов) для Unigraphics не могут быть русские слова, набранные кириллицей. В этой связи можно сказать следующее. Такая система, как Unigraphics, является инструментом для коллективной разработки больших сложных изделий. В условиях работы большого коллектива инженеров было бы ошибочным называть файлы по названию детали или сборочной единицы. Трудно не повториться в таких названиях, а введение расширенных названий может только ввести путаницу. Выход один: использовать в названии файла обозначение детали – некий набор цифр, разделенных на разряды точками. Обозначение детали четко индивидуализирует ее. По обозначению сразу видно – деталь это или сборка. Это немаловажно, поскольку расширения файла детали и файла сборки одинаковы. Если не придерживаться такого правила в наименовании файлов, трудно будет без системы технического документооборота с деревом изделия выделить сборочные файлы. При наличии в обозначении букв кириллицы их заменяют на латинские. Для составления различных отчетов, например, спецификаций или каких-либо ведомостей с русским написанием названия и обозначения, можно пользоваться атрибутами части (файла). Атрибуты части, в содержании которых используются русские названия, создаются в соответствующих файлах. Сейчас текущим приложением является Gateway. Это базовый модуль, обеспечивающий доступ к уже созданным моделям. Доступные операции: получение справочной информации об истории работы с файлом, о геометрических размерах изделия, его массово-инерционных характеристиках, анализ геометрии (кривых, поверхностей). Для создания и редактирования деталей и сборок, а также решения специальных инженерных задач необходимо запустить соответствующее приложение: Application → … (или любую из иконок на панели инструментов). Типовые функции Прежде чем начать выполнять различные построения, необходимо познакомиться с несколькими типовыми функциями, с которыми мы встретимся во всех модулях Unigraphics. По своему назначению эти функции являются вспомогательными; они не работают сами по себе, а вызываются для обслуживания других, основных функций. Такими вспомогательными функциями являются: функции выбора объектов Class Selection, функции определения точки, вектора, плоскости, системы координат. Многие функции в различных модулях, например, Object Display, Blank, Delete, Transform, Information, Attribute, Move/Copy to Layer и другие, начинаются с выбора объектов, над которыми будет выполнена желаемая операция (см. рис. 1.4). Рис.1.4. Меню выбора объектов Выбор объектов может производиться по имени объекта, с использованием фильтров, в определенном регионе. Можно выбрать сборку по одному ее компоненту, произвести выбор всех объектов по установленному фильтру или только оставшихся объектов, выбрать связанные в цепочку объекты. При выборе объектов в строке состояния выводится информация об объектах. В ней указываются их имена, типы и общее количество выбранных объектов. Если выбираются копированные объекты, выводится информация о том, какие это объекты: старые или более новые. Функция определения точки Point Constructor обеспечивает стандартный способ задания точек, применяемый при работе со всеми модулями Unigraphics. Эта функция позволяет создавать объекты-точки и указывать позиции в трехмерном пространстве. Диалоговое окно Point Constructor (см. рис. 1.5) позволяет выбрать точку одним из методов, представленным в виде иконок, или ввести координаты в абсолютной или в рабочей системе координат. Также можно использовать режим построения точки относительно ссылочной точки. Смещение относительно ссылочной точки может рассчитываться в прямоугольной, цилиндрической, сферической системе координат, по вектору и вдоль кривой. Для быстрого обнуления значений полей координат используется кнопка Reset. Рис.1.5. Диалоговое окно Point Constructor Функция Vector Constructor (см. рис. 1.6) используется для определения направления (построения единичного вектора). Единичные вектора имеют только компоненты, задающие направление; начальная точка и длина вектора не сохраняются. Эта функция используется во многих приложениях системы. Рис.1.6. Функция Vector Constructor В диалоговом окне выделена область задания единичного вектора различными методами, представленными с помощью иконок. Можно работать в декартовой (по компонентам I, J, K) или в сферической (по компонентам Phi и Theta) системе координат. Внизу окна после задания вектора активируется опция Cycle Vector Direction, которая циклически меняет направление вектора, показывая все доступные варианты направлений. Рис.1.7. Функция Plane Функция Plane (см. рис. 1.7) предназначена для задания плоскости. Ее диалоговое окно отличается от окон задания точки и вектора. Оно представляет собой набор различных способов задания плоскости: Three Points – по трем заданным точкам; Two Lines – по двум прямым; Point, Perpendicular Curve – перпендикулярна кривой и проходит через точку; Plane of Curve – совпадение с плоскостью кривой; Plane of WCS – плоскость рабочей системы координат; Plane of CSYS – плоскость XY существующей системы координат; Principal Plane – выбор из набора базовых плоскостей; Existing Plane – существующая плоскость; Two Tangent Faces – касательно к поверхностям базовых тел; Point, Tangent Face – через точку и касательно к поверхности тела; Coefficients – задание аналитического уравнения плоскости с помощью коэффициентов A,B,C,D; Parallel Through Point – параллельно заданной плоскости и через точку; Parallel at Distance – параллельно заданной плоскости и на определенном расстоянии с указанной стороны; Perpendicular, Through Line – через прямую и перпендикулярно заданной плоскости. Рис.1.8. Функция CSYS Constructor Функция CSYS Constructor (см. рис. 1.8) позволяет создавать ассоциативные системы координат. Диалоговое окно этой функции содержит панель с иконками различных способов определения системы координат. Способы задания системы координат могут быть следующими: Three Points – тремя точками; Two Vectors – двумя векторами; Point, Two Vectors – точкой и двумя векторами; X Point and a Z-Axis – точкой на оси X и направлением оси Z; CSYS of Object – на основе системы координат выбранного объекта; Through Point, Perpendicular to Curve – через точку и перпендикулярно кривой; Plane and Vector – плоскостью и вектором; Three Planes – тремя выбранными точками; Offset from CSYS – смещением по осям X,Y,Z относительно выбранной системы координат; Absolute CSYS – по абсолютной системе координат; CSYS of Current View – на базе системы координат текущего вида. Методология построения детали в Unigraphics Построение модели детали с использованием эскизов и кривых В данной главе мы выполним построение модели импеллера (см. рис. 2.1) и познакомимся с правилами работы с объектами типа Sketch (Эскиз), построением кривых и элементов твердых тел на основе этих кривых. Рис. 2.1. Модель импеллера Начинаем с запуска сеанса работы Unigraphics. В главном меню выбираем опцию File → New или иконку из панели инструментов. В окне “Имя файла”, появившегося меню, набираем impeller (см. рис. 2.2). Отметим, что файл по умолчанию будет иметь расширение prt. Кроме того, файл создается в метрической системе мер. Рис. 2.2. Меню назначения новой части Нажимаем OK. В заголовке главного окна добавилась надпись в квадратных скобках: [Displayed: impeller.prt Work: (Modified) impeller.prt] . Вызываем приложение для создания моделей из главного меню Application → Modeling, или Ctrl+M, или из панели инструментов иконку Modeling . В заголовке главного окна название загруженного приложения сменилось на Modeling. Прежде чем как проводить построение, проверим настройки значения точности построения. Для этого в главном меню выбираем Preferences → Modeling. В окне Distance Tolerance установлено значение 0.001, оно появилось из файла значений по умолчанию ug_metric.def . При необходимости, это значение в нашем файле для данной модели можно изменить. Закрываем меню: OK. Построение кривой по точкам из файла Построение модели импеллера начнем с создания эскиза сечения сердечника. Одним из элементов этого сечения является кривая, которая передана нам в виде файла с набором точек. Создадим эту кривую в пространстве будущей модели. Из главного меню вызываем Insert → Curve → Spline → Through Points, в появившемся меню выбираем Points from File (см. рис. 2.3). Рис. 2.3. Меню определения кривой по точкам После вызова этой опции появляется окно, в котором выбираем папку и файл core_points.dat, содержащий набор точек (см. рис. 2.4). Рис. 2.4. Диалоговое окно открытие файла Файл, содержащий набор точек, должен быть составлен по следующим правилам: информация о каждой точке занимает одну строку; первые три цифры являются координатами X,Y,Z; следующие три цифры - компоненты i,j,k вектора наклона касательной к кривой в этой точке; еще одна цифра – значение кривизны кривой в этой точке. Наклон касательной и значение кривизны не являются обязательной информацией. Ее можно заносить в строку либо пропускать. Если после трех первых цифр координат точки будет присутствовать только одна цифра, система распознает ее как значение кривизны в этой точке. В использованном нами файле содержалась информация о координатах пятнадцати точек и условии наклона касательных к кривой на границах (см. рис. 2.5). Рис. 2.5. Файл с координатами точек В графическом окне появились метки точек и условия наклона касательной в граничных точках (см. рис. 2.6). Принимаем нажатием OK, Cancel. Рис. 2.6. Метки точек в графическом окне Кривая построена. Теперь создадим эскиз и включим в него эту кривую. Создание эскиза В главном меню выбираем Insert → Sketch или из панели инструментов иконку Sketch. В строке подсказки появилась надпись: Choose Create to create a sketch (Выберите опцию «Создать» для создания эскиза). Следуем этому руководству и выбираем эту опцию. В появившемся меню предлагается в качестве плоскости эскиза выбрать любую координатную плоскость. Выбираем плоскость X-Y текущей системы координат. Имя эскизу дадим CORE (Сердечник). OK (см. рис. 2.7). Рис. 2.7. Меню создания эскиза Теперь все иконки на окне Sketch Tools стали цветными (активизировались). На экране появились автоматически созданные объекты: одна Datum Plane (Плоскость назначения) и две Datum Axis (Ось назначения). При помощи видовой функции Pan (щелчком по правой кнопке мыши или вызвав из панели ) передвинем вид в удобное для нас место графического окна. инструментов иконку Теперь можно приступить к эскизным построениям. Первым делом необходимо добавить в эскиз уже созданную кривую. Пользуемся функцией Add Extracted Curve to Sketch, выбираем кривую, OK (см. рис. 2.8). Рис. 2.8. Меню инструментов создания элементов эскиза Перенесем первоначальную кривую на слой 2, который имеет статус “Невидимый”. Для этого, не выходя из работы с эскизом, воспользуемся функцией Edit → Object Display (или иконкой ). Появится типовая функция выбора объекта. Вызываем опцию Type. В меню выбора по типу объектов отмечаем Curve. OK. В графическом окне указываем кривую (см. рис. 2.9). Появляется икона перечисления выбранных объектов. При выбранном первом объекте в строке состояния появляется сообщение: Spline : S1 (newer). При выбранном втором объекте – сообщение: Spline (older). Подтверждаем выбор второго объекта, в строке состояния сообщение: Spline selected. OK. Рис. 2.9. Меню выбора объектов по типу В окне Edit Object Display в строку Layer заносим 2 - номер слоя, на котором теперь будет находиться первоначальная кривая. Выполним оставшиеся построения элементов сечения сердечника. В окне меню Sketch Tools на панели Curve Construction выбираем икону Basic Curves. Выбираем тип построения Line и при включенном режиме String Mode (построение цепочкой без разрывов); начиная с верхней границы кривой, осуществляем приблизительное построение сечения. По завершению построения нажимаем клавишу Break String. Получили замкнутый профиль. Cancel. (см. рис. 2.10). Рис. 2.10. Предварительный набросок сечения При построении курсором указывались положения граничных точек отрезков. При этом, если отклонения от вертикали или горизонтали составляли меньше допустимого значения угла, то на такие отрезки автоматически назначались условия вертикальности или горизонтальности. Значение допустимого угла отклонения устанавливается в настройке эскиза: Preferences → Sketch, строка Snap Angle. Здесь же устанавливается число знаков после запятой в размерах на эскизе, высота текста в этих размерах и некоторые другие значения. Определение геометрических зависимостей в эскизе Следующим действием будет задание геометрических условий для элементов построенного сечения. Выбираем в меню Sketch Tools опцию Constraints, в появившемся меню иконку Geometric. Теперь выбираем отрезки, которые должны быть горизонтальными (не будем выбирать только отрезок, отходящий от нижней границы кривой). Нужно выбрать отрезки, на которые данное условие не было наложено автоматически, но ничего страшного не произойдет, если в наш выбор попадут и такие отрезки. В окне появится перечень допустимых геометрических условий для выбранных объектов. Выберем условие Horizontal, для его применения этого условия нажмем Apply. Аналогично выполняется назначение условия вертикальности на соответствующие элементы сечения. Назначим условие касания замыкающего отрезка к кривой в граничной точке. Выбираем этот отрезок и выбираем кривую. В появившемся меню выбираем Accept Extracted Curve. В окне меню Constraints выбираем единственное предлагаемое условие Tangent, Apply. Надо сказать, что назначение данного условия не было обязательным - можно было обойтись условием горизонтальности замыкающего отрезка. Поскольку при построении кривой были заданы условия наклона касательной в граничных точках, то сочетание этих условий и определение граничащих отрезков в качестве вертикального и горизонтального дадут тот же результат. Нанесение размеров в эскизе Переходим к этапу простановки размеров. Не выходя из меню Constraints, выбираем иконку (Dimensional). Вы заметили, что в графическом окне на границах отрезков изображаются символы имеющихся степеней свободы этих углов. Наша задача – проставить размеры, чтобы эскиз был полностью определен, т.е. чтобы у его элементов не оставалось степеней свободы (см. рис. 2.11). Рис. 2.11. Определение размеров в эскизе В меню Constraints устанавливаем метку Delay Evaluation (отложить обновление эскиза). Выбираем иконку Inferred – размеры, тип которых распознается самой системой. Указывая один отрезок, получаем длину этого отрезка. Указывая второй объект, получаем линейный или угловой размер. Для простановки отдельных типов размеров можно также использовать соответствующие иконки: Horizontal, Vertical, Angular и прочие. Когда объекты для простановки размеров заданы, в окне Current Expression появляется имя этого размера (параметра), присвоенное системой, и текущее значение размера. В окно текущего значения вводим нужное значение, нажимаем Enter. Задаем все размеры кроме диаметральных. После нажатия OK в меню Constraints происходит обновление эскиза по заданным размерам. Если требуется задать радиусные или диаметральные размеры относительно оси вращения импеллера, то необходимо создать вертикальный отрезок – ось и определить его в качестве ссылочного объекта. Для этого после построения вертикальной оси выбираем иконку Convert To/From Reference, указываем этот вертикальный отрезок, OK. У отрезка изменился цвет и тип линии. Заходим опять в меню Constraints → Geometric, указываем на любую концевую точку оси, указываем вертикальную Datum Axis и выбираем условие Point on Curve, Apply. Теперь определяем все необходимые размеры отдельных элементов относительно оси. Окончательно эскиз выглядит как показано на рис. 2.12. Рис. 2.12. Окончательный вид эскиза Заметим, что в строке состояния имеется сообщение о необходимости определить еще два размера. Остались неопределенными длина и вертикальная привязка оси вращения. Эти условия можно оставить незаданными, но лучше их как-то определить. Заканчиваем работу с эскизом. Выбираем Deactivate, OK. Использование типовых элементов формы (Feature Modeling) Построим сердечник импеллера как тело вращения, получаемое вращением сечения вокруг вертикальной Datum Axis. Выбираем из главного меню: Insert → Form Feature → Revolve или иконку Revolved Body . Указываем на любой элемент эскиза; подсвечивается весь эскиз. OK. В качестве метода построения тела вращения указываем Axis Angle. Появляется стандартное меню определения вектора. Выбираем иконку Datum Axis и указываем нужную ось в графическом окне. OK. Назначаем параметры для создания тела вращения: начальный и конечный угол, эквидистанты. Принимаем следующие значения: Start Angle 0 End Angle 360 First Offset 0 Second Offset 0 OK. Cancel. Сердечник создан. Используем функции трансформации вида Fit, Rotate, Pan (выбираются из выпадающего меню, которое вызывается правой кнопкой мыши, или из панели инструментов ) для удобного расположения модели в окне. Применим тонированную закраску модели, используя функцию Shaded (из выпадающего меню на правой кнопке мыши Display Mode → Shaded или из панели инструментов ). Результат показан на рис. 2.13. Рис. 2.13. Тонированное изображение сердечника Управление слоями Разнесем построенные элементы по различным слоям и объединим слои в категории. Для этого установим режим отображения всех слоев в меню управления слоями: Format → Layer Setting либо из панели инструментов выбираем иконку . Выбираем режим отображения: All Layers и, кроме того, включаем функцию Show Category Names. В окне Layer/Status появится весь список слоев. Рабочим слоев в данный момент является слой 1. OK. Назначение категорий слоев выполняется вызовом в главном меню Format → Layer Category (иконка ). Устанавливаем курсор в окне Category и набираем имя категории: CORE_CRV, в окне Description, перейдя на кириллицу, набираем: кривая сердечника. Выбираем опцию Creat/Edit. В новом меню в окне Layer and Status выбираем слой 2 и ниже выбираем функцию Add. Статус слоя 2 для категории CORE_CRV становится Included (включен). OK (см. рис. 2.14). Аналогично назначаем категории: DATUMS для слоя 3, SKETCH для слоя 4, PROFIL_CRV (с описанием: кривые профиля) для слоев 5 и 6, PROFIL_SECT (с описанием: сечения профиля) для слоя 5, LAW_CRV (с описанием: кривые по закону) для слоя 6. Заканчиваем определение слоев. OK, OK. Рис. 2.14. Меню определения категорий слоев В категорию могут входить сразу несколько уровней. Уровень может входить в несколько различных категорий. Перенесем объекты Datum Axis и Datum Plane на 3-й слой. Вызываем в главном меню: Format → Move to Layer или иконку на панели инструментов. Выбираем тип выбираемого объекта – Datums, OK. В меню Class Selection обращаемся к опции Select All. Подсвечиваются все объекты Datum Axis и Datum Plane. В окне состояния сообщение: 3 objects selected. OK. В списке категорий в меню Layer Move выбираем категорию DATUMS. В окне Layer подсвечивается слой 3. OK. Объекты Datums исчезли в графическом окне, поскольку были перенесены на слой 3, который имеет в данный момент статус “Невидимый”. Аналогично перенесем эскиз на слой 4. Поменяем статусы слоев: вызовем Format → Layer Setting, выберем в окне Layer/Status слой 5 и нажатием кнопки Make Work присвоим ему статус “Рабочий”. Это означает, что все вновь созданные объекты будут находиться на слое 5. Статус слоя 1 автоматически поменялся на “Selectable” (Выбираемый). Присвоим ему статус “Invisible” (Невидимый). OK. На этом слое построим сечения профиля импеллера. Построение базовых кривых (линии, окружности, дуги) Начнем с построения первого профиля, лежащего в плоскости X-Z. Его ось совпадает с осью X (действующей рабочей системы координат). Для этого обратимся из главного меню к функции создания базовых кривых: Insert → Curve → Basic Curves или к иконке . Выбираем тип Line (иконку )ив выпадающем меню метода выбора точки - Point Constructor. Чтобы легче было строить нужные отрезки, следует расположить рабочую плоскость X-Y в действующей плоскости X-Z. Не прерывая операцию построения линии, из главного меню вызываем WCS → Rotate (или иконку ) и выбираем операцию поворота координатной системы против оси X (строка – XC Axis: ZC → YC), OK. Рабочая система координат переориентировалась. Продолжаем построение отрезка. Зададим конец отрезка как точку с координатами: XC = 77 YC = 1.5 ZC = 0 , OK. В точке пространства с такими координатами появилась метка в виде звездочки. Вводим координаты точки конца отрезка: XC = 77 YC = -1.5 ZC = 0 , OK. Появилась еще одна метка-звездочка, и был создан отрезок. Нажимаем Back и возвращаемся в меню Basic Curves. Для удобства выполнения последующих построений переориентируем вид так, чтобы направление нашего взгляда совпадало с осью Z. Для этого из главного меню вызываем: View → Orient → OK. Произошла переориентация вида. Продолжаем работать с меню Basic Curves. В качестве метода выбора точки автоматически был установлен метод Inferred Point. Совмещаем курсор с верхней границей отрезка. Подсветились контрольные точки этого отрезка: граничные точки и середина. Курсор совмещен с верхней граничной точкой; делаем выбор. Теперь, перемещая курсор в графическом окне, видим связанный с положением курсора и выбранной точкой отрезок. Внизу графического окна появилась дополнительная панель с характеристиками этого отрезка. Необходимо отключить режим отображения текущих данных по положению курсора. В главном меню выбираем: Preferences → User Interface. В выпавшем меню в разделе Dialog Bar Options убираем отметку у опции Tracking, OK. Теперь видим, что при перемещении курсора, значения в окнах панели Inferred Point не меняются. Устанавливаем курсор на окно Angle и набираем значение 178.5; после этого перемещаем курсор левее символа системы координат и делаем выбор. Независимо от текущего положения курсора был построен отрезок, выходящий из верхней границы вертикального отрезка и имеющий заданный угол наклона. Аналогично строим отрезок, выходящий из нижней границы вертикального отрезка с углом наклона 181.5 градуса (см. рис. 2.15). Рис. 2.15. Построение отрезков После этого строим вертикальный отрезок, выходящий из начала системы координат. Устанавливаем метод выбора точки Point Constructor в меню Basic Curves. Обнуляем задаваемые значения координат точки нажатием клавиши Reset. OK, Back. В опции “Parallel to” нажимаем клавишу YC. В графическом окне выбираем нижний отрезок. Построился отрезок, выходящий из точки начала системы координат, параллельный оси YC и имеющий границу на нижней прямой. В меню Basic Curves выбираем иконку функции Trim. Раскрывается меню “Trim Curve”. Задействован выбор объекта для определения первой границы. Выбираем только что созданный отрезок. После этого с помощью иконки переходим к выбору отрезков, которые необходимо отрезать. Выбираем отрезки, построенные с заданием углов. Указываем курсором на те части этих отрезков, которые находятся левее границы. Эти части будут удалены. Back (см. рис. 2.16). Аналогичным образом осуществляем обрезку вертикального отрезка до верхней границы. Теперь построим вертикальный отрезок с координатой XC=100 и выполним обрезку отрезков по этой границе. Рис. 2.16. Обрезка отрезков Окончательно, построение должно иметь следующий вид (см. рис. 2.17). Рис. 2.17. Законченное построение сечения При помощи функции Edit → Object Display (иконка ) изменим тип линии первоначально созданного вертикального отрезка. Выбираем отрезок в графическом окне, OK. В меню Edit Object Display в строке Line Font выбираем тип Dashed, OK. Построение начального профиля закончено. Приступаем к построению конечного сечения профиля. Перед этим создадим конструкторскую систему координат в текущем положении WCS (рабочей системы координат). Для этого вызовем в главном меню ). После этого перенесем положение начала системы координат: WCS → Save (или из панели иконку WCS → Origin, XC=0, YC=0, ZC=42, OK, Cancel. Повернем систему координат вокруг оси ZC на угол 36°: WCS → Rotate, +ZC Axis: XC → YC, в окне Angle: 36, OK. Мы видим (используя видовую функцию Rotate), что на месте первоначального положения остался объект CSYS (оси XYZ), а рабочая система координат (XC YC ZC) заняла новое положение (см. рис. 2.18). Рис. 2.18. Вид после операции Rotate. Аналогично построению начального сечения профиля выполняем построение элементов концевого сечения. Используя функцию Basic Curves и метод выбора точки - Point Constructor, строим отрезок по точкам с координатами: XC = 50; YC = 1.5; ZC = 0; OK; XC = 50; YC = -1.5; ZC = 0; OK; Back. Из концов этого отрезка строим отрезки с углами наклона 178.5° и 181.5° соответственно. Строим отрезок параллельный оси YC и проходящий через точку начала координат. Производим операции обрезки (см. рис. 2.19). Рис. 2.19. Созданные сечения Концевое сечение профиля построено. Вернем расположение и ориентацию WCS в тот вид, который она имела при создании начального сечения профиля. Для этого используем имеющийся объект CSYS. Вызываем из главного меню WCS → Orient (иконку OK (см. рис. 2.20). из панели инструментов). Курсором указываем на объект CSYS, подтверждаем выбор, Рис. 2.20. Изменение ориентации WCS Рабочая система координат была переориентирована и вернулась в прежнее положение. Изменим статус слоев. Вызываем из главного меню Format → Layer Setting либо из панели инструментов иконку (см. рис. 2.21). . Слой 6 назначаем рабочим (Work), слой 5 делаем невидимым (Invisible), OK Рис. 2.21. Изменение статуса слоев Построение кривой по математической формуле Приступаем к заданию кривых, определяющих законы, по которым будет построена лопатка импеллера. В Unigraphics имеется возможность задания кривой через систему параметрических функций: x = x(t); y = y(t); z = z(t); где параметр t является независимой переменной. Такое задание кривых дополняет обычные способы определения кривой по точкам или полюсам и дает инженеру большую свободу в тех случаях, когда кривая может быть описана с помощью математических функций. Тогда, не делая долгих построений, просто используют формулы, разработанные в теории данной предметной области. Кривая, которая сейчас будет построена, определяет закон ориентации профиля при его движении от начального положения до концевого. Сначала необходимо определить все переменные в базе выражений. Это выполняется с помощью команды Tools → Expression или комбинацией клавиш Ctrl+E (см. рис. 2.22). В строке задаем выражение для параметра: t=1, Enter. Конкретная величина параметра t не имеет значения. Можно задавать любое число. Система принимает по умолчанию, что параметр меняет значение от 0 до 1. Рис. 2.22. Меню определения математических выражений Теперь необходимо ввести параметрические формулы координат x, y, z кривой. Будем использовать имена xt, yt, zt поскольку такие имена для выражений по закону система принимает по умолчанию. Уравнение для координаты x: Уравнение для координаты y: Уравнение для координаты z: xt=100*cos(36*t) , Enter. yt=100*sin(36*t) , Enter. zt=49.295316*(rad(36*t))^0.344622 , Enter. В этих уравнениях: 100 – это радиус начального профиля; а 36 – величина угла сектора построения лопасти в градусах. При постоянной координате z (например, равной нулю) кривая, заданная только уравнениями xt и yt, вырождается в дугу окружности радиуса 100 мм, начальным углом 0° и конечным углом 36°. В уравнении координаты z применяется степенная функция угла сектора лопасти в радианах. Поэтому необходимо применить стандартную встроенную функцию преобразования углов в радианы: rad(_). Переходим к построению кривой. Для этого выбираем из главного меню Insert → Curve → Law Curve или иконку из инструментальной панели. Предлагается задать способ определения координаты X, выбираем By Equation. Выпадает меню для определения имени выражения для переменной. Нажатием клавиши OK принимаем имя t. Теперь нужно задать имя выражения для координаты x. В окне по умолчанию будет стоять имя xt, нажимаем клавишу OK (см. рис. 2.23). Рис. 2.23. Определение выражения для координаты X Аналогично повторяем задание выражений для координат Y и Z. Появляется меню задания способа ориентации кривой по закону. Мы используем ориентацию рабочей системы координат, поэтому нажимаем клавишу OK. Система построила кривую по заданному закону (см. рис. 2.24). Рис. 2.24. Построенная по выражению кривая Построение кривой по точкам Построим еще одну кривую, которая определяет закон изменения радиуса профиля при движении профиля от начального положения к концевому. Во-первых, необходимо переориентировать рабочую систему координат так, чтобы ось XC совпадала с осью начального профиля, а ось YC совпадала с осью вращения импеллера. Такая система координат использовалась в самом начале работы. Вызываем из главного меню WCS → Orient или иконку из панели инструментов. В выпавшем стандартном меню определения системы координат выбираем иконку Absolute CSYS, OK. Меняем ориентацию вида на вид Top нажатием правой кнопки мышки и выбором в выпавшем меню Orient View → Top или выбором иконки на инструментальной панели. Теперь вызываем из главного меню Insert → Curve → Spline → Fit. В появившемся меню выбираем Point Constructor, вводим координаты точек: x = 50; y = 42; z = 0; OK, x = 52.8312; y = 34.9; z = 0; OK, x = 61.1613; y = 23.1681; z = 0; OK, x = 77; y = 15; z = 0; OK, x = 90.0680; y = 7.5250; z = 0; OK, x = 100; y = 0; z = 0; OK, еще раз OK. Подтверждаем, что закончили назначение точек OK. Проверяем, что в разделе Fit Method выпавшего меню Creat Spline by Fit переключатель установлен на методе By Tolerance. Нажимаем клавишу Assign End Slopes, чтобы назначить наклон касательной в граничных точках. Выбираем метод определения наклона касательной: Vector Component. Вводим значения DXC = .3192 ; DYC = -.9476 . Устанавливаем курсор возле первой точки, изображенной в графическом окне в виде звездочки, OK. Заканчиваем назначение наклона касательных. OK. Заканчиваем операцию построения. OK. Знакомимся с отчетом об ошибках. Cancel (см. рис. 2.25) Рис. 2.25. Меню построения кривой по апроксимируемым точкам Делаем слой 5 видимым. Для этого обращаемся к иконке с номером рабочего слоя Work Layer и вызываем список рабочих слоев. Выбираем слой 5. Теперь рабочим слоем является слой 5, а слой 6 получил статус «Видимый». Еще раз повторяем обращение к иконке Work Layer и выбираем в качестве рабочего слой 6. Таким образом, слой 6 стал рабочим и слой 5 – видимым. Изменяем положение вида функцией Rotate. Далее строим вертикальный отрезок на оси импеллера, соединяющий нижний и верхний профили. Используем функционал Basic Curves и метод выбора точки Control Point . Режим последовательного построения String Mode выключен. Выбираем курсором ближе к середине отрезок начального профиля и затем аналогичную точку верхнего профиля. Cancel. Сейчас в графическом окне видим следующую картинку (см. рис. 2.26): Рис. 2.26. Набор построенных кривых Изменим цвета построенных кривых. Обращаемся к функции Edit → Object Display в главном меню либо вызываем нажатием Ctrl+J. Выбираем кривую, построенную по математическому закону. OK. В выпавшем меню обращаемся к окну определения цвета объекта Color. Появляется панель с основными цветами, а при нажатии клавиши More – расширенная панель цветов (см. рис. 2.27). Рис. 2.27. Изменение цвета изображенных объектов Выбираем цвет объекта (например, красный Red). OK. Возвращаемся в меню Edit Object Display, Apply. Не выходя из операции, выбираем команду выбора нового объекта Select New Objects. Назначаем кривой, по которой будем задавать закон изменения длины профиля лопасти, цвет Orange (оранжевый). Вертикальному осевому отрезку – цвет Blue (синий). Начальному профилю, определяемому сплошными отрезками, назначим цвет Olive (оливковый). При его выборе будем использовать метод выбора по цепочке – Chain – в меню Class Selection. Укажем на любой отрезок начального профиля (удобнее выбрать длинный отрезок). Выбранный отрезок подсветится в графическом окне, а в меню выбора клавиша Chain заменится на End Chain. Поскольку мы выбираем замкнутый контур, нет необходимости выбирать кривую, определяющую конец цепочки. Нажимаем End Chain. В окне состояния появилось сообщение, что весь выбор состоит из четырех объектов. OK. Теперь определим цвет. Использование приемов поверхностного моделирования при построении детали Приступаем к построению лопатки импеллера. Лопатка будет создана методом протягивания профиля по одной направляющей от начального до концевого положения с использованием кривых, задающих закон ориентации профиля и закон изменения его длины. Воспользуемся функцией Swept, вызвав из главного меню Insert → Free Form Feature → Swept или иконку из панели инструментов. В строке сообщений предлагается выбрать первую направляющую кривую (Select guide string 1). В качестве такой направляющей выберем вертикальный отрезок синего цвета. OK. От выбора второй направляющей отказываемся – нажимаем OK. Теперь необходимо задать первое сечение. Выберем отрезки начального профиля. Первым выберем длинный отрезок в зоне ближе к широкой части профиля. Потом выбираем короткий отрезок, противоположный длинный отрезок и замыкающий отрезок. OK. На профиле появилась стрелка, символизирующая правило обхода: указана начальная точка, совпадающая с началом вектора, и направление. Рис. 2.28. Определение кривых для построения лопатки Определяем второе сечение. В качестве метода выбора зададим Chain Curves (цепочка кривых). Выбираем длинный отрезок на концевом профиле в зоне ближе к узкой части профиля. OK. Заканчиваем операцию выбора цепочки кривых. OK. Закрываем операцию определения второго сечения. OK. На верхнем профиле появилась стрелка, определяющая правило обхода этого профиля (см. рис. 2.28). Стрелки обхода на профилях должно быть расположены аналогичным образом. В противном случае, дальнейшее построение будет происходить некорректно. Отказываемся от определения третьего сечения. OK. Принимаем линейный метод интерполяции. OK. В качестве метода выравнивания выбираем выравнивание по точкам By Points. OK (см. рис. 2.29). Задаем точки, по которым будет происходить выравнивание. Первое условие выравнивания (соответствие начальных точек обхода профилей) принимаем по умолчанию. Затем задаем оставшиеся точки выравнивания. Сначала на первом сечении - на длинном отрезке ближе к узкой части профиля. Система распознает точку стыковки отрезков, и появляется метка: 1. Указываем аналогичную точку на длинном отрезке концевого профиля. На нем также появляется метка 1. Опять на начальном профиле указываем на другом длинном отрезке в зоне узкой части. Появляется метка 2. Аналогично на верхнем профиле. Там также появляется метка 2. После этого на нижнем профиле указываем тот же длинный отрезок в зоне ближе к вертикальной оси. Появилась метка 3. После чего делаем такой же выбор на верхнем профиле – метка 3. Рис. 2.29. Определение метода выравнивания Больше условий выравнивания не задаем. OK. Следующим шагом определяем метод ориентации промежуточных сечений между начальным и концевым профилями. Выбираем метод ориентации по кривой - Another Curve. Выбираем красную кривую, построенную по математическому закону. OK. Определяем метод задания закона масштабирования: Another Curve. Указываем оранжевую кривую. OK. На следующем этапе предлагается определить опорную кривую (spine curve) в качестве дополнительного закона ориентации сечений. При задании опорной кривой все промежуточные сечения должны будут лежать в плоскостях, перпендикулярных этой кривой. Применение опорной кривой очень эффективно, когда применяется несколько направляющих кривых, имеющих совершенно разную параметризацию. В качестве опорной кривой зададим ту же кривую, которую задавали в качестве направляющей, – вертикальный отрезок. Выбираем тип булевой операции: Create (Создание). Cancel. Лопатка построена. Применим тонированную закраску модели, используя функцию Shaded (из выпадающего меню на правой кнопке мыши Display Mode → Shaded или из панели инструментов видим (см. рис. 2.30): ). В графическом окне Рис. 2.30. Результат построения Выполним обрезку построенной лопасти. Вызываем из главного меню Insert → Feature Operation → Trim или из панели инструментов иконку . Указываем лопасть в качестве объекта, над которым будет проводиться операция обрезки. OK. В качестве объекта, которым будет проводиться обрезка, выберем цилиндрическую поверхность. Опция - Define Cylinder. Метод задания цилиндра – Diameter. Величина диаметра 154 мм. OK. Метод задания оси цилиндра - Point, +YC. Точка, через которую проходит ось цилиндра, имеет нулевые координаты. Появляется иконка вектора, выходящего из нулевой точки и направленного по оси YC. Принимаем его. OK. Появляется иконка вектора, определяющего, какая отрезанная часть объекта будет удалена. Можно принять его или заменить противоположным. Нам необходимо отбросить периферийную часть лопасти. Принимаем: OK. Видим результат операции (см. рис. 2.31): Рис. 2.31. Результат операции обрезки периферийной области лопасти В месте обрезки для справки был оставлен пунктирный отрезок. Видно, что лопасть обрезана в зоне этого отрезка. Выполняем аналогичную операцию обрезки лопасти цилиндрической поверхностью диаметром 60 мм. Удаляться будет часть, находящаяся ближе к оси импеллера, поэтому при выборе направления обращаемся к опции Reverse Default Direction. Cancel. После выполнения операций обрезки лопасть выглядит, как показано на рис. 2.32. Рис. 2.32. Результат операции обрезки корневой области лопасти Перенесем лопасть на слой 1. Используем для этого функцию из главного меню: Format → Move to Layer (или иконку на панели инструментов). Поскольку слой 1 имеет статус «невидимый», лопасть в графическом окне пропала. Меняем статус слоям: слой 1 делаем рабочим, слои 5 и 6 – невидимыми. В графическом окне видим сердечник и лопасть (см. рис. 2.33). Рис. 2.33. Изображение сердечника и лопасти Необходимо объединить эти тела в одно тело. Используем булеву операцию. Для этого из главного меню вызываем Insert → Feature Operation → Unite или обращаемся к иконке сердечник, затем лопасть. OK. Cancel (см. рис. 2.34). . Сначала выбираем Рис. 2.34. Результат операции объединения Сменим тонированный (Shaded) режим изображения модели на проволочный (Wireframe). Для этого используем иконку из панели инструментов или выпадающее меню на правой кнопке мыши Display Mode → Wireframe. Видно, как изменилось очертание лопасти. Теперь это не самостоятельный объект, а часть единого тела. Прежде чем размножить лопасть, создадим необходимые скругления на ребрах самой лопасти и в местах сочленения лопасти и сердечника. Для удобства работы увеличим изображение верхней части лопастей операцией Zoom. (см. рис. 2.35). Рис. 2.35. Увеличенное изображение фрагмента модели Построение скруглений Вызываем из главного меню Insert → Feature Operation → Edge Blend или обращаемся к иконке . Устанавливаем тип выбираемых объектов Edge, значения радиуса скругления 15 мм. Указываем курсором верхнее ребро лопасти, находящееся ближе к нам. OK (см. рис. 2.36). Рис. 2.36. Результат построения скругления Проведем анализ только что созданной поверхности на предмет ее сопряжения с основной поверхностью лопасти. Обращаемся в главном меню к функции Analysis → Face → Reflection или к иконке . Оценим картину, полученную в результате отражения на поверхности лопасти ряда горизонтальных черных линий. В окне количества линий (Number of Lines), используемых для построения картины отражения, выберем значение 32. Ориентация линий (Line Orientation) – горизонтальная. В графическом окне выбираем поверхность скругления на лопасти и сопряженную с ней основную поверхность лопасти. Apply. Судя по картине отражения, на которой виден четкий излом линий на границе поверхностей, можно с уверенностью сказать, что в этом месте имеется разрыв между вторыми производными кривых сечения (см. рис. 2.37). Рис. 2.37. Анализ созданных поверхностей Имеющийся дефект может привести к неприятным последствиям при обтекании лопастей, поэтому необходимо перестроить скругление так, чтобы поверхности сопрягались, выполняя условие непрерывности второй производной. Для этого сделаем предварительные построения. Воспользуемся функцией Insert → Curve Operation → Extract (или иконкой ), выберем опцию Edge Curves и курсором выберем ребро на сопряжении поверхностей на лопасти, т.е. построим кривую, совпадающую с этими ребром. OK. OK. Cancel. После этого удалим скругление. Выполнить такую операцию можно, вызвав из главного меню Edit → Feature → Delete и выбрав в окне со списком построенных компонентов модели скругление (Blend). Видим, что на модели скругление исчезло, а кривая на месте сопряжения поверхностей осталась (см. рис. 2.38). Рис. 2.38. Кривая на поверхности лопасти Операцию удаления компонента модели можно было вызвать также иконкой . Кроме того, компонент модели (например, скругление) будет удален, если на нем установить курсор, нажать левую кнопку мыши и подтвердить свой выбор, вызвать выпадающее меню правой кнопкой мыши и выбрать операцию Delete. Еще одна возможность: вызвать навигатор модели (о нем речь пойдет ниже), выделить нужные компоненты и воспользоваться операцией Delete в меню, выпавшем после нажатия правой кнопки мыши. Построим сопряжение, воспользовавшись функцией Insert → Feature Operation → Soft Blend (иконка ). В качестве первой поверхности выберем боковую поверхность лопасти. Появилась иконка вектора нормали. Вектор должен быть направлен к центру предполагаемого скругления. В противном случае необходимо выбрать опцию Reverse Normal. Переходим к следующему шагу: задание второй поверхности. Выбираем торцевую поверхность лопасти (см. рис. 2.39). Рис. 2.39. Определение поверхностей для построения скругления Следующее действие – это определение кривой на первой выбранной поверхности, от которой будет начинаться скругление. Проверим, что фильтр выбора объекта установлен на тип Curves (кривые). Выбираем кривую на поверхности лопасти. Переходим к выбору кривой на второй поверхности. Тип выбираемого объекта – Edges (ребра). Выбираем дальнее ребро на торцевой поверхности лопасти (см. рис. 2.40). Рис. 2.40. Определение кривых для построения скругления Обратите внимание на опцию Define Spine String, которая предлагает определить опорную кривую. Вызываем эту опцию. В выпавшем меню определяем, что в качестве опорной кривой будет задано ребро (Solid Edge). Выберем общее для двух скругляемых поверхностей ребро на торцевой поверхности лопасти. OK. OK. Сейчас мы вернулись в меню Soft Blend; на опорной кривой появился символ вектора. В разделе Smoothness (Сглаживание) выберем режим Match Curvature – построение сглаживания с условием непрерывности касательной и кривизны между скруглением и скругляемой поверхностью. Активизировались окна определения дискриминанта Rho и перекоса сечения Skew. Зададим значение дискриминанта 0.65 и значение перекоса 0.5 . OK. Дискриминант управляет формой сечения скругления, делая его более плоским или более выпуклым. Большие значения Rho приближают сечение скругления к точкам, лежащим на кривой пересечения скругляемых поверхностей. Малое значение Rho приближает сечение скругления к линии, соединяющей граничные точки скругления. Перекос управляет смещением точки экстремума сечения к первой или ко второй поверхности. Скругление построено (см. рис. 2.41). Рис. 2.41. Скругление, выполненное функцией Soft Blend Теперь можно вернуться к анализу поверхностей. Вызываем опять функцию Analysis → Face → Reflection. Выбираем построенную поверхность скругления на лопасти и сопряженную с ней основную поверхность лопасти. Apply (см. рис. 2.42). Рис. 2.42. Анализ скругления, выполненного функцией Soft Blend Картина отражения качественно изменилась. У линий отражения на границе поверхностей нет изломов. Обтекание поверхности такой лопасти будет происходить плавно, без отрыва потока. Сделаем режим изображения модели Wireframe (проволочный). Кривую, которая была построена для определения скругления, перенесем на невидимый слой 5, воспользовавшись функцией Format → Move to Layer. Опять воспользуемся функцией Insert → Feature Operation → Edge Blend. Устанавливаем тип выбираемых объектов Edge, значение радиуса скругления 0.2 мм. Выберем не скругленное верхнее ребро на лопасти. Apply (см. рис. 2.43). Рис. 2.43. Скругление острой кромки. С помощью видовой операции Zoom In\Out уменьшим изображение модели, а с помощью операции Rotate изменим ее положение в графическом окне. Включаем режим Add Tangent Edges (добавление в цепочку ребер, касательных выбранному ребру) в меню Edge Blend. Значение радиуса скругления равно 1 мм. Указываем любое ребро на стыке лопасти и сердечника. Вся цепочка ребер в зоне стыка выбрана и подсвечена. OK. Все необходимые скругления ребер построены (см. рис. 2.44). Рис. 2.44. Построение скруглений между лопастью и сердечником. Лопасть нужно “размножить”. Воспользуемся специальной функцией, позволяющей создавать массивы геометрически сложных компонентов. Операции прямого моделирования (Direct Modeling) Обращаемся из главного меню Insert → Direct Modeling → Pattern Face или вызовем функцию иконкой . В разделе определения типа создаваемого массива выберем Circular (Круговой массив). Теперь необходимо задать одну из поверхностей компонента, который будет размножен в виде массива. Выбираю поверхность лопасти (см. рис. 2.45). Рис. 2.45. Выбор одной из поверхностей размножаемого компонента Далее нужно определить поверхности, ограничивающие компонент. Выбираем все поверхности сердечника, граничащие с лопастью (всего выбрано 4 поверхности),как показано на рис. 2.46. Рис. 2.46. Выбор ограничивающих поверхностей Остается определить ось кругового массива. В разделе, определяющем метод задания вектора (Vector ). Не прерывая операции построения массива, обращаемся к Method), выбираем Datum Axis (иконка функции Layer Settings и изменяем статус слоя 3 на Selectable (выбираемый), OK. Все Datum объекты появились в графическом окне. Выбираем вертикальную ось, совпадающую с осью импеллера. После этого делаем слой 3 опять невидимым (статус Invisible). Обратимся к опции предварительного просмотра компонента, определенного для построения массива: Preview Pattern Region. В графическом окне подсветились все поверхности лопасти и скругления на границе с сердечником – значит, выбор правильный. Выбираем опцию отказа от предварительного просмотра – Clear Preview. В окне Number (Определение количества элементов в массиве) задаем значение 10, а в окне Angle (Шаг угла поворота) – значение 36. Apply. Cancel (см. рис. 2.47) Рис. 2.47. Результат построения массива Теперь построим укороченную лопасть. Такие лопасти расположены между полно высотными лопастями. Геометрически это та же лопасть, только ее верхняя часть обрезана конической поверхностью, нормальной к поверхности сердечника на 20% длины образующей сердечника. Воспользуемся существующей геометрией для построения укороченной лопасти. Сейчас мы имеем дело с моделью, в которой лопасть является неотъемлемой частью. Нам нужно вернуться к тому этапу, когда лопасть была отдельным объектом, и скопировать ее там. Работа с Навигатором модели Для копирования выполним следующие действия. Вызовем Навигатор модели View → Model Navigator из главного меню, или иконку , или с помощью кнопок Ctrl+Shift+M. Навигатор модели - это окно, в котором дается наглядное представление о порядке создания модели в виде «дерева построения». Используя Навигатор модели, можно выполнять различные операции по ее изменению: подавлять и восстанавливать отдельные элементы построения, изменять их параметры или положение компонента на модели. В нашем случае навигатор модели имеет следующий вид (см. рис. 2.48): Рис. 2.48. Окно Навигатора модели Поставим курсор в Навигаторе модели на элемент TRIM_BODY(9) и нажмем на правую кнопку мыши. В выпавшем меню выберем опцию Make Current Feature (сделать данный компонент текущим), как показано на рис. 2.4 Рис. 2.49. Обращение к опции Make Current Feature из Навигатора модели В графическом окне модель изменилась, и изменился вид дерева модели в Навигаторе. Модель представляет собой два отдельных тела: сердечник и лопасть. Мы вернулись в состояние, предшествовавшее объединению тел. Последующие компоненты в Навигаторе модели имеют статус inactive; при этом исчезли красные метки в квадратах перед этими компонентами (см. рис. 2.50). Рис. 2.50. Изменения модели после применения операции Make Current Feature Погасим изображение сердечника, чтобы в графическом окне осталась одна лопасть. Для этого курсор установим на сердечнике, подтвердим выбор Solid Body (твердое тело), контролируя тип выбранного элемента по сообщению в строке состояния. Выполним операцию нажатием кнопок Ctrl+B. В графическом окне остался только один элемент – лопасть. Эту функцию можно было вызвать из главного меню Edit → Blank → Blank, выбрать объект и завершить операцию нажатием OK. Еще один способ: выбрать сердечник в графическом окне или элемент REVOLVED(5) в Навигаторе модели, вызвать выпадающее меню Навигатора и затем функцию Show\Hide → Hide Body. Теперь сделаем слой, на котором находится кривая сердечника, видимым и доступным для выбора. Для этого используем функцию Layer Settings (Format → Layer Setting либо из панели инструментов иконку ). Чтобы сразу определить, на каком слое находится кривая сердечника, в окне имен категорий выбираем категорию с описанием «кривая сердечника». Подсветился слой 2. Назначаем статус этому слою – Selectable, OK. В графическом окне видим объекты (см. рис. 2.51). Рис. 2.51. Обращение к слою через категорию Повернем копии лопасти и кривой сердечника на половину угла шага лопастей. Трансформирование объектов Из главного меню вызываем Edit → Transform или Ctrl+T. Выбираем лопасть и кривую сердечника. В меню Transformations обращаемся к опции вращения вокруг линии (Rotate About a Line). В качестве способа определения линии, являющейся осью вращения, выбираем Point and Vector. Выпадает типовое меню определения точки. Начальная точка оси вращения – это точка начала координат (обнуляем координаты X,Y,Z опцией Reset). OK. После этого появляется типовое меню определения вектора. Выбираем иконку YC Axis. OK. Угол поворота: 18 градусов. OK. Тип операции – копирование (Copy). Cancel. В графическом окне видим следующие объекты (см. рис. 2.52). Рис. 2.52. Результат трансформирования лопасти Изменим цвет копии кривой сердечника. Обращаемся к функции Edit → Object Display в главном меню либо ее вызываем нажатием Ctrl+J. Выбираем нужную кривую, OK. Назначаем цвет: желтый (Yellow). OK. Вернемся к последнему элементу построения модели, т.е. переопределим текущий компонент. Для этого поставим курсор в Навигаторе модели на элемент PATTERN_FACE(15) и нажмем правую кнопку мыши. В выпавшем меню выберем опцию Make Current Feature (Сделать данный компонент текущим). В графическом окне появилась построенная модель и отдельная новая лопасть. Все компоненты в Навигаторе модели активировались. Изменим порядок чередования элементов в Навигаторе. Установим курсор на элемент UNPARAMETERIZED_FEATURE(10) и выберем его, нажав левую кнопку мыши. Вызовем выпадающее меню Навигатора, выберем опцию Reorder After (Изменить положение элемента в дереве построения, поставив его после …) и укажем элемент PATTERN_FACE(15) (см. рис. 2.53). Рис. 2.53. Изменение очередности расположения элементов в Навигаторе модели Погасим изображение модели, состоящей из сердечника и лопастей, и первичную кривую сердечника. Используем для этого один из вышеописанных способов. Сейчас нужно построить точку на желтой кривой, которая лежит на 20-ти процентах ее длины. Обращаемся к функции Insert → Curve → Point Set через главное меню или к иконке . Выбираем опцию построения точки на кривой по проценту ее длины (Point at Curve Percentage). Вводим в окне значение процента: 20. Выбираем кривую. OK. Cancel. На кривой построена точка (см. рис. 2.54). Рис. 2.54. Создание точки на кривой Меняем статус слоя 6 на Selectable. Объекты этого слоя становятся видимыми и доступными для выбора. Обращаемся к иконке или из главного меню вызываем Insert → Curve → Basic Curves. Тип кривой – Line, метод выбора точки – Existing Point, режим последовательного построения String Mode отключен (см. рис. 2.55). Рис. 2.55. Фрагмент меню Basic Curve С помощью видовой операции Zoom (вызывается иконкой или нажатием правой кнопки мыши и выбором в выпавшем окне соответствующей функции) увеличиваем изображение части окна от вертикальной оси импеллера до желтой кривой с точкой. Указываем курсором построенную точку на желтой кривой и, обратившись к окну Point Method, меняем метод выбора точки на Inferred Point. Теперь указываем курсором желтую кривую, на которой лежит данная точка. Кривую указываем в промежутке между контрольными точками, изображаемыми в виде круговых символов. Перемещая курсор, видим, что по умолчанию система предлагает создать прямую, выходящую из точки и являющейся касательной или нормалью к желтой кривой. В строке состояния появляется сообщение Tangent или Normal. Для определения положения конечной точки этой прямой укажем курсором вертикальную ось импеллера. Cancel. Построен отрезок, перпендикулярный желтой кривой в имеющейся точке (см. рис. 2.56). Рис. 2.56. Построение отрезка перпендикулярного кривой При помощи функции Fit возвращаем изображение всех видимых объектов в границы графического окна. Теперь из главного меню вызываем Insert → Feature Operation → Trim или из панели инструментов иконку . Указываем лопасть в качестве объекта, над которым будет проводиться операция обрезки. OK. В качестве объекта, которым будет проводиться обрезка, выберем коническую поверхность. Обращаемся к опции Define Cone. Выберем метод определения конуса: Diameter, Half Angle. В окно “Axis Pt. Diam.” вводим значение 200 (можно было ввести 100 или 150); в окно “Top Diameter” вводим 0. Значение угла полу раскрытия конуса необходимо измерить. Вызываем из главного меню Analysis → Angle. Курсором указываем на построенный наклонный отрезок ближе к точке. В качестве второго объекта указываем вертикальный отрезок ближе к его верхней части. На этих отрезках в точке их пересечения появились символы векторов. В выпавшем информационном окне приводятся значения двух углов между отрезками: истинный угол и угол между проекциями отрезков на рабочую плоскость. При нажатой левой кнопки мыши курсором выделяем значение истинного угла и копируем его. Закрываем информационное окно. Закрываем операцию измерения углов: Cancel (см. рис. 2.57). Рис. 2.57. Измерение угла Дважды щелкаем левой кнопкой мыши, расположив курсор в окне Half Angle меню Define Conical Surface. Вставляем скопированное значение угла командой Paste. OK. Выполним перерисовку объектов в графическом окне одним из следующих способов: обратившись к иконке ; вызвав выпадающее меню правой кнопкой мыши и выбрав операцию Refresh; используя клавишу F5. Символическое изображение векторов исчезает. В следующем меню предлагается задать ось конуса. Выбираем опцию: Point, +YC; т.е. ось будет параллельна оси YC и проходить через заданную точку. С помощью стандартного меню Point Constructor задаем эту точку, установив метод выбора End Point. Курсором указываем наклонный отрезок ближе к вертикальной оси. На конце отрезка появилась метка в виде звездочки и направленный по оси Y вектор. Принимаем такое определение оси вектора, OK (см. рис. 2.58). Рис. 2.58. Определение параметров обрезающего конуса Появилась стрелка, определяющая направление удаления материала. Нам необходимо удалить верхнюю часть лопасти, поэтому выбираем опцию Reverse Default Direction. Cancel (см. рис. 2.59). Рис. 2.59. Определение направления обрезки конусом Восстановим видимость кривой сердечника. Вызываем из главного меню Edit → Blank → Unblank All of Type или иконку . Определим метод выбора – Type и в окошке выпавшего меню выберем Curve. OK. OK. Появилась погашенная кривая сердечника. Меняем статус слоев 2 и 6 на Invisible (невидимый). В графическом окне осталась укороченная лопасть, отрезок и точка. Переносим отрезок и точку на слой 2, воспользовавшись функцией Format → Move to Layer. Продолжаем формировать укороченную лопасть. Построим скругления. Технология работы будет аналогичной той же, как и для большой лопасти. Вызываем функцию Edge Blend, устанавливаем тип выбираемых объектов – Edge, значения радиуса скругления 10 мм. Указываем курсором верхнее ребро лопасти, находящееся ближе к нам. OK. Строим кривую, совпадающую с ребром сопряжения поверхностей на лопасти: функция Extract, опция Edge Curves и выбираем ребро, OK, OK, Cancel. После этого удаляем скругление (см. рис. 2.60). Рис. 2.60. Создание скругления на укороченной лопатке Строим сопряжение функцией Soft Blend. В качестве первой поверхности выберем боковую поверхность лопасти, а второй - торцевую поверхность лопасти. Следующий шаг: выбираем кривую на поверхности лопасти при установке фильтра выбора объекта Curves (кривые). После этого выбираем дальнее ребро на торцевой поверхности лопасти. Тип выбираемого объекта – Edges (ребра). Вызываем опцию Define Spine String. Тип опорной кривой – Solid Edge. Выберем общее для двух скругляемых поверхностей ребро на торцевой поверхности лопасти. OK. OK. В разделе Smoothness (сглаживание) выберем режим Match Curvature. Значение дискриминанта Rho 0.65 и значение перекоса Skew 0.5 . OK. Функцией Move to Layer переносим кривую на слой 5. Скругляем ребро функцией Edge Blend. Тип выбираемых объектов – Edge, значение радиуса скругления - 0.2 мм. Выберем нескругленное верхнее ребро на лопасти. OK (см. рис. 2.61). Рис. 2.61. Скругление острого ребра на укороченной лопасти Необходимо получить в общей сложности десять таких лопастей. Еще раз воспользуемся функцией Transform (Ctrl+T). Выбираем лопасть. В меню Transformations обращаемся к опции вращения вокруг линии (Rotate About a Line). В качестве оси вращения выбираем существующую линию (Existing Line). Не прерывая операции Transformations, изменим статус слоя 6 на Selectable. Указываем вертикальную ось импеллера. Возвращаем слою 6 статус Invisible. Задаем угол поворота: 36 градусов. OK. Тип операции – множественное копирование (Multiple Copies). Определяем количество копий: 9. OK. Cancel. В графическом окне видим следующие объекты (см. рис. 2.62). Рис. 2.62. Операция множественного копирования Восстанавливаем видимость сердечника с лопастями. Функцию Unblank All of Part (Восстановить видимость всех объектов) задействуем нажатием кнопок Ctrl+Shift+U. Эту же функцию можно было вызвать из главного меню Edit → Blank → Unblank All of Part или с помощью иконки необходимые для дальнейших операций (см. рис. 2.63). Рис. 2.63. Набор моделей сердечника и лопастей . Изображены все тела, Булевы операции Включим десять укороченных лопастей в имеющуюся модель. Для выполнения этого объединения из главного меню вызываем Insert → Feature Operation → Unite или обращаемся к иконке . Указываем первоначальную модель на основе сердечника. Она подсветилась в графическом окне, появилось типовое меню выбора. Пользуемся опцией выбора всех изображенных элементов (Select All). OK. Cancel. Осталось выполнить последнее построение – создать скругления в местах сочленения укороченных лопастей и сердечника. Вызываем функцию Insert → Feature Operation → Edge Blend. Устанавливаем тип выбираемых объектов – Edge, значение радиуса скругления 1 мм, включаем режим Add Tangent Edges (добавление в цепочку ребер, касательных выбранному ребру). Указываем любое ребро на стыке укороченной лопасти и сердечника. Вся цепочка ребер в зоне стыка выбрана и подсвечена. Повторяем выбор ребер для каждой укороченной лопасти. Для удобства выбора ребер пользуемся функцией поворота вида Rotate (иконка ). OK. Поменяем цвет созданной модели, используя функцию Object Display (вызывается нажатием кнопок Ctrl+J). Выбираем импеллер, OK. В выпавшем меню обращаемся к окну определения цвета объекта Color и выбираем цвет – темно серый (Dark Gray). OK. OK. Процесс создания модели импеллера, состоящего из сердечника и по десять больших и укороченных лопастей, закончен. Шаги этого процесса отражены в Навигаторе модели (см. рис. 2.64). Рис. 2.64. Окончательная модель импеллера Последнее, что необходимо выполнить до полного завершения работы над моделью импеллера, - это создать ссылочный набор (Reference Set). Определение ссылочного набора В процессе построения модели были использованы различные геометрические объекты: точки, отрезки, кривые, плоскости. Построенная модель импеллера ассоциативно связана с этими объектами. В случае необходимости модифицировать что-то в модели, потребуется изменить этот первоначальный («родительский») объект. Отсюда понятно, что эти объекты должны храниться в файле вместе с моделью. При формировании же сборок необходимо, чтобы деталь приходила в сборку без шлейфа «родительских» объектов. Для этого существует возможность определить некий набор геометрических элементов в файле и дать ему имя. Имена лучше использовать из стандартного перечня, принятого на предприятии. Для создания Ссылочного набора вызываем из главного меню Assemblies → Reference Sets. В окне выпавшего меню уже есть два набора, созданных системой по умолчанию, - Empty и Entire Part (пустой, т.е. набор, не содержащий ни одного объекта и набор, куда входят все объекты). Выбираем опцию создания нового Ссылочного набора Create. Даем имя новому Ссылочному набору: SOLID. OK (см. рис. 2.65). Рис. 2.65. Определение ссылочного набора Теперь выбираем объекты, которые войдут в этот ссылочный набор. Выбираем твердотельную модель импеллера. OK. OK. Ссылочный набор SOLID, куда вошла только окончательная модель импеллера, создан. Необходимо сохранить построенную модель. Из главного меню вызываем функцию File → Save или пользуемся иконкой Part file saved. , или нажимаем кнопки Ctrl+S. Видим, что в окне состояния появилось сообщение: Построение кривой, заданной системой математических уравнений Во многих автоматизированных системах проектирования обычным способом задания кривых является задание таблицы точек в явном или неявном виде, через которые должна пройти кривая с тем или иным отклонением. При этом в различных научно-технических областях разработаны математические описания законов формирования самых разных объектов с точки зрения оптимизации их работы. Хотелось бы иметь возможность без промежуточных вычислений сразу задавать необходимые для построения моделей кривые при помощи математических функций. Выше мы уже касались построения в системе Unigraphics кривой по системе параметрических уравнений: x = x(t); y = y(t); z = z(t); где t - независимая переменная, значение которой меняется от 0 до1. Рассмотрим несколько примеров такого построения кривых. В авиации широко применяется метод задания геометрии обводов аэродинамических профилей системой математических функций. Такой способ исключает возможность внесения ошибок в таблицы точек на этапах передачи данных и позволяет легко модифицировать аэродинамический профиль в случае необходимости. Например, верхняя дуга профиля определяется как произведение двух простейших функций: дуги окружности и отрезка. Графически это выглядит следующим образом (см. рис. 2.66): Рис. 2.66. Графики кривых, определяющих верхнюю дугу профиля Составим систему параметрических уравнений этих кривых и построим верхнюю дугу профиля. Пусть хорда профиля (она же область определения указанных функций) будет обозначаться L и равняться 1000 мм. Тогда система уравнений будет выглядеть так: t=1 x=L*t y=.15*(1-x/L)*sqrt(L^2-(x-L)^2) , где функция x была определена через параметр t так, чтобы ее множество значений ограничивалось диапазоном от 0 до L, а y является произведением двух функций: yпр=.15*(1-x/L) и окружности yокр=sqrt(L^2-(x-L)^2) , полученной из уравнения окружности: x^2+y^2=L^2 . прямой Приступаем к построению кривой профиля в системе Unigraphics. В главном меню выбираем опцию File → New. В окне “Имя файла” набираем: airprofil. Запускаем приложение Modeling из главного меню: Application → Modeling, или Ctrl+M, или из панели инструментов выбираем иконку Modeling . Первым делом определяем все переменные в базе выражений с помощью команды Tools → Expression или Ctrl+E. В строке задаем все необходимые выражения, добавляя их в список нажатием Enter. Окончательно окно с выражениями в меню Expressions имеет следующий вид (см. рис. 2.67): Рис. 2.67. Окно набора выражений Теперь выбираем из главного меню Insert → Curve → Law Curve или иконку из инструментальной панели. Задаем способ определения координаты X, выбираем By Equation. В выпавшем меню определяем имя выражения для переменной: t. Задаем имя выражения для координаты: оставляем имя x, нажимаем OK. Переходим к определению координаты Y. Выбираем: By Equation. Имя выражения для переменной: t; имя выражения для координаты: yv. Координату Z определяем как Constant. Вводим значение 0. OK. OK. Созданная по этим математическим выражениям кривая имеет вид (см. рис. 2.68): Рис. 2.68. Кривая верхней дуги профиля Нижняя дуга профиля, в свою очередь, определяется как произведение функций: дуги той же окружности и другого отрезка. Графически это выглядит следующим образом (см. рис. 2.69): Рис. 2.69. Графики кривых, определяющих нижнюю дугу профиля Тогда система параметрических уравнений для нижней дуги профиля выглядит так: t=1 x=L*t yn=.05*(x/L-1)*sqrt(L^2-(x-L)^2) . Построим эту кривую, используя тот же инструмент: Law Curve. Способ определения координаты X аналогичен предыдущему построению. При определении имени выражения координаты y задаем: yn. Значение Z постоянно и равно 0. Результат построения нижней дуги профиля показан на рис. 2.70. Рис. 2.70. Кривая нижней дуги профиля Для нижней дуги профиля определен следующий порядок обхода кривой по параметру: от носовой части профиля к хвостику. Для того чтобы порядок обхода изменился, нужно определить параметрическое выражение для координаты X: x=L*(1-t). Сейчас профиль задается в виде двух отдельных кривых. Постараемся найти способ определения всего профиля одним выражением. График функции X для полного профиля можно представить так (см. рис. 2.71): Рис. 2.71. График функции X для полного профиля Математическое выражение такой зависимости имеет вид: xp=abs(L*(1-2*t)), где используется встроенная функция модуля abs(…). Функция Y графически представляется в виде двух самостоятельных участков (см. рис. 2.72): Рис. 2.72. График функции Y для полного профиля Описать такую зависимость при помощи одной функции не удастся. Тогда составим для каждого участка свое математическое выражение и свяжем их оператором условия. Выражение будет иметь вид: yp=if(t<=.5)(.05*(xp/L-1)*sqrt(L^2-(xp-L)^2))else(.15*(1-xp/L)*sqrt(L^2-(xp-L)^2)) . Выполняем построения кривой. Задаем имя выражения xp для координаты x, а yp – для координаты y. Результат построения показан на рис. 2.73. Рис. 2.73. Полный профиль Внесем небольшие коррективы. Сейчас кривая на хвостике профиля замыкается. Нужно, чтобы кривая была разомкнута. Математическое выражение кривой профиля должно иметь вид: yp=if(t<=.5)(.05*(.99*xp/L-1)*sqrt(L^2-(xp-L)^2))else(.15*(1-.99*xp/L)*sqrt(L^2-(xp-L)^2)). Для редактирования имеющегося выражения вызываем базу выражений с помощью команды Tools → Expression или Ctrl+E. В списке выражений курсором указываем интересующее нас выражение yp. Оно появляется в строке ввода выражений. Вносим в него изменения и нажимаем Enter. Нажатие команды OK (или Apply) является сигналом к исполнению редактирования профиля. Профиль изменился. Обратите внимание на хвостик профиля (см. рис. 2.74). Рис. 2.74. Измененный профиль В случае необходимости размещения профиля в пространстве под некоторым углом атаки можно использовать стандартные уравнения связи общей системы координат с системой координат, связанной с профилем. Пусть в общей системе координат координаты обозначаются xn и yn. Профиль расположен в пространстве так, что его начальная точка имеет координаты x0=200 и y0=120 общей системы координат, а угол атаки профиля (обозначен выражением А) равен 12 градусам. Добавим в базу выражений следующие уравнения: A=12 x0=200 y0=120 xn=x0+(xp*cos(A)+yp*sin(A)) yn=y0+(yp*cos(A)-xp*sin(A)) После построения кривой с именами выражения xn для координаты x и yn – для координаты y в графическом окне видим результат (см. рис. 2.75): Рис. 2.75. Профиль под углом атаки В заключение этого раздела хотелось бы привести занимательный пример построения кривой, имеющей очень интересный вид (см. рис. 2.76): Рис. 2.76. Кривая, заданная системой уравнений Эта кривая также задана системой параметрических уравнений: t=1 T=36000*t xt=100*(sin(0.99*T)-0.7*cos(3.01*T)) yt=100*(cos(1.01*T)+0.1*sin(15.03*T)) , и построена при помощи функции Law Curve по этим выражениям. Пример построения параметрической модели без применения эскизов и кривых. Во всех чисто параметрических CAD системах любое базовое и большинство дополнительных построений начинается с создания эскиза (или профиля в зависимости от терминологии, применяемой в этих системах), т.е. плоского контура, состоящего из набора различных кривых, связанных между собой геометрическими и размерными ограничениями. При работе с трехмерными объектами такой подход заставляет оперировать двумерными объектами, а по существу, выполнять дополнительные построения. В системе Unigraphics существует возможность создания гибко параметризованной модели без единого задания двумерных объектов в составе эскиза или просто в пространстве модели. Выполним такое построение. Результатом наших действий будет создание модели, показанной на рис. 2.77. Рис. 2.77. Окончательный вид модели крышки Создадим новый файл. Назовем его, например, kryshka (крышка). Загружаем приложение Modeling из главного меню: Application → Modeling, или Ctrl+M, или из панели инструментов иконку Modeling . Создание базового элемента модели Первым нашим действием будет задание цилиндра. Вызываем из главного меню Insert → Form Feature → Cylinder или обращаемся к иконке из панели инструментов. В меню определения метода создания цилиндра выберем опцию Diameter, Height. Появляется стандартное меню определения направления, при помощи которого задается ориентация оси цилиндра. Выбираем иконку XC Axis. OK. Теперь задаем диаметр 150 мм и высоту цилиндра 60 мм. OK. Осталось определить начальную точку цилиндра. Выбираем точку начала системы координат. OK. Cancel. В графическом окне видим построенный цилиндр (см. рис. 2.78). Здесь приведено изображение в режиме Shaded и Wireframe и для более наглядного представления половина сечения текущей модели. Рис. 2.78. Построение базового элемента Создание дополнительных элементов Добавим к цилиндру элемент, называемый «бобышкой». Для этого вызываем из главного меню Insert → Form Feature → Boss или иконку из панели инструментов. Вводим геометрические размеры бобышки: диаметр 120 мм, высота 6 мм, угол наклона боковых стенок 0 градусов. Указываем дно цилиндра в качестве поверхности, на которой будет размещена бобышка. OK. Появляется изображение бобышки на указанной поверхности с привязкой в точке выбора поверхности. Одновременно выпадает стандартное меню позиционирования. Предлагается определить условия привязки бобышки к цилиндру (см. рис. 2.79) Рис. 2.79. Добавление бобышки к базовому цилиндру Выбираем в этом меню иконку Point onto Point (расположение, при котором точка базового элемента совпадает с точкой позиционируемого элемента) и курсором выбираем ребро дна цилиндра. Система распознала, что это ребро геометрически представляет собой окружность, и предложила выбрать концевую точку окружности, центр окружности или точку на этой окружности. Выбираем центр окружности (Arc Center). Привязка бобышки закончена (см. рис. 2.80). Рис. 2.80. Позиционирование бобышки Создаем еще одну бобышку на торцевой поверхности только что построенной бобышки. Опять обращаемся к иконке стенок 0 градусов. ; определяем размеры: диаметр 65 мм, высота 22 мм, угол наклона боковых Выбираем плоскую грань построенной бобышки. Привязку осуществляем аналогичным образом. Модель представлена на рис. 2.81. Рис. 2.81. Добавление еще одной бобышки Выполним проточку на поверхности цилиндра. Вызываем опцию из главного меню Insert → Form Feature → Groove или иконку из панели инструментов. Выбираем тип проточки: U Groove (Uобразная, т.е. скругленная в углах). Указываем цилиндрическую поверхность, на которой будет размещена проточка, - поверхность первичного цилиндра. Задаем размеры: диаметр проточки 132 мм, ширина проточки 27 мм, радиус скругления в углах 2 мм. OK. Для позиционирования проточки задается только один размер – вдоль оси цилиндрической поверхности. Поэтому стандартное меню позиционирования не появляется, но система просит указать ребро на базовом теле, относительно которого будет происходить позиционирование проточки. Указываем ребро на вершине цилиндра и указываем ребро проточки (на рисунке – правое). Вводим в поле размера значение 12 мм. OK. Cancel (см. рис. 2.82). Рис. 2.82. Выполнение проточки на поверхности цилиндра После создания проточки модель выглядит следующим образом (см. рис. 2.83): Рис. 2.83. Модель после выполнения проточки Добавим фаску на грани модели. Используем функцию Insert → Feature Operation → Chamfer или иконку . Выбираем метод создания фаски Single Offset (одинаковое смещение по граням). После этого указываем ребро, на котором будет построена фаска: ребро на торцевой поверхности внешней бобышки. OK. Задаем размер фаски 5 мм. OK. Cancel. Результат построения показан на рис. 2.84. Рис. 2.84. Определение фаски на модели После этого можно создать отверстие в детали. Используя видовую функцию Rotate, изменим положение детали так, чтобы деталь была обращена к нам большой торцевой поверхностью. Вызываем из главного меню Insert → Form Feature → Hole или иконку из панели инструментов. В верхней части выпавшего меню выбираем тип отверстия: Counterbore (отверстие с понижением). Указываем большую торцевую грань в качестве поверхности для размещения вершины отверстия и торцевую грань бобышки в качестве граничной поверхности для построения сквозного отверстия. Задаем размеры: C-Bore Diameter (диаметр понижения) 80 мм, C-Bore Depth (глубина понижения) 59 мм, Hole Diameter (диаметр отверстия) 47 мм. OK. На указанной поверхности появляется изображение отверстия с привязкой в точке выбора поверхности. В стандартном меню позиционирования определяем условия привязки бобышки к цилиндру. Выбираем иконку Point onto Point, курсором указываем ребро торцевой поверхности. В меню указываем опцию Arc Center. Отверстие в детали создано (см. рис. 2.85). Рис. 2.85. Позиционирование отверстия Теперь выполним внутреннюю проточку на отверстии в детали. Опять применим функцию Insert → Form Feature → Groove. Тип проточки: U Groove. Указываем цилиндрическую поверхность отверстия большего диаметра. Задаем размеры: внешний диаметр проточки 95 мм, ширина проточки 40 мм, радиус скругления в углах 2 мм. OK. Указываем ребро отверстия на торцевой поверхности и указываем ребро проточки (ближайшее к нам). Вводим в поле размера значение 4 мм. OK. Cancel. В графическом окне видим следующее (см. рис. 2.86): Рис. 2.86. Проточка на внутренней поверхности Дополним поверхность отверстия буртиком и двумя расточками. Для создания этих элементов воспользуемся возможностью создания тела путем плоскопараллельного вытягивания задающего контура в заданном направлении. Из главного меню вызываем Insert → Form Feature → Extruded Body или иконку . Выберем ребро твердого тела (Solid Edge) в качестве задающего контура и укажем его. Это ребро на пересечении поверхности отверстия и торцевой поверхности бобышки. Завершим операцию выбора контура нажатием кнопки OK. Закрываем меню определения типа выбираемого контура. OK. Выбираем метод вытягивания Direction_Distance (задание направления и расстояния). В качестве направления выбираем ось X. OK. Появился символ вектора направления (изображен сплошными линиями) и символ положительного направления эквидистанты базового контура (изображен пунктирными линиями). Принимая во внимание направления этих векторов, задаем размеры: Start Distance (начальная дистанция) 0, End Distance (конечная дистанция) 3 мм, First Offset (первая эквидистанта) -4.5 мм, Second Offset (вторая эквидистанта) 0, Taper Angle (угол наклона граней) 0. OK. Тип булевой операции - Unite (объединение). Буртик создан (см. рис. 2.87) Рис. 2.87. Создание буртика методом вытягивания Мы находимся в режиме создания Extruded Body. Опять указываем тип задающего контура Solid Edge и выбираем ребро на поверхности отверстия малого диаметра, противоположное выбранному для создания буртика. OK. OK. Выбираем метод Direction _Distance, направление - ось X. OK. Положительное направление эквидистанты базового контура изображено от контура к оси отверстия. Тогда вводим следующие размеры: начальная дистанция –1 мм, конечная дистанция 0, первая эквидистанта –4 мм, вторая эквидистанта 0, угол наклона граней 0. OK. Тип булевой операции: Subtract (вычитание). Первая проточка создана. Прежде чем создавать вторую проточку, обратимся к базе значений параметров с помощью команды Tools → Expression или Ctrl+E. Сдвинем ползунок в окне выражений и найдем значения параметров, которые были использованы, когда создавалась внутренняя U-образная проточка. Нас интересует размер позиционирования проточки до торцевой поверхности детали и величина радиуса этой проточки в углах (см. рис. 2.88). Это параметры p21 и p22. Такие имена этим размерам были присвоены автоматически. Их можно переименовать, дать любым размерам осмысленные имена. Пока же мы просто запоминаем их. Возвращаемся к построению следующей проточки методом Extruded Body. Тип задающего контура Solid Edge, выбираем внутреннее ребро на торцевой Рис. 2.88. Окно с набором параметров поверхности детали. OK. OK. Выбираем метод Direction _Distance. Для определения направления выбираем иконку XC Axis и обращаемся к опции Cycle Vector Direction. Таким образом, мы задали направление, противоположное направлению оси X. OK. Появились иконки векторов, причем положительное направление эквидистанты базового контура изображено от контура к оси отверстия. Определяем размеры проточки: начальная дистанция 0, конечная дистанция p21+p22, первая эквидистанта -6 мм, вторая эквидистанта 0, угол наклона граней 0. OK. Тип булевой операции - Subtract. Cancel. Проточка создана. В графическом окне видим следующую модель (см. рис. 2.89): Рис. 2.89. Модель после операций Extruded Body Добавим фаски на внутренние грани модели. Используем функцию Insert → Feature Operation → Chamfer или иконку . Выбираем метод создания фаски Offset Angle (смещение по одной грани и угол фаски, измеряемый от другой грани). Курсором указываем ребро меньшего диаметра первой из только что созданных проточек. OK. Задаем размер длины фаски 2 мм, угол фаски 30 градусов. OK. Убедимся, что фаска построена правильно. Для этого изменим режим изображения модели на Wireframe, включим ориентацию вида Top (иконка ) и произведем обновление экранного изображения (опция Update Display в выпадающем меню, вызываемом нажатием правой кнопки мыши). В случае неправильной ориентации фаски обращаемся к опции Flip Last Chamfer (изменить направление фаски). Опять выбираем тот же метод создания фаски Offset Angle, указываем ребро между отверстием и Uобразной проточкой. OK. Размер длины фаски 1 мм, угол фаски 30 градусов. OK. Назначаем еще одну фаску методом Single Offset на внутреннем ребре торцевой поверхности детали. Размер фаски 0.5 мм. Cancel. На рис. 2.90 приведены сечения с построенными фасками. Рис. 2.90. Добавление фасок на внутренних гранях Назначим еще скругления на внутренних ребрах детали. Вызываем из главного меню Insert → Feature Operation → Edge Blend или обращаемся к иконке . Устанавливаем тип выбираемых объектов – Edge, значения радиуса скругления 1 мм. Указываем курсором ребра в углах. OK (см. рис. 2.91). Рис. 2.91. Построение скругления Основные очертания детали определены. Переходим к созданию отверстий. Перед этим для гибкой привязки отверстий к геометрии детали необходимо создать специальные объекты Datum Axis и Datum Plane. Они помогут построить отверстие на цилиндрической грани, а также правильно расположить элементы на торцевых гранях. Все Datum объекты создадим на слое 2. Сейчас рабочим слоем является слой 1. Обратимся к иконке Work Layer, устанавливаем курсор в окошке с номером рабочего слоя и нажимаем левую кнопку мыши. Набираем 2. Переводим курсор в графическое окно. Теперь рабочим слоем будет слой 2, а слой 1 автоматически получил статус Selectable (выбираемый). Создание вспомогательных плоскостей и осей Выберем в главном меню Insert → Form Feature → Datum Axis или иконку в панели инструментов. В фильтре объектов, доступных для выбора, устанавливаем Face. Курсором указываем внешнюю цилиндрическую поверхность. Контролируем выбор нужной поверхности из набора предложенных. В окне со списком ограничений Constraints появилось условие “Through axis of face”, т.е. координатная ось будет проходить через ось цилиндрической поверхности. OK. В графическом окне появилась координатная ось, совпадающая с осью модели. Для создания координатной плоскости выбираем в главном меню Insert → Form Feature → Datum Plane или иконку на панели инструментов. В фильтре объектов также устанавливаем Face. Курсором указываем ту же внешнюю цилиндрическую поверхность. В окне со списком ограничений Constraints появилось условие “Through face axis”, т.е. координатная плоскость будет проходить через ось цилиндрической поверхности. Apply. Первая Datum Plane создана (см. рис. 2.92). Рис. 2.92. Задание координатной плоскости Меню для определения координатной плоскости осталось открытым. В окне фильтра объектов устанавливаем Any, т.е. для выбора доступны любые объекты. Указываем курсором на только что созданную координатную плоскость, после чего указываем на координатную ось. Список ограничений выглядит следующим образом: Angle to plane, Through axis. Предлагается создать координатную плоскость, проходящую через ось и расположенную под углом к плоскости. Активировалось окно задания величины угла и появился в графическом окне символ положительного направления задаваемого угла. Зададим значение угла –10 градусов. Apply. Указываем последнюю из созданных координатных плоскостей и, установив фильтр Face, опять указываем внешнюю цилиндрическую поверхность. В графическом окне на модели появились четыре символа векторов нормалей к возможным координатным плоскостям, отвечающих данным ограничениям. Необходимо выбрать один из них, чтобы окончательно определить координатную плоскость. Курсором указываем верхний символ вектора, нажимаем OK, после чего создается координатная плоскость, перпендикулярная наклонной плоскости и касательная внешней цилиндрической поверхности (см. рис. 2.93). Рис. 2.93. Задание касательной координатной плоскости Погасим изображение первой из созданных координатных плоскостей. Для этого вызываем из главного меню Edit → Blank → Blank, выбираем нужную координатную плоскость и завершаем операцию. OK. О других способах запуска данной команды смотрите в примере построения модели импеллера. Использование вспомогательных плоскостей для позиционирования элементов. После построения необходимых координатных плоскостей создадим отверстие на цилиндрической грани детали. Обратимся к функции Insert → Form Feature → Hole или к иконке из панели инструментов. Выбираем тип отверстия: Counterbore (отверстие с понижением). В качестве поверхности для размещения отверстия указываем касательную координатную плоскость. Задаем размеры отверстия: C-Bore Diameter (диаметр понижения) 32 мм, C-Bore Depth (глубина понижения) 11.5 мм, Hole Diameter (диаметр отверстия) 24.9 мм, Hole Depth (полная глубина отверстия) 19 мм, Tip Angle (угол при основании) 0 градусов. OK. Начнем позиционировать отверстие. Выбираем метод Horizontal и в качестве горизонтального направления указываем координатную ось. После этого курсором выбираем ребро торцевой поверхности детали. Поскольку ребро представляет собой окружность, предлагается выбрать точку, связанную с этой окружностью. Выбираем опцию Arc Center. Вводим значение размера 28 мм. После этого выбираем следующий метод позиционирования Point onto Line. Курсором указываем координатную плоскость, проходящую через ось цилиндрической поверхности. OK. На модели появился первый элемент будущего отверстия (см. рис. 2.94). Рис. 2.94. Позиционирование отверстия по отношению к координатным плоскостям Чтобы закончить построение отверстия опять обратимся к функции Hole. Тип отверстия: Countersink (отверстие с зенковкой). При помощи видовых функций Zoom, Rotate, Pan изменим изображение модели в графическом окне. В качестве поверхности для размещения отверстия указываем дно только что построенного отверстия, в качестве поверхности, до которого будет строиться сквозное отверстие, укажем поверхность внутренней проточки. Размеры отверстия: C-Sink Diameter (диаметр зенковки) 24 мм, C-Sink Angle (угол зенковки) 90 градусов, Hole Diameter (диаметр отверстия) 22.5 мм. OK. Построение отверстия «насквозь» представлено на рис. 2.95. Рис. 2.95. Построение отверстия «насквозь» Выбираем метод позиционирования Point onto Point. Указываем ребро поверхности дна. Выбираем опцию Arc Center. Ступенчатое отверстие от внешней цилиндрической поверхности детали до ее внутренней поверхности построено. Дополним построенное отверстие фаской. Вызываем функцию Insert → Feature Operation → Chamfer или иконку . Выбираем метод создания фаски Offset Angle. Курсором указываем верхнее ребро отверстия диаметром 24.9 мм. OK. Задаем размер длины фаски 1.5 мм, угол фаски 30 градусов. OK. В случае необходимости, обращаемся к опции Flip Last Chamfer (изменить направление фаски). Построенное отверстие дополнено фаской (см. рис. 2.96). Рис. 2.96. Дополнение построенного отверстия фаской Проверим правильность построения фаски. При заданном размере внешний диаметр фаски должен быть равен 27.9 мм. Каков же внешний диаметр у построенной фаски? В главном меню выбираем Information → Object. Выбираем внешнее ребро фаски. Подтверждаем выбор. OK. В выпавшем информационном окне находим значение диаметра. Создание элемента типа «резьба» на модели Создадим резьбу на построенном отверстии. Для этого используем функцию Insert → Feature Operation → Thread или иконку . Для резьбы выберем тип Symbolic (символическая). Указываем цилиндрическую поверхность отверстия, после чего необходимо указать стартовую поверхность, от которой резьба будет строиться. Указываем плоскую поверхность основания отверстия (см. рис. 2.97). Рис. 2.97. Определение резьбы в отверстии. Появился символ направления создания резьбы в отверстии. В выпавшем меню предлагается сменить это направление и назначить стартовые условия. Принимаем направление и условие Extend Thru Start (продлить за стартовую позицию). OK. В окошках меню Thread стоят размеры резьбы, загруженные из таблицы. Система определила, что для данного отверстия ближе всего подходит резьба М24х2. Обратившись к опции Choose from Table (выбрать из таблицы), можно выбрать резьбу с другими параметрами. Принимаем указанные значения. OK. Сменив режим изображения модели на Wireframe, можно увидеть символическое изображение созданной резьбы в виде пунктирной окружности вокруг цилиндрической грани отверстия. Для создания следующей группы отверстий необходимо сделать видимым изображение погашенной координатной плоскости. Поскольку она является единственным погашенным объектом, можно воспользоваться функцией Edit → Blank → Unblank All of Part (высветить все погашенное в файле) или использовать клавиши Ctrl+Shift+U. Появилось изображение в графическом окне координатной плоскости. Координатные плоскости, использовавшиеся для построения отверстия на цилиндрической поверхности, в дальнейших построениях не понадобятся, и их можно погасить. Используем функцию Hole. Тип отверстия: Countersink (отверстие с зенковкой). Размеры отверстия: C-Sink Diameter (диаметр зенковки) 8.5 мм, C-Sink Angle (угол зенковки) 90 градусов, Hole Diameter (диаметр отверстия) 8 мм, Hole Depth (полная глубина отверстия) 16 мм, Tip Angle (угол при основании) 120 градусов. Указываем плоскую торцевую поверхность, ближайшую к внешнему диаметру. OK. Для позиционирования отверстия воспользуемся методом Parallel. Указываем внешнее ребро этой поверхности, в меню выбираем Arc Center, вводим размер 67 мм. После этого выбираем следующий метод позиционирования Point onto Line. Курсором указываем координатную плоскость, проходящую через ось цилиндрической поверхности. OK. Отверстие создано (см. рис. 2.98). Рис. 2.98. Отверстие с зенковкой на торцевой поверхности. Для получения на основе данного отверстия группы отверстий воспользуемся функцией создания массива элементов. Создание массива элементов. Из главного меню вызываем Insert → Feature Operation → Instance или иконку . Выбираем тип массива Circular Array (круговой). В выпавшем списке элементов модели необходимо выбрать элемент, который будет использоваться в качестве базового для создания массива. Выбираем последний элемент списка. OK. Можно также выбрать элемент непосредственно на модели. После выбора данный элемент будет выделен в списке и подсвечен на модели. Определяем параметры массива. Метод создания массива в данном случае не имеет значения, оставим General. Количество элементов массива 6, угол поворота 60 градусов. OK. В качестве оси вращения выберем Datum Axis (координатная ось) и укажем ее в графическом окне или в списке. OK. Видим на модели предварительное изображение массива. Выбираем Yes для его построения. Cancel (см. рис. 2.99). Рис. 2.99. Определение параметров массива Массив из шести отверстий создан. Назначим резьбу на отверстиях массива. Воспользуемся функцией Insert → Feature Operation → Thread или обратимся к иконке . Тип резьбы, которая будет создана на модели, определим как Symbolic (символическая). Указываем цилиндрическую поверхность базового отверстия. После этого обращаемся к опции Choose from Table (выбрать из таблицы) и выбираем резьбу М8_Х_1.25 , OK. Вводим значение длины резьбы (Length) 12 мм. Включаем функцию Include Instances (распространить на элементы массива). OK. На отверстиях создана резьба; при этом внутренний диаметр отверстия изменился и стал равен значению из таблицы резьб (см. рис. 2.100). Рис. 2.100. Резьба в отверстиях массива. Прежде чем создать еще одну группу отверстий, необходимо определить новую координатную плоскость. Выбираем в главном меню Insert → Form Feature → Datum Plane или иконку на панели инструментов. Создадим новую координатную плоскость, проходящую через ось и расположенную под углом к изображенной координатной плоскости. Указываем курсором на координатную плоскость, после чего указываем на координатную ось. В активизировавшемся окне задания величины угла, учитывая положительное направление измерения углов, задаем значение: 10 градусов. OK. Изображение первоначальной координатной плоскости можно погасить. Определение координатной плоскости по имеющейся плоскости и оси показано на рис. 2.101. Рис. 2.101. Определение координатной плоскости по имеющейся плоскости и оси. Опять воспользуемся функцией Hole. Тип отверстия - Counterbore (отверстие с понижением). В качестве поверхности для размещения отверстия укажем среднюю торцевую поверхность, в качестве поверхности, до которого будет строиться сквозное отверстие, укажем противоположную торцевую поверхность детали. Размеры отверстия: C-Bore Diameter (диаметр понижения) 14 мм, C-Bore Depth (глубина понижения) 18 мм, Hole Diameter (диаметр отверстия) 9 мм. OK. Для позиционирования отверстия используем метод Parallel. Указываем внешнее ребро этой поверхности, в меню выбираем Arc Center, вводим размер 55 мм. После этого выбираем следующий метод позиционирования: Point onto Line. Курсором указываем координатную плоскость, проходящую через ось цилиндрической поверхности. OK. Отверстие создано (см. рис. 2.102). Рис. 2.102. Построение отверстия с понижением. На основе этого отверстия создадим массив элементов, используя функцию Insert → Feature Operation → Instance или иконку . Тип массива Circular Array (круговой), метод создания массива General, количество элементов массива 6, угол поворота 60 градусов, ось вращения Datum Axis (координатная ось). Круговой массив отверстий с понижением показан на рис. 2.103. Рис. 2.103. Круговой массив отверстий с понижением. Остается создать отверстия для монтажных болтов. Предварительно создадим еще одну координатную плоскость. Сделаем видимой первоначальную координатную плоскость, вызвав функцию Edit → Blank → Unblank Selected из главного меню или нажав клавиши Ctrl+Shift+K. Выбираем нужную координатную плоскость. OK (см. рис. 2.104). Рис. 2.104. Выбор объекта для изменения статуса видимости. Изображение модели в графическом окне дополнилось изображением первоначальной координатной плоскости. Создадим координатную плоскость, проходящую через ось и расположенную под углом 110 градусов к базовой координатной плоскости. Для этого обратимся к функции Insert → Form Feature → Datum Plane или к иконке . После этого погасим изображения первоначальной координатной плоскости и координатной плоскости, использовавшейся в предыдущем построении (см. рис. 2.105). Рис. 2.105. Создание еще одной координатной плоскости. Создадим отверстие, воспользовавшись функцией Hole. Выберем тип отверстия: Counterbore (отверстие с понижением). Разместим его на той же поверхности, на которой было создано предыдущее отверстие. Отверстия будет сквозным. Размеры отверстия: C-Bore Diameter (диаметр понижения) 7 мм, CBore Depth (глубина понижения) 58 мм, Hole Diameter (диаметр отверстия) 6 мм. Позиционировать отверстие будем аналогичным предыдущему образом так, чтобы оно располагалось на расстоянии 55 мм от оси детали и находилось на видимой координатной плоскости. После создания отверстия построим круговой массив из двух элементов с углом поворота 180 градусов (см. рис. 2.106). Рис. 2.106. Массив из двух элементов. На часть отверстия диаметром 6 мм назначим резьбу М6, воспользовавшись функцией Insert → Feature Operation → Thread или обратившись к иконке . Тип резьбы определим как Symbolic (символическая). Используя видовую функцию Rotate, повернем изображение модели так, чтобы ее задняя торцевая поверхность была видна. Указываем цилиндрическую поверхность одного из отверстий. Система определила ближайшие значения параметров резьбы для данной цилиндрической поверхности. Они появились в серых, не активированных окнах. Включаем функцию Include Instances (распространить на элементы массива). OK. Резьба на двух отверстиях создана, внутренний диаметр отверстия изменился (см. рис. 2.107). Рис. 2.107. Задание параметров резьбы. Осталось создать фаски на резьбовых отверстиях. Увеличиваем изображение одного из отверстий в графическом окне, используя видовую операцию Zoom. После этого при помощи функции Chamfer, методом Single Offset создаем две фаски 0.8х45°. Поскольку отверстие является элементом массива, перед созданием фасок появляется меню, в котором необходимо указать, создаются ли фаски на всех элементах массива (Chamfer all instances) или только по месту определения. Выбираем первый пункт (см. рис. 2.108). Рис. 2.108. Определение фасок на резьбовых отверстиях. Все необходимые отверстия на модели детали созданы. До завершения моделирования детали необходимо внести некоторые коррективы. Прежде всего, сделаем видимыми все погашенные объекты. Воспользуемся функцией Edit → Blank → Unblank All of Part (высветить все погашенное в файле) или клавишами Ctrl+Shift+U. В графическом окне появилось изображение всех погашенных до этого координатных плоскостей. Прежде чем перенести координатные плоскости и координатную ось на свой слой, назначим категории слоям. Для этого вызываем в главном меню Format → Layer Category (или иконку ). Устанавливаем курсор в окне Category и набираем имя категории: DATUMS. Выбираем опцию Creat/Edit. В новом меню в окне Layer and Status выбираем слой 3 и ниже выбираем функцию Add. Статус слоя 3 для категории DATUMS становится Included (включен). OK. OK. Теперь перенесем объекты Datum Axis и Datum Plane на слой 3. Вызываем в главном меню Format → Move to Layer или иконку на панели инструментов. Выбираем тип выбираемого объекта – Datums. OK. В меню Class Selection обращаемся к опции Select All. Подсвечиваются все объекты Datum Axis и Datum Plane. OK. В списке категорий в меню Layer Move выбираем категорию DATUMS. OK. Объекты Datums исчезли в графическом окне, поскольку были перенесены на слой 3, который имеет в данный момент статус “невидимый”. Изменение порядка построения модели. Завершаем построение модели. Добавим фаску в месте перехода выступа к основному корпусу. Обращаемся к меню создания фаски Chamfer, выбираем метод - Single Offset. Указываем ребро на границе малой и большой бобышки. OK. Размер 7.5 мм. OK. Оставаясь в меню выбора типа создаваемой фаски, опять выберем метод Single Offset, укажем на два ребра внешней цилиндрической поверхности корпуса и назначим размер фаски 1.6 мм. OK. Повторяем все действия, выбрав внешнее ребро большой бобышки и назначив размер фаски 1мм. OK. Cancel (см. рис. 2.109). Рис. 2.109. Добавление на модель элементов типа «фаска». Отметим, что последняя фаска была создана только на данном ребре от одного отверстия до другого. Чтобы эта фаска была построена на всех текущих сегментах, когда-то составлявших единое ребро, внесем изменения в порядок расположения элементов в дереве построения модели. Для этого вызовем изображение навигатора модели View → Model Navigator из главного меню, или иконку , или нажатием кнопок Ctrl+Shift+M. Выберем курсором на модели или в навигаторе последнюю из построенных фасок (см. рис. 2.110). Рис. 2.110. Изменение положения данного элемента в дереве построения модели. Установим курсор в навигаторе на подсвеченный элемент модели CHAMFER(35). Нажатием правой кнопки мышки вызываем контекстное меню и выбираем функцию Reorder After (Поставить после). Появляется список элементов модели, после которых можно поставить выбранную фаску. Выбираем элемент SYMBOLIC_THREAD(24). Именно после создания этого элемента были построены отверстия, разрезавшие ребро на шесть частей. После выбора указанного элемента модели ее изображение в графическом окне пропало, и появилось меню редактирования модели во время обновления (см. рис. слева). Сообщение в информационном окне этого меню говорит о том, что при дальнейшем обновлении модели произойдет разрыв ассоциативной связи с элементом, относительно которого был задан размер при позиционировании элементов кругового массива методом Parallel. Следует также обратить внимание на сообщение в строке состояния. Система информирует, что обновление модели прошло до этапа определения координатной плоскости DATUM_PLANE(26) и что 20 элементов остались необновленными. Выбираем функцию Accept (Принять) в меню редактирования (иконка ). Обновление модели дошло до элемента DATUM_PLANE(29) и остановилось на этапе позиционирования элементов следующего кругового массива по аналогичной причине. Опять выбираем функцию Accept (Принять). Модель полностью обновилась. В навигаторе модели после элемента SYMBOLIC_THREAD(24) появился элемент CHAMFER(25); порядковые номера последующих элементов изменились (см. рис. 2.111). Рис. 2.111. Навигатор модели с измененным расположением элементов. Нет ничего страшного в том, что при позиционировании круговых массивов была разорвана ассоциативная связь с ребрами. Теперь при внесении изменений расстояние от оси детали до центра отверстий останется неизменным (55 мм). Чтобы изменить его, можно воспользоваться функцией Edit → Feature → Positioning. Другой способ изменить положение элемента в дереве – использовать стандартную возможность перетаскивания элемента построения в навигаторе модели с помощью мыши. Для этого надо указать курсором на элемент, положение которого необходимо изменить, и, удерживая нажатой левую кнопку мыши, показать новое положение элемента. Назначим скругления на внешних ребрах модели. Вызываем из главного меню Insert → Feature Operation → Edge Blend или обращаемся к иконке . Устанавливаем тип выбираемых объектов – Edge, значения радиуса скругления 1 мм. Курсором указываем ребра на фаске между малой и большой бобышками. Apply (см. рис. 2.112). Изменим значение радиуса скругления на 0.6 мм и укажем курсором на ребро между торцевой поверхностью и большой бобышкой. Как и в последнем случае построения фаски, скругление было создано только на данном ребре от одного отверстия до другого. Для распространения скругления на все сегменты, когда-то составлявшие единое ребро, опять внесем изменения в порядок положения элементов в дереве построения модели. Рис. 2.112. Скругления на внешних ребрах. Аналогично тому, как было изменено положение элемента CHAMFER в навигаторе модели, изменим положение последнего скругления, поместив его после элемента CHAMFER(25). Теперь модель построена окончательно (см. рис. 2.113). Рис. 2.113. Окончательный вид модели. И, наконец, необходимо создать ссылочный набор (Reference Set) для того, чтобы при формировании сборок деталь приходила в сборку в виде одного тела, без сопутствующих объектов Datum. Для создания ссылочного набора вызываем из главного меню Assemblies → Reference Sets. Выбираем опцию создания нового Ссылочного набора (Create) и даем этому набору имя SOLID. OK (см. рис. справа). Теперь выбираем твердотельную модель крышки. OK. OK. Ссылочный набор SOLID, куда вошла только модель детали, создан. Необходимо сохранить построенную модель. Из главного меню вызываем функцию File → Save, или пользуемся иконкой , или нажимаем кнопки Ctrl+S. В окне состояния появляется сообщение: Part file saved. На основе построенной модели можно получить различные версии данной детали, изменяя ее параметры, т.е. размеры отдельных элементов детали и их расположение. Параметры могут меняться непосредственно в базе выражений, куда можно войти с помощью команды Tools → Expression или Ctrl+E. Сдвинув ползунок в окне выражений, находим любой из параметров и его значение. Задавая параметрам осмысленные имена, их легче идентифицировать и управлять их значениями. Кроме того, изменить размеры отдельных элементов детали можно при помощи функции Edit Parameters, к которой обращаются из главного меню, или через контекстное меню в навигаторе модели, или другим способом. Построение модели происходило примерно в той последовательности, в которой она разрабатывается конструктором, достаточно полно представляющим назначение этой детали и отдельных элементов ее конфигурации, технологические особенности ее изготовления и сборки изделия, в которое она входит. Конструктор руководствовался методом «от общего к частному», т.е. определив основные габариты корпуса, дополнял модель отдельными элементами. В процессе реальной работы он не раз вносил изменения в размеры детали, изменяя ее конфигурацию. При проектировании нового изделия, не имеющего прототипа, подобная деталь разрабатывается в контексте сборки, и метод ее создания может быть совершенно иным. Поверхностное моделирование (Free Form Modeling) Рис. 3.1. Панель инструментов UG/Free Form Features Способы моделирования, изложенные в предыдущих главах, в основном описывали построение твердотельных моделей с использованием таких операций как выдавливание плоского контура в определенном направлении, вращение контура вокруг оси, нанесение фасок, отверстий, скруглений. Эти методы во многом соответствуют тем способам, которыми оперирует конструктор при наличии карандаша, бумаги и кульмана. Однако описанные приемы моделирования совершенно непригодны для описания внешних обводов самолета, судна, автомобиля или даже кухонного комбайна. Вообще говоря, как только конструктор берет в руки лекало и проводит на чертеже некую плавную кривую, форму которой невозможно определить численными размерами, чаще всего в этом случае в технических требованиях появляются примерно такие пункты: «На участке … поверхность А плавно переходит в поверхность Б» или «Координаты кривой В приведены в таблице №…». Изготовление таких деталей при таком описании их геометрии представляет изрядную головоломку для технологов. Однако, в последнее время все чаще можно увидеть такие формулировки, как: «Внешние обводы взять с математической модели …», и в данном разделе книги речь и пойдет о способах моделирования поверхностей свободной формы (Free Form Features), или о поверхностном моделировании, хотя в процессе построения поверхностей при определенных условиях результатом будет являться твердотельный объект. Меню Free Form Features представлено на рис. 3.2. Рис. 3.2. Меню Free Form Features Unigraphics предлагает богатый набор инструментов для формирования и редактирования поверхностных объектов (Modeling->Insert->Free Form Feature). Эти инструменты включают в себя построение поверхностей по набору поперечных сечений, по сетке кривых, заметаемых или «кинематических» поверхностей, по набору продольных образующих и определенным законам изменения поперечного сечения и т.д. Доступ к механизмам поверхностного моделирования возможен при наличии действующей лицензии на этот модуль Unigraphics. Попытка обратиться к любому из разделов Free Form Feature без наличия такой лицензии приведет к следующему сообщению (см. рис. 3.3): Рис. 3.3. Сообщение об отсутствии лицензии UG/Free Form Features В случае появления подобного сообщения обратитесь к вашему поставщику программных модулей Unigraphics. Что такое поверхность (Sheet Body) с точки зрения Unigraphics? Поверхность можно рассматривать как твердое тело нулевой толщины, состоящее из отдельных «лоскутов» и граничных кромок и не образующее замкнутого объема. Большинство операций Free Form Features приводит к созданию поверхности. Твердотельный объект в результате построений может быть создан при выполнении следующих условий: если в результате операции образуется объем, замкнутый во всех направлениях; если в результате образуется объем, замкнутый в одном направлении, ограниченный в другом направлении плоскими торцами. Параметр, определяющий вид создаваемого в таких случаях примитива (поверхность или твердотельный объект), можно задать в разделе главного меню Preferences->Modeling…->Solid Type (Solid или Sheet) (см. рис. 3.4). Рис. 3.4. Определение типа создаваемого примитива: твердое тело или поверхность Здесь же можно определить параметр Distance Tolerance. Дело в том, что некоторые операции поверхностного моделирования формируют результирующую поверхность с определенным приближением к исходным объектам – точкам, кривым и т.п. Параметр Distance Tolerance регламентирует максимальное отклонение результирующей поверхности от исходной геометрии. При использовании приближенных способов построения поверхностей необходимо указывать разумные значения параметра Distance Tolerance - слишком малое значение этой переменной приведет к созданию объектов со значительным объемом описывающей информации. Существует определенный максимальный объем данных, описывающий поверхность или твердотельный объект. При превышении этого объема системой будет выдано соответствующее сообщение и поверхность не будет построена. При возникновении подобных ситуаций следует увеличить значение параметра Distance Tolerance до приемлемых значений. Все поверхности Unigraphics представляют собой NURBS-поверхности, каждая точка которой в зависимости от параметров u и v определяется следующим уравнением: M L ∑∑w P(u, v) = i =0Mk =0L P Ni,m (u)Nk ,n (v) i ,k i , k ∑∑w i =0 k =0 i ,k , Ni,m (u)Nk ,n (v) где P – вершины управляющего (характеристического) многогранника, w – весовые коэффициенты при соответствующих контрольных точках, N(u) и N(v) – базисные В-сплайн функции. При интерактивном построении NURBS-поверхности в Unigraphics система автоматически назначает весовые коэффициенты при соответствующих полюсах, однако программным способом, используя функции UG/Open (например, UF_MODL_create_bsurf_thru_pts), можно получить полный контроль над геометрией формируемой поверхности. Обсудим важный для понимания поведения поверхности параметр degree - степень (или порядок) поверхности. Математическое ядро Parasolid, на котором базируется Unigraphics, позволяет создавать поверхности до 24 порядка. Это означает, что полиномы N(u) и N(v) максимально могут достигать 24-й степени. Порядок поверхности может быть различным по направлениям u и v. Еще один важный момент: математически поверхность может быть описана одним «лоскутом» (patch) или может состоять из нескольких гладко состыкованных «лоскутов». Если вы строите поверхность, состоящую из одного лоскута, ее порядок будет определяться количеством контрольных точек (или количеством точек, через которые поверхность должна пройти) в соответствующем направлении, но не более чем 24+1. Рис. 3.5. Представление поверхности в виде одного или нескольких «лоскутов» Если же вы строите поверхность, математически состоящую из нескольких лоскутов, необходимо задать их порядок (степень) соответственно по u и по v. При этом количество точек в каждом направлении не должно быть меньше указанного порядка + 1 (см. рис. 3.5). Внешне поверхность, состоящая из одного лоскута или составленная из сопряженных лоскутов заданной степени, абсолютно ничем не отличаются, и узнать их внутреннее математическое устройство можно, только прибегнув к процедурам анализа объектов. Несмотря на то, что Unigraphics позволяет работать с поверхностями до 24-го порядка, рекомендуем использовать в построениях поверхности более низких степеней, например, кубические лоскуты (Degree = 3). Это значительно повышает производительность системы при отображении поверхностных объектов и при операциях с ними (например, при расчете траектории инструмента для станка с числовым программным управлением). Использование высоких степеней может затруднить передачу геометрии через обменные форматы в другие CAD-системы, которые могут не поддерживать поверхности столь высоких порядков. Кроме этого, поверхности высоких порядков крайне чувствительны к определяющей геометрии и даже весьма незначительные возмущения в координатах базовых точек могут привести к значительным осцилляциям поверхности. И последнее. При создании лоскутной поверхности более предпочтительно использовать нечетные степени (кубическая парабола более «подвижна», нежели квадратичная). Поверхность по точкам (Through Points) Рассмотрим более подробно способы построения поверхностей. Самый простой и самый первый способ в списке меню Free Form Feature – это построение поверхности, проходящей через заданные точки в пространстве (см. рис. 3.6). Рис. 3.6. Создание поверхности по точкам Когда удобен такой способ построения поверхности? Предположим, поверхность таблично задана каким-то разумным количеством контрольных точек, которые могут быть результатом расчета, получены экспериментальным путем или появились в результате контрольных измерений. В этом случае достаточно построить в Unigraphics точки по имеющимся координатам и «накинуть» на них поверхность Through Points. Качество результирующей поверхности будет всецело определяться исходной геометрией – поверхность в точности пройдет через все опорные точки. В общем случае точки каждого ряда не обязательно должны лежать в одной плоскости и количество точек в каждом ряду может не быть одинаковым. Если суммарное количество точек не превышает, например, сотни, можно потратить какое-то время на интерактивный ввод, проверку координат введенных точек и в конце концов построить поверхность. Но как поступить при значительно большем количестве опорных точек? Например, результатом расчета поверхности тарировочного кулачка будет несколько тысяч контрольных точек? В этом случае решение может быть следующим. Организуйте в расчетной программе вывод координат точек в файл определенного формата, а затем постройте поверхность, прочитав координаты точек из указанного файла (см. рис. 3.7). Лучше при этом определить тип создаваемой поверхности как Multiple Patch – то есть математически представленной как сшитой из нескольких лоскутов заданного порядка, так как число точек в ряду или число рядов скорее всего будет превышать максимально допустимое (25) для построения единого лоскута. Рис. 3.7. Загрузка координат опорных точек из файла Формат текстового файла, содержащего координаты точек, должен быть следующим (см. рис. 3.8): # Координаты поверхности кулачка ROW 1 12.234 0.0 0.0 - X, Y, Z координаты точки 18.723 10.0 0.0 24.876 20.0 0.0 …………………. ROW 2 12.234 0.0 10.0 18.723 10.0 10.0 24.876 20.0 10.0 ……………………… …………………. Рис. 3.8. Формат текстового файла с координатами точек Обозначения рядов (ROW 1, ROW 2) должны быть записаны заглавными буквами. Координаты точек X,Y,Z разделяются пробелами или запятой. Строка, начинающаяся символом “#”, воспринимается как комментарий, а пустые строки игнорируются. Ниже приведен фрагмент файла с координатами точек, описывающих сегмент рефлектора свободной формы и рассчитанных с помощью специальной программы, а также результат построения поверхности по точкам из этого файла (см. рис. 3.9). #Freeform Reflector FFReflector.dat ROW 1 0.000000 0.000000 26.000000 1.000000 0.000000 25.990965 2.000000 0.000000 25.963862 3.000000 0.000000 25.918698 4.000000 0.000000 25.855482 ................................................. ROW 2 0.000000 1.000000 25.862594 1.000000 1.000000 25.853550 2.000000 1.000000 25.826418 3.000000 1.000000 25.781205 4.000000 1.000000 25.717921 .................................................. ROW 3 0.000000 2.000000 25.748703 1.000000 2.000000 25.739664 Рис. 3.9. Пример построения поверхности по точкам из текстового файла Линейчатая поверхность (Ruled Surface) Линейчатая поверхность определяется двумя образующими кривыми (не обязательно плоскими для Unigraphics), соответствующие точки которых соединяются отрезками прямой линии. Линейчатую поверхность можно также трактовать как образуемую кинематическим перемещением отрезка прямой линии по двум направляющим по определенному закону. Очевидно, что для линейчатой поверхности порядок поверхности (или степень) в одном из направлений равен 1. Линейчатые поверхности очень широко используются в процессе моделирования. Их поведение хорошо предсказуемо, а область применения трудно однозначно определить – это может быть теоретическая поверхность крыла самолета, лопасть колеса турбокомпрессора и т.п. Казалось бы, что можно добавить к этому? На первый взгляд, все очень просто, но при формировании даже линейчатой поверхности есть свои маленькие «хитрости». Начнем с того, что соединить две образующие прямолинейными отрезками можно бесчисленным количеством способов и в зависимости от выбранного способа мы получим линейчатые поверхности, отличающиеся друг от друга геометрией (для одного и того же набора образующих кривых координаты точек поверхностей, построенных разными способами, могут не совпадать), или узором изопараметрических линий. Узор изопараметрических линий – это не просто внешний вид поверхности: именно этого «узора» будет придерживаться инструмент при расчете управляющих станочных программ. Рассмотрим на конкретном примере различные способы построения линейчатой поверхности крыла гипотетического самолета, для чего построим два сплайна, соответствующие корневому и концевому сечениям крыла (см. рис. 3.10). Образующие могут состоять из нескольких отрезков кривых, не обязательно сопряженных по касательной, главное условие – между сегментами не должно быть разрывов. Рис. 3.10. Опорная кривая для построения линейчатой поверхности Начинаем строить линейчатую поверхность, для чего в меню выбираем пункт Insert->Free Form Feature->Ruled… или нажимаем на соответствующую кнопку в панели инструментов Free Form Feature, после чего на экране появляется меню, предлагающее различные варианты определения образующих сечений. Это меню будет появляться при создании различных видов поверхностей, поэтому рассмотрим его чуть подробнее. В качестве опорного сечения для построения линейчатой поверхности может выступать грань твердого тела Solid Face. При выборе этого пункта меню с указанной грани автоматически выделяется замкнутый контур граничных кривых. Выбор пункта Solid Edge позволит указать цепочку отдельных ребер твердотельного объекта. Кнопка Curve облегчит указание отдельных кривых, а пункт Chain Curves ускорит выбор образующей, составленной из многих отдельных сегментов. В качестве одного из опорных сечений может выступать отдельная точка, для ее выбора воспользуйтесь кнопкой Point (см. рис. 3.11). Рис. 3.11. Меню выбора типа опорного сечения (точка, кривая, ребро и т.д.) В нашем случае выбираем отдельные кривые. После завершения выбора сечения стрелка будет индицировать стартовую точку для выбранного контура. Проследите за тем, чтобы стартовые точки для каждого сечения совпадали с носиком крыла, иными словами, ситуация, показанная на рисунке, недопустима, поскольку поверхность будет «перекручена» (см. рис. 3.12). Рис. 3.12. «Перекручивание» поверхности при различной направленности опорных кривых После определения второго сечения (для линейчатой поверхности их не может быть больше) следующим этапом будет определение способа соединения двух образующих отрезками прямых линий. На первый взгляд, в появившемся меню не так много пунктов, однако именно на этом шаге поверхности будет придана требуемая форма. Укажите в окне Tolerance требуемую точность совпадения результирующей поверхности с образующими кривыми (для некоторых случаев образующих кривых поверхность точно совпадает с сечениями). Значения параметров Temporary Grid Display определяют количество временных изопараметрических линий по U и V направлениям. Временно высвечиваемая сетка изопараметрических линий хорошо помогает оценить поведение поверхности и при необходимости внести поправки. После окончательного построения поверхности эти временные изолинии исчезнут. А теперь перейдем к самому интересному: рассмотрим предлагаемые способы соединения соответствующих точек сечений (Alignment). Для построения линейчатой поверхности предлагается шесть способов (см. рис. 3.13): Рис. 3.13. Различные методы соединения опорных кривых Parameter Образующие сечения внутренним математическим аппаратом представляются в виде x=x(t), y=y(t), z=z(t) и точки с равными значениями параметра каждого из образующих сечений соединяются отрезком прямой линии. Этот метод соответствия предлагается по умолчанию. Arc Length Длина каждого сечения приводится к безразмерной единичной длине и прямолинейный сегмент соединяет точки с равным процентом от этой единичной длины. В чем разница между этими методами? Вообще говоря, длина дуги по кривой и распределение параметра по кривой совпадают только для очень простых кривых (окружности и прямые линии). Для более сложных кривых изменение безразмерного параметра скорее соответствует изменению не длины дуги, а радиуса кривизны. На рис. 3.14 приведен пример построения поверхности этими двумя способами. Для метода Parameter видно «загущение» изопараметрических линий в носике крыла. Рис. 3.14. Сравнение двух методов: по параметру и по длине дуги Отличия этих двух методов еще более видны, если одна из образующих кривых – прямая линия, а вторая – кривая со значительным изменением радиуса кривизны по длине кривой. Ниже приведен пример построения такой поверхности (см. рис. 3.15). Обратите внимание, что на сечении, образованном прямой линией, изопараметрические линии для вышеописанных методов совпадают. Рис. 3.15. Влияние типа опорных кривых при разных методах построения Различия двух методов еще более заметны, если в качестве опорных кривых выбраны кривые со значительными отличиями в кривизне. Для этих двух способов вся информация для построения поверхности заключена в самих образующих, и дополнительно повлиять на поведение поверхности при использовании этих методов невозможно. Пропустим на время метод By Points (метод явного указания соответствующих точек) и рассмотрим методы Distance, Angles, Spine Curve. Их объединяет следующая общая идея построения поверхности: определяется траектория движения виртуальной бесконечной сканирующей плоскости, и если на пути ее движения в плоскости сечения оказываются оба образующих сечения, то соответствующие точки (результат пересечения кривой и виртуальной плоскости) соединяются отрезком прямой линии. Distance Виртуальная плоскость движется из бесконечности в бесконечность вдоль заданного направления. Для определения этого направления пользователю предлагается стандартный диалог Vector Subfunction. Знак направления особого значения не имеет, т. е. при выборе вектора +Х или –Х будут построены одинаковые поверхности. Справедливости ради стоит отметить, что внутренние отличия у таких поверхностей все-таки будут: у них будут по-разному ориентированы направления параметров U и V. Для нашего примера выберем направление +X. При этом виртуальная сканирующая плоскость будет совершать свое движение, всегда оставаясь перпендикулярной вектору +Х. Результатом построения будет поверхность, долевые линии которой лежат в параллельных плоскостях. Построение поверхности заканчивается, как только одна из образующих кривых окажется вне плоскости сечения сканирующей плоскости (см. рис. 3.16). Рис. 3.16. Все изопараметрические линии лежат в плоскостях, перпендикулярных выбранному направлению Еще более интересный результат мы получим, указав в качестве направления движения виртуальной плоскости вектор с компонентами (1.0, 0.0, 1.0). Точка приложения этого вектора не имеет значения, главное – его направление (см. рис. 3.17). Рис. 3.17. Поверхность соединяет только те участки кривых, которые имеют пересечения с плоскостями, перпендикулярными выбранному направлению Angles Следующий способ приведения в соответствие точек одного опорного сечения точкам другого. При таком методе виртуальная секущая плоскость вращается вокруг определенной оси (в этом случае большое значение имеет не только направление оси, но и точка, через которую эта ось проходит) и точки пересечения опорных сечений с виртуальной плоскостью соединяются прямолинейным сегментом. Для нашего гипотетического крыла ось вращения виртуальной плоскости может проходить через точку пересечения передней и задней кромок крыла перпендикулярно срединной плоскости. После указания опорных сечений пользователю будет предложено определить пространственное положение оси вращения виртуальной плоскости (по двум точкам, по существующей линии, по существующей точке и направлению), для чего необходимо сделать выбор в предлагаемом диалоговом окне (см. рис. 3.18). Рис. 3.18. Окно выбора пространственного положения оси вращения виртуальной плоскости Изопараметрические линии линейчатой поверхности в этом случае распределяются равномерно, с равными углами (см. рис. 3.19). Этим и можно объяснить название метода – Angles. Рис. 3.19. Изометрические поверхности лежат в плоскостях, проходящих через ось вращения Следующий пример построения поверхности – с другим положением оси вращения виртуальной плоскости. Поверхность будет создана только на тех участках опорных сечений, которые попадают в плоскость сечения виртуальной плоскости (см. рис. 3.20). Рис. 3.20. Второй вариант положения оси вращения виртуальной плоскости Осталось дать последний совет, который пригодится при создании линейчатой поверхности методом Angles. Не располагайте ось вращения виртуальной плоскости между опорными сечениями – это приведет к сообщению об ошибке. В этом случае долевая линия поверхности определяется неоднозначно. Spine Curve При выборе этого способа построения поверхности необходимо предварительно построить spine-кривую (опорную кривую), которая определит траекторию перемещения виртуальной секущей плоскости. Закон перемещения очень прост: в каждой точке спайн-кривой секущая плоскость остается перпендикулярной к ней. В качестве спайна может выступать любая плоская или пространственная кривая без разрывов. Единственное ограничение: эта кривая должна состоять из сопряженных по касательной сегментов. Кроме этого, спайн-кривая или ее сегменты не должны быть перпендикулярны плоскостям опорных сечений (в противном случае секущая плоскость не будет иметь пересечений с опорными сечениями). Желательно избежать перегибов на спайн-кривой – они могут привести к «перехлестам» поверхности. В целом, способ построения поверхности с использованием спайн-кривой позволяет максимально управлять соответствием точек одного опорного сечения точкам другого, но пользоваться им следует очень аккуратно. На рис. 3.21 показан результат построения поверхности с использованием спайн-кривой. Еще одно замечание: если при использовании методов Distance или Angles можно исходить из предположения, что секущая плоскость движется из «бесконечности в бесконечность» или вращается вокруг оси на 360 градусов, то для метода Spine Curve необходимо построить спайн-кривую таким образом, чтобы секущая плоскость, начав свое движение в первой же точке спайн-кривой, пересекала обе образующие кривые. Рис. 3.21. Изометрические линии лежат в плоскостях, перпендикулярных спайн-кривой By Points (Указание соответствующих точек на опорных сечениях). Последний способ построения линейчатой поверхности. Он применим в том случае, если опорные сечения составлены из сегментов кривых, имеют острые углы, или образуют замкнутые контуры. После определения опорных сечений и выбора метода By Points необходимо последовательно указать соответствующие пары точек на опорных сечениях (при этом нельзя указывать стартовые точки – стартовая точка первого сечения автоматически соответствует стартовой точке второго сечения; это можно учесть в процессе выбора контуров). Если в опорных сечениях имеются острые углы, а целью построения является твердотельный объект, укажите в поле ввода Tolerance значение 0 (при этом в настройках Preferences>Modeling параметр Body Type необходимо определить соответствующим образом). Пример построения линейчатой поверхности таким способом показан на рисунке 3.22. Рис. 3.22. Явное указание точек соответствия Мы уделили достаточно много внимания способам построения линейчатых поверхностей, так как приемы формирования такого класса поверхностей во многом сходны с теми, которые мы будем рассматривать при создании более сложных поверхностных объектов. Поверхность по кривым (Through Curves Surface) Этот класс поверхностей можно смело назвать самым популярным: поверхность «натягивается» на последовательность опорных сечений, а рассмотренные нами ранее линейчатые поверхности – это частный случай поверхностей, построенных по кривым. В основном при построении поверхностей по кривым применяются те же методы, что и при создании линейчатых поверхностей, но имеются и свои особенности. Прежде всего, при наличии более двух опорных сечений порядок поверхности в любом из направлений в общем случае превышает 1. Пользователю предлагается выбор: формировать поверхность одним лоскутом (Single Patch) или же совокупностью лоскутов (Multiple Patch) заданного порядка. При выборе Multiple Patch предоставляется возможность создать замкнутую поверхность в направлении V. К уже знакомым по линейчатым поверхностям способам приведения в соответствие точек на опорных сечениях (Parameter, Arclength, By Points, Distance, Angles, Spine Curve) добавился еще один – Spline Points (см. рис. 3.23). Для использования этого метода соответствия все опорные кривые (сечения) должны быть представлены B-сплайнами с одинаковым количеством определяющих точек. Результирующая поверхность будет проходить через все определяющие точки опорных кривых с сохранением касательной к опорным кривым в этих точках, но в общем случае может иметь отклонения от опорных сечений на участках между определяющими точками. Соответственно, при таком способе построения параметр Tolerance (величина отклонения от опорных кривых) не учитывается. Метод Spline Points можно сравнить с ранее рассмотренным классом поверхностей Trough Points, если в качестве опорных точек рассматривать определяющие точки сплайнов. Этот способ часто применяется при построении таблично заданных поверхностей (лопасть турбинной лопатки, импеллера). Рис. 3.23. Диалоговое окно Through Curves Дополнительная опция (Closed in V – замкнуть в направлении V), появившаяся в диалоговом окне Through Curves, дает возможность построить замкнутую поверхность в одном направлении (в случае незамкнутых опорных сечений) или в двух направлениях, если опорные сечения представляют собой замкнутые кривые (см. рис. 3.24). Для построения достаточно указать сечения последовательно (не нужно указывать первое сечение дважды – в качестве первого и в качестве последнего, - как ошибочно делают многие). Результат построения представлен на рис. 3.25. Обратите внимание на гладкое сопряжение на участке между первым и последним сечениями. Рис. 3. 24. Построение поверхности, замкнутой в направлении V по сечениям. Рис. 3.25. Результат построения поверхности, замкнутой в направлении V . При создании поверхности по опорным сечениям очень часто требуется обеспечить гладкое сопряжение результирующей поверхности с уже имеющимися поверхностными объектами. Unigraphics позволяет задать подобные граничные условия для первого и последнего сечений, причем граничные условия могут быть двух типов: сохранение касательности (непрерывность первых производных по U и V для сопрягаемых поверхностей) или же сохранение кривизны или радиуса кривизны (непрерывность вторых производных по U и V для сопрягаемых поверхностей) (см. рис. 3.26). Второе условие более жесткое, но оно обеспечивает более качественное сопряжение. Непрерывность вторых производных на стыке обеспечивает не только визуальную «гладкость» поверхности. Особенность человеческого зрения такова, что глаз (или мозг) в состоянии обнаружить разрывы второй производной на стыке поверхностей в бликах отражения. Непрерывность кривизны – залог безотрывного обтекания для аэродинамических поверхностей, безударного движения кулачковых механизмов и т.д. Рис. 3.26. Задание граничных условий Однако построение с сохранением кривизны сопрягаемых поверхностей не всегда возможно из-за особенностей геометрии исходных поверхностей, или же не дает желаемого результата. Дело в том, что для «сшивки» поверхностей по первой производной достаточно обеспечить стыковку граничных рядов вершин характеристических многогранников поверхностей. Сохранение же второй производной требует соблюдения жестких правил формирования уже двух рядов вершин характеристического многогранника выстраиваемой поверхности в соотношении с вершинами определяющей поверхности. Поэтому поверхность, «зажатая» в жесткие рамки граничных условий, тем не менее может давать нежелательные «всплески». Ниже на рисунках приведены примеры построения поверхностей сопряжения для исходных опорных сечений (см. рис. 3.27), без определения граничных условий и с условием сохранения касательности и с условием сохранения второй производной (см. рис. 3.28). Рис. 3.27. Исходные опорные сечения для построения поверхности с заданием граничных условий сопряжения. Результат построения поверхности без наложения граничных условий – обычная линейчатая поверхность. Наличие граничных поверхностей во внимание не принималось (см. рис. 3.29), поэтому никакой речи о гладком сопряжении быть не может. Налицо наличие разрывов по первой производной. Рис. 3.28. Фрагменты меню для задания граничных условий Рис. 3.29. Построение поверхности без наложения граничных условий. Построим поверхность еще раз, но теперь в качестве граничного условия для 1-го сечения зададим сохранение непрерывности первой производной (касательности), а для второго сечения – сохранение непрерывности второй производной (кривизны или радиуса кривизны) (см. рис. 3.30). Заодно и посмотрим отличия в поведении поверхности при соблюдении этих граничных условий. Рис.3.30. Построение поверхности с наложением граничных условий сопряжения В чем же отличия? На первый взгляд, и на первом, и на втором сечении поверхность гладко состыкована с граничными поверхностями. Рассматривая результат построения поверхности с наложенными граничными условиями в каркасном или полутоновом представлении, различий можно и не заметить. Их можно увидеть, подвергнув все три поверхности дополнительному анализу (пункты основного меню Analysis->Face->Reflection…). Проделаем эту процедуру. После выбора указанного меню в предложенном диалоговом окне (см. рис. 3.31) выбираем способ представления результатов анализа (пиктограмма Black Lines). Этот способ имитирует отражение решетки горизонтальных и вертикальных линий в абсолютно гладких, зеркально отполированных поверхностях. Узор отражения наглядно продемонстрирует все дефекты поверхностей, разрывы вторых производных и прочие дефекты. Кстати, именно так определяют качество автомобильных кузовных поверхностей: концепт-кар помещается в специальный зал с решетчатыми перегородками, специальным образом освещается и все дефекты – как на ладони. Рис.3.31. Диалоговое окно Face Analysis Укажите в предложенном окне параметры «решетки» из вертикальных и горизонтальных линий, выберите анализируемые поверхности, точность представления результатов (Dispay Resolution) и нажмите ОK. Результаты анализа будут выглядеть примерно так, как показано на рис. 3.32. Можно видеть, что на первом сечении линии отражения претерпевают резкие изменения и изломы, а на втором сечении переход происходит гладко, без изломов. Конечно же, эти узоры отражения вовсе не самоцель, однако гладко сопряженные поверхности – залог не только хорошего экстерьера, безотрывного обтекания, безударного перемещения. Такие поверхности обеспечат более плавное движение обрабатывающего инструмента на станках с числовым программным управлением. Рис.3.32. Результаты анализа сопряжения поверхностей. Последний пункт диалогового окна Through Curves, имеющий отношение к сопряжению с граничными поверхностями, это пункт Direction. Он недоступен для выбора в случае отсутствия граничных условий сопряжения, но при наличии же таких поверхностей можно дополнительно ужесточить условия выхода результирующей поверхности на краевые условия так, например, чтобы совпадали изопараметрические линии создаваемой и граничной поверхностей. Мы уделили достаточно много внимания поверхностям Through Curves (По сечениям). Этот класс поверхностей используется инженерами наиболее часто. Поверхность по сетке кривых ( Through Curve Mesh ) Этот способ построения поверхностей не менее популярен, чем предыдущий, и позволяет еще более гибко управлять поведением поверхности. Суть метода состоит в том, что, кроме набора поперечных сечений, в определяющую геометрию добавляются продольные сечения. При построении поверхности таким способом прежде всего следует для себя определить, какой набор сечений будет главным (определяющим - Primary), а какой - вторичным (Cross). Какие основные особенности построения поверхностей по сетке кривых? Во-первых, в качестве сечения из набора Primary может выступать точка (для первого или для последнего сечения; см. рис. 3.33). В этом случае на соответствующих участках поверхность стягивается в точку. Необходимость в построении таких лоскутов очень часто возникает в судо- или авиастроении. Рис.3.33. В качестве одного из сечений может быть выбрана точка Во-вторых, при наличии наборов как продольных, так и поперечных сечений следует определить, какие сечения «главнее». Математический аппарат UG отдаст им предпочтение, и поверхность будет выстроена с минимизацией отклонений от этого «главного» набора сечений. Определить, какому набору сечений следовать в первую очередь, можно при помощи выпадающего списка Emphasis диалогового окна Trough Curve Mesh (см. рис. 3.34). В принципе, можно не создавать такой дискриминации и объявить сечения равноправными (строка Both выпадающего списка Emphasis). В любом случае после определения продольных и поперечных сечений уделите внимание параметру Intersection Tolerance. Эта величина определяет допустимое отклонение продольных и поперечных сечений друг от друга в узлах сетки кривых, и именно в пределах этой величины моделируемая поверхность будет стремиться приблизиться к выбранному набору сечений. Дело в том, что координаты продольных и поперечных сечений для поверхности задаются, как правило, в разных плоскостях, в разных системах координат, и после воспроизведения этих кривых в Unigraphics будьте готовы к тому, что в общем случае в каких-то узлах сетки сечения не пересекаются. Именно в этом случае на помощь придет параметр Intersection Tolerance. Рис.3.34. Диалоговое окно Trough Curve Mesh И, в-третьих, для поверхности, создаваемой по двум наборам опорных сечений, можно определить соответствующие граничные условия сохранения касательности или кривизны как для первого и последнего продольного сечения, так и для первого и последнего поперечного сечения. Следует отметить, что задание граничных условий по всем краевым сечениям создает очень жесткие условия для моделируемой поверхности, и поэтому накладывать ограничения нужно очень обоснованно. Простой пример: при таких геометрических условиях, как показано на рис. 3.35, требовать сохранения касательности для 1-го Primaryсечения бессмысленно, сами граничные поверхности в угловых точках не обеспечивают гладкого сопряжения. Рис. 3. 35. Для такого набора граничных условий задавать любые условия для набора Primary совершенно бессмысленно. В случае возникновения подобных коллизий пользователю буден выдано следующее сообщение, свидетельствующее о несовместимости граничных условий (см. рис. 3.36). Рис. 3. 36. Сообщение о несовместимости граничных условий Пример формирования модели сборки (Assembly Modeling) В системе Unigraphics реализована разработка сборок большого размера, причём обеспечивается создание сборочной модели как сверху вниз, так и снизу вверх. Иначе говоря, сборка формируется либо из готовых деталей, либо в одном файле создаются модели разных деталей, а затем они определяются в качестве составляющих данную сборку разноуровневых компонентов. При этом нет нужды заранее определять данный файл в качестве сборочного – в случае необходимости он будет определён таковым дефакто в ходе работы над проектом. Можно создавать сборку любой глубины вложенности, состоящую из неограниченного количества компонентов. Контекстный поиск, управление изменениями, обнаружение пересечений, мощные средства визуализации, управление данными – все это гарантирует сохранение целостности данных на протяжении всего процесса проектирования. При моделировании сборок предусмотрены такие средства и процессы, с помощью которых согласованная работа всего коллектива разработчиков осуществляется в рамках единой концепции и единых требований к разрабатываемому изделию в целом. В зависимости от текущих задач разработчик может оперативно настроить рабочую среду сборки, контролировать загрузку компонентов при открытии сборки. Использование фильтров по атрибутам, именам компонентов и их пространственному положению позволяет определить и затем загрузить в сборку только те детали, которые находятся в определённой области, или детали с определёнными атрибутами. Таким образом, детали, входящие в сборку, создаются и изменяются в контексте данной сборки. Это позволяет обнаружить ошибки на ранних этапах проектирования, оперативно провести необходимые изменения и сделать стоимость подобных изменений менее дорогой. Ассоциативная связь между деталями приводит к тому, что при изменении одной детали остальные детали, связанные с ней, автоматически перемещаются или даже меняют свою геометрию. Существует возможность упрощать точные модели, заменяя их условными телами, что особенно удобно при анализе вариантов, когда важны лишь примерные очертания объекта, обозначающие место его расположения. При работе со сборкой графический навигатор поможет быстро найти нужный компонент или изменить способ его изображения. Система моделирования сборок располагает собственными средствами контроля пересечений деталей и расчета массовых и инерционных характеристик сборочных узлов. Эти средства контроля оптимизированы на работу с большим количеством деталей в сборке. Такие расчёты можно итеративно проводить по мере проектирования изделия. Трёхмерная модель большой сборки позволяет разработчику оценить проектируемое изделие без затрат на создание сложных полноразмерных макетов (выполненных из дерева или других материалов) для оценки возможности доступа, монтажа и демонтажа различных агрегатов. Всё это вместе с ранним обнаружением взаимных пересечений деталей позволяет, помимо повышения качества проекта, сокращения времени на разработку и уменьшения материальных затрат, исключить целые этапы создания изделия. Сборочный файл в системе Unigrsphics имеет такое же расширение, как и файл детали: prt. Приступая к формированию сборки, мы не определяем данный файл в качестве сборочного, как в других системах, а просто создаем новый файл: File → New (иконка из панели инструментов). В окне “Имя файла” набираем: nasos. Открываем приложение моделирования сборок: Application → Assemblies, или используем комбинацию клавиш Ctrl+Alt+W, или из панели инструментов иконку Assemblies . После этого должна появиться панель иконок приложения работы со сборками. Если такая панель не появилась, включаем ее: Tools → Customize, или закладка Toolbars. Сейчас в навигаторе сборки можно увидеть, что сборка не содержит ни одного элемента. Навигатор сборки открывается функцией View → Assembly Navigator или клавишами Ctrl+A. Установим в сборке первый базовый компонент. Формирование сборки «снизу-вверх»: добавление компонентов в сборку Для добавления компонента в сборку выполняется следующая операция. В главном меню обращаемся Assemblies → Components → Add Existing (или к иконке ). Из соответствующей директории диска, пользуясь функцией Choose Part File, выбираем файл val.prt . В следующем меню предлагается выбрать ссылочный набор, условие позиционирования и слой, на котором будет расположен добавляемый компонент. Деталь содержит ссылочный набор SOLID, но сейчас мы добавим ее в сборку со ссылочным набором Entire Part, поскольку координатная плоскость (Datum Plane), имеющаяся в модели, будет необходима при определении условий стыковки других деталей с деталью VAL. Условие позиционирования выбираем Absolute (совмещение систем координат файла детали с системой координат сборки). Деталь будет размещена на оригинальном слое (Original), т.е. на том, на котором она храниться в своем файле. OK. Данный слой должен иметь статус Selectable, т.е. объекты на этом слое должны быть видимыми и доступными для выбора. Появляется типовое меню выбора точки, обнуляем координаты. OK. Базовая деталь VAL размещена в сборке. Меню выбора следующей детали для добавления в сборку осталось открытым (см. рис. 4.1). Рис. 4.1. Базовый компонент установлен Опять обращаемся к функции Choose Part File и выбираем файл SHPONKA_01. Существует возможность предварительного просмотра добавляемой детали. Для этого в настройках Preferences → Assemblies необходимо включить функцию Preview Component on Add. Тогда после выбора соответствующей детали в правом верхнем углу будет появляться окно с изображением выбранного компонента (детали или сборки). Назначение условий сопряжения Обращаемся к выпадающему списку ссылочных наборов. Поскольку набора SOLID у данного файла нет, выбираем набор Entire Part. Метод позиционирования - Mate, т.е. будем сразу назначать условия сопряжения. OK. Появляется меню назначения условий сопряжения. Выбираем тип сопряжения Mate. Фильтр выбираемых объектов для назначения условий сопряжения установлен на Face (Поверхности). Если была включена функция предварительного просмотра, то обращаемся к окну просмотра и указываем нижнюю поверхность шпонки. После этого указываем на валу поверхность в углублении шпоночного паза. Появились стрелки на деталях, показывающие оставшиеся степени свободы у детали после назначения данного условия сопряжения. Выбираем тип сопряжения Center. Указываем цилиндрическую грань на шпонке и соответствующую цилиндрическую поверхность шпоночного паза. Изменилась картина оставшихся степеней свободы (см. рис. 4.2). Рис. 4.2. Назначение условий сопряжения Теперь выбираем тип сопряжения Parallel. Указываем дальнюю боковую грань шпонки и соответствующую грань паза. Можно выбрать функцию предварительного просмотра положения шпонки по назначенным условиям Preview, если нас удовлетворяет результат - OK. OK. В меню Select Part опять выбираем деталь SHPONKA_01, но уже из окна списка открытых компонентов. Повторяем шаги, аналогичные назначению условий сопряжения первой шпонки. Устанавливаем на валу еще одну деталь: SHPONKA_02. Установка производится аналогично установке предыдущих шпонок. Сборка имеет следующий вид (см. рис. 4.3). Рис. 4.3. Вал со шпонками Добавляем к сборке следующую деталь: disk_01. В выпадающем списке ссылочных наборов выбираем набор SOLID. Тип сопряжения - Mate. Указываем на торцевую поверхность ступицы диска и поверхность буртика на вале. Выбираем тип сопряжения Center, указываем цилиндрическое отверстие в ступице диска и цилиндрическую поверхность вала. Выбираем тип сопряжения Parallel. Указываем поверхность проточки под шпонку и указываем боковую поверхность шпонки. OK. OK (см. рис. 4.4). Рис. 4.4. Добавление в сборку диска Теперь добавим подшипник и установим его на диске. Файл с моделью подшипника называется P_208_GOST8338. В окне просмотра появляется модель подшипника. Выбираем ссылочный набор SOLID и видим, что на модели в окне просмотра исчезли кривые сечения, определяющего конфигурацию подшипника. OK. Назначаем условия стыковки. Сейчас первым условием назначим условие соосности Center. Указываем внутреннюю цилиндрическую поверхность подшипника и поверхность ступицы диска. Появились символы оставшихся степеней свободы и символы направлений осей цилиндрических поверхностей. Теперь назначаем тип сопряжения Mate. Указываем боковую поверхность внутреннего кольца подшипника и поверхность на диске. Видим, что в меню Mating Conditions деактивировались операции Alternate Solution, Preview, Vary Constraints, осталась активированной функция List Errors. Назначенное условие стыковки невыполнимо, поскольку два ограничения противоречат друг другу. С подробным описанием этих противоречий можно ознакомиться, обратившись к функции вызова листа ошибок List Errors (см. рис. 4.5). Рис. 4.5. Условия сопряжения противоречат друг другу Причина в том, что в данном случае направления выравнивания оказались противоположными. Избежать ошибки можно было, назначив первым условием тип сопряжения Mate или обратившись к операции Preview после назначения условия соосности. Тогда кнопка Preview меняет свое название на Unpreview, окно предварительного просмотра добавляемого компонента исчезает, а на сборке появляется подшипник. Назначаем оставшееся условие сопряжения Mate, указывая поверхности подшипника и диска на сборке. Опять обращаемся к операции Preview. Видим, что подшипник стоит на своем месте, но у него осталась одна степень свободы: он может вращаться вокруг своей оси. Обратившись к функции Vary Constraints, можно повернуть подшипник, нажав правую кнопку мыши и переместив курсор. Back (см. рис. 4.6). Рис. 4.6. Перемещение компонента в оставшихся степенях свободы Желательно назначить еще одно условие стыковки, чтобы зафиксировать вращение подшипника относительно диска. Это важно хотя бы потому, что в дальнейшем будет выпускаться чертеж насоса. На чертеже в сечении по оси вала подшипник должен быть узнаваем, и его изображение должно иметь вид, оговариваемый стандартами. Если такое условие назначаться не будет, дважды нажимаем OK. Добавляем новую деталь: kryshka. Ссылочный набор – SOLID. Первое условие: тип сопряжения Center, выбирается цилиндрическая поверхность под подшипник на крышке и внешняя цилиндрическая поверхность подшипника. Второе условие: тип сопряжения Mate, выбирается поверхность буртика и боковая поверхность подшипника. OK. OK (см. рис. 4.7). Рис. 4.7. В сборку добавлена крышка В качестве следующего компонента добавим в сборку подсборку korpus_sb. Ссылочный набор - Entire Part. Назначаем условия сопряжения деталей. Тип сопряжения Mate. Указываем торцевую поверхность корпуса и торцевую поверхность крышки (см. рис. 4.8). Рис. 4.8. Добавленный компонент – подсборка Выбираем тип сопряжения Center. Поскольку и корпус, и крышка по своим внешним формам являются телами вращения. Указываем внешнюю цилиндрическую поверхность корпуса и внешнюю поверхность крышки. Остается выбранным тип сопряжения Center. Указываем поверхность отверстия на торцевой поверхности корпуса и отверстие на крышке. Последним условием мы фиксируем корпус и крышку друг относительно друга. OK. OK. Закрываем меню Select Part: Cancel (см. рис. 4.9). Рис. 4.9. Назначение условий сопряжения для корпуса Добавленный компонент korpus_sb является подсборкой, поскольку сам состоит из деталей korpus и vtulka, собранных в этом файле. Определение положений деталей в сборках разного уровня Прежде чем установить подсборку plunjer в насос, рассмотрим более подробно ее структуру и назначенные в ней условия стыковки. Откроем файл plunjer.prt операцией File → Open (или иконка из панели инструментов). Вызовем навигатор сборки: View → Assembly Navigator (или Ctrl+A) и операцию Mate Component: Assemblies → Components → Mate Component (или иконку ). Плунжер состоит из двух деталей: поршня (porshen) и наконечника (nakonechnik). Наконечник завальцовывается на сферической головке поршня, поэтому в сборке задано одно условие сопряжения – центровка сферической поверхности наконечника на сферической головке поршня (см. рис. 4.10). Рис. 4.10. Условия сопряжения в подсборке «плунжер» Обратившись к операции Vary Constraints в меню Mating Conditions, можно увидеть возможное перемещение наконечника относительно поршня. Для этого нажимаем левую кнопку мыши и, не отпуская ее, перемещаем курсор в графическом окне. После чего нажимаем Back. Cancel. Отметим, что в сохраненной сборке plunjer компоненты ориентированы вдоль одной оси. В таком виде она открывается, а значит, добавляется в другие сборки. При этом наконечник имеет три степени свободы относительно поршня. В главном меню выбираем Window, а в выпавшем списке - имя нашей сборки: nasos. Поскольку в предыдущем файле навигатор сборки оставался открытым, сейчас в нем отображается дерево текущей сборки. Раскрываем все вложения и, обращаясь к значку «галочка», скрываем изображение всех компонентов, кроме disk_01 и одной из втулок (см. рис. 4.11). Рис. 4.11. Изменение статуса видимости компонентов Добавляем сборку plunjer функцией Assemblies → Components → Add Existing (иконка ). Поскольку данный файл оставался открытым, он присутствует в окне меню Select Part, где его и указываем. OK. Ссылочный набор - Entire Part. Позиционирование - используя Mate. Добавляем на оригинальный слой. OK. Выбираем тип сопряжения Center. Указываем цилиндрическую поверхность поршня и внутреннюю поверхность втулки. Нажимаем Preview. Плунжер появился на сборке, но он направлен неверно (см. рис. 4.12). Рис. 4.12. Использование функции предварительного просмотра Обращаемся к функции подбора других возможных решений положения компонента Alternate Solution. Теперь плунжер сориентирован правильно, но расположен далеко от втулки, в которую он должен входить. Поэтому обращаемся к операции Vary Constraints и, нажав левую кнопку мыши, буксируем плунжер, пока он не войдет во втулку. OK. Закрываем меню назначения условий сопряжения деталей. OK. Сейчас задавать другие условия, в частности прилегание поверхности наконечника к поверхности диска, бесполезно: будет высвечена ошибка. Закрываем меню Select Part: Cancel (см. рис. 4.13). Рис. 4.13. Первоначальное положение плунжера Перед нами стоит задача, не изменяя условие соосности поршня по втулке и не разбивая подсборки, повернуть наконечник так, чтобы он своей опорной поверхностью соприкасался с диском. Решать эту задачу будем в два этапа. Во-первых, повернем наконечник на сферической головке поршня так, чтобы его ось была перпендикуляра наклонной поверхности диска. Второй этап – перемещение всего плунжера вдоль оси до прилегания опорной поверхности наконечника к поверхности диска. Вызываем операцию Assemblies → Components → Reposition Component (иконка ) и выбираем наконечник. OK. Появляется меню Reposition Component; все детали сборки, кроме плунжера, поменяли свой цвет на серый, неактивный; появился символ системы координат. Изменение цвета деталей показывает, что подсборка plunjer стала рабочей частью, а головная сборка nasos – дисплейной (изображенной). Открываем закладку Variable Positioning (Переменное позиционирование). Здесь мы определяем, в какой сборке компонент nakonechnik должен изменить свое положение. Выбираем головною сборку – nasos (см. рис. 4.14). Рис. 4.14. Определение уровня сборки для операции Reposition Таким образом, мы определяем, что в сборке plunjer наконечник не изменит своего положения относительно поршня, а в сборке nasos он повернется на сферической головке поршня в соответствии с оставшимися у него степенями свободы. Открываем закладку Transform (перемещение). Выбираем иконку Rotate Between Axes (вращение между осями) (см. рис. 4.15). Рис. 4.15. Операция Rotate Between Axes В качестве точки центра вращения выбираем иконку Arc/Ellipse/Sphere Center. Увеличиваем изображение в графическом окне, курсором указываем на сферическую поверхность наконечника (или головки поршня) и подтверждаем выбор. Для задания угла поворота надо определить оси. Выбираем иконку Face Normal (Нормаль к поверхности). Поворачиваем изображение в графическом окне и указываем на плоский сегмент опорной поверхности наконечника. OK. Опять выбираем иконку Face Normal, ориентируем вид в удобное положение и указываем наклонную плоскую поверхность диска. Для изменения направления обращаемся к функции Cycle Vector Direction (Изменить направление вектора). OK. Apply. Наконечник повернулся. Первый этап выполнен. Cancel (см. рис. 4.16). Рис. 4.16. Промежуточное положение плунжера Теперь можно назначить условие стыковки плунжера с плоскостью диска. В навигаторе сборки устанавливаем курсор на самый верхний узел nasos и дважды щелкаем левой кнопкой мыши. Все компоненты в сборке окрасились. Символы в навигаторе сменили серый цвет на желтый. Рабочей и изображенной частью сейчас является головная сборка. Вызываем операцию Assemblies → Components → Mate Component (или используем иконку ). В окне с деревом условий стыковки появился узел с символом вертикальной синей стрелочки. Он показывает, что было осуществлено переопределение условий стыковки компонентов с помощью функции переменного позиционирования, т.е. содержит информацию о предыдущей операции. Выбираем тип стыковки Mate. Развернув изображение, указываем поверхность на наконечнике, после чего – поверхность диска. OK. OK. Поставленная задача выполнена (см. рис. 4.17). Рис. 4.17. Окончательное положение плунжера Сначала мы назначили условие сопряжения, потом использовали переменное позиционирование и добавили еще одну стыковку в первоначальное условие сопряжения. Тем самым мы создали циклическую операцию. Вследствие этого при последующей загрузке модели может произойти ошибка. Во избежание этого после выполнения позиционирования плунжера в окне с деревом условий стыковки в меню Mating Conditions необходимо выбрать первоначальное условие сопряжения плунжера и, нажав правую кнопку мыши, удалить его операцией Delete. OK. OK. Если бы на первом этапе в разделе Variable Positioning мы определили, что компонент nakonechnik должен изменить свое положение в подсборке plunjer, то сейчас, добавив еще один плунжер, мы могли бы только задать условия центровки по втулке и прилегания к диску. Теперь же придется повторить все проделанные операции с каждым из двух добавляемых плунжеров. Это потребует некоторого времени и усилий, зато сборочный чертеж плунжера будет выполнен правильно: детали поршень и наконечник будут ориентированы вдоль одной оси. В навигаторе сборки изменим видимость компонентов, сделав видимой следующую втулку. Добавляем в сборку плунжер и выполняем все необходимые действия для определения его правильного положения. После установки третьего плунжера сборка имеет следующий вид (см. рис. 4.18). Рис. 4.18. Результат установки трех плунжеров Включаем видимость компонента val. Добавляем в сборку компонент prijim. Тип сопряжения - Center. Указываем внутреннюю сферическую поверхность прижима и цилиндрическую поверхность вала. Выбираем тип сопряжения Mate. Указываем поверхность прижима и поверхность наконечника. Обращаемся к функции предварительного просмотра Preview (см. рис. 4.19). Рис. 4.19. Добавление компонента прижим Для правильного позиционирования прижима необходимо назначить еще одно условие. Выбираем тип Tangent (Касание). Указываем цилиндрическую поверхность отверстия на прижиме и цилиндрическую поверхность меньшего диаметра наконечника. Опять воспользуемся функцией Preview. Наконечник располагается снаружи отверстия. Необходимо подобрать другие возможные решения расположения прижима: нажимаем Alternate Solution. Теперь прижим занял правильное положение. OK. OK. Добавляем следующий компонент: stakan. Выбираем тип сопряжения Center. Указываем на цилиндрическую поверхность добавляемой детали и цилиндрическую поверхность вала. После чего указываем сферическую поверхность стакана и сферическую поверхность прижима. Судя по реакции системы, назначенные условия не противоречат друг другу (см. рис. 4.20). Рис. 4.20. Добавление компонента стакан Прежде чем закончить операцию, вызываем предварительный просмотр. При необходимости используем Alternate Solution. OK. OK. Переходим к монтажу деталей на другом конце вала. В качестве добавляемой детали выбираем polukolco. В верхней части меню Add Existing Part включаем функцию Multiple Add (Множественное добавление); остальные настройки не меняем: Entire Part, Mate, Original. OK. В меню Mating Conditions выбираем тип сопряжения Center. Указываем внутреннюю цилиндрическую поверхность полукольца и цилиндрическую поверхность вала. Выбираем тип сопряжения Mate. Указываем боковую поверхность полукольца и поверхность проточки на вале. OK. Появляется меню создания массива компонентов. Определяем тип массива Circular (круговой). OK. Для кругового массива необходимо определить его ось вращения. Определим ее как ось цилиндрической поверхности (Cylindrical Face) и укажем курсором на цилиндрическую поверхность вала. Задаем параметры массива: количество элементов 2, угол поворота 180 градусов (см. рис. 4.21). Рис. 4.21. Использование массива при добавлении компонентов Завершаем операцию: OK. В проточке на вале появилось изображение второго полукольца. Включаем изображение шпонки на этом конце вала, а изображение подсборки korpus_sb выключаем. Теперь можно добавить еще один компонент: второй наклонный диск: disk_02. Выбираем ссылочный набор SOLID. Тип сопряжения - Mate. Указываем на торцевую поверхность ступицы диска и поверхность полукольца. Выбираем тип сопряжения Center. Указываем цилиндрическое отверстие в ступице диска и цилиндрическую поверхность вала. Выбираем тип сопряжения Parallel. Указываем поверхность проточки под шпонку и указываем боковую поверхность шпонки. OK. OK (см. рис. 4.22). Рис. 4.22. Установка компонентов на другом конце вала Обращаемся к навигатору сборки и скрываем изображение всех компонентов, кроме второго диска. Раскрываем подсборку korpus_sb и делаем видимой одну из втулок. Добавляем сборку plunjer. В качестве метода позиционирования выбираем Reposition (перемещение). OK. В выпавшем стандартном меню определения положения точки выбираем в окне Offset метод Rectangular. Базовую точку будем выбирать как центр окружности. Указываем торцевую кромку втулки, подтверждаем выбор одной из окружностей, вводим значение Delta-ZC 20 мм. OK. В графическом окне появляется изображение плунжера, расположенного относительно осей координат так, как он был создан в своем файле, с началом координат в определенной нами точке. С плунжером связан специальный набор меток перемещений. Кроме того, появилось меню Reposition Component. Курсором выбираем метку вращения (шарик) между осями Z и X. Вводим в окно Angle значение угла поворота 90 градусов. Enter (см. рис. 4.23). Рис. 4.23. Установка компонента с использованием меток перемещения Плунжер изменил свое положение и теперь направлен вдоль оси XC. Выбираем иконку функции перемещения Point to Point в меню Reposition Component. В выпавшем меню выбора точек устанавливаем выбор центра окружности. Указываем ребро на цилиндрической поверхности поршня перед сферической головкой и подтверждаем выбор. Указываем ребро втулки на ближайшей к диску торцевой поверхности. Плунжер переместился и занял следующее положение. OK. Cancel (см. рис. 4.24). Рис. 4.24. Результат предварительной установки плунжера Вызываем операцию Assemblies → Components → Reposition Component (иконка ) и выбираем наконечник. OK. В меню Reposition Component открываем закладку Variable Positioning (переменное позиционирование) и выбираем сборку nasos. Открываем закладку Transform (перемещение). Выбираем иконку Rotate Between Axes (вращение между осями) и выполняем поворот наконечника на сферической головке поршня таким образом, чтобы его подошва была параллельна наклонной поверхности диска. При этом наши действия повторяют действия при повороте наконечника на противоположном поршне (см. рис. 4.25). Рис. 4.25. Поворот наконечника плунжера Опять обращаемся к операции Reposition Component. Выбираем поршень. OK. Также открываем закладку Variable Positioning (переменное позиционирование) и выбираем сборку nasos. После этого переходим к закладке Transform. Будем перемещать выбранную деталь при помощи метки перемещения. Первым делом необходимо включить режим проверки зазоров между деталями при движении. В окне с перечнем режимов анализа столкновений Collision Mode устанавливаем Facet/Solid, чтобы производилась проверка столкновений фасетных либо твердотельных моделей, в зависимости от используемого представления деталей в сборке. Кроме того, включаем режим Stop on Collision (остановить при столкновении деталей). Курсором выбираем метку перемещения по оси Z и, прижав левую кнопку мыши, буксируем плунжер до момента, когда наконечник столкнется с диском, обе детали подсветятся и плунжер остановится. OK (см. рис. 4.26). Рис. 4.26. Перемещение плунжера до соприкосновения Плунжер установлен. Делаем видимой следующую втулку. Добавляем в сборку плунжер и выполняем все необходимые действия для определения его правильного положения. После установки третьего плунжера видим в графическом окне следующее (см. рис. 4.27): Рис. 4.27. Установка оставшихся плунжеров Теперь включим видимость компонента val и добавим в сборку компонент prijim. Тип сопряжения Center. Указываем внутреннюю сферическую поверхность прижима, указываем цилиндрическую поверхность вала. Выбираем тип сопряжения Mate. Указываем поверхность прижима и поверхность наконечника. Обращаемся к функции предварительного просмотра Preview. Выбираем тип сопряжения Tangent (касание). Указываем цилиндрическую поверхность отверстия на прижиме и цилиндрическую поверхность меньшего диаметра наконечника. Опять воспользуемся функцией Preview, функцией Alternate Solution. Теперь прижим занял правильное положение. OK. OK (см. рис. 4.28). Рис. 4.28. Добавление компонента прижим Добавляем компонент stakan. Выбираем тип сопряжения Center. Указываем на цилиндрическую поверхность добавляемой детали и цилиндрическую поверхность вала. После чего указываем сферическую поверхность стакана и сферическую поверхность прижима. OK. OK. Включаем изображение компонентов: первого диска, прижима, стакана и плунжеров (см. рис. 4.29). Рис. 4.29. Сборка с видимыми компонентами Обращаемся к функции вычисления расстояний Analysis → Distance (можно воспользоваться иконкой ). Уточняем расстояние между торцевыми поверхностями стаканов. Для этого поочередно выбираем в меню Distance Analysis клавишу Edge и указываем курсором на ребро на торцевой поверхности одного и другого стакана. Это расстояние равно 28,8735 мм. Закрываем операцию Cancel. Закрываем информационное окно. Открываем файл-шаблон, в котором хранится параметрическая модель пружины. В главном меню выбираем опцию File → Open или иконку из панели инструментов. Находим на диске папку с файлом «prujina_template.prt» и открываем его. OK. Обращаемся к приложению моделирования деталей: Application → Modeling, или к комбинации клавиш Ctrl+M, или к иконке Modeling из панели инструментов. Вызываем список параметров с помощью команды Tools → Expression или Ctrl+E. Все геометрические размеры пружины инженер определяет заранее, исходя из ее назначения и требуемых характеристик в диаграмме «перемещение-сила». В окне представлены параметры - геометрические размеры пружины. Поочередно выбираем параметры из списка, в строке задаем их значения и возвращаем их обратно в список нажатием Enter. Пружина будет изготовлена из проволоки диаметром d0=4 мм; диаметр пружины D= 33 мм; количество витков n=6; длина пружины (в рабочем состоянии) L=28,8735 мм. OK. Модель перестроилась. Кроме модели пружины в файле также создана координатная ось, расположенная по оси пружины. Обращаемся в главном меню Insert → Form Feature → Datum Plane или к иконке . Указываем плоскую торцевую поверхность пружины на одном конце, а затем аналогичную поверхность на другом ее конце. OK. Создана координатная плоскость, расположенная посередине между торцевыми поверхностями. Сохраняем файл с новым именем prujina.prt (см. рис. 4.30). Рис. 4.30. Модель пружины Теперь можно добавить пружину в сборку. Для этого обращаемся в главном меню к пункту Window, в выпавшем списке выбираем имя сборки: nasos. Добавление производим при помощи той же функции Assemblies → Components → Add Existing (или иконки ). Выбираем ссылочный набор Entire Part. Тип позиционирования - Mate. В меню Mating Conditions выбираем тип сопряжения Center. В окне фильтра выбираемых элементов устанавливаем Datum Axis и курсором указываем координатную ось, направленную по оси пружины. После этого меняем тип выбираемых элементов на Face и указываем цилиндрическую поверхность вала. Выбираем тип сопряжения Mate, в окне фильтра выбираемых элементов устанавливаем Datum Plane, указываем координатную плоскость пружины и координатную плоскость в сборке, принадлежащую валу. Активируется клавиша для вывода списка с ошибками. Это говорит о том, что назначаемые условия сопряжения несовместимы друг с другом. В окне со списком условий сопряжения компонентов сборки обращаемся к назначаемому условию (это условие выделяется рамкой). Устанавливаем на него курсор и нажимаем правую кнопку мыши. В выпавшем меню выбираем функцию Convert to (Преобразовать в …) и в появившемся меню указываем Align (выровнять). OK. OK (см. рис. 4.31). Рис. 4.31. Преобразование условий сопряжения Теперь необходимо добавить еще один подшипник с той стороны вала, где был установлен второй диск и другие детали. Из списка загруженных частей (файлов) выбираем подшипник P_208_GOST8338. Выбираем ссылочный набор SOLID. OK. Назначаем условия стыковки. Выбираем тип сопряжения Mate. Указываем поверхность на внутреннем кольце подшипника и поверхность на диске. Выбираем тип сопряжения Center. Указываем внутреннюю цилиндрическую поверхность подшипника и поверхность ступицы диска. OK. OK (см. рис. 4.32). Рис. 4.32. Установка подшипников Вызываем навигатор сборки (Ctrl+A), устанавливаем курсор на верхний узел навигатора с именем «nasos» и нажимаем правую кнопку мыши. В выпавшем меню выбираем операцию Unblank. Все погашенные детали стали видимыми. В навигаторе сборки выбираем деталь kryshka и выключаем ее изображение. После этого нажатием клавиш Ctrl+Shift+B выполняем операцию Reverse Blank All. В графическом окне остается изображение только одной детали – крышки. Добавляем в сборку шайбу (имя файла: Shb_8_GOST6402). Выбираем тип сопряжения Mate. Указываем плоскую поверхность шайбы и дно отверстия под головку винта на крышке. Выбираем тип сопряжения Center. Указываем цилиндрическую поверхность шайбы и поверхность отверстия под винт на крышке. OK. OK (см. рис. 4.33). Рис. 4.33. Установка шайбы – первого базового элемента для определения массива После этого добавляем винт vintM8x60. Устанавливаем ссылочный набор SOLID. Выбираем тип сопряжения Mate. Указываем плоскую поверхность основания головки винта и плоскую поверхность шайбы. Выбираем тип сопряжения Center. Указываем цилиндрическую поверхность винта и поверхность отверстия под винт на крышке. OK. OK. Cancel (см. рис. 4.34). Рис. 4.34. Установка винта – второго базового элемента для определения массива Создание массива деталей Добавим шайбы и винты в предназначенные для этого оставшиеся отверстия при помощи функции Assemblies → Components → Create Array (иконка ). В графическом окне или в навигаторе сборки выбираем шайбу и винт. OK. В меню Create Component Array (создание массива компонентов) определяем способ создания массива на основе существующего массива элементов в детали From Feature ISET. OK. Массив, а вернее, два отдельных массива – массив шайб и массив винтов - созданы (см. рис. 4.35). Рис. 4.35. Создание массива компонентов Включаем изображение детали korpus, находящейся в подсборке korpus _sb. Установим детали перепускного клапана. Добавляем деталь sedlo. Выбираем тип сопряжения Mate. Указываем плоскую поверхность детали и плоскую поверхность на дне выемки в корпусе. Выбираем тип сопряжения Center. Указываем цилиндрическую поверхность седла и поверхность отверстия в корпусе. OK. OK (см. рис. 4.36). Рис. 4.36. Добавление детали «седло клапана» Прежде чем добавить деталь sharick в качестве следующего компонента в сборку, сделаем седло изображаемой частью (Displayed Part) и дополним модель необходимыми элементами. Обращаемся из главного меню: Assemblies → Context Control → Set Displayed Part (или используем иконку ) ис помощью курсора выбираем деталь «седло». OK. В графическом окне изображено только седло. Изображенной и рабочей частью стала деталь седло. Загружаем модуль Modeling. Обращаемся к функции создания координатной плоскости Insert → Form Feature → Datum Plane (иконка ). Курсором указываем внешнюю цилиндрическую поверхность седла. Apply. Создана координатная плоскость, которая проходит через ось выбранной поверхности. Выбираем только что созданную координатную плоскость и конусную поверхность седла, выбираем предложенное расположение (одну из двух стрелок-символов). OK. Создана координатная плоскость, касательная к конусной поверхности и перпендикулярная другой координатной плоскости. Создаем ссылочный набор SOLID и запоминаем файл. Открываем навигатор сборки. В нем присутствует единственный узел: sedlo. Устанавливаем курсор на него и нажимаем правую кнопку мыши. В качестве изображенной части определяем сборку nasos, для чего выбираем операцию Display Parent, а затем имя части – nasos (см. рис. 4.37). Рис. 4.37. Определение изображаемой части В навигаторе появляется дерево сборки. Устанавливаем курсор на самый верхний узел и дважды щелкаем мышкой. Изображенной и рабочей частью определена сборка насоса. Добавляем в сборку деталь sharick. Выбираем тип сопряжения Center. Указываем поверхность шарика и конусную поверхность седла. Выбираем тип сопряжения Tangent, опять указываем поверхность шарика, после чего в окне фильтра выбираемых элементов устанавливаем Datum Plane и указываем координатную плоскость седла, касательную к конической поверхности. Preview. OK. OK (см. рис. 4.38). Рис. 4.38. Использование координатной плоскости для задания условия сопряжения детали «шарик» Добавляем деталь korpus_klapana. Ссылочный набор - SOLID. Тип сопряжения - Mate. Указываем плоскую поверхность выемки в корпусе клапана и верхнюю плоскую поверхность седла. Выбираем тип сопряжения Center. Указываем цилиндрическую поверхность добавляемой детали и поверхность отверстия в корпусе. OK. OK (см. рис. 4.39). Рис. 4.39. Установка корпуса клапана Добавляем uplotnenie, прижимая плоскую грань детали к плоской поверхности зенковки в корпусе и центрируя ее по оси отверстия. После чего добавляем kolpachok, используя ссылочный набор SOLID. Прижимаем его нижнюю поверхность к поверхности уплотнительного кольца, также центрируя его по оси отверстия (см. рис. 4.40). Рис. 4.40. Процесс сборки клапана Отключаем изображение всех деталей, кроме корпуса клапана. Добавляем деталь prujina_klapana. Ссылочный набор выбираем Entire Part. Тип позиционирования - Mate. В меню Mating Conditions выбираем тип сопряжения Center. В окне фильтра выбираемых элементов устанавливаем Datum Axis и курсором указываем координатную ось, направленную по оси пружины. После этого меняем тип выбираемых элементов на Face и указываем цилиндрическую поверхность корпуса клапана. Выбираем тип сопряжения Mate, указываем плоскую поверхность пружины и поверхность на клапане. OK. OK. Cancel (см. рис. 4.41). Рис. 4.41. Установка пружины в клапан Включаем изображение всех деталей клапана и корпуса насоса. Создадим круговой массив для всех деталей клапана с целью добавления их в предназначенные для них посадочные отверстия в корпусе насоса. Из главного меню обращаемся к функции Assemblies → Components → Create Array (или используем иконку ). В навигаторе сборки выбираем детали: седло, шарик, пружину клапана, корпус клапана, уплотнение и колпачок (придерживая клавишу Ctrl). OK. Тип массива – круговой (Circular). OK. В качестве оси вращения определяем ось цилиндрической поверхности (Cylindrical Face), указываем поверхность корпуса насоса. Общее количество элементов массива (Total Number) 3, угол поворота 120 градусов. Нажимаем OK шесть раз, по количеству деталей, выбранных для построения массива. Все массивы созданы (см. рис. 4.42). Рис. 4.42. Создание массива из деталей клапана В навигаторе сборки устанавливаем курсор на верхний узел с именем nasos и нажимаем правую кнопку мыши. В выпавшем меню выбираем операцию Unblank. Сейчас все детали насоса изображены в графическом окне. Сделаем изображение корпуса насоса и крышки полупрозрачными, чтобы иметь более полное представление о конструкции насоса. Вызываем Edit → Object Display (или иконку ) и выбираем две указанные детали. OK. Передвигаем ползунок на шкале Translucency (полупрозрачность) до значения 70. OK (см. рис. 4.43). Рис. 4.43. Задание полупрозрачного изображения корпуса и крышки Помимо самих деталей, видны изображения различных дополнительных элементов, в частности, координатных осей и плоскостей. Применение ссылочных наборов На панели инструментов Selection выбираем иконку Select All. На панели Assemblies окно с перечнем ссылочных наборов активировалось. Устанавливаем курсор на него и в выпавшем списке выбираем набор SOLID. Появляется окно с предупреждением, что у перечисленных компонентов сборки нет ссылочного набора SOLID, они останутся представленными текущими ссылочными наборами, как правило, Entire Part (см. рис. 4.44). Рис. 4.44. Изменение примененного ссылочного набора Изображения координатных осей и плоскостей исчезли. На панели инструментов Selection выбираем иконку Deselect All. Теперь в сборке представлены только твердотельные модели деталей без всяких элементов дополнительных построений. Необходимо сохранить выполненную работу. Из главного меню вызываем функцию File → Save, или пользуемся иконкой , или нажимаем кнопки Ctrl+S. В окне состояния появилось сообщение: Part file saved. Осталось сформировать последнюю деталь непосредственно в контексте сборки, т.е. видя ее окружение другими деталями. Формирование сборки «сверху-вниз»: конструирование деталей в контексте сборки Вызываем приложение моделирования деталей: Application → Modeling, или Ctrl+M, или иконку Modeling из панели инструментов. Перед началом моделирования обращаемся к навигатору модели. Удостоверяемся, что сейчас в навигаторе модели нет ни одного элемента, закрываем навигатор. Устанавливаем рабочую систему координат в центре торцевой поверхности корпуса насоса. Для этого выбираем в главном меню WCS → Origin. Устанавливаем метод выбора точки Arc/Ellipse/Sphere Center и курсором указываем на внешнее ребро торцевой поверхности корпуса насоса. Иконка системы координат переместилась в указанную точку. Cancel. Создаем базовый элемент – цилиндр, на основе которого будет сформирована деталь. Обращаемся к функции создания цилиндра: Insert → Form Feature → Cylinder (иконка ). Выбираем метод создания цилиндра Diameter, Height (по диаметру и высоте). Ось цилиндра будет направлена по оси XC. OK. Вводим значение диаметра 150 мм и высоты 75 мм. Начальная точка совпадает с началом системы координат – обнуляем значения нажатием клавиши Reset. OK. Cancel. Цилиндр с заданными размерами создан (см. рис. 4.45). Рис. 4.45. Базовый цилиндр Последовательно добавляем две проточки. Вызываем Insert → Form Feature → Groove (иконка ). Определяем тип создаваемой проточки как Rectangular (прямоугольная). Указываем цилиндрическую поверхность, вводим значение Groove Diameter (диаметр проточки) 132 мм и Width (ширина проточки) 63 мм. OK. Позиционируем элемент. Указываем внешнее ребро цилиндра и ребро проточки. Вводим значение 0. OK. Следом создаем еще одну проточку с размерами: диаметр 95 мм и ширина 17 мм. Cancel. На ребре торцевой поверхности создаем фаску Insert → Feature Operation → Chamfer (иконка ). Тип фаски – Single Offset (симметричная), выбираем внешнее ребро, OK, вводим размер фаски 5 мм. OK. Опять определяем тип фаски – Single Offset. Указываем внешнее ребро на диаметре 132 мм и ребро на поверхности, сопрягающейся с корпусом насоса. Размер фаски определяем 1.6 мм. OK. Cancel (см. рис. 4.46). Рис. 4.46. Элементы, добавленные к базовому цилиндру Развернув изображение насоса, создадим отверстие с понижением Insert → Form Feature → Hole (иконка ). Выбираем тип отверстия Counterbore. Задаем размеры: C-Bore Diameter (диаметр понижения) 95 мм, C-Bore Depth (глубина понижения) 42 мм, Hole Diameter (диаметр отверстия) 72 мм, Hole Depth (глубина отверстия) 69 мм, Tip Angle (угол при основании) 0 градусов. Указываем плоскую поверхность, прилегающую к корпусу насоса. OK. Появляется изображение отверстия на указанной поверхности с привязкой в точке выбора поверхности. В стандартном меню позиционирования определяем условия привязки отверстия к цилиндру. Выбираем иконку Point onto Point и курсором указываем ребро поверхности. В меню указываем опцию Arc Center. Отверстие в детали создано. Включаем режим проволочного изображения (иконка Wireframe). Меняем ориентацию вида на вид Front нажатием правой кнопки мышки и выбором в выпавшем меню Orient View → Front или выбором иконки на инструментальной панели. Видим изображение насоса (см. рис. 4.47). Рис. 4.47. Проволочное изображение насоса Для создания посадочной поверхности под подшипник воспользуемся операцией Insert → Form Feature → Extruded Body (иконка ). В качестве определяющей кривой выберем ребро твердого тела (Solid Edge). Укажем внутреннее ребро на площадке перехода большого диаметра отверстия к меньшему. Завершим операцию выбора контура нажатием кнопки OK. Закрываем меню определения типа выбираемого контура. OK. Выбираем метод вытягивания Direction_Distance (задание направления и расстояния). В качестве направления выбираем ось X. OK. Появился символ вектора направления (изображен сплошными линиями) и символ положительного направления эквидистанты базового контура (изображен пунктирными линиями). Принимая во внимание направления этих векторов, задаем размеры: Start Distance (начальная дистанция) 0, End Distance (конечная дистанция) 15 мм, First Offset (первая эквидистанта) 0, Second Offset (вторая эквидистанта) 4, Taper Angle (угол наклона граней) 0. OK. Тип булевой операции - Subtract (вычитание). Теперь создадим буртик для центровки создаваемой детали по выступу на корпусе насоса. Выбираем внутреннее ребро на поверхности, сопрягающейся с корпусом насоса. Метод - Direction_Distance, направление – ось XC. Параметры создаваемого тела: начальная дистанция 0, конечная дистанция 4 мм, первая эквидистанта 0, вторая эквидистанта 1.5 мм, угол наклона граней 0. OK. Тип булевой операции - Unite (сложение). Cancel (см. рис. 4.48). Рис. 4.48. Буртик на детали Дополняем модель скруглениями и фасками. В главном меню выбираем Insert → Feature Operation → Edge Blend или обращаемся к иконке . Устанавливаем тип выбираемых объектов – Edge, значение радиуса скругления 2 мм. Указываем курсором одно за другим четыре ребра. Apply. Меняем значение радиуса скругления, вводим 1 мм. Указываем внутреннее ребро посадочной поверхности под подшипник. OK (см. рис. 4.49). Рис. 4.49. Добавленные скругления ). Тип фаски Вызываем операцию создания фаски Insert → Feature Operation → Chamfer (иконка – Single Offset, выбираем внешнее ребро той же поверхности. OK. Вводим размер фаски 1 мм. OK. Опять определяем тип фаски – Single Offset. Указываем внешнее ребро на буртике для центровки с корпусом насоса. Размер фаски определяем 0.5 мм. OK. Cancel (см. рис. 4.50). Рис. 4.50. Добавленные фаски Выбираем в главном меню Insert → Form Feature → Datum Axis или иконку на панели инструментов. В фильтре объектов, доступных для выбора, устанавливаем Face. Курсором указываем внешнюю цилиндрическую поверхность. OK. В графическом окне появилась координатная ось, проходящая через ось цилиндрической поверхности. Обращаемся в главном меню Insert → Form Feature → Datum Plane или к иконке . В фильтре объектов также устанавливаем Face. Курсором указываем ту же внешнюю цилиндрическую поверхность. OK. В графическом окне появилась координатная плоскость, которая также проходит через ось цилиндрической поверхности. Обратимся к функции Insert → Form Feature → Hole или к иконке из панели инструментов. Тип отверстия - Counterbore (отверстие с понижением). В качестве поверхности для размещения отверстия укажем поверхность между двумя проточками, а в качестве поверхности, до которой будет строиться сквозное отверстие, укажем противоположную торцевую поверхность детали. Размеры отверстия: C-Bore Diameter (диаметр понижения) 14 мм, C-Bore Depth (глубина понижения) 10 мм, Hole Diameter (диаметр отверстия) 9 мм. OK. Для позиционирования отверстия используем метод Parallel. Указываем внешнее ребро этой поверхности, в меню выбираем: Arc Center, вводим размер 55 мм. После этого выбираем следующий метод позиционирования Point onto Line. Курсором указываем координатную плоскость, проходящую через ось цилиндрической поверхности. OK. Отверстие создано (см. рис. 4.51). Рис. 4.51. Создание отверстий под крепеж Создадим массив элементов на основе этого отверстия, используя функцию Insert → Feature Operation → Instance или иконку . Тип массива Circular Array (круговой), метод создания массива General, количество элементов массива 6, угол поворота 60 градусов, ось вращения Datum Axis (координатная ось). Выбираем созданную координатную ось. Соглашаемся с предложенным размещением – Yes. Cancel. Массив отверстий построен. Если, воспользовавшись видовой функцией Zoom, увеличить изображение любого из только что созданных отверстий, мы увидим, что скругление «наползает» на отверстие. Это происходит вследствие того, что скругление было построено раньше, а отверстие позиционировалось на плоскости, на которой строилось скругление (см. рис. 4.52). Рис. 4.52. Геометрия модели при текущем порядке построения Для исправления этой ошибки изменим порядок построения элементов детали. Вызовем изображение навигатора модели View → Model Navigator из главного меню, или иконку , или нажатием кнопок Ctrl+Shift+M. Отметим, что теперь в навигаторе присутствуют все построенные нами элементы детали, начиная с базового цилиндра. Выберем курсором на модели или в навигаторе интересующее нас скругление (см. рис. 4.53). Рис. 4.53. Изменение порядка построения модели Установим курсор в навигаторе на подсвеченный элемент модели BLEND(8). Нажатием правой кнопки мышки вызываем контекстное меню и выбираем функцию Reorder After (Поставить после). Появляется список элементов модели, после которых можно поставить выбранную фаску. Выбираем элемент CIRCULAR_ARRAY(15). Модель была перестроена, ошибка устранена (см. рис. 4.54). Рис. 4.54. Результат выполненной операции Построим отверстия для монтажных болтов. Создадим новую координатную плоскость, проходящую через ось и расположенную под углом 80 градусов к имеющейся координатной плоскости, обратившись к функции Insert → Form Feature → Datum Plane или к иконке . Курсором указываем на координатную плоскость, после чего указываем на координатную ось. В активировавшемся окне задания величины угла, учитывая положительное направление измерения углов, задаем значение: -80 градусов. OK. Создадим отверстие с помощью функции Hole. Выберем тип отверстия Counterbore (отверстие с понижением). Разместим отверстие на той же поверхности, на которой было создано предыдущее отверстие. Оно будет сквозным. Размеры отверстия: C-Bore Diameter (диаметр понижения) 7 мм, C-Bore Depth (глубина понижения) 48 мм, Hole Diameter (диаметр отверстия) 6 мм. Позиционировать отверстие будем так, чтобы оно располагалось на расстоянии 55 мм от оси детали и находилось на новой координатной плоскости (см. рис. 4.55). Рис. 4.55. Позиционирование отверстия После создания отверстия построим круговой массив из двух элементов с углом поворота 180 градусов. Сделаем невидимыми все детали насоса. Предварительно вызовем навигатор сборки. После этого вызовем из главного меню Edit → Blank → Blank, устанавливаем курсор на верхнюю деталь в навигаторе сборки, нажимаем клавишу Shift и курсором выбираем последнюю деталь в этом навигаторе. Весь набор деталей насоса выбран. OK. Остались изображенными только моделируемая деталь, ее координатные плоскости и ось. На часть отверстия диаметром 6 мм назначим резьбу М6, воспользовавшись функцией Insert → Feature Operation → Thread или обратившись к иконке . Тип резьбы определим как Symbolic (символическая). Используя видовую функцию Rotate, повернем изображение модели так, чтобы ее задняя торцевая поверхность была видна. Указываем цилиндрическую поверхность одного из отверстий. Система определила параметры наиболее подходящей резьбы на данной цилиндрической поверхности. Они появились в серых, неактивированных окнах. Включаем функцию Include Instances (распространить на элементы массива). OK. Резьба на двух отверстиях создана, внутренний диаметр отверстия изменился. Осталось создать фаски на резьбовых отверстиях. Увеличиваем изображение одного из отверстий в графическом окне, используя видовую операцию Zoom. После этого с помощью функции Chamfer, методом Single Offset создаем две фаски 0.8х45°. Поскольку отверстие является элементом массива, перед созданием фасок появляется меню, в котором необходимо определить, создаются ли фаски на всех элементах массива (Chamfer all instances) или только по месту определения. Выбираем первый пункт (см. рис. 4.56). Рис. 4.56. Модель после создания фасок Моделирование детали окончено. Прежде всего сделаем видимыми все погашенные объекты. Воспользуемся функцией Edit → Blank → Unblank All of Part (высветить все погашенное в файле) или комбинацией клавиш Ctrl+Shift+U. Сейчас необходимо определить деталь в качестве нового компонента сборки. Обращаемся в главном меню Assemblies → Components → Create New (иконка ). Выбираем построенную деталь. OK. Определяем расположение на диске файла, в котором будет храниться данная деталь, и его имя. Вводим имя donyshko. OK. Определяем расположение объектов в файле по слоям (Layer options) – Original. Начало системы координат в этом файле должно совпадать с рабочей системой координат (отметка стоит у пункта WCS). После создания файла с данной деталью оригинал в файле сборки должен быть уничтожен. Ставим отметку в пункте Delete Originals. OK. Откроем навигатор модели и навигатор сборки. В навигаторе модели пусто, нет ни одного элемента. Модель хранится теперь в своем файле и в сборке присутствует в качестве ее компонента. В сборочном файле хранится ссылочная информация на файл детали. Изменим тип изображения компонентов (деталей и подсборок) в навигаторе сборки. Сейчас каждый компонент изображается отдельной меткой в дереве сборки. Поскольку насос включает несколько одинаковых компонентов, перейдем в режим, когда метки всех повторяющихся компонентов будут заменены на одну, после которой будет изображен значок кратности и число повторения. Включение этого режима производится обращением из главного меню Tools → Assembly Navigator → Pack All (см. рис. 4.57). Рис. 4.57. Изменение типа изображения компонентов в Навигаторе сборки В навигаторе сборки устанавливаем курсор на только что созданную деталь «донышко». Нажатием правой кнопки мыши вызываем выпадающее меню и выбираем функцию Make Displayed Part (сделать деталь изображаемой частью). В графическом окне изображена только выбранная деталь. Она является сейчас изображенной и рабочей частью. Перенесем дополнительные элементы модели детали на отдельный слой. Но прежде назначим категории слоям. Для этого вызываем в главном меню Format → Layer Category (или иконку ). Устанавливаем курсор в окне Category и набираем имя категории: DATUMS. Выбираем опцию Creat/Edit. В новом меню в окне Layer and Status выбираем слой 3 и ниже выбираем функцию Add. Статус слоя 3 для категории DATUMS становится Included (включен). OK. OK. Теперь перенесем объекты Datum Axis и Datum Plane на 3-й слой. Вызываем в главном меню Format → Move to Layer или иконку на панели инструментов. Выбираем тип выбираемого объекта Datums. OK. В меню Class Selection обращаемся к опции Select All. Подсвечиваются все объекты Datum Axis и Datum Plane. OK. В списке категорий в меню Layer Move выбираем категорию DATUMS. OK. Объекты Datums исчезли в графическом окне, поскольку были перенесены на слой 3, который имеет в данный момент статус “Невидимый”. Создаем ссылочный набор (Reference Set) для того, чтобы деталь приходила в сборку в виде одного тела, без сопутствующих объектов Datum. Вызываем из главного меню Assemblies → Reference Sets. Выбираем опцию создания нового ссылочного набора - Create. Даем этому набору имя SOLID. OK. Выбираем твердотельную модель крышки. OK. OK. Необходимо сохранить введенную информацию. Из главного меню вызываем функцию File → Save, или пользуемся иконкой saved. , или нажимаем клавиши Ctrl+S. В окне состояния появилось сообщение: Part file Возвращаемся в сборочный файл и делаем его рабочим. В навигаторе сборки устанавливаем курсор на деталь «донышко», вызываем выпадающее меню, выбираем функцию Replace Reference Set (заменить ссылочный набор) и выбираем имя ссылочного набора SOLID (см. рис. 4.58). Рис. 4.58. Определение загружаемого ссылочного набора для заданного компонента Деталь «донышко» создавалась без обращений к геометрии окружающих ее деталей. Такая стратегия была выбрана специально, поскольку использование в построениях ассоциативно зависимых элементов и управление изменениями этих элементов требует функционала специального модуля, а описание работы с этим модулем будет темой отдельной главы. Можно сказать, что «донышко» было сформировано в некотором соотношении к окружающим его соседним деталям без четкой привязки к ним. Поэтому сейчас необходимо правильно позиционировать его в сборке. Вызываем функцию назначения условий сопряжения Assemblies → Components → Mate Component (или используем иконку ). Тип сопряжения - Mate. Указываем плоскую торцевую поверхность донышка и соседнюю к ней плоскую поверхность корпуса насоса. Чтобы было удобнее выбрать нужные поверхности, предварительно можно погасить изображение корпуса насоса (используя метку в навигаторе сборки) и после выбора поверхности донышка опять сделать его видимым. Выбираем тип сопряжения Center. Указываем цилиндрические поверхности донышка и корпуса. В меню остается выбранным тип сопряжения Center. Указываем поверхность одного из шести отверстий и ответное отверстие в корпусе насоса. OK. OK. Деталь заняла свое место. Аналогично установке стандартных крепежных изделий на крышке, добавляем шайбы (Shb_8_GOST6402) и винты (vintM8x60) на донышко (см. рис. 4.59). Рис. 4.59. Модель после установки крепежа Проверка пересечений деталей в сборке. Осталось выполнить проверку деталей сборки на возможные пересечения. В модуле Assemblies для этого существует специальный инструмент, который вызывается из главного меню: Assemblies → Components → Check Clearances (иконка ). В стандартном меню выбора нажимаем клавишу Select All. OK. После окончания вычислений получаем список существующих пересечений деталей (см. рис. 4.60). Рис. 4.60. Список существующих пересечений деталей Выявлены два типа пересечения: Hard (жесткое) и Touching (касательное). В первую очередь необходимо проанализировать явное (Hard) пересечение деталей. Устанавливаем курсор на интересующее нас пересечение и нажимаем клавишу Isolate Interference (выделить пересечение). Все детали, кроме составляющих данное пересечение, были скрыты. Теперь можно вызвать желаемую ориентацию вида и разобраться в чем причина имеющегося пересечения. В данном случае, скругление на ступице диска больше, чем фаска на внутреннем кольце подшипника. Необходимо отредактировать диск и уменьшить радиус скругления или применить проточку в этом месте (см. рис. 4.61). Рис. 4.61. Анализ выделенного пересечения Последовательно анализируем все пары пересекающихся деталей. Поскольку на деталях моделировалась символическая резьба, такие детали всегда присутствуют в перечне жестких пересечений. Это надо учитывать при проверке пересечений. Для более сложных случаев необходимо проводить полный анализ зазоров между деталями сборки. Функция Analysis → Assembly Clearance определяет наличие и величину зазоров, рассчитывает тела пересечений, составляет отчет. Сохраняем выполненную работу. Из главного меню вызываем функцию File → Save, или пользуемся иконкой , или нажимаем клавиши Ctrl+S. Управление ассоциативными зависимостями между деталями в Unigraphics Терминология модуля WAVE Проектирование сложных изделий – процесс итерационный. Зачастую разработка начинается тогда, когда представление о составляющих данное изделие компонентах носит еще очень приблизительный характер. По мере увеличения степени наших знаний об этом изделии приходится возвращаться к начальным этапам работы и вносить изменения для получения оптимального, а порою, просто возможного конструкторского решения. Для уменьшения объема повторной выполняемой работы имеет смысл затратить время на создание связей между отдельными частями (файлами компонентов конечного изделия или его узлов и агрегатов), чтобы внесенные изменения автоматически распространялись на все связанные части. Возможность построения ассоциативных зависимостей между отдельными частями обеспечивается инструментами модуля UG/WAVE и специальной технологией организации дерева зависимостей. Именно технологии работ нужно уделить особое внимание. WAVE-инструментарий позволяет копировать тела, поверхности, грани и т.д. в другие части, в которых эти объекты используются в определении дополнительной геометрии. Таким образом, можно связать геометрию отдельных элементов двух частей, а можно эффективно управлять большими сборками сложнейших изделий. Продумав и правильно построив связи между объектами, можно многократно уменьшить время разработки изделия. Для управления большими сборками сложных изделий предлагается следующая технология. Создается так называемая Control Structure - управляющая схема или управляющая структура. Управляющая схема, в которой используются координатные плоскости, оси и точки, содержит основную информацию об изделии: форме основных компонентов, положении компонентов, геометрии сопряжения и т.п. Дерево управляющей схемы является файлом верхнего уровня, который можно сопоставить с файлом сборки. Он создает основу для управления частями. Из этого файла объекты копируются в отдельные файлы, составляющие следующий уровень управляющей схемы. Каждый из этих отдельных файлов целиком копируется еще раз, формируя нижний уровень управляющей схемы. Файлы нижнего уровня называются исходными частями (start part). Такой способ формирования исходных частей позволяет создать изоляционный слой, т.е. границу, на которой обновление частей остановится (с использованием функции «замораживания» связей между частями). Объекты, содержащиеся в исходных частях, копируются в файлы, в которых непосредственно моделируются отдельные детали. В свою очередь, эти части носят название связанных частей (linked parts). Из них формируется обзорная сборка (Review Assembly), в которой детально представлено проектируемое изделие. Используя такой метод, можно быстро просмотреть различные варианты конструкторских решений, найти оптимальный набор параметров в выбранном варианте решения. Конструктор имеет возможность управлять детальным представлением сборки посредством изменения параметров, хранящихся в файле верхнего уровня управляющей схемы. В результате изменения всего лишь несколько ключевых параметров в управляющей схеме можно значительно изменить конструкцию изделия. Приведенный ниже пример проектирования деталей интерьера кабины самолета содержит описание процесса работы конструктора, использующего модуль UG/WAVE. Создание управляющей схемы Приступаем к формированию управляющей схемы. Первое наше действие – это создание и наполнение файла верхнего уровня. Сеанс работы Unigraphics открыт. Выбираем опцию File → New из главного меню или иконку из панели инструментов. Присваиваем файлу имя pilot_cockpit. Вызываем приложение из главного меню Application → Modeling, или Ctrl+M, или из панели инструментов иконку Modeling . Создаем необходимые для привязки деталей координатные плоскости. Нам нужна точка отсчета, поэтому сначала определим базовые нулевые плоскости X=0, Y=0 и Z=0. Для этого обращаемся в главном меню Insert → Form Feature → Datum Plane или к иконке . В окне раздела Fixed Datum Plane (создание фиксированных в пространстве координатных плоскостей) выбираем 3 Planes of WCS (сразу три плоскости рабочей системы координат). OK (см. рис. 5.1). Рис. 5.1. Создание базовых плоскостей. С помощью видовой функции Rotate меняем вид изображения в графическом окне. Нам нужно будет создать достаточно большой набор координатных плоскостей. Чтобы легче было в них ориентироваться, присвоим им имена. Перед этим включим функцию изображения имен объектов в графическом окне: в главном меню выбираем Preferences → Visualization, выбираем закладку Names/Borders (Имена/Границы) и устанавливаем переключатель в положение Work View. OK (см. рис. 5.2). Рис. 5.2. Меню настроек визуализации. Назначим имена каждой из трех координатных плоскостей: Format → Attribute → Name. Выбираем пункт Assign (назначение); выбираем плоскость, совпадающую с рабочей плоскостью X-Y, OK; вводим имя BASE_Z, OK, OK. Имя плоскости появилось в графическом окне. После этого выбираем плоскость X-Z и даем ей имя BASE_Y, а плоскости Y-Z имя BASE_X. Cancel (см. рис. 5.3). Рис. 5.3. Назначенные плоскостям имена. Используя созданные координатные плоскости, определим положение следующих плоскостей. Плоскость передней стенки кабины расположена на расстоянии 1800 мм от плоскости BASE_X. Вызываем Insert → Form Feature → Datum Plane (иконка ). Курсором выбираем координатную плоскость BASE_X, в окне Offset (эквидистанта) набираем значение 1800. Apply. Координатная плоскость создана. Впоследствии назовем ее PEREDN_STENKA. Аналогично создаем: плоскость пола кабины ниже плоскости BASE_Y на дистанции 350 мм, (имя – POL_KABINY) и плоскость привязки задней стенки на расстоянии 3100 мм от BASE_X (имя – ZADN_STENKA_NIZ). OK. Назначаем плоскостям указанные имена. Определяем координатную ось на пересечении плоскостей POL_KABINY и ZADN_STENKA_NIZ. Создаем координатную плоскость ZADN_STENKA_VERH: в процессе определения координатной плоскости указываем только что созданную ось и плоскость ZADN_STENKA_NIZ, вводим в окно Angle (Угол) значение 17 градусов. После этого создаем координатные плоскости и оси, определяющие положение боковой панели: плоскость BASE_X_BOK_PANEL для базирования боковой панели по координате X, расположенную на расстоянии 2800 мм от плоскости BASE_X; плоскость BASE_Y_BOK_PANEL для базирования боковой панели по координате Y, расположенную на расстоянии 40 мм ниже плоскости BASE_Y; ось на пересечении координатных плоскостей BASE_X_BOK_PANEL и BASE_Y_BOK_PANEL; плоскость проекции боковой панели PROJECTION_BOK_PANEL, на BASE_Y_BOK_PANEL, повернутой на 7 градусов относительно вновь созданной оси; основе плоскости плоскость BASE_Z_BOK_PANEL для базирования боковой панели по координате Z, расположенную на расстоянии -300 мм от плоскости BASE_Z; ось на пересечении плоскостей PROJECTION_BOK_PANEL и BASE_Z_BOK_PANEL; плоскость боковой панели BOK_PANEL – результат поворота плоскости PROJECTION_BOK_PANEL относительно последней из созданных координатных осей на 15 градусов (см. рис. 5.4). Рис. 5.4. Общий вид модели на этапе формирования. Аналогично сделанным выше построениям создаем координатные плоскости и оси, определяющие положение бокового щитка: плоскость BASE_X_BOK_SHITKA для базирования бокового щитка по координате X, расположенную на расстоянии 2370 мм от плоскости BASE_X; координатную ось – PROJECTION_BOK_PANEL; результат пересечения плоскостей BASE_X_BOK_SHITKA и плоскость PROJECTION_BOK_SHITKA, расположенную под углом 17 градусов к плоскости BASE_X_BOK_SHITKA относительно оси на пересечении BASE_X_BOK_SHITKA и PROJECTION_BOK_PANEL (поскольку плоскость должна быть наклонена вперед, вводим значение -17); ось на пересечении плоскостей PROJECTION_BOK_SHITKA и BASE_Z_BOK_PANEL; плоскость бокового щитка BOK_SHITOK, указав плоскость PROJECTION_BOK_SHITKA и созданную координатную ось (угол -18 градусов). Теперь изображение в графическом окне имеет следующий вид (см. рис. 5.5). Рис. 5.5. Окончательный вид модели. Созданные объекты необходимо распределить по слоям, чтобы уменьшить количество изображаемых в графическом окне объектов. Операцией Format → Move to Layer (иконка на панели инструментов) перенесем на слой 3 координатные плоскости: ZADN_STENKA_NIZ, BASE_X_BOK_PANEL, BASE_Y_BOK_PANEL, BASE_Z_BOK_PANEL, PROJECTION_BOK_PANEL, а также координатные оси, связанные с этими плоскостями. На слой 5 перенесем плоскости: BASE_X_BOK_SHITKA, PROJECTION_BOK_SHITKA и их координатные оси. Поскольку слои 3 и 5 имеют статус “Invisible” (Невидимый), изображение выбранных объектов в графическом окне исчезло. На слое 1 (рабочем) остались плоскости: BASE_X, BASE_Y, BASE_Z, POL_KABINY, PEREDN_STENKA, ZADN_STENKA_VERH, BOK_PANEL, BOK_SHITOK. Теперь переименуем выражения, которые были созданы при определении координатных плоскостей. Для этого вызываем окно со списком выражений Tools → Expression (или Ctrl+E) (см. рис. 5.6). Рис. 5.6. Меню со списком выражений. Выбираем поочередно каждое выражение и с помощью операции Rename (Переименовать) даем смысловые имена: p0=1800 присваиваем имя x_pered_stenki; p1=-350 – z_pola; p2=3100 – x_zadn_stenki; p3=17 – naklon_zadn_stenki; p4=2800 – x_basa_bok_paneli; p5=-40 – y_basa_bok_paneli; p6=7 – naklon_bok_paneli; p7=-300 – z_basa_bok_paneli; p8=15 – razvorot_bok_paneli; p9=2370 – x_basa_bok_shitka; p10=-17 – naklon_bok_shitka; p11=-18 – razvorot_bok_shitka. Теперь окно с выражениями выглядит так (см. рис. 5.7). Рис. 5.7. Список выражений после переименования. После выполненных операций можно перейти к следующему этапу работ: формированию компонентов, связанных со сборкой верхнего уровня, составляющих вместе с ней Control Structure (управляющую схему). Создание компонентов управляющей схемы Первым делом включаем приложение для работы со сборками Application → Assemblies (можно на панели инструментов). Включаем режим использовать комбинацию клавиш Ctrl+Alt+W или иконку WAVE: Tools → Assembly Navigator → WAVE Mode. Открываем навигатор сборки. Сейчас в навигаторе сборки мы видим единственный узел pilot_cockpit. Устанавливаем на него курсор, нажимаем правую кнопку мыши и в выпавшем меню выбираем WAVE → Create New Level. В окне Part Name можно сразу набрать имя нового файла bok_panel или определить его размещение в выбранном каталоге. Нажимаем клавиши Ctrl+L и меняем статус слоя 3 на Selectable (Выбираемый). OK. Появились изображения объектов, расположенных на этом слое. После этого выбираем координатные плоскости: BASE_Z, ZADN_STENKA_VERH, POL_KABINY, BASE_X_BOK_PANEL, BASE_Z_BOK_PANEL, BOK_PANEL, BOK_SHITOK; и координатную ось, лежащую на пересечении плоскостей BASE_X_BOK_PANEL и PROJECTION_BOK_PANEL. OK. В навигаторе сборки под узлом pilot_cockpit появился новый компонент с именем bok_panel. Опять устанавливаем курсор на узел pilot_cockpit, нажимаем правую кнопку мыши и в выпавшем меню выбираем WAVE → Create New Level. Имя нового компонента - bok_shitok. Выбираем курсором координатную плоскость BASE_Z_BOK_PANEL. После этого изменяем еще раз статус слоев, делаем слой 3 “Invisible” (Невидимый), а слой 5 Selectable (Выбираемый). Продолжаем выбор объектов: BASE_X_BOK_SHITKA, BOK_SHITOK ось на пересечении плоскостей BASE_X_BOK_SHITKA и PROJECTION_BOK_PANEL. Для того чтобы файлы новых компонентов были записаны на диске, в главном меню выбираем функцию File → Save, или пользуемся иконкой появилось сообщение: Part file saved. , или нажимаем кнопки Ctrl+S. В окне состояния В навигаторе сборки устанавливаем курсор на компонент bok_panel, нажимаем правую кнопку мыши и выбираем операцию Make Displayed Part (Сделать изображаемой частью). Сейчас компонент bok_panel является изображаемой, а значит, и рабочей частью. Включаем изображение всех слоев в части, рабочим назначаем слой 4. Проверяем (например, по заголовку главного окна), что мы работаем в приложении Modeling. С помощью команды Tools → Expression или клавиш Ctrl+E откроем меню выражений и в окне наберем: naklon_bok_paneli= , после чего обратимся к иконке операции Create Link (создать связь). Появилось меню выбора части, в которой хранится нужное нам выражение. В окне с перечнем открытых частей выбираем pilot_cockpit, OK. Появляется список выражений (параметров), хранящихся в файле pilot_cockpit. Выбираем одноименное выражение. OK (см. рис. 5.8). Рис. 5.8. Создание связи между параметрами. Меню со списком закрывается, к заданному имени выражения добавляется ссылка на имя файла и имя параметра в этом файле. Enter. OK. Пользуясь видовой операцией Zoom, определяем границы изображения так, чтобы в графическом окне была изображена плоскость BASE_X_BOK_PANEL и координатная ось. Создаем новую координатную плоскость Insert → Form Feature → Datum Plane, указав курсором BASE_X_BOK_PANEL, указав ось и набрав в окне меню значение угла naklon_bok_paneli. OK (см. рис. 5.9). Рис. 5.9. Создание дополнительной координатной плоскости. Погасим изображение всех объектов, кроме построенной плоскости и плоскостей BASE_Z_BOK_PANEL и BOK_PANEL, с помощью операции Edit → Blank → Blank или клавиш Ctrl+B. Курсором указываем три упомянутые плоскости, после чего нажимаем клавишу All But Selected (все объекты, кроме выбранных). OK. На только что созданной плоскости построим эскиз. В главном меню выбираем Insert → Sketch или из панели инструментов иконку . Выбираем пункт Create (создать эскиз), указываем в качестве плоскости размещения созданную координатную плоскость, переходим к определению направления для ориентации осей в эскизе. В разделе Reference Direction устанавливаем переключатель на определение вертикали Vertical. Курсором выбираем плоскость BASE_Z_BOK_PANEL, OK. Создаем эскиз (см. рис. 5.10). Вертикальный отрезок имеет условие коллинеарности с плоскостью BASE_Z_BOK_PANEL, а наклонный отрезок условие коллинеарности с плоскостью BOK_PANEL. Эскиз называем PANEL. OK. Рис. 5.10. Формирование эскиза PANEL. Включаем видимость всех объектов в данном файле (Ctrl+Shift+U). Сохраняем файл: Ctrl+S. Открываем навигатор сборки (Ctrl+A), устанавливаем курсор на узел bok_panel, нажимаем правую кнопку мыши и выбираем Display Parent: pilot_cockpit (родительскую часть сделать изображаемой). После чего устанавливаем курсор на узел bok_shitok, нажимаем правую кнопку мыши и выбираем Make Displayed Part (сделать изображаемой частью). Включаем изображение всех слоев в части, рабочим назначаем слой 6. Теперь в этом файле создаем выражение naklon_bok_shitka и связываем его с одноименным выражением в файле pilot_cockpit аналогично тому, как это было выполнено в файле bok_panel. Строим координатную плоскость, указав плоскость BASE_X_BOK_SHITKA, координатную ось и задав угол поворота параметром naklon_bok_shitka-90. Построим первый эскиз. Создаем его на вновь созданной плоскости и в качестве вертикального направления выбираем плоскость BASE_Z_BOK_PANEL. Элементами эскиза являются два отрезка и скругление между ними. Вертикальный отрезок коллинеарен плоскости BASE_Z_BOK_PANEL, а наклонный отрезок - плоскости BOK_SHITOK. Присвоим этому эскизу имя BASE_SHITOK (см. рис. 5.11). Рис. 5.11. Формирование эскиза BASE_SHITOK. Второй эскиз создаем на той же плоскости с аналогичной ориентацией осей. Эскиз VERH_SHITOK представляет собой замкнутый контур, элементы которого имеют геометрические ограничения. Верхняя точка левого вертикального отрезка совпадает с верхней точкой вертикального отрезка эскиза BASE_SHITOK, наклонные отрезки параллельны наклонному отрезку эскиза BASE_SHITOK, правый вертикальный отрезок проходит через граничную точку наклонного отрезка того же эскиза. Назначенные размерные ограничения показаны на рис. 5.12. Рис. 5.12. Формирование эскиза VERH _SHITOK. Сохраняем файл. В навигаторе сборки, устанавливаем курсор на узел bok_shitok, нажимаем правую кнопку мыши и выбираем Display Parent: pilot_cockpit (родительскую часть сделать изображаемой). Дважды щелкаем на верхнем узле в навигаторе сборки, делая ее рабочей частью. Создание исходных частей На основе компонентов bok_panel и bok_shitok создаем исходные части (start part). Для этого в навигаторе сборки выбираем компонент bok_panel, нажимаем правую кнопку мыши и в выпавшем меню выбираем WAVE → Create New Level. Выбираем каталог для размещения исходного файла и набираем его имя bok_panel_start. Нажимаем клавишу Class Selection, указываем тип выбираемых объектов Sketch и Datums, OK, нажимаем клавишу Select All, OK, OK. Делаем компонент bok_panel_start изображаемым. Включаем видимость всех слоев, проверяем, что в данном файле хранятся ассоциативные копии плоскостей и эскизов. Создаем необходимые для дальнейшей работы ссылочные наборы. Для этого вызываем из главного меню Assemblies → Reference Sets. Создаем ссылочный набор PANEL, в который входят эскиз PANEL, координатные плоскости ZADN_STENKA_VERH и BOK_SHITOK. Создаем еще один ссылочный набор ZADN_STENKA_VERH, в который включаем плоскости ZADN_STENKA_VERH, BASE_Z, POL_KABINY. Выбираем компонент bok_shitok и аналогично создаем исходную часть bok_shitok_start, выбрав все объекты, содержащиеся в файле bok_shitok. Определяем компонент bok_shitok_start изображаемым. Формируем ссылочный набор BASE_SHITOK, состоящий из эскиза BASE_SHITOK, плоскости BOK_SHITOK и координатной оси, а также ссылочный набор VERH_SHITOK, состоящий из эскиза VERH_SHITOK. С помощью операции Display Parent из выпадающего меню навигатора сборки делаем сборку pilot_cockpit изображаемой. Установив курсор в навигаторе сборки на узел pilot_cockpit, двойным нажатием левой кнопки мыши делаем сборку рабочей частью. Сохраняем все части: File → Save All. Формирование управляющей схемы закончено. На следующем этапе мы начнем формировать связанные части (linked parts). В этих файлах будут окончательно создаваться твердотельные модели деталей. Создание связанных частей В навигаторе сборки раскрываем сложенные узлы (отмеченные знаком +). Устанавливаем курсор на компонент bok_panel_start, нажимаем правую кнопку мыши и выбираем операцию WAVE → Create Linked Part. Определяем место хранения файла на диске и назначаем имя части bok_panel_rt. Приставка rt означает, что это файл с деталью правого исполнения. Выбираем ссылочный набор PANEL. OK (см. рис. 5.13). Рис. 5.13. Меню определения связанной части. Изображаемой часть становиться файл bok_panel_rt. Можно сразу приступить к созданию модели детали. В файле сохранилась разбивка объектов по оригинальным слоям. Присваиваем слою 4 статус Selectable (Выбираемый), рабочим назначаем 10-й слой. Из главного меню вызываем Insert → Form Feature → Extruded Body или иконку . Выберем эскиз в качестве задающего контура, OK, OK. Выбираем метод вытягивания Direction_Distance (задание направления и расстояния). Принимаем предложенное системой направление – нормаль к плоскости эскиза в сторону плоскости ZADN_STENKA_VERH. OK. Принимая во внимание направление вытягивания и направление эквидистанты базового контура, задаем размеры: Start Distance (начальная дистанция) -1000, End Distance (конечная дистанция) 1000 мм, First Offset (первая эквидистанта) 0, Second Offset (вторая эквидистанта) –2 мм, Taper Angle (угол наклона граней) 0. OK. Cancel (см. рис. 5.14). Рис. 5.14. Формирование детали в связанной части. С помощью операции Insert → Feature Operation → Trim (иконка ) производим обрезку созданной модели плоскостями ZADN_STENKA_VERH и BOK_SHITOK. Чтобы окончательно сформировать боковую панель, необходимо обрезать ее еще поверхностью интерьерной обшивки. Эта поверхность вместе с другими поверхностями обводов хранится в отдельном файле airplane_surface. В этом же файле находятся другие поверхности, например, поверхность границы обзора (см. рис. 5.15 и 5.16). Рис. 5.15. Поверхности внешних обводов в файле airplane_surface. Рис. 5.16. Поверхность интерьерной обшивки в файле airplane_surface. Открываем этот файл. Из навигатора сборки при помощи функции WAVE → Copy Geometry to Part копируем в файл bok_panel_rt поверхность интерьерной обшивки. OK (см. рис. 5.17). Рис. 5.17. Копирование геометрии в другой файл. Переходим опять в файл bok_panel_rt (Window → …) и видим в этой части скопированную поверхность, находящуюся на том же слое, на каком она храниться в родительском файле. В навигаторе модели эта поверхность обозначена как LINKED_BODY(6). Выполняем операцию обрезки панели этой поверхностью Insert → Feature Operation → Trim (иконка ). Выключаем видимость всех слоев, кроме 10-го. Создаем ссылочный набор SOLID, который содержит твердотельную модель. Таким образом, деталь правой боковой панели кабины создана. Сохраняем часть. В главном меню обращаемся к пункту Window и выбираем сборку pilot_cockpit. Создадим еще одну часть на основе исходной части bok_panel_start. Выполняем аналогичную операцию: WAVE → Create Linked Part. Часть называем zadn_stenka_verh. Выбираем ссылочный набор ZADN_STENKA_VERH, OK. Рабочей и изображаемой частью является zadn_stenka_verh. Сформируем модель верхней части задней стенки кабины. Создаем координатную ось, являющуюся пересечением плоскостей ZADN_STENKA_VERH и POL_KABINY. Назначаем рабочим слой 6. Построим эскиз на плоскости ZADN_STENKA_VERH, выбрав в качестве горизонтального направления только что созданную ось. Эскиз состоит из одного вертикального отрезка, коллинеарного с плоскостью BASE_Z. Нижняя точка отрезка находится на координатной оси. Длина отрезка 1500 мм (см. рис. 5.18). Рис. 5.18. Эскиз в части zadn_stenka_verh. Построим второй эскиз, который расположен на той же плоскости, что и первый, но представляет собой целый набор отрезков и скруглений (см. рис. 5.19). Рис. 5.19. Второй эскиз в части zadn_stenka_verh. Прежде чем начать формировать заднюю стенку, необходимо войти в часть airplane_surface и, пользуясь функцией WAVE → Copy Geometry to Part, скопировать в файл zadn_stenka_verh ребро, лежащее на плоскости подфонарной жесткости и поверхность внешнего обвода. Возвращаемся в часть zadn_stenka_verh. Назначаем рабочим слой 10. Вызываем операцию Insert → Form Feature → Extruded Body или иконку . Выберем первый эскиз в качестве задающего контура. OK. Метод вытягивания: Direction_Distance (задание направления и расстояния). Задаем направление – ось ZC и нажимаем клавишу Cycle Vector Direction (сменить направление вектора). OK. Задаем размеры: Start Distance (начальная дистанция) 0, End Distance (конечная дистанция) 1000 мм, First Offset (первая эквидистанта) 0, Second Offset (вторая эквидистанта) -20 мм, Taper Angle (угол наклона граней) 0. OK. Create. OK. Направление второй эквидистанты при построении система определила в сторону рабочей системы координат. Теперь, находясь в операции Extruded Body, выбираем второй эскиз. Система предлагает направление, перпендикулярное плоскости эскиза. Параметры: Start Distance 0, End Distance 20 мм, First Offset (первая эквидистанта) 0, Second Offset (вторая эквидистанта) 0, Taper Angle (угол наклона граней) 0. OK. Create. OK. Cancel. Присваиваем слою 6 статус “Invisible” (Невидимый), изображение эскизов исчезло. Сейчас мы имеем два отдельных твердых тела. Первое изображено полупрозрачным тоном (см. рис. 5.20). Рис. 5.20. Тела и поверхности в части zadn_stenka_verh. Выполняем обрезку этих тел (операция Insert → Feature Operation → Trim) координатной плоскостью POL_KABINY (отбрасывая нижнюю часть) и плоскостью, расположенной ниже плоскости подфонарной жесткости на 30 мм (отбросив верхнюю часть). Для выполнения последней операции после выбора тела для обрезки нажимаем клавишу Define Plane (определить плоскость). В стандартном меню выбора плоскости указываем Parallel at Distance (параллельно указанной плоскости на расстоянии). Определяющую плоскость зададим как плоскость кривой (Plane of Curve). Курсором указываем кривую, скопированную из файла airplane_surface. В нижней части созданного твердого тела указываем точку для задания направления, где будет построена параллельная плоскость. Задаем значение расстояния 30 мм. OK. Принимаем направление обрезки. OK. После этого выполняем обрезку поверхностью внешнего обвода. Cancel. В графическом окне видим следующее (см. рис. 5.21). Рис. 5.21. После выполнения операции обрезки. Выключаем изображение всех слоев, кроме 10-го. В графическом окне остались только два твердых тела. Теперь из первого тела получим тонкостенную деталь. Вызываем операцию Insert → Feature Operation → Hollow (иконка ). Указываем тип операции Face (Грани). В разделе Selection Steps (шаги выбора) включен режим Pierced Face (т.е. мы укажем грани, которые будут удалены в результате построения). Задаем толщину стенок по умолчанию (Default Thickness) 4 мм. Указываем большую грань со стороны хвостовой части самолета и грань, совпадающую с плоскостью X-Y. После этого в разделе Selection Steps включаем режим Offset Face и указываем большую грань со стороны носовой части. Таким образом, выбирается грань, на которой будет задана толщина, отличающаяся от толщины, заданной по умолчанию. В окне меню появилась строка с именем поверхности и значением толщины на этой грани. Устанавливаем курсор в окне Alternate Thickness и задаем значение 2 мм. OK. Остается выполнить булеву операцию сложения двух тел: Insert → Feature Operation → Unite (иконка ). Можно добавить на деталь скругления у дна карманов (см. рис. 5.22). Рис. 5.22. Правая половина модели верхней части задней стенки. Получена правая часть стенки. Чтобы получить стенку целиком, надо создать левую часть стенки. Включаем видимость 1-го слоя. Из главного меню выбираем Insert → Feature Operation → Instance (иконка ). Выбираем тип операции Mirror Body. OK. Указываем правую часть стенки. OK. Указываем координатную плоскость BASE_Z. Cancel. Объединяем правую и левую часть стенки в единое тело (Unite). Выключаем видимость слоя 1. Создаем ссылочный набор SOLID, состоящий из полной модели верхней части задней стенки. Сохраняем часть (см. рис. 5.23). Рис. 5.23. Окончательная модель верхней части задней стенки. Через функцию Window выбираем сборку pilot_cockpit. На основе исходной части bok_shitok_start, используя операцию WAVE → Create Linked Part, создаем часть bok_shitok_rt. Выбираем ссылочный набор BASE_SHITOK, OK. Находясь в части bok_shitok_rt, включаем видимость всех слоев, а рабочим слоем определяем слой 6. Переходим в часть airplane_surface и с помощью функции WAVE → Copy Geometry to Part копируем в файл bok_shitok_rt поверхность интерьерной обшивки. Возвращаемся в часть bok_shitok_rt. Создаем эскиз на плоскости BOK_SHITOK. Горизонтальное направление определяем с помощью имеющейся координатной оси (см. рис. 5.24). Рис. 5.24. Эскиз OBREZKA в файле bok_shitok_rt. Эскиз состоит из вертикального и горизонтального отрезков, скругленных радиусом 20 мм. Отрезки позиционируются относительно имеющегося эскиза. В качестве рабочего определяем слой 10. Формируем основу щитка построением Insert → Form Feature → Extruded Body. Выбираем первый эскиз. Метод вытягивания - Direction_Distance. Направление – нормаль к плоскости эскиза. OK. Задаем размеры: Start Distance -150, End Distance 200 мм, First Offset 0, Second Offset 2 мм, Taper Angle 0. OK. Create. OK. Выбираем вновь построенный эскиз, тот же метод построения, параметры: Start Distance -50, End Distance 50 мм, First Offset 0, Second Offset 0, Taper Angle 0. OK. Create. OK. Cancel. Включаем изображение поверхности интерьерной обшивки (см. рис. 5.25). Рис. 5.25. Набор моделей в файле bok_shitok_rt. Выполняем обрезку основы щитка поверхностью интерьерной обшивки и только что созданной поверхностью. Выключаем видимость всех слоев, кроме 10-го. Изображение оставшейся поверхности гасим (операция Blank). В графическом окне остается только щиток (см. рис. 5.26). Рис. 5.26. Модель правого бокового щитка. Создаем ссылочный набор SOLID, в который входит модель щитка. Сохраняем файл. Опять возвращаемся в сборку pilot_cockpit. На основе исходной части bok_shitok_start, используя операцию WAVE → Create Linked Part, создаем часть verh_shitok_rt. Выбираем ссылочный набор VERH_SHITOK, OK. Переходим в часть airplane_surface. Операцией WAVE → Copy Geometry to Part копируем в файл verh_shitok_rt поверхность интерьерной обшивки и поверхность границы обзора. Возвращаемся в часть verh_shitok_rt. Включаем видимость всех слоев. Рабочим назначаем слой 10. Используя операцию Extruded Body, вытягиваем верхнее ребро поверхности интерьерной обшивки по оси Y вверх на 250 и вниз на 150 мм. Видимость интерьерной обшивки выключаем (см. рис. 5.27). Рис. 5.27. Скопированная геометрия в файле verh_shitok_rt. Применяем операцию Extruded Body (иконка ). Выбираем эскиз, выбираем метод Direction_Distance, направление – нормаль к плоскости эскиза. Параметры: Start Distance 200 мм, End Distance 400 мм, First Offset 0, Second Offset 0, Taper Angle 0. Параметр начальной дистанции (Start Distance) можно предварительно связать с параметром конечной дистанции формирования основы щитка в файле bok_shitok_rt. Мы получили твердотельную модель заготовки правого верхнего щитка (см. рис. 5.28). Рис. 5.28. Заготовка модели верхнего щитка. Обрезаем заготовку имеющимися поверхностями (Insert → Feature Operation → Trim). Оставляем видимым только слой 10. Изображение вспомогательной поверхности погасим (см. рис. 5.29). Рис. 5.29. Заготовка верхнего щитка после обрезки поверхностями и скругления нижнего ребра. Скруглим левое нижнее ребро операцией Insert → Feature Operation → Edge Blend; радиус скругления 20 мм. Откроем навигатор сборки и операцией WAVE → Copy Geometry to New Part скопируем в файл verh_shitok_korpus_rt твердотельную модель. Повторяем операцию и копируем в файл verh_shitok_panel_rt лицевую грань модели. Выполним сохранение всех частей. Переходим в часть verh_shitok_korpus_ rt. Включаем слой 10. Выполняем над моделью операцию Insert → Feature Operation → Hollow (иконка ). Задаем толщину стенок 2 мм. Удаляемые грани: лицевая, задняя и грани, по которым происходила обрезка. Сохраняем файл. Созданная модель показана на рис. 5.30. Рис. 5.30. Модель корпуса верхнего щитка. Переходим в часть verh_shitok_panel_rt. Включаем слой 10. Выполняем перенос имеющейся грани на 2 мм. Полученную твердотельную модель (см. рис. 5.31) включаем в ссылочный набор SOLID. Файл сохраняем. Рис. 5.31. Модель панели верхнего щитка. Сейчас практически все подготовлено для создания так называемой в терминах технологии WAVE обзорной сборки (Review Assembly). В ней дается детальное представление о конечном изделии, и она служит основой его дальнейшей инженерной проработки. Формирование обзорной сборки Создаем новую часть: выбираем File → New из главного меню или иконку из панели инструментов. Имя нового файла - interior_pilot_cockpit. Открываем приложение моделирования сборок: Application → Assemblies или используем комбинацию клавиш Ctrl+Alt+W, или из панели инструментов иконку Assemblies . Добавим в файл interior_pilot_cockpit созданные компоненты. В главном меню обращаемся Assemblies → Components → Add Existing (или к иконке ). Выбираем файл bok_panel_rt. В следующем меню выбираем ссылочный набор SOLID. Выбираем условие позиционирования Absolute – совмещение систем координат файла детали с системой координат сборки. Слой, на котором будет размещена в сборке данная деталь, - Original, т.е. тот же слой, на котором она хранится в своем файле. OK. Появляется типовое меню выбора точки. Обнуляем координаты. OK. Включаем видимость слоя 10. Правая боковая панель размещена в сборке. Повторяем операцию добавления компонента в сборку для файлов zadn_stenka_verh, bok_shitok_rt, verh_shitok_korpus_rt и verh_shitok_panel_rt. Сборка имеет следующий вид (см. рис. 5.32). Рис. 5.32. Обзорная сборка, сформированная из правых деталей. Сохраняем файл. В этой сборке установлены детали правого исполнения. Необходимо создать и добавить в сборку детали левого исполнения. Создаем координатную плоскость, совпадающую с плоскостью X-Y. Теперь по технологии формирования сборки сверху вниз создадим четыре новых компонента. В главном меню выбираем Assemblies → Components → Create New (иконка ). Появилось стандартное меню выбора объектов. Не выбираем ничего. OK. Определяем расположение на диске файла, в котором будет храниться новая деталь, и имя файла. Вводим имя bok_panel_lft. OK. Определяем расположение объектов в файле по слоям (Layer options) – Original. Начало системы координат в этом файле должно совпадать с абсолютной системой координат. OK. Аналогичным образом создаем компоненты bok_shitok_lft, verh_shitok_korpus_lft и verh_shitok_panel_lft. Сохраняем все части: File → Save All. Теперь в сборке содержатся все необходимые компоненты, но компоненты левого исполнения пока не содержат моделей. В качестве рабочего слоя устанавливаем слой 10. Назначаем компонент bok_panel_lft рабочей частью: ). Можно просто установить Assemblies → Context Control → Set Work Part (или используем иконку курсор в навигаторе сборки на данный компонент и дважды щелкнуть левой кнопкой мыши. Из главного меню выбираем Assemblies → Wave Geometry Linker. Выбираем тип объекта Mirror Bodies (зеркально отраженные тела). Курсором указываем правую боковую панель. Выбираем иконку Mirror Plane (плоскость отражения). Указываем координатную плоскость. OK. Появляется деталь левого исполнения (см. рис. 5.33). Рис. 5.33. Меню Wave Geometry Linker. Повторяем действия для создания левых деталей в соответствующих компонентах. Рабочей частью назначаем файл сборки. Сохраняем все части: File → Save All. Обзорная сборка сформирована (см. рис. 5.34). Рис. 5.34. Полностью сформированная обзорная сборка. Получение новых вариантов и управление обновлением частей Была выполнена большая подготовительная работа, но теперь мы получили возможность быстро формировать модели с различными наборами входных конструкторских и прочих параметров. Эти модели можно легко проанализировать и выбрать оптимальные решения. Таким образом, мы за короткий промежуток времени находим ответы на вопросы типа: «Что если…?». Надо сказать, что свое название модуль WAVE и получил от сокращения полного названия технологии работ: «What if Alternative Value Engineering». Сейчас мы проанализируем влияние изменений отдельных параметров на конструкцию интерьера кабины пилота, которые вызваны, например, заменой типа кресла пилота. Переходим в часть pilot_cockpit. Необходимо включить функцию задержки обновлений связанных между собой частей: Assemblies → Delay Interpart Updates. Вызываем меню работы с выражениями: Tools → Expression (или Ctrl+E). Выбираем поочередно необходимые выражения, изменяем их значения, нажимаем Enter. Вот эти выражения и их новые значения: x_zadn_stenki=3170; naklon_zadn_stenki=14; x_basa_bok_paneli=2850; z_basa_bok_paneli=-290; razvorot_bok_paneli=12; x_basa_bok_shitka=2400; OK. Включаем функцию возможности просмотра сборки до и после обновления частей в одном сеансе: Assemblies → Wave → Associativity Manager; устанавливаем значок в окошке Review After Updates. OK (см. рис. 5.35). Рис. 5.35. Включение режима просмотра сборки после обновления. Переходим в часть interior_pilot_cockpit. В главном меню обращаемся к Assemblies → Update Session (обновление всех объектов в текущем сеансе работы). Появляется меню просмотра изменений Review Changes. В окне меню выделены все части, которые претерпевают изменения. Можно выделить не все, а только интересующие нас части. Ниже окна есть ползунок, который перемещается между положениями Before и After (До и После проведения обновления). Установим курсор на ползунке и будем его перемещать от одного крайнего положения до другого. В крайних положениях мы видим модель, соответствующую данному набору параметров (см. рис. 5.36 и 5.37). В промежуточном положении видны обе модели в прозрачном режиме. Степень прозрачности соответствует положению ползунка на шкале (см. рис. 5.38). Рис. 5.36. Модель сборки, соответствующая первоначальному набору параметров. Рис. 5.37. Модель сборки, промежуточное положение. Рис. 5.38. Модель сборки, соответствующая новому набору параметров. Несколько замечаний по формированию управляющей схемы В заключение хотелось бы отметить следующее. Чем больше определено связей между частями, тем выше степень автоматизации поиска приемлемого конструкторского решения и тем меньше вероятность возникновения ошибки. Поэтому крайне важно правильно определить набор данных, которые станут ключевыми для проектируемого изделия. Неправильное применение связей может привести к тому, что малейшее изменение какого-либо параметра вызовет большие нежелательные изменения в конструкции всего изделия. Управляющая схема должна соответствовать организации проектно-конструкторских работ на данном предприятии. Тогда за каждую ветвь схемы будет отвечать руководитель соответствующего отдела, а верхний уровень управляющей схемы будет контролировать руководитель проекта. Необходимо выработать и соблюдать правила именования частей разных уровней управляющей схемы, чтобы по одному названию быстро идентифицировать эти части. Желательно продумать систему хранения частей управляющей схемы и файлов, содержащих компоненты обзорной сборки. Подготовка конструкторской документации. Создание чертежа детали по существующей модели Модуль Drafting, предназначенный для подготовки чертёжной документации, содержит набор средств, с помощью которых можно создать любой чертёж на базе существующей трехмерной геометрической модели твердого тела, проволочной модели и эскизов. Полная ассоциативная связь чертежа с геометрической моделью позволяет всегда иметь чертёж, точно соответствующий геометрической модели. В качестве примера того, как просто и легко выполняется чертеж в системе Unigraphics, выполним чертеж крышки, модель которой была построена в одной из предыдущих глав. В главном меню выбираем опцию File → Open или иконку на панели инструментов. Находим на диске папку с файлом «kryshka.prt» и открываем его. После запуска системы в заголовке главного окна указано название текущего приложения, сейчас это Gateway. Загружаем приложение Drafting из главного меню: Application → Drafting или выбираем из панели инструментов иконку . В главном меню добавился еще один раздел Drawing, и появились иконки функций чертежного модуля. В графическом окне изображение модели исчезло, изображена рамка границы чертежа и изменилось название экранного вида. Прежде всего необходимо скорректировать формат и другие параметры чертежа. Для этого выбираем функцию Drawing → Edit из главного меню или иконку . Выпавшее меню содержит несколько окон, обращаясь к которым можно изменить имя чертежа, формат, масштаб, единицы измерения и угол проецирования. Обращаемся к выпадающему списку чертежных форматов и выбираем формат А2 с размерами 420 х 594 мм (см. рис. 6.1). Рис. 6.1. Определение формата чертежа При правильной настройке значений по умолчанию в соответствующих файлах активизирована иконка системы измерений СИ и выбрана одноугловая проекция. OK. После этого необходимо на поле чертежа добавить чертежную форму. Чертежная форма – это совокупность рамки, основной надписи и заготовок различных текстов. Существует несколько способов создания и хранения чертежных форм. У каждого из них есть свои достоинства и недостатки. Здесь будет описан наиболее простой способ. Прежде чем использовать чертежную форму, ее нужно создать. В отдельном файле в натуральную величину на определенном слое создается набор линий и текстов. Левый нижний угол рамки совмещен с рабочей системой координат. Файл находится в папке, специально выделенной для хранения различных чертежных форматов, и называется по названию формата. Соответственно, для каждого формата создается своя форма. Нанесение основной надписи Добавление чертежной формы на поле чертежа происходит с использованием функции File → Import → Part. Устанавливаем настройки. OK. На диске находим папку, в которой хранятся форматы, и выбираем нужный формат. OK. Принимаем XC=0, YC=0, ZC=0 в качестве координат точки, совмещаемой с точкой нулевых координат импортируемого файла. OK. Cancel (см. рис. 6.2). На поле чертежа появилась чертежная форма (см. рис. 6.3). Рис. 6.2. Определение начальной точки расположения основной надписи Рис. 6.3. Чертежная форма в графическом окне Создание чертежных проекций (видов) Следующим шагом выполнения чертежа будет создание необходимых видов детали. Предварительно надо продумать, какой вид детали будет являться главным и какие виды и разрезы необходимо поместить на чертеже. Название вида, используемого в качестве главного, будет выбрано из существующего перечня, куда входят и стандартные виды, и специально созданные. Чтобы определиться с его названием, выйдем из чертежа и вернемся в пространство модели. Используем функцию Drawing → Display Drawing (или иконку ). Эта функция позволяет, не выходя из модуля Drafting, вернуться к трехмерному изображению модели. Просмотрим стандартные виды изображения модели, воспользовавшись View → Replace View из главного меню или видовыми иконками, или выпадающим меню при нажатии правой кнопки мыши. Перебирая все стандартные виды, выбираем, какой из них расположить на чертеже, и на его основе будем добавлять остальные виды (см. рис. 6.4). Рис. 6.4. Список стандартных видов Если расположение модели на стандартных видах не отвечает нашим пожеланиям, можно создать специальный вид модели и присвоить ему имя. Например, выберем стандартный вид TOP. OK. Изображение модели в графическом окне изменилось. Теперь обратимся к полной функции вращения изображения модели View → Operation → Rotate или Ctrl+R. В выпавшем меню в панели Fixed Axis (зафиксировать ось вращения) выбираем Y- Axis. Величину приращения угла (Angle Increment) выбираем 90 градусов. OK. Такой вид вполне подходит для выбора его в качестве главного чертежного вида. Чтобы присвоить ему имя, воспользуемся функцией View → Operation → Save As. В окне Name набираем имя DRAFT, тем самым указывая, что данный вид будет использован при выпуске чертежа. OK (см. рис. 6.5). Рис. 6.5. Создание именованного вида изображения детали После выбора нужного вида и присвоения ему имени вернемся в пространство чертежа: Drawing → Display Drawing. Добавление проекционных видов Обращаемся к функции добавления вида на чертеж: Drawing → Add View в главном меню или к иконке на панели инструментов. Выбираем иконку Import View, выбираем вид с именем DRAFT. Указывая масштаб изображения, оставляем масштаб 1:1. Размещаем рамку вида на поле чертежа и фиксируем его положение нажатием левой кнопки мыши. Cancel (см. рис. 6.6). Рис. 6.6. Добавление вида на чертеж На поле чертежа появилось изображение детали в выбранном виде, причем вид изображен в рамке. Чтобы отказаться от рамки на поле чертежа, необходимо изменить настройку изображения. В главном меню выбираем Preferences → Visualization, выбираем закладку Names/Borders и убираем отметку у пункта Show View Borders (Показывать границы вида). OK. Прежде чем добавить на поле чертежа дополнительные сечения, необходимо изменить тип изображения данного вида, чтобы можно было закоординировать положение секущей плоскости. Для этого выбираем функцию Preferences → View Display или иконку . Выбираем чертежный вид на поле чертежа или его название в окне выпавшего меню. Высветились границы выбранного вида. Выбираем пункт Hidden Lines (Изображение невидимых линий) и после этого в окне, в котором определяется тип изображения таких линий, устанавливаем штриховую линию (Dashed). OK. Теперь на виде видимые линии изображены сплошными линиями, а невидимые – штриховыми (см. рис. 6.7). Рис. 6.7. Определение типа изображения данного вида Построение чертежных разрезов (сечений) Опять обращаемся к функции добавления вида на чертеж Drawing → Add View в главном меню или к иконке в панели инструментов. Выбираем иконку Revolved Section Cut. Будет построено радиусное сечение, т.е. вид, полученный в результате пересечения модели секущей плоскостью, состоящей из двух плоскостей. Эти плоскости могут содержать изломы. Задаем вид DRAFT, на котором будет определено сечение, на поле чертежа или в окне меню. Рамка вида на поле чертежа подсветилась. Определяем ось разворота вида сечения (см. рис. 6.8). Рис. 6.8. Определение оси разворота сечения Для этого используем стандартное меню определения вектора: выбираем иконку YC Axis. На чертежном виде появилась стрелка, перпендикулярная вертикальной оси детали и показывающая направление разворота. Поскольку она направлена слева направо, а нам нужно противоположное направление, нажимаем функцию Reverse Vector. Проверим, что в окне View Label имеется метка, т.е. функция простановки имени вида включена. Устанавливаем курсор в окно View Name, переходим на русский текст и набираем большую букву «А». Нажимаем клавишу Apply. Появилось окно Section Line Creation (Создание линии сечения; см. рис. 6.9). С помощью этого меню задаются сегменты сечения, сегменты стрелок и сегменты изломов для линии сечения. Рис. 6.9. Меню определения положения сечения На первом этапе требуется задать точку разворота. Это точка пересечения секущих плоскостей. Пользуясь стандартной функцией определения точки, выбираем тип выбираемой точки - Arc Center (центр окружности) и на родительском виде указываем курсором любую окружность, имеющую центр на оси детали, например внешнюю окружность. На чертежном виде появилась метка выбранной точки разворота, а в меню Section Line Creation активизировались функции выбора элементов сечения. Переходим к этапу определения элементов первой секущей плоскости. Поочередно задаем положение сечения и стрелки. Выбираем тип следующего действия - Cut Position. В верхнем окне меню напротив этой функции стоит метка. Выбрав тип точки Arc Center, указываем расположенную внизу вида окружность. Таким образом, секущая плоскость пройдет через точку разворота и выбранную точку. На чертежном виде появилась метка секущей плоскости. Теперь определим положение стрелки Arrow Position. Тип выбираемой точки - Cursor Location. Чуть ниже границы детали указываем курсором положение стрелки. На чертеже возникает метка линии, которая может быть неперпендикулярной линии сечения (см. рис. 6.10). Рис. 6.10. Определение положения сечения и стрелок первого сегмента Для перехода к этапу определения элементов второй секущей плоскости нажимаем клавишу Next Leg (следующая полка). Для нее определяем положение сечения и стрелки. Для позиционирования сечения используем пункт Control Point, указав любую грань фаски верхнего отверстия, направленного к оси детали. Для определения положения стрелки используем Cursor Location (см. рис. 6.11). Положение секущих плоскостей для определения радиусного сечения закончено. OK. Рис. 6.11. Определение положения сечения и стрелок второго сегмента Каждая из секущих плоскостей может представлять собой набор из нескольких плоскостей, проходящих через точку разворота и соединенных изломами. В нашем примере изломы на секущих плоскостях не использовались. На родительском чертежном виде появляются изображение плоскости сечения с именем А-А, а на поле чертежа (следуя перемещениям курсора) - рамка создаваемого вида. Вид перемещается в своем ортогональном коридоре; при этом изображается линия выравнивания видов. Левой кнопкой мыши указываем положение вида (см. рис. 6.12). Рис. 6.12. Расположение построенного сечения на чертеже Новый вид - разрез «А-А» - создан. Cancel. Оценив конфигурацию детали, можно увидеть, что для передачи полного представления о ее геометрии необходимо добавить на чертеж два сечения по отверстиям. Создадим эти сечения. Опять обратимся к функции Drawing → Add View в главном меню или к иконке на панели инструментов. Выбираем иконку Simple Section Cut. В качестве родительского вида, на котором будет определено сечение, выберем DRAFT либо на поле чертежа, либо по названию вида в окне меню. Ось разворота вида сечения зададим по двум точкам: используем пункт Two Points. После этого курсором указываем окружность - проекцию монтажного отверстия. В центре этого отверстия появляется метка в виде звездочки. Указываем внешнее ребро детали. Появляется изображение секущей плоскости со стрелкой направления разворота. При необходимости используем функцию Reverse Vector, чтобы стрелка была направлена влево вверх (см. рис. 6.13). Рис. 6.13. Задание оси разворота вида сечения по двум точкам Устанавливаем курсор в окно View Name, переходим на русский текст и набираем большую букву «Б». Нажимаем клавишу Apply. В появившемся окне Section Line Creation (создание линии сечения) активизировано действие Cut Position. Указав тип выбираемой точки Arc Center (центр окружности), выбираем курсором на родительском виде первоначальную окружность. На чертежном виде появилась метка плоскости сечения. Действие автоматически сменилось на определение положения стрелки: Arrow Position. Тип выбираемой точки устанавливаем Cursor Location и указываем желаемое положение стрелок. На чертеже появляются метки. OK (см. рис. 6.14). Рис. 6.14. Определение положения сечения Перемещая курсор и ориентируясь по расположению рамки создаваемого вида, левой кнопкой мыши указываем его положение (см. рис. 6.15). Рис. 6.15. Расположение разреза на чертеже Не выходя из операции Add View, опять выбираем иконку Simple Section Cut и аналогичным образом создаем разрез по ступенчатому отверстию. Дадим этому сечению имя «В». Выполним необходимые назначения (см. рис. 6.16). Рис. 6.16. Построение следующих разрезов Определяем положение разреза на поле чертежа (см. рис. 6.17). Рис. 6.17. Созданные разрезы Построение выносных видов Продумав, какие виды нам еще понадобятся, выполним увеличенный местный вид вертикального отверстия. Выбираем иконку Detail View. Проверим, что функция Circular Boundary (круговая граница) включена. В строке подсказки появилось сообщение: Define detail center in parent view – Specify inferred point. Система предлагает определить положение центра создаваемого местного вида на родительском виде. Выберем способ задания точки по положению курсора: Cursor Location. Определение местного вида будем выполнять на разрезе «А-А». В окне View Name, перейдя на русский текст, набираем большую букву «Г». После этого устанавливаем курсор в районе отверстия и нажатием кнопки определяем положение центра окружности границы детального вида. Передвинув курсор, следя за размерами появившейся окружности, повторным нажатием кнопки на мышке определяем границу вида. Введем значение масштаба в окне Scale: 2. В строке подсказки появилось сообщение: Indicate center of detail view on drawing. Теперь необходимо расположить увеличенный в два раза местный вид на поле чертежа. Указываем курсором его положение. Cancel (см. рис. 6.18). Рис. 6.18. Создание выносного вида Все виды и разрезы, необходимые для передачи представления о геометрии детали, созданы. Теперь необходимо упорядочить расположение разрезов на поле чертежа, очертить их границы. Изменение расположения видов на поле чертежа Изменим положение разрезов «Б-Б» и «В-В» на чертеже. Воспользуемся функцией редактирования вида, вызвав из главного меню Drawing → Add View или иконку на панели инструментов. В окне меню или на поле чертежа выбираем разрез «Б». После завершения выбора вида вокруг него появляется подсвеченная рамка границы вида. Вводим в окне Angle (угол ориентации существующего вида) значение 70. Apply. Разрез «Б» занял новое положение, повернувшись на заданный угол. Теперь ось отверстия располагается горизонтально, что более удобно для восприятия чертежа. Выбираем разрез «В» и изменяем угол ориентации вида. Значение нового угла ориентации 50 градусов. OK (см. рис. 6.19). Рис. 6.19. Изменение угла ориентации вида Углы ориентации видов «Б-Б» и «В-В» изменены. Теперь необходимо изменить границы видов. Изменение границ видов Новые границы видов должны быть созданы как видозависимые объекты. Создаются они на данных видах при помощи операции View → Operation → Expand. В выпавшем меню в качестве рабочего вида указываем вид «Б». Этот вид на поле чертежа сразу же выделяется рамкой. OK. Изображение чертежа исчезает, и во все графическое окно теперь изображены объекты вида «Б». Обращаемся к меню Insert → Curve → Spline или к иконке на панели инструментов. Выбираем метод Through Points, степень кривой 3. Кривая должна быть незамкнутой (опция Closed Curve не включена). OK. Метод задания точек кривой выбираем: Point Constructor. Способ выбора точек - Cursor Location: указываем курсором ряд точек. OK. Подтверждаем завершение назначения точек: OK. Условия наклона касательной в точках кривой игнорируем: OK. Кривая, являющаяся звеном новой границы вида, построена (см. рис. 6.20). Рис. 6.20. Построение кривой на виде Вызываем функцию построения линии Insert → Curve → Basic Curves или иконку отрезками остальные звенья границы (см. рис. 6.21). . Создаем Рис. 6.21. Создание звеньев границы вида Создание новой границы вида завершено. Все звенья границы должны иметь меньшую толщину линии, чем у основных линий детали. В зависимости от настоек построенные звенья новой границы вида имеют какую-то определенную толщину линии (Width). Скорее всего, это среднее значение - Normal Width. Поэтому, обратясь к функции Edit → Object Display, изменим толщину всех построенных звеньев границы вида на Thin Width. Возвращаемся к изображению чертежа со всеми имеющимися видами. Опять обращаемся к операции View → Operation → Expand. На чертеже на виде «Б» видим изображение созданных объектов. Прежде чем изменить границы вида «Б», создадим кривые новых границ видов «В» и «Г». Как и в предыдущем случае, выбираем поочередно в качестве рабочего вида вид «В» и вид «Г», пользуясь операциями Insert → Curve → Spline и Basic Curves, создаем звенья новых границ этих видов (см. рис. 6.22). Рис. 6.22. Создание границ других видов Переходим к определению изображения видов в новых границах. Для этого существует специальная ). Обратившись к ней, необходимо указать вид, функция Drawing → Define View Boundary (ее иконка чью границу будем изменять. Указываем в окне меню вид: «Б». Выбираем тип границы вида: Break Line/Detail (Ломанная/Местный вид; см. рис. 6.23). Рис. 6.23. Определение границ вида по созданным кривым и отрезкам Для того чтобы определить кривые, являющиеся новыми границами вида, воспользуемся методом Chain (по цепочке) и укажем, например, на вертикальный левый отрезок. OK. Вся цепочка граничных кривых подсветилась. Apply. Вид «Б» изображен в новых границах. Выбираем в окне вид «В» и выполняем аналогичную операцию. Apply. После этого выбираем в окне меню вид «Г». Подсветилась окружность границы вида и на виде точка его привязки. Выбираем тип границы вида: Break Line/Detail. Указываем отрезок новой границы при выбранном методе Chain. OK. Границы вида «Г» изменились. При этом на родительском виде для вида «Г» исчезла окружность - граница местного вида, а на самом виде «Г» она осталась (см. рис. 6.24). Рис. 6.24. Чертеж с измененными границами видов Виды изображаются в новых границах, но сами границы видов остались на чертеже. Чтобы сделать их невидимыми, воспользуемся функцией Edit → View Dependent Edit (или иконкой ). В окне меню выбираем вид «Б» или указываем на этот вид на поле чертежа. Выбираем тип редактирования объектов на выбранном виде - Erase Objects. Увеличиваем изображение вида «Б» в графическом окне с помощью видовой функции Zoom. Располагая курсор так, чтобы перекрестие находилось внутри вида, выбираем отрезки, составляющие границу вида. OK. Не завершая операции видозависимого редактирования, выбираем другой тип редактирования - Edit Object Segments. Установим тип линии (Line Font) как Invisible (невидимая). Так будут изображены выбранные участки указанных отрезков и кривых, т.е. они будут невидимыми. Apply. Теперь нужно указать курсором кривую, являющейся границей вида, в той части, которая должна стать невидимой (например, «висящий» левый конец кривой). После этого указываем объект, по которому будет произведена обрезка. Указываем крайнее левое очертание детали. OK. Повторяем операции для правого конца граничной кривой. OK. Cancel. Аналогичным образом редактируем видимость объектов границы вида «В». Удаляем отрезки, составляющие границу вида «В», и делаем невидимыми концы кривой до пересечения с очертанием детали (см. рис. 6.25). Рис. 6.25. Изменение видимости сегментов границы вида Переходим к редактированию видимости объектов границы вида «Г». При работе с функцией Erase Objects указываем отрезок границы вида и окружность границы местного вида. Концы кривой, выходящие за очертания детали, делаем невидимыми. Закрываем операцию видозависимого редактирования: Cancel (см. рис. 6.26). Рис. 6.26. Изображение видов «В» и «Г» Виды «Б», «В» и «Г» имеют нужное нам изображение. Весь чертеж теперь имеет следующий вид (см. рис. 6.27): Рис. 6.27. Чертеж после изменения границ видов Изменим положение видов «Б» и «В» на поле чертежа. Вызываем из главного меню Drawing → Move/Copy View или обращаемся к иконке на панели инструментов. Выбираем вид «В» подсветились границы вида «В». Выбираем метод перемещения данного вида на чертеже. Для этого указываем на иконку To a Point в окне меню. К курсору, находящемуся в графическом окне, «привязалась» рамка аналогичная границе вида «В». Расположив курсор на чертеже, позиционируем вид «В» на новом месте. После этого нажимаем клавишу Deselect Views и выбираем вид «Б». С помощью метода To a Point перемещаем его, расположив ниже вида «В». Cancel (см. рис. 6.28). Рис. 6.28. Перемещение видов на чертеже Выравнивание видов Выравниваем виды «Б» и «В» так, чтобы вид «Б» находился под видом «В» и следы одних и тех же поверхностей детали находились на одной вертикальной линии. Обратимся к функции Drawing → Align View (иконка ). Прежде всего на виде, остающемся неподвижным, необходимо указать точку, по которой будет происходить выравнивание. Выберем точку на конце любого вертикального отрезка на виде «В». Потом указываем вид, который будет выровнен по данному виду. Выбираем вид «Б». После чего указываем метод выравнивания. Выбираем иконку метода Vertically (см. рис. 6.29). Рис. 6.29. Выравнивание видов Выравнивание видов «Б» и «В» выполнено. Cancel. Создадим еще один местный разрез: вырыв на первоначальном виде «DRAFT». Предварительно, воспользовавшись операцией View → Operation → Expand, создадим на виде «DRAFT» замкнутую кривую: Insert → Curve → Spline, Through Points. В окне Closed Curve ставим метку. Метод определения точек Point Constructor, способ определения точек - Cursor Location (см. рис. 6.30). Рис. 6.30. Определение границ местного разреза С помощью операции View → Operation → Expand возвращаемся к изображению чертежа. Обращаемся на панели инструментов. В к функции Drawing → Break-Out Section в главном меню или к иконке верхней строке меню включена операция Create. Для создания местного разреза указываем вид DRAFT. Затем указываем базовую точку, до которой будет построен вырыв. Точку укажем на виде «А»: центр вертикального отверстия. В стандартном меню задаем метод выбора точки Arc Center. На следующем шаге построения разреза указываем вектор разреза. На виде «А» от выбранной точки появляется символ вектора, по направлению которого будет построен вырыв. Правильное направление – на нас. В противном случае направление вектора необходимо будет задать, пользуясь стандартной функцией определения направления или функцией Reverse Vector (см. рис. 6.31). Рис. 6.31. Определение направления при построении местного разреза На следующем шаге нужно указать границы вырыва. Указываем на построенную кривую, после чего система предлагает модифицировать границу вырыва. Узлы кривой подсвечиваются маленькими кружками. Их положение на этом этапе можно поменять. Отказываемся от этого шага. Apply. Cancel. Местный разрез (вырыв) на виде DRAFT построен. Теперь откажемся от изображения невидимых линий на виде DRAFT. Опять выбираем функцию Preferences → View Display или иконку . Указываем чертежный вид DRAFT на поле чертежа или его название в окне выпавшего меню. Выбираем пункт Hidden Lines (изображение невидимых линий) и после этого в окне, в котором определяется тип изображения таких линий, устанавливаем Invisible (невидимые). OK (см. рис. 6.32). Рис. 6.32. Местный разрез на виде создан Редактирование элементов чертежа Теперь отредактируем названия видов, изображение секущих плоскостей и штриховки. Изменим изображение секущих линий. Такая операция выполняется при помощи функции Preferences → Section Line Display (или иконки ). Указываем секущую линию сечения «А» и в выпавшем меню изменяем размеры и другие параметры изображения секущей линии. Apply (см. рис. 6.33). Рис. 6.33. Изменение параметров изображения секущей линии Повторяем операцию для секущих линий сечения «Б» и «В». Виды имеют различные названия на чертеже (используются английские буквы A, B, C, D) и в списке видов (мы использовали русские буквы А, Б, В, Г). Теперь их нужно привести в соответствие и заменить английские обозначения русскими. Воспользуемся функцией Insert → Annotation из главного меню или обратимся к иконке DRAFT курсором выберем верхнюю букву «A» в обозначении сечения (см. рис. 6.34). . На виде Рис. 6.34. Замена текста в названии вида В верхней строчке меню нажимаем иконку Clear, чтобы освободиться от существующего текста. После этого устанавливаем тип текста cyrilic, переводим клавиатуру в режим набора русских букв и набираем большую букву «А». Apply (см. рис. 6.35). Рис. 6.35. Редактирование текста На чертеже произошла замена старого обозначения на русскоязычное. В зависимости от действующих установок значений параметров высота буквы может измениться. Тогда параметры размера текста для этих обозначений необходимо будет впоследствии редактировать. Подобным же образом изменим вторую букву «A» в обозначении сечения и название самого сечения, а также все остальные обозначения и названия сечений. После такого редактирования изменим высоту и другие параметры текста обозначений. Из главного меню вызываем Preferences → Annotation (или иконку ). Курсором указываем верхнюю букву сечения «А», открываем закладку Lettering и редактируем параметры текста: Character Size (размер символа), Space Factor (коэффициент интервала между символами), Aspect Ratio (отношение сторон). Apply (см. рис. 6.36). Рис. 6.36. Изменение параметров текста Для уменьшения числа выполняемых операций воспользуемся возможностью наследования свойств существующих графических элементов чертежа. Теперь, оставаясь в режиме изменения настроек надписей Annotation Preferences, курсором указываем все оставшиеся обозначения и названия сечений. Выбираем функцию Inherit (наследовать) и указываем на символ «А» с уже отредактированными параметрами текста. OK (см. рис. 6.37). Рис. 6.37. Чертеж с отредактированными названиями видов и сечений Изменим положение названий сечений. Для этого вызываем функцию Edit → Origin из главного меню или иконку . Совмещаем курсор с надписью и, держа нажатой левую кнопку мыши, перемещаем надпись на новое место (см. рис. 6.38). Рис. 6.38. Изменение положения надписей Отредактируем параметры штриховки в сечениях. Опять обращаемся к функции Preferences → Annotation (или используем иконку ). Курсором указываем все штриховки на всех видах чертежа. Меню Annotation Preferences раскрывается на закладке Fill/Hatch. Вводим новое значение расстояния (Distance) между штрихами, равное 2 мм. OK (см. рис. 6.39). Рис. 6.39. Изменение параметров штриховки Чертеж подготовлен к следующему этапу оформления – созданию различных вспомогательных обозначений и расстановке размеров. Нанесение дополнительных обозначений Создание вспомогательных обозначений начинается вызовом из главного меню Insert → Utility Symbols или иконки из инструментальной панели. На виде «А» определим осевые линии. Для этого выбираем в меню Utility Symbols символ Cylindrical Centerline (осевая линия цилиндрической поверхности). Метод выбора точки - Control Point. Указываем внешние вертикальные отрезки в точках ближе к оси детали. Повторяем операцию создания осевой линии для двух отверстий (см. рис. 6.40). Рис. 6.40. Построение осевых линий На видах «Б», «В» и «Г» создаем такие же осевые линии, пользуясь методом выбора точки Arc Center. Переходим к созданию осевых линий на базовом виде. Выбираем тип вспомогательного обозначения Linear Centerline. Метод выбора точки может быть или Control Point, или Arc Center. Указываем внешнюю окружность на виде. Apply. Вертикальная и горизонтальная осевые линии созданы. Переходим к определению осевых линий отверстий. Выбираем тип Partial Bolt Circle (неполная круговая осевая линия). Метод выбора точки - Arc Center. Будем создавать отдельные, не соединенные между собой осевые линии на каждом отверстии. Поэтому выбираем метод задания круговых осевых линий Centerpoint (по точке центра). Теперь указываем на внешнюю окружность, чтобы определить ее центр как центральную точку круговой осевой линии. После этого указываем окружность отверстия. Apply. Повторяем операцию для остальных отверстий (см. рис. 6.41). Рис. 6.41. Осевые линии отверстий Последним действием выбираем тип Cylindrical Centerline, метод выбора точки - Arc Center. Создаем осевую линию, соединяющую два противоположных отверстия. Все осевые линии определены. Проверим параметры выносных размерных линий, стрелок и текста размеров: Preferences → Annotation, закладки Line/Arrow и Lettering (см. рис. 6.42). Рис. 6.42. Настройка параметров изображения размеров Нанесение размеров Переходим к простановке размеров на виде «А». В зависимости от типа размера необходимо выбрать соответствующую операцию: Insert → Dimension → … или иконку из панели инструментов. Определяя нужный размер, можно дополнить номинальное значение размера значением допуска. Тип изображения допусков можно выбрать. Тип размера Cylindrical, тип допуска Unilateral - (односторонний отрицательный). Выбираем линии, между которыми создается размер, определяем значение отрицательного допуска 0.5 мм, указываем место положение размера (см. рис. 6.43). Рис. 6.43. Нанесение размеров на чертеже детали Проставляем следующий размер. Тип размера - Cylindrical, тип допуска - No Tolerance (без допуска). Выбираем внизу линию проточки, переключаем тип выбора точки на Tangent Point. На базовом виде в зоне местного вырыва указываем окружность, которая является проекцией этой проточки. Под курсором в графическом окне появился размер. Переключаем клавиши изображения второй стрелки и выносной размерной линии. Позиционируем размер (см. рис. 6.44). Рис. 6.44. Частный случай нанесения размера Переходим к простановке следующего размера. Тип размера - Vertical, тип допуска - Equal Bilateral Tolerance (равный двусторонний). Выбираем линии, определяем значение допуска 0.3 мм, указываем местоположение размера. При этом выбираем пункт размещения размерного текста Manual Placement - Arrows In (ручное размещение, стрелки внутри). Поскольку верхняя выносная размерная линия будет совпадать с выносной линий другого размера, клавишу изображения этой линии можно переключить (см. рис. 6.45). Рис. 6.45. Простановка вертикального размера Тип размера - Horizontal, тип допуска - No Tolerance (без допуска). Образмериваем фаску. Указываем угловую точку фаски. Нажимаем иконку Annotation Editor, в разделе Appended Text выбираем After. Набираем текст x45 и добавляем символ обозначения градуса из нижней панели иконок. OK (см. рис. 6.46). Рис. 6.46. Размер с добавленным текстом Курсором указываем место положения размера (см. рис. 6.47). Рис. 6.47. Позиционирование размера фаски В данном случае добавленный текст будет неизменным при всех дальнейших изменениях модели. Если нужно, чтобы в добавленном тексте присутствовало какое-то значение (например, угловой размер фаски), которое должно измениться при редактировании модели, необходимо использовать ссылку на параметры модели. Она вставляется в текст после обращения к кнопке Expression в меню Annotation Editor и выбора значения соответствующего параметра. Существующий размер можно перенести на новое место. Это выполняется при помощи функции Edit → Origin (иконка ). Нужно курсором указать размер и, не отпуская правую кнопку мыши, отбуксировать его на новое место. При этом в меню Origin Tool должна быть активирована операция Drag. С помощью этой же функции производится выравнивание одного размера по другому. Указывается размер, который должен быть выровнен. Выбираем функцию Align with Arrows (выровнять по стрелкам). Указываем размер, по которому производиться выравнивание. Apply (см. рис. 6.48). Рис. 6.48. Выравнивание размеров Часто бывает необходимо разместить на поле чертежа комментарии к размеру и связать расположение текста с этим размером. Для этого с помощью текстового редактора Annotation Editor набирают нужный текст и размещают его вблизи размера. После нажатия кнопки Create without Leader выпадает меню Origin Tool. Выбираем операцию Offset Character (сдвинуть на число символов). Указываем метод выравнивания, количество символов по X и Y, включаем Associative (ассоциативная привязка к объекту). Указываем размер, к которому должен быть «привязан» текст. Apply (см. рис. 6.49). Рис. 6.49. Ассоциативная привязка текста к размеру Теперь при редактировании местоположения размера текст будет следовать за ним. Перед окончательной расстановкой размеров на виде «А» изменим тип изображения ребер сглаживания. Ребра сглаживания – это ребра, на которых соседние грани сопрягаются по касательной друг к другу. Воспользуемся функцией Preferences → View Display или иконкой . Указываем чертежный вид «А» на поле чертежа или его название в окне выпавшего меню. Выбираем пункт Smooth Edges (изображение линий сглаживания) и после этого отключаем (убираем отметку) в пункте изображения таких линий. OK. Определение толщины линий Проставив все размеры на виде «А», включим режим изображения с градацией толщины линий. Теперь все линии на чертеже будут показаны в соответствии с определенной для них толщиной. Вызываем Preferences → Visualization, а затем закладку Line. Включаем функцию Show Widths. OK (см. рис. 6.50). Рис. 6.50. Включение режима изображения толщины линий Теперь вид «А» имеет следующий вид (см. рис. 6.51). Рис. 6.51. Вид «А» с изображением толщины линий Можно отключить изображение толщины линий и перейти к простановке размеров на других видах (см. рис. 6.52). Рис. 6.52. Нанесение размеров на разрезах Во время работы на виде «Г» придется изменить границы вида для того, чтобы можно было определить левую привязку размеров. При этом для определения границы вида проще воспользоваться методом Manual Rectangle (вручную прямоугольником). После создания размеров вновь вернуться к старой границе вида методом Break Line/Detail (Ломанная/Местный вид; см. рис. 6.53). Рис. 6.53. Размеры на виде «Г» Нанесение специальных символов Осталось нанести на чертеже специальные обозначения, написать технические требования и заполнить основную надпись чертежа. Символы шероховатости добавляем с помощью функции Insert → User-Defined Symbol (или иконки ). Символы шероховатости создаются заранее и хранятся в специальной директории. Поэтому на первом шаге указываем директорию, где находится нужное условное обозначение. После чего выбираем нужный файл (файл Rz-Ra.sbf) из списка доступных и условное обозначение из списка условных обозначений (2-5). Указываем способ размещения условного обозначения - Add To Drafting Object (добавить к чертежному объекту). Указываем нижнюю размерную линию размера 11,5±0,3 на виде «А» и указываем положение обозначения на этой линии (см. рис. 6.54). Рис. 6.54. Добавление на чертеж символов шероховатости Для того чтобы символ находился ниже размерной линии, расположим его на этой линии и выберем этот символ курсором. В меню User Defined Symbol активируются функции Flip Horizontal и Flip Vertical (горизонтальный и вертикальный переворот), как показано на рис. 6.55. После операций Flip Horizontal и Flip Vertical условное обозначение получается просто зеркальным. Поэтому, если в условном обозначении используется текст, его не следует подвергать этим операциям. В таких случаях нужно или добавить в библиотеку символ соответствующего расположения, или использовать стандартные символы без текста (например, символом STS_BAS_ из набора ug_default.sbf). Используя функции Flip Horizontal и Flip Vertical, можно расположить символ нужным образом, дополняя его потом текстом, являющимся самостоятельным объектом. Рис. 6.55. Использование операций Flip Horizontal и Flip Vertical Нанесение на чертеж обозначений допусков формы и расположения выполняется с помощью функции Insert → Annotation (или иконки ), закладка GD&T Symbols. Определим базовые элементы. Для этого воспользуемся любой иконкой с буквой в рамке. Устанавливаем курсор на эту букву в окне редактирования. Выбираем текст Cyrillic и набираем большую букву Д. Обращаемся к клавише Create with Leader (создать с выноской). Открывается меню для определения различных параметров выноски. Определяем тип выноски с привязкой к размеру. Указываем размер, к которому будет привязан символ, и места расположения выноски и символа базового элемента. Аналогичным образом обозначим базовый элемент Е (см. рис. 6.56). Рис. 6.56. Нанесение символов базовых элементов Теперь создадим сами обозначения. Находясь в разделе GD&T Symbols, последовательно набираем нужные элементы. Для ввода рамки обозначения выбираем иконку Begin Single Frame (начать одиночную рамку). Затем выбираем иконку с типом допуска и набираем текст. После полного набора обозначения обращаемся к клавише Create with Leader (создать с выноской). Определяем тип выноски Plain (простая). Указываем место расположения выноски. OK. Указываем местоположение обозначения (см. рис. 6.57). Рис. 6.57. Нанесение обозначений допусков формы и расположения Точно так же создаем обозначения допусков формы других поверхностей. Для добавления еще одного окна используем клавишу Vertical Separator (вертикальный разделитель). Тип выноски - Plain with Aligned Arrow (простая с выравниванием по стрелке; см. рис. 6.58). Рис. 6.58. Задание обозначения допуска с выравниванием по стрелке Указываем размер, по стрелке которого должно происходить выравнивание. OK. Указываем местоположение обозначения (см. рис. 6.59). Рис. 6.59. Созданное обозначение допуска с выравниванием по стрелке Нанесение технических требований Текст технических требований в Annotation Editor можно загрузить из существующего файла (функция Insert from File) или набрать непосредственно в текстовом редакторе. Размещаем текст на поле чертежа при помощи операции Create without Leader. Редактирование заготовок надписей в штампе чертежа осуществляется при помощи той же функции Annotation Editor. Курсором выбираем текст, изменяя его параметры и содержание. Apply. Осталось внести последнее изменение. Когда редактировалось название вида «Г», на виде «А» была утеряна круговая граница, определяющая область вида для увеличения. Необходимо восстановить границу области и название вида. Окружность – границу области создаем на виде «А» при помощи операции View → Operation → Expand. Обращаемся к меню Insert → Curve → Basic Curves и создаем окружность (см. рис. 6.60). Рис. 6.60. Создание объектов на виде Выходим из режима работы на виде «А». Создаем обозначение увеличенного вида «Г». Выполним эту операцию, используя функцию Insert → Custom Symbol (иконка ). В системе имеется библиотека символов, которую всегда можно дополнить новыми символами. Для создания обозначения вида «Г» используем символ «Pozicia», который был создан заранее (см. рис. 6.61). Рис. 6.61. Использование символов из библиотеки После открытия меню с названием этого символа, обращаемся к Annotation Editor и редактируем название. Вызываем операцию Create with Leader. Выбираем тип выноски и указываем окружность. OK. Указываем место расположения обозначения. Cancel. Cancel (см. рис. 6.62). Рис. 6.62. Результат добавления символа из библиотеки При необходимости изменить тип стрелки на выноске обращаемся к функции Preferences → Annotation (или используем иконку ). Курсором выбираем обозначение, в разделе Line/Arrow изменяем тип стрелки на None (без стрелки). OK. Чертеж окончательно оформлен. Он хранится вместе с моделью в том же файле (см. рис. 6.63). Рис. 6.63. Окончательный вид чертежа Ассоциативная связь чертежа и параметрической модели детали Чертеж был сформирован по модели, которая еще находится на этапе согласования. На этапе анализа сборки всего изделия может выясниться, что какие-то размеры необходимо изменить. Например, в данной крышке проточка диаметром 80 является посадочным местом под подшипник, а буртик диаметром 55 очень высок. Он не должен быть выше внешнего кольца подшипника, поэтому его диаметр 55 мм необходимо изменить на 72 мм. Кроме того, диаметр отверстия под вал 38 мм можно уменьшить до 36 мм. Выполняем редактирование модели. В приложении Modeling в навигаторе модели или непосредственно на модели находим соответствующий элемент. Отверстие диаметром 38 мм было получено в результате операции EXTRUDED(7). Редактируем параметры этой операции при помощи функции Edit Parameters. Выбираем ее из выпадающего меню, вызываемого правой кнопкой мыши при выборе данной операции в навигаторе. Изменим значение параметра First Offset на -5.5 мм. OK. OK (см. рис. 6.64). Рис. 6.64. Изменение параметров модели детали Буртик диаметром 55 мм был создан в результате операции EXTRUDED(8). Редактируем параметр First Offset этой операции на –12.5 мм. OK. OK. Посмотрим, как изменится чертеж после изменения модели. Загружаем приложение Drafting. Если в настройках включено автоматическое обновление видов чертежа, то после загрузки приложения Drafting, чертеж будет изменен. Автоматическое обновление рекомендуется выключать, и по умолчанию оно выключено (Preferences → Drafting, команда Suppress View Update включена). Тогда для того, чтобы произошло обновление видов, обращаемся к функции Drawing → Update Views (или к иконке ). Выбираем виды DRAFT и А. OK. Обновление видов произошло. Размеры отредактированных элементов изменились. Возможно, положение некоторых соседних размеров и обозначений придется изменить (при помощи функции Edit Origin). Также потребуют повторного редактирования русскоязычные названия видов на чертеже. После обновления и редактирования чертеж имеет следующий вид (см. рис. 6.65). Рис. 6.65. Чертеж после обновления Подводя итог, можно сказать, что модуль Drafting предлагает большое количество разнообразных функций, направленных на облегчение создания чертежа любой степени сложности по любым стандартам. Среди этих функций: автоматическое построение ортогональных и дополнительных видов с удалением невидимых линий; автоматическое простановка размеров на геометрии, построенной по эскизам; интерактивная настройка графических атрибутов; ассоциированные с геометрией спецсимволы (сварка, чистота поверхности, допуски на геометрические отклонения); удобные функции задания и редактирования текста. Существует возможность управлять изображением вида, скрывая или показывая отдельные чертёжные объекты согласно заданным условиям. При оформлении сборочных чертежей можно быстро указать, следует ли сечь ту или иную деталь, пересекаемую секущей плоскостью, например, не выполнять разрезы болтов и валов; а также автоматически создавать спецификации состава изделия. В заключение следует еще раз сказать о необходимости предварительного выполнения настроек всех графических атрибутов. Уже из вышеприведенного примера видно, что, не смотря на легкий доступ к выбору типов и размеров создаваемых графических элементов чертежа, а также возможность применения функции наследования различных свойств, при поточном выпуске конструкторской документации выполнять настройки графических атрибутов в каждом отдельном файле нерационально. В разделе Drafting файла ug_metric.def нужно заранее установить тип и размеры элементов обозначения сечения, штриховки, размеров, текста и т.д. Только тогда оформление чертежей перестанет быть рутинным, неинтересным и малопривлекательным занятием. Создание библиотеки чертежных символов Библиотеки символов для оформления чертежей в системе Unigraphics можно создавать различными способами в зависимости от последующей технологии их использования. Рассмотрим два способа формирования библиотек. Для начала создаем новый файл: в главном меню выбираем опцию File → New или иконку из панели инструментов. В окне “Имя файла” набираем «Ra-Rz». Вызываем приложение Modeling из главного меню: Application → Modeling или Ctrl+M, или из панели инструментов иконку . Обратимся из главного меню к функции создания базовых кривых: Insert → Curve → Basic Curves или к иконке . Выбираем тип Line (иконку ) и в выпадающем меню метода выбора точки - Point Constructor. Определяем начальную точку отрезка. Нажатием клавиши Reset обнуляем значение координат. OK. Начальная точка отрезка задана в начале системы координат. Определяем вторую точку отрезка. В выпадающем меню Offset (отступ) выбираем метод Cylindrical (использование полярной системы координат). В качестве точки, от которой будет задан отступ, опять выбираем точку начала системы координат. OK. В меню изменились заголовки размеров. Теперь требуется ввести значения радиуса (вводим Radius 8 мм), угла (Angle 60 градусов) и координаты Z (оставляем 0). OK. Первый отрезок построен. Аналогичным образом строим второй отрезок. Начальная точка совпадает с началом системы координат. Конечную точку определяем относительно нулевой точки с отступом: радиус 4 мм, угол 120 градусов, координата Z = 0 мм (см. рис. 6.66). Рис. 6.66. Создание элементов будущего символа Итак, символ обозначения шероховатости построен. Для создания текста загружаем модуль Drafting из главного меню: Application → Drafting (или из панели инструментов выбираем иконку ). В графическом окне созданные линии исчезли, появилась чертежная рамка. Выходим из чертежа функцией Drawing → Display Drawing (иконка ). Вернувшись к изображению символа шероховатости, мы располагаем всеми функциями модуля Drafting. Обращаемся к текстовому редактору Insert → Annotation, . Обращаемся к разделу настроек параметров вызвав его из главного меню или с помощью иконки текста Text Preferences и устанавливаем высоту текста, соотношение размеров символа и т.д. Набираем текст Rz 20. Размещаем текст над символом при помощи операции Create without Leader (см. рис. 6.67). Рис. 6.67. Добавление текста к символу Набираем текст Rz 40 и размещаем его аналогичным образом. Такую же операцию выполняем с текстом Rz 80. Выходим из приложения Drafting, выбрав из главного меню пункт: Application → Gateway, или из панели инструментов иконку . Переходим непосредственно к операции создания элементов библиотеки символов. Вызываем из главного меню File → Utilities → Symbol Fonts. Появляется меню, в котором нужно определить имя файла библиотеки символов. Дадим этому файлу имя Ra-Rz. Файл будет иметь расширение sbf. Подтверждаем, что создается новая библиотека символов. Выбираем функцию создания символа Define Symbol. Набираем имя первого символа в библиотеке: RZ20. OK. Определяем точку позиционирования символа. Для этого при помощи клавиши Reset обнуляем координаты. OK. В качестве ориентирующей точки задаем точку с координатами x = 5, y = 0, z = 0. OK. Определяем объекты, которые войдут в символ «RZ20»: оба отрезка и текст Rz20. OK. Процесс создания символа повторяется. Имя следующего символа в библиотеке: RZ40. Определение элементов происходит аналогичным образом. После этого создаем еще один символ в библиотеке: RZ80. Cancel (см. рис. 6.68). Рис. 6.68. Определение символа из набора существующих объектов Список созданных символов в библиотеке Ra-Rz можно просмотреть при помощи функции List Symbols in SBF. Cancel. В новом файле проверим, как работает созданная библиотека символов. Используем функцию Insert → User-Defined Symbol (или иконку ). Выбираем директорию, где находятся условные обозначения (Utility Directory). После этого выбираем файл библиотеки символов (Ra-Rz.sbf) из списка и выбираем поочередно условные обозначения (RZ20; RZ40; RZ80), располагая их на поле чертежа при помощи функции Standalone Symbol (см. рис. 6.69). Рис. 6.69. Символы шероховатости, добавленные из библиотеки Теперь создадим аналогичную библиотеку условных обозначений другим способом. Открываем файл Ra-Rz.prt . Удаляем все текстовые наслоения (Edit → Delete), оставив одну надпись. При помощи текстового редактора изменим оставшийся текст на «Rz XX». С помощью функции Preferences → Annotation (закладка Lettering) проверяем, где находится точка позиционирования текста. Редактируем так, чтобы текст позиционировался по нижнему правому углу. Вызываем из главного меню File → Utilities → Create Custom Symbol. Появляется меню Create Symbol, в котором можно или создать новую библиотеку символов или добавить символ в уже существующую. Чтобы добавить символ, нужно курсором выбрать название библиотеки в списке и нажать иконку New Symbol. В раскрывшейся библиотеке появится новый элемент, названный по имени файла. Имя символа можно изменить в окне Symbol Title (см. рис. 6.70). Рис. 6.70. Другой способ создания библиотеки символов Создаем иконку символа, с помощью которой будет происходить выбор символа из библиотеки. Обращаемся к операции Capture Symbol Image. Тип курсора изменился. Нажав левую кнопку мыши и не отпуская ее, окном указываем, какая часть экрана станет иконкой символа. Теперь указываем, какие объекты войдут в символ. Курсором выбираем оба отрезка и надпись. При выборе первого отрезка на нем появился символ точки привязки, так называемый якорь (Anchor). В окне у создаваемого символа появилась его структура. Сейчас это два узла: Anchor и Change It. Выбираем узел Anchor, устанавливаем метод выбора точки End Point и указываем общую конечную точку двух отрезков. Символ «якорь» переместился в указанную точку (см. рис. 6.71). Выбираем узел Change It. Вместо строки метода выбора точки появляется строка выбора типа текста: Text Type. Устанавливаем тип Controlled (управляемый). Появляется окно с иконкой текстового редактора Annotation Editor. Рис. 6.71. Определение точки привязки символа Обращаемся к функции текстового редактора. Набираем через Enter несколько надписей: 1,25 ; 2,5 ; Rz 20 ; Rz 40 ; Rz 80. OK (см. рис. 6.72). Рис. 6.72. Определение текстового набора Обращаемся к иконке функции Save Symbol to Library. Последовательность расположения символов в библиотеке можно изменить. Для этого курсором нужно выбрать название символа и, не отпуская левой кнопки мыши, переместить символ в общем списке. Cancel. В процессе создания символа можно добавить к нему правую или левую выноску. Для этого нужно установить курсор на названии символа и обратиться к иконке Add Left (или Right) Leader Connection. Созданные символы используются при оформлении чертежа путем обращения к функции Insert → Custom Symbol (или к иконке перечня Change It. ). Текст в символе будет тот, который выбран в строке выпадающего Программирование в Unigraphics UG/Open «Любой и каждый может свести лошадь к водопою. Но если вы научили ее плавать на спине – считайте, что добились определенных результатов!» Критерий Хартли. «Законы Мерфи». Каждый пользователь, освоив интерактивные средства моделирования, формирования сборочных узлов, оформления конструкторской документации, в процессе решения практических, порой весьма нетривиальных задач сталкивается с потребностью дополнить возможности системы новыми функциями для решения таких задач или автоматизации выполнения повторяющихся процедур. Очень часто требуется интегрировать Unigraphics с различными специализированными приложениями, предназначенными для проведения расчетов. При этом геометрия, сформированная в UG, может выступать в качестве исходной информации для выполнения анализа, или, наоборот, Unigraphics возьмет на себя функции отображения сгенерированной приложением геометрии в модельном пространстве. Модули UG/Open Для решения подобных задач Unigraphics располагает достаточно развитыми возможностями модуля UG/Open API (Application Program Interface), реализованного на принципах открытой архитектуры и предоставляющего доступ к объектам геометрической модели для программных приложений разработчиков или программ отдельных пользователей. UG/Open дает возможность программным способом создавать геометрические модели, получать информацию об объектах, формировать сборки, генерировать чертежную документацию и т.д. Практически все функциональные возможности Unigraphics, доступные пользователю при интерактивном взаимодействии с системой, реализуемы посредством функций API. Однако обратное утверждение неверно – существует ряд объектов (например, Custom Objects – Объекты Пользователя ), формирование которых возможно только программным способом. Модуль UG/Open включает в себя следующие программные интерфейсы: UG/Open API (User Function) Реализует взаимодействие Unigraphics и программ пользователя, написанных на языке С. Заголовочные файлы (.h) соответствуют требованиям стандарта ANSI C и поддерживают разработку программ с использованием языка С++. В зависимости от способа построения программа пользователя может выполняться как внешнее (External) или как внутреннее (Internal) приложение. В первом случае программа запускается средствами операционной системы как независимое приложение или как процесс, порожденный Unigraphics. Так как внешнее приложение не имеет средств графического вывода, ему доступны функции вывода на печатающие устройства и формирования CGI-файла. Во втором случае программа может быть запущена только из текущей сессии Unigraphics. Она загружается в пространство процесса и может выть остановлена (выгружена) только соответствующими командами API, а все результаты работы программы отображаются в графическом окне Unigraphics. UG/Open GRIP Сокращение GRIP соответствует Graphics Interactive Programming (Язык интерактивного графического программирования). Это интерпретируемый язык, использующий инструкции, во многом сходные с такими некогда популярными языками как BASIC или FORTRAN. Программы, реализованные на языке GRIP, имеют доступ к внутренним программам UG/Open API. В свою очередь, любая GRIP-программа может быть запущена из приложения UG/Open API. UG/Open GRIP NC Специализированное расширение языка GRIP для формирования управляющих программ движения инструмента станков с ЧПУ модуля UG/Manufacturing. UG/Open MenuScript Позволяет пользователям и разработчикам программного обеспечения посредством редактирования текстовых ASCII-файлов изменять меню Unigraphics и создавать собственные меню и панели инструментов, интегрированные с их собственными приложениями. Инструментарий MenuScript доступен также программным способом через функции UG/Open API, описанные в заголовочном файле uf_mb.h. UG/Open UIStyler Позволяет формировать диалоговые окна и панели Unigraphics. Следует отметить, что система лицензирования Unigraphics разделяет права пользователя как на создание приложений UG/Open, так и на их запуск и исполнение (за соответствующими разъяснениями рекомендуем обратиться к Вашему поставщику Unigraphics). Описание работы с модулями UG/Open GRIP NC, UG/Open MenuScript, UG/Open UIStyler выходит за рамки данной книги, а о написании программ пользователя с использованием языков С и GRIP мы поговорим подробнее. С чего начать? В чем отличие UG/Open GRIP и UG/Open API и в каких ситуациях применять то или иное средство разработки собственных приложений? Если нужно быстро, что называется, «на скорую руку» написать небольшое приложение, но вы не располагаете опытом программирования и самым большим вашим достижением была BASIC-программа из нескольких строк, выводящая на экран приветствие «Hello, World!», - начните с разработки GRIPпрограммы. Для этого не потребуется привлекать какие-либо среды разработки типа Microsoft Visual C++: весь необходимый набор инструментов для компилирования и построения исполняемой GRIP-программы поставляется вместе с системой Unigraphics. При этом и сам исходный код приложения, и способ его создания будут абсолютно одинаковы как для платформы Windows NT/2000, так и для UNIX-станций Hewlett-Packard, IBM, Sun, SGI и др. Однако следует помнить, что GRIP – интерпретируемый язык. Программы, написанные на нем, выполняются достаточно медленно и малопригодны для обработки больших объемов данных, для реализации итерационных расчетных процессов или для моделирования методом Монте-Карло, когда для получения достоверной картины имитируемого процесса требуется произвести огромное количество вычислительных операций. GRIP не располагает процедурами высвобождения используемой памяти, поэтому после запуска программы итерационные процессы постепенно снижают скорость работы. В отличие от GRIP-программ приложения, реализованные на языках С или С++, подключаются к Unigraphics в виде динамически подгружаемых библиотек DLL (Dynamic Link Library), выполняются очень быстро и в процессе разработки предоставляют пользователю весь потенциал языка С для управления памятью и ресурсами. Конечно же, для создания приложений с использованием UG/Open API требуется опыт написания программ на языке С, навыки работы в среде разработки программ Microsoft Visual C++. Поэтому для создания серьезных приложений разумно поручить работу по реализации программы квалифицированному программисту, а постановку задачи – инженеру, хорошо понимающему суть решаемой проблемы. Достаточно же простые приложения сможет написать любой программист, когда-либо создававший программы, подобные той, что выводит на экран пресловутое «Hello, world!». Для разработки приложений UG/Open++ на рабочих станциях под управлением Unix потребуется наличие соответствующих платформе компиляторов: Платформа Компилятор IBM/AIX Не поддерживается Hewlett-Packard (HP) ACC (A.01.12) или ACC (A.01.18) Digital UNIX (DUX) Не поддерживается Silicon Graphics (SGI) CC (7.2.1) Sun CC (4.2) Windows/NT Microsoft Visual C++ 6.0 (service pack 3) UG/GRIP Целью данного раздела не является детальное описание функций, используемых при разработке программного приложения к системе. В руководстве пользователя Unigraphics оно занимает не одну сотню страниц. По собственному опыту мы можем утверждать, что наиболее трудным в разработке самой первой, самой простой программы является понимание правил компилирования и построения исполняемого модуля, подключения приложения к Unigraphics и его запуска. Именно эти вопросы мы рассмотрим детально. Программная оболочка GRADE Для создания программы, ее компиляции и формирования исполняемого модуля пользователю Unigraphics предлагается GRip Advanced Development Environment (GRADE) – интегрированная среда разработки. Искушенные программисты могут посетовать на небогатый, на первый взгляд, набор функций этой программной оболочки. Однако, независимо от типа рабочей станции (РС или Unix-машина) и операционной системы (Windows, IRIX, Solaris и т.д.), это окружение будет выглядеть абсолютно одинаково, а исходный код GRIP-программ, созданный на одной платформе, после перекомпиляции работоспособен на любой другой. Следует отметить, что в системе Unigraphics отдельно предоставляется лицензия как на средства разработки (GRIP Development) GRIP-приложений, так и на запуск (GRIP Execute) исполняемых программ. Поэтому, прежде чем приступить к созданию собственной GRIP-программы, узнайте у вашего поставщика Unigraphics, располагаете ли вы лицензией на разработку и запуск GRIP-программ. Запустить программную оболочку GRADE можно из меню рабочего стола Windows Start->Programs>Unigraphics v18.0-> Unigraphics Tools->UG Open GRIP (см. рис. 7.1). Рис.7.1 Запуск программной оболочки GRAD. Рис.7.2 Программная оболочка GRADE после запуска GRADE содержит 10 пунктов меню (см. рис. 7.2). Назначение некоторых из них мы рассмотрим подробно. Edit Создание нового файла с исходным текстом GRIP-программы, вызов на редактирование существующего файла. В соответствии с принятыми обозначениями для типов файлов Unigraphics файлы с исходным кодом GRIP-программ имеют расширение .grs, а для их редактирования в операционной системе Windows NT/2000 используется простейший текстовый редактор Notepad. Изменить тип текстового редактора можно с помощью 8-го пункта меню change editor. При этом путь к исполняемому файлу нового текстового редактора должен быть включен в системную переменную Windows PATH. Compile Компилирование исходного текста программы или подпрограмм на языке GRIP и получение объектного кода. Файлы, получаемые в результате компиляции, имеют расширение .gri. В процессе компиляции на экран выводится содержимое исходного файла и сообщения о возможных ошибках в тексте программы. Управлять количеством информации, выводимой на дисплей, можно с помощью 7-го пункта меню Compile listing, а 6-й пункт меню (Send output to) определяет устройство, на которое выводится информация – это может быть экран компьютера, принтер или текстовый файл. Если вы не располагаете лицензией на разработку GRIP-программ, то при попытке произвести компиляцию созданного приложения оболочка GRAD выведет следующее сообщение (см. рис. 7.3): Рис.7.3 Сообщение об ошибке: отсутствует лицензия на модуль Link Формирование исполняемого файла GRIP-программы, которая может состоять из одного модуля или включать несколько подпрограмм. Исполняемые файлы, готовые к запуску в сеансе Unigraphics, имеют расширение .grx. Change directory Этот пункт меню изменяет имя текущей папки, в которой размещены файлы с исходными текстами и в которой будут сохраняться результаты компилирования программ и исполняемые файлы. Соответственно, пункт меню List directory позволяет просмотреть содержимое текущей папки с применением фильтра по типу файлов (.grs, .gri, .grx). Turn menu on/off Для пользователей, достаточно «набивших руку» в использовании программной оболочки GRADE, может оказаться полезной отмена вывода перечня пунктов меню на экран с сохранением только строки ввода команд. Инструкция языка GRIP Любая GRIP-программа должна содержать три обязательные части: объявления или определения, инструкции и завершение программы. Объявления производятся при помощи четырех ключевых слов (ENTITY, STRING, NUMBER, DATA), которые определяют переменные и их исходные значения для использования в инструкциях программы. Эти объявления резервируют память под числовые значения, объекты, строковые переменные. Например, для определения строковой переменной длиной 30 символов необходимо использовать ключевое слово STRING следующим образом: STRING/STR(30) Инструкции GRIP-программы записываются с помощью ключевых слов языка (например: LINE, CIRCLE) и чаще всего используются для создания и манипулирования графическими объектами, вывода сообщений, управления файлами и т.п. Следующий пример демонстрирует построение четырех линий в форме прямоугольника. Программа содержит объявления переменных (LN1, LN2, LN3, LN4), которым будут соответствовать создаваемые линии и инструкции для их построения. Эта программа создает один и тот же прямоугольник, независимо от того, сколько раз она будет запущена, так как числовые значения координат вершин жестко определены в ее коде. Позже, при создании программы построения параллелограмма, мы введем дополнительное диалоговое окно для ввода числовых параметров геометрической фигуры. ENTITY/LN1, LN2, LN3, LN4 LN1=LINE/0,0,0,2,0,0 LN2=LINE/2,0,0,2,2,0 LN3=LINE/2,2,0,0,2,0 LN4=LINE/0,2,0,0,0,0 Для корректного завершения каждая GRIP-программа должна заканчиваться инструкцией HALT. ENTITY/LN1, LN2, LN3, LN4 LN1=LINE/0,0,0,2,0,0 LN2=LINE/2,0,0,2,2,0 LN3=LINE/2,2,0,0,2,0 LN4=LINE/0,2,0,0,0,0 HALT Любая последовательность символов в пределах строки после $$ игнорируется компилятором и может использоваться для комментирования и документирования программы. По мере необходимости мы познакомимся и с другими инструкциями языка GRIP, которые потребуются для написания нашего приложения (для более детального знакомства с языком GRIP обратитесь к документации Unigraphics). Создаем первую GRIP-программу В качестве первого упражнения предлагаем вам написать небольшую программу на языке GRIP, выполняющую построение параллелограмма по введенным значениям длины основания, высоты, угла при вершине и угла поворота параллелограмма (см. рис. 7.4). Разумеется, эту геометрическую фигуру можно построить с помощью имеющихся интерактивных средств моделирования, но применение средств UG/Open GRIP даже для решения такой простой задачи дает заметный выигрыш во времени и сокращает количество интерактивных действий. Рис.7.3 Схема построения паралеллограмма Ниже приведен полный исходный текст программы PLOGRAM.GRS. $$ Программа: PLOGRAM.GRS $$ $$ Описание: Программа построения параллелограмма в указанной точке $$ по длине основания, высоте, угле при вершине $$ $$ История разработки: 11-мая-2002 $$ Требуемые подпрограммы: (нет) $$ $$ Автор : Ю. Чигишев $$ Компания: Consistent Software $$ Адрес : Москва, Токмаков пер., 11 $$ Телефон : (095) 913-2222 $$ e-mail : jura@csoft.ru $$ $$ Операционная система: Windows 2000, Unigraphics v18.0 $$ NUMBER/A1,B,H,RESP,ROT,X,Y,Z ENTITY/L(9),P(5) DATA/A1,100.0,B,120.0,H,50.0,ROT,20.0 BEG:GPOS/'Укажите точку вставки', X, Y, Z, RESP JUMP/BEG:,ENDD:,,,,,RESP PAR:PARAM/'Введите значения','Длина основания',B, $ Ввод параметров 'Высота',H,'Угол при вершине',A1,'Угол поворота',ROT,RESP IF/A1*B*H,,,TST: MESSG/'Недопустимые параметры' JUMP/PAR: TST:IF/90-ROT, ,NXT:,NXT: $$ Test Rot Angle MESSG/'Угол поворота слишком велик' JUMP/PAR: NXT:DRAW/OFF $$ Запрет отрисовки P(1)=POINT/X,Y,Z L(1)=LINE/P(1),ATANGL,A1+ROT P(2)=POINT/P(1),POLAR,B,ROT L(2)=LINE/P(1),P(2) L(3)=LINE/PARLEL,L(2),5,H P(3)=POINT/INTOF,L(1),L(3) $$ Определение точки пересечения двух линий L(4)=LINE/P(2),PARLEL,L(1) P(4)=POINT/INTOF,L(3),L(4) DELETE/L(1..4) L(5)=LINE/P(1),P(2) L(6)=LINE/P(2),P(4) L(7)=LINE/P(4),P(3) L(8)=LINE/P(3),P(1) DRAW/L(5..8) DELETE/P(1..4) JUMP/BEG: ENDD:HALT $$ Удаление вспомогательных линий $$ Отрисовка линий по 4-м точкам $$ Отрисовка параллелограмма $$ Удаление вспомогательных точек Рассмотрим более подробно алгоритм работы программы и операторы, выполняющие различные действия. NUMBER/A1,B,H,RESP,ROT,X,Y,Z Следующие за ключевым словом NUMBER имена переменных соответствуют определенным числовым значениям, причем безразлично, является ли это число целым, вещественным, одинарной или двойной точности. В зависимости от присваиваемого значения переменная будет соответствовать тому или иному типу числовых данных. В нашем примере переменной A1 соответствует значение угла при вершине параллелограмма. В – это длина основания, Н – высота параллелограмма, ROT – угол поворота параллелограмма, переменные X, Y, Z будут использованы в промежуточных вычислениях, а переменная RESP – целочисленная величина, которой будут присваиваться коды завершения операций. ENTITY/L(9),P(5) Ключевое слово ENTITY объявляет переменные, которые будут соответствовать геометрическим объектам модельного пространства Unigraphics. Так же, как и в случае с числовыми данными, объекту типа ENTITY может соответствовать точка, линия, кривая, поверхность, твердотельная модель. В нашей программе объявлены 9 объектов L (им будут соответствовать отрезки прямых линий) и 5 объектов P, которые определяют точки, участвующие во вспомогательных построениях. Переменные типа NUMBER или ENTITY могут образовывать массивы, однако размерность их не может превышать 3. Например, объявление NUMBER/NUM(3) определяет три числовых значения, которые образуют одномерный массив, и числовые значения могут быть присвоены элементам массива NUM(1), NUM(2) и NUM(3). Строковые переменные объявляются оператором STRING. Еще небольшое замечание. Все необъявленные переменные трактуются интерпретатором языка GRIP как «простые» (simple), и им могут быть присвоены только числовые значения. Попытка назначить соответствие необъявленной переменной какому-либо геометрическому объекту приведет к сообщению об ошибке в процессе компиляции. Пример программы (он не имеет отношения к нашей задаче построения параллелограмма) приведен ниже : NUMBER/NUM(3) SIZE=.25 NUM(1)=1.0625 NUM(2)=2.25 NUM(3)=1 HALT Переменная SIZE в этом примере не объявляется, ей просто присваивается числовое значение. DATA/A1,100.0,B,120.0,H,50.0,ROT,20.0 Первоначальные значения переменным, которые объявлены как NUMBER или STRING, могут быть присвоены оператором DATA. В нашем примере всем геометрическим размерам будущего прямоугольника назначаются произвольные величины, а чуть позже мы предложим пользователю ввести нужные значения в соответствующие поля диалогового окна. Если не произвести предварительную инициализацию переменных, диалоговое окно будет содержать их случайные значения. Кроме того, с помощью оператора DATA очень удобно производить начальные присвоения массивов. Переменные объявлены, начальные значения присвоены – приступим к реализации процесса построения параллелограмма. Условимся, что все наши построения происходят в плоскости X-Y текущей системы координат, и прежде всего необходимо определить геометрическое положение вершины параллелограмма. Для этого можно было бы предложить диалоговое окно для ввода координат X и Y для вершины, но есть способ лучше. Язык GRIP предлагает воспользоваться вызовом стандартной процедуры Unigraphics для задания координат точки всеми доступными в интерактивном режиме способами (диалоговое окно Point Constructor) (см. рис. 7.5). Вызов осуществляется при помощи оператора GPOS, описание которого приведено ниже. BEG:GPOS/'Укажите точку вставки', X, Y, Z, RESP Рис. 7.5. Диалоговое окно Point Constructor В нашем примере непосредственно оператору GPOS предшествует метка BEG, и, прежде чем продолжить описание оператора GPOS, скажем несколько слов о использовании меток в языке GRIP. Этот язык не обладает столь же мощными средствами структурирования программы, как, например, С или С++, и для организации условных и безусловных переходов внутри программы очень широко задействован механизм перехода к строке, обозначенной какой-либо меткой в зависимости от выполнения ряда условий. В качестве метки может выступать любая буквенно-цифровая комбинация из 6 символов, но в качестве первого символа обязательно должна применяться буква. У многих программистов считается дурным тоном использование инструкций безусловного перехода вида goto (в языке GRIP эта инструкция имеет вид JUMP/метка: ), но в языке GRIP этот прием достаточно часто применим. Он встретится и в нашей простейшей программе. Наверное, этого способа передачи управления в программе можно было бы избежать, но иногда для простоты реализации можно воспользоваться и им. Рис. 7.6. Подсказка об указании точки вставки Итак, вернемся к строке, помеченной меткой BEG, и продолжим знакомство с оператором GPOS. За ключевым словом GPOS после символа «/» следует ряд обязательных параметров, первый из которых – заключенное в кавычки сообщение, выводимое в строке подсказки графического окна Unigraphics в момент активизации диалога Point Constructor. В нашем случае в качестве подсказки пользователь увидит сообщение «Укажите точку вставки» (см. рис. 7.6) и далее – подсказки уже от диалога Point Constructor для определения координат точки. Мы использовали строку на русском языке. При работе на платформе Windows NT/Windows 2000 с поддержкой русского языка в строке подсказки Unigraphics будет выведено сообщение на русском языке. Однако, даже попытка скомпилировать на Unix-станциях программу, включающую кириллические символы, может закончиться неудачей (хотя многие разновидности операционной системы Unix поддерживают русский язык). Поэтому, при всем уважении к родному языку, советуем вам использовать для заголовков диалоговых окон, сообщений или подсказок строки на английском языке. Кроме того, руководство по языку GRIP настоятельно не рекомендует использовать символ “*” в заголовках, сообщениях и т.п. Категорически не рекомендуется использовать в тексте подсказки символ «*». Для корректного выполнения оператора GPOS требуется наличие активной модели (Part), невыполнение этого условия приведет к сообщению об ошибке (см. рис. 7.7). Рис. 7.7. Сообщение об отсутствии активной модели Unigraphics Далее в операторе GPOS следуют ранее декларированные переменные X, Y, Z, которым будут присвоены числовые значения координат, определенных пользователем при помощи диалога Point Constructor. Обратите внимание: несмотря на то что мы строим плоскую геометрическую фигуру, координаты вершины определяются в трехмерном пространстве. Последний параметр – целочисленная переменная RESP, которой, в зависимости от действий пользователя при RESP Значение Кнопка Back 1 Кнопка Cancel 2 Кнопка OK 3 Не используется 4 Координаты определены 5 завершении работы с диалогом Point Constructor, присваивается определенное значение (см. таблицу). Например, введя координаты точки, пользователь нажал кнопку OK - переменная RESP приобретает значение 3. Если же пользователь в качестве привязки выбрал, например, концевую точку существующей линии, диалог Point Constructor завершит работу с присвоением переменной RESP значения 5. В зависимости от значения переменной RESP следующий оператор условного перехода в нашей программе направит выполнение программы по тому или иному пути. Рассмотрим его подробнее: JUMP/BEG:,ENDD:,,,,,RESP В первую очередь обратите внимание на последний параметр этого оператора – целочисленную переменную RESP. Значение этой переменной определяет порядковый номер метки, которой будет передано дальнейшее управление программой. В нашей программе в результате выполнения предыдущего оператора GPOS переменная RESP может принимать целые значения от 1 до 5. Соответственно, в операторе JUMP, перед параметром RESP, следует указать 5 меток, которым и будет передаваться управление программой в зависимости от значения переменной RESP. Например, при нажатии кнопки Back в диалоге Point Constructor переменная RESP принимает значение 1 и оператор JUMP передаст управление программой строке с меткой BEG:, которая еще раз предложит пользователю определить координаты вершины параллелограмма. Напротив, при нажатии кнопки Cancel (RESP = 2), завершение всей программы будет прервано, так как вторая метка в нашем операторе JUMP отправляет программу на последний оператор HALT, который завершает работу любой GRIP-программы. Если нам безразличны остальные значения переменной RESP, соответствующие этим значениям метки можно не указывать, заменив их парой запятых. При этом управление передается оператору, следующему за оператором JUMP. К тому же результату приведет нулевое значение переменной RESP. В любом случае, общее количество параметров должно соответствовать возможным принимаемым значениям последнего параметра оператора JUMP. По правилам языка GRIP оператор условного перехода может содержать до 43 меток, которым может быть передано управление. Этого количества более чем достаточно, однако рекомендуем вам использовать не более пяти меток в одном операторе JUMP. В качестве переменной RESP в операторе JUMP может выступать любое вычисляемое выражение, например X+Z). От результата вычисления берется целая часть, и управление передается метке с соответствующим порядковым номером в строке оператора JUMP. Однако пользоваться таким управлением следует осторожно. Мы достаточно подробно рассмотрели оператор условного перехода, в языке GRIP он применяется несколько своеобразно. Переходим к следующему оператору в нашей программе: PAR:PARAM/'Введите значения', 'Длина основания', B, $ Ввод параметров 'Высота', H, 'Угол при вершине', A1,'Угол поворота', ROT, RESP Сам оператор имеет ключевое слово PARAM, назначение метки PAR мы поясним чуть позже. При выполнении этого оператора GRIP-программа предлагает пользователю ввести определенные параметры в диалоговом окне (см. рис. 7.8). Рис. 7.8. Диалоговое окно для ввода параметров и строка подсказки Первый из параметров оператора PARAM – сообщение длиной до 40 символов, выводимое в строке состояния графического окна Unigraphics. Далее парами следуют названия предлагаемых полей ввода числовых значений и имена переменных, которым эти значения будут присвоены. GRIP позволяет создавать диалоговые окна, содержащие до 14 полей ввода, названия которых могут содержать до 15 символов. Оператор PARAM может оказаться достаточно длинным, и для его записи в несколько строк можно воспользоваться символом “$”. Обратите внимание: начальные значения переменных в полях ввода соответствуют значениям, присвоенным оператором DATA. В рассматриваемом примере все числовые значения имеют вещественный тип, и в поле ввода они отображаются с десятичной точкой и дробной частью. Оператор PARAM позволяет определить вводимый тип данных как целое при помощи специального ключевого слова INT. В этом случае в поле ввода число будет отображаться без десятичного разделителя. Пример записи оператора в этом случае выглядит следующим образом: PARAM/'Введите число повторений', 'Количество', INT, B, RESP Категорически не рекомендуется использовать в названиях полей ввода и строке подсказки символ «*». Для корректного выполнения оператора PARAM требуется наличие активной модели (Part). Невыполнение этого условия приведет к сообщению об ошибке. RESP Значение Back 1 Cancel 2 OK 3 Выводимое диалоговое окно имеет три кнопки: Back, Cancel и OK. В зависимости от того, какую кнопку нажмет пользователь, переменной RESP присваиваются следующие значения (см. таблицу). Честно говоря, переменная RESP может принимать значение RESP = 4, но рассмотрение таких случаев выходит за рамки нашего примера (подробнее о работе оператора PARAM см. в документации по UG/Open). В данном случае нас не интересует, какую именно кнопку нажмет пользователь, изменит ли он значения геометрических параметров, –мы будем проверять именно корректность введенных данных. Естественно, что длина стороны параллелограмма, его высота, угол при вершине не могут иметь нулевые или отрицательные значения, поэтому используем оператор условного перехода другого типа, с классическим ключевым словом IF: IF/A1*B*H,,,TST: В общем виде оператор IF имеет следующую форму записи: IF/[Выражение], label1, label2, label3 В зависимости от значения вычисляемого выражения управление программой будет передано оператору с соответствующей меткой. Если результат вычисления отрицательный – управление передается оператору с меткой label1, если результат равен нулю – выполняется оператор с меткой label2, а в случае положительного значения результата вычисления выражения происходит переход к строке с меткой label3. Если какая-либо из трех меток в записи оператора отсутствует, управление передается оператору, следующему за оператором IF. В нашей программе в качестве вычисляемого выражения оператора IF представлено произведение переменных A1, B, H (угол при вершине, длина стороны и высота соответственно), и в случае ввода отрицательных или нулевых значений для какого-либо геометрического параметра результат вычисления выражения будет нулевым или отрицательным. А так как первая и вторая метка в нашем операторе IF отсутствуют, происходит переход к следующему оператору, который выводит сообщение о неверно введенных значениях (см. рис. 7.9): MESSG/'Недопустимые параметры' Рис. 7.9. Сообщение о вводе недопустимых параметров Сообщения в GRIP выводиться в модальное окно. Это означает, что программа приостанавливает свое выполнение до закрытия окна. В нашем примере после закрытия окна следует безусловный переход к оператору, помеченному меткой PAR. Пользователю предлагается исправить неверно введенные параметры. Если же введенные параметры - положительные величины, переходим к оператору с меткой TST. Здесь происходит проверка введенного значения угла поворота. Предлагаем читателю самостоятельно разобрать логику работы этого участка программы. Мы же перейдем сразу к оператору с меткой NXT: NXT:DRAW/OFF Действие оператора DRAW с параметром OFF очень простое. Начиная с этого момента запрещен вывод любой геометрической информации в графическое окно Unigraphics, чтобы скрыть промежуточные, вспомогательные построения. А далее начинается самое интересное: построение геометрических примитивов – вспомогательных точек, линий! P(1)=POINT/X,Y,Z В разделе объявлений программы был объявлен массив из 5-и точек. Приведенный выше оператор производит построение первой из них с координатами X, Y, Z, которые были определены при помощи оператора GPOS. Это самый простой способ построения точки с известными координатами. Средства языка GRIP позволяют программным способом реализовать практически все способы интерактивного построения точек, часть которых представлена в таблице: Оператор Описание POINT/X,Y,Z Построение точки по известным координатам X, Y, Z POINT/CENTER,circle Построение точки в ценре существующей окружности circle POINT/INTOF,obj1,obj2 Построение точки пересечения двух объектов. В качестве первого объекта obj1 должна выступать кривая, а второй объект obj2 может быть кривой, плоскостью, гранью твердого тела (подробнее о параметрах см. в документации UG/Open). POINT/point,VECT,line,dist Построение точки на заданном расстоянии dist от существующей точки point в направлении вектора, параллельного существующей линии line. POINT/circle,ATANGL,angle Построение точки по заданному угловому положению angle на окружности circle. POINT/point,DELTA,dx,dy,dz Построение точки в виде смещения от существующей точки на заданные расстояния по X, Y, Z. POINT/ENDOF,"PMOD3",obj Построение концевой точки линии, кривой. POINT/point,POLAR,dist,angle Построение точки в виде смещения от существующей точки в полярных координатах (по углу и расстоянию) L(1)=LINE/P(1),ATANGL,A1+ROT От первой построенной точки – вершины будущего параллелограмма - проводим линию под углом, величина которого равна сумме угла при вершине и угла поворота параллелограмма. Обратите внимание: длина этой линии нами не определяется; в данном случае объект L(1) – луч, имеющий начало в точке P(1) и уходящий в бесконечность (конечно же, в пределах модельного пространства Unigraphics!) (см. рис. 7.10). Это одна из причин, по которой полезно временно отключить вывод геометрических объектов на экран. Рис. 7.10. Определение луча, проходящего через заданную точку, под определенным углом P(2)=POINT/P(1),POLAR,B,ROT Вторую точку P(2) построим, применяя смещение от вершины в полярных координатах на угол поворота параллелограмма и на расстояние, равное длине основания (см. рис. 7.11). Рис. 7.11. Задание основания параллелограмма L(2)=LINE/P(1),P(2) Строим линию L(2), соединяющую точки P(1) и P(2). L(3)=LINE/PARLEL,L(2),5,H Проводим линию L(3) параллельно линии L(2) на расстоянии H (высота параллелограмма) (см. рис. 7.12). Обратите внимание на третий параметр оператора с ключевым словом LINE – целое число 5. Дело в том, что при построении линии, параллельной заданной на определенном расстоянии, необходимо указать, с какой стороны провести эту линию. Чтобы не приостанавливать выполнение программы и не спрашивать пользователя о том, с какой стороны провести линию (принципиально это возможно, но мы же хотим построить параллелограмм автоматически!), язык GRIP предлагает использование так называемых пространственных модификаторов и соответствующих им числовых кодов: XSMALL - 1 - PMOD2/PMOD3 XLARGE - 4 - PMOD2/PMOD3 YSMALL - 2 - PMOD2/PMOD3 YLARGE - 5 - PMOD2/PMOD3 ZSMALL - 3 - PMOD3 ZLARGE - 6 - PMOD3 В нашем примере мы использовали модификатор YLARGE (код 5), проще говоря, предлагаем провести параллельную линию в сторону больших координат Y относительно линии L(2). Рис. 7.12. Задание стороны, параллельной основанию P(3)=POINT/INTOF,L(1),L(3) L(4)=LINE/P(2),PARLEL,L(1) Находим точку пересечения линий L(1) и L(3) – точку P(3) и проводим через точку P(2) линию L(4), параллельную линии L(1) (см. рис. 7.13). Рис. 7.13. L(4) – четвертая сторона параллелограмма P(4)=POINT/INTOF,L(3),L(4) DELETE/L(1..4) L(5)=LINE/P(1),P(2) L(6)=LINE/P(2),P(4) L(7)=LINE/P(4),P(3) L(8)=LINE/P(3),P(1) Далее находим точку пересечения линий L(3) и L(4) – точка P(4). Удаляем вспомогательные построения – линии L(1), L(2), L(3), L(4), и строим «чистовые» линии (стороны нашего параллелограмма) L(5), L(6), L(7), L(8). Обратите внимание на способ записи в операторе DELETE списка объектов: указаны первый и последний элементы списка, которые разделены двумя точками. DRAW/L(5..8) DELETE/P(1..4) JUMP/BEG: Мы на финишной прямой – наконец-то выводим изображения построенных линий, удаляем вспомогательные точки и любезно предлагаем пользователю построить еще один параллелограмм, осуществляя переход к оператору определения вершины GPOS. Конечно же, пока мы только шаг за шагом «проиграли» алгоритм выполнения программы и познакомились с некоторыми операторами языка GRIP. Построение исполняемого GRIP-приложения Теперь поговорим о построении исполняемого модуля программы. Для этого снова запустим программную оболочку GRADE и с помощью 4-го пункта меню (change Directory) прежде всего изменим путь к папке, в которой сохранен исходный текст нашей программы PLOGRAM.GRS (лучше избегать в именах папок и файлов русскоязычных названий или имен, содержащих пробелы). Убедитесь в том, что программа существует в этой папке. Для этого воспользуйтесь 5-м пунктом меню (list directory). Оболочка GRADE настроена по умолчанию таким образом, что она выводит на экран список всех файлов, имеющих расширение .gr*. Таким образом, в этот перечень попадают исходные тексты с расширением .grs, и скомпилированные объектные модули с расширением .gri, и исполняемые программы, имеющие расширение .grx. Предположим, вы сохранили исходный текст программы в файле с названием plogram.grs на диске D в папке grip. В этом случае команда list directory выведет на экран список, состоящий из одного файла (см. рис. 7.14). Рис. 7.14. Текущее приложение в окне Возвращаемся к основному меню (клавиша «ENTER») и приступаем к компиляции программы. Среда разработки GRADE позволяет компилировать сразу несколько файлов с исходными текстами. Наш проект состоит из одного файла и после выбора 2-го пункта меню (Compile) указываем имя файла plogram.grs (расширение .grs в имени файла можно опустить). Рис. 7.15. Программа выполнена без ошибок Компилятор анализирует каждую строчку программы и формирует достаточно обширный листинг, содержащий список всех переменных, меток и возможных ошибок. Если вы набирали исходный код программы вручную, ошибки вполне вероятны. В этом случае компилятор в листинге метит строку с неверной записью символом “*”. Если программа скомпилирована без ошибок, выводится сообщение «N GRIP PROGRAM COMPILED WITHOUT ERROR» (см. рис. 7.15). В результате в папке появляется файл со специальным объектным кодом, имеющий то же имя, что и файл с исходным текстом, и расширение .gri. При помощи 5-го пункта меню его можно увидеть в перечне файлов. Третий, заключительный этап – построение исполняемого модуля из одного или нескольких объектных файлов. На сленге программистов этот процесс называется линкированием, линкованием (от английского Link). В нашем примере основная программа не включает подпрограмм, весь исходный текст содержится в одном файле, и в результате компиляции сформирован один файл с объектным кодом. Для линкования выбираем 3-й пункт меню (Link) оболочки GRADE и указываем имя файла plogram.gri. Выводимый на экран листинг содержит перечень всех программных модулей, включаемых в исполняемое GRIP-приложение, сообщения об ошибках и другую полезную информацию. В случае успешного завершения процесса линковки, что подтверждается сообщением вида «N GRIP PROGRAM LINKED WITHOUT ERROR», создается исполняемый файл, имеющий расширение .grx. Надеюсь, ваши труды увенчались успехом и исполняемый модуль с именем plogram.grx успешно сформирован (см. рис. 7.16). Рис. 7.16. Сообщение об успешном завершении процесса Формирование исполняемого модуля из нескольких объектных модулей имеет ряд особенностей, которые подробно изложены в разделе документации UG/Open. Запуск GRIP-приложения Как запустить созданную программу в сеансе Unigraphics? Для этого запустите Unigraphics, создайте новый или откройте существующий Part-файл и выберите в меню File раздел Execute UG/Open. Далее выберите запуск GRIP-программы (см. рис. 7.17) либо в обычном режиме (пункт Grip…, ему соответствует комбинация горячих клавиш «Ctrl+G»), либо в режиме отладки (пункт Debug Grip…, комбинация горячих клавиш «Ctrl+Shift+G»). При любом способе запуска будет выведено стандартное окно Windows для выбора исполняемого файла с расширением .grx. Выберите программу plogram.grx – и стройте параллелограмм за параллелограммом! Рис. 7.17. Запуск GRIP-программы Запуск GRIP-приложения невозможен в том случае, если вы не располагаете лицензией на выполнение GRIP-программ (Grip Execute). При отсутствии лицензии на экран будет выведено примерно такое сообщение (см. рис. 7.18): Рис. 7.18. Сообщение об отсутствии лицензии на выполнение GRIP-программ При создании сложных, состоящих из нескольких модулей, GRIP-приложений может оказаться полезным запуск приложения в режиме отладки – Debug Grip (см. рис. 7.19). После выбора исполняемой программы пользователю будет предложено окно с командами отладки. В этом случае возможны пошаговый режим выполнения, получение информации о текущем состоянии переменных, включение точек приостановки программы (breakpoints), аварийное прерывание программы и другие полезные функции. Те программисты, которым потребуется режим отладки созданных ими GRIP-программ, без труда сумеют разобраться в его возможностях. Рис. 7.19. Отладка GRIP-программ Создаем панель инструментов для GRIP-программ Надеемся, что созданная вами GRIP-программа успешно заработала, прошли первые восторги и им на смену пришел вопрос: «Неужели каждый раз для построения параллелограмма необходимо пройти путь в меню File>Execute UG/Open->Grip, найти grx-файл в дебрях моего компьютера!? За что боролись?!». Комбинация горячих клавиш «Ctrl+G» мало спасает положение, поэтому предлагаем рассмотреть вопрос создания собственной панели инструментов, одна из кнопок которой будет активизировать наше GRIP-приложение для построения параллелограмма. Создаваемая нами панель инструментов будет выглядеть наподобие имеющихся в Unigraphics стандартных панелей (см. рис. 7.20) и может включать любое количество кнопок, каждая из которых активизирует пункт меню Unigraphics, программу UG/Open, GRIP-программу или макрос. Рис. 7.20. Пример панели инструментов Любая панель инструментов определяется в Unigraphics как внешний текстовый файл с расширением (.tbr), который содержит раздел описания заголовка панели инструментов и собственно раздел описания кнопок панели. Создадим в любом текстовом редакторе файл grip.tbr следующего содержания: !============================================== ! Панель инструментов для запуска GRIP-программ ! Название файла: grip.tbr ! TITLE GRIP-программы VERSION 170 BUTTON UG_GRIP_PLOGRAM LABEL Построение параллелограмма BITMAP D:\grip\bitmaps\plogram.bmp ACTION D:\grip\plogram.grx SEPARATOR BUTTON UG_FILE_RUN_GRIP LABEL Запуск Grip программы BITMAP D:\grip\bitmaps\grip.bmp BUTTON UG_FILE_RUN_GRIP_DEBUG LABEL Запуск Debug Grip BITMAP D:\grip\bitmaps\debug_grip.bmp !========= Конец файла =============== Панель инструментов, создаваемая этим файлом grip.tbr, имеет заголовок «GRIP-программы» и содержит две группы кнопок, разделенные сепаратором. Первая группа содержит всего одну кнопку, которой в качестве выполняемого действия определим запуск созданной нами программы построения параллелограмма plogram.grx. Во вторую группу входят две кнопки, одна из которых запускает выбранную пользователем GRIP-программу, а вторая производит те же действия в режиме отладки. Каждая кнопка имеет уникальный идентификатор BUTTON, определение всплывающей подсказки LABEL (она появляется в момент наведения указателя мыши на кнопку панели инструментов), определение BITMAP для изображения кнопки и описание выполняемого этой кнопкой действия ACTION. Для первой кнопки в качестве выполняемого действия определим запуск скомпилированного GRIP-приложения plogram.grx Поговорим несколько подробнее об изображении BITMAP для кнопок меню. Казалось бы, все просто: после определения BITMAP указан путь к bmp-файлу, который и будет выводиться в качестве изображения кнопки. Но Unigraphics позволяет отображать как стандартные панели инструментов, так и созданные пользователем с кнопками размерами 16x16, 24x24, 32x32 и 48x48 пикселей, причем как с цветными, так и монохромными. Для каждой кнопки должны быть представлены 4 растровых файла – монохромный 16х16, цветной 16х16, монохромный 24х24 и цветной 24х24. Изображения кнопок 32х32 и 48х48 формируются в системе Unigraphics автоматически. По причине вышеизложенного путь в определении BITMAP указывает путь к группе растровых bmp-файлов. В нашем примере определение plogram.bmp указывает на 4 файла: plogram_lm.bmp 24x24, монохромный (lm – Large, Monochrome) plogram_lc.bmp 24x24, цветной (lc – Large, Color) plogram_sm.bmp 16x16, монохромный (sm – Small, Monochrome) plogram_sc.bmp 16x16, цветной (sc – Small, Color) Создать bmp-файлы можно с помощью растрового редактора Paint (см. рис. 7.21) из стандартного набора инструментов Windows, или любого другого (Adobe PhotoShop, CorelDraw и т.п.). Ниже приведен пример создания изображения цветной кнопки 24х24 plogram_lc.bmp с использованием редактора Paint. Не судите строго художественные способности авторов. По замыслу эта фигура должна изображать параллелограмм. Пространство 24х24 (тем более 16х16) пикселя несколько сдерживает полет фантазии, и хорошо нарисованную пиктограмму можно рассматривать как произведение художественной миниатюры! Рис. 7.21. Использование графического редактора Paint для рисования пиктограмм Достаточно нарисовать цветные изображения кнопок 16х16 и 24х24, а затем средствами графического редактора создать их монохромные копии. Итак, для трех кнопок меню необходимо создать 12 bmp-файлов, имена которых формируются по описанным выше правилам. В результате, содержимое папки bitmaps выглядит так (см. рис. 7.22). Рис. 7.22. Необходимый набор пиктограмм Несколько слов об уникальном для каждой кнопки идентификаторе BUTTON. Если для первой кнопки, запускающей наше собственное приложение, его можно определить абсолютно произвольно, то для кнопок, которые дублируют стандартные пункты меню (File->Execute UG/Open->Grip… или Debug Grip...) идентификатор BUTTON должен соответствовать вполне определенному значению. Как узнать это значение? Для этого в меню Unigraphics выберите пункт Information->Custom Menubar->Report Tool…, укажите, что желаете получить полную информацию (пункт Complete Menubar) по основному меню Unigraphics (UG_GATEWAY_MAIN_MENUBAR) и нажмите кнопку «ОК» (см. рис. 7.23). Полный список всех разделов меню с идентификаторами BUTTON (Item) будет выведен в информационное окно (см. рис. 7.24). Список будет достаточно длинным, и для того, чтобы найти требуемый пункт меню, придется воспользоваться средствами поиска. В нашем примере интерес представляют строки с пунктами меню «Grip…» и «Debug Grip…». Рис. 7.23. Получение информации об идентификаторах основного меню Unigraphics Из полученного списка выбираем нужные пункты меню (Item) и их идентификаторы (например, UG_FILE_RUN_GRIP) вставляем как соответствующие идентификаторы BUTTON в наш файл панели инструментов grip.tbr. Обратите внимание, что при создании кнопки панели инструментов, которая дублирует пункт основного меню и вызывает стандартную процедуру Unigraphics, выполняемое действий ACTION не указывается. Рис. 7.24. Информация об идентификаторах меню Окончательно панель инструментов для запуска GRIP программ будет выглядеть следующим образом (см. рис. 7.25): Рис. 7.25. Вид панели инструментов для запуска GRIP-программ Мы сформировали файл нашей собственной панели инструментов. Конечно же, вы можете добавить в него и другие кнопки, создать вложенные, многоуровневые меню (см. документацию UG/CAD раздел Gateway/Toolbars) и назначить им соответствующее действие. Загрузка панели инструментов Загрузка и активизация созданных пользователем панелей инструментов может производиться двумя способами. 1. В меню Unigraphics выберите пункт View->Toolbars -> Customize… (см. рис. 7.26) Рис. 7.26. Размещение панели инструментов В предложенном диалоговом окне нажмите кнопку Load и выберите загружаемый файл панели инструментов (grip.tbr). В списке всех имеющихся в системе активных и скрытых панелей инструментов появиться название новой подгружаемой панели (в нашем примере - «GRIP-программы»). При первой загрузке панель автоматически появляется на экране, в дальнейшем (в пределах сеанса работы) она скрывается или отображается вновь с помощью флажка, расположенного слева от названия панели. Размещение панели инструментов в пределах окна Unigraphics подчиняется законам Windows, ее положение запоминается в системе, однако при следующем запуске Unigraphics процесс загрузки созданной пользователем панели инструментов придется повторить. 2. Для того чтобы пользовательская панель инструментов автоматически загружалась при каждом старте Unigraphics в файл custom_dirs.dat, находящийся в каталоге $UGII_BASE_DIR$\ugii\menus, включите путь к каталогу, в котором располагается папка sturtup, в которой, в свою очередь, сохранен файл с пользовательской панелью инструментов (grip.tbr). Обратите внимание: необходимо указать путь к папке startup, а не к файлу grip.tbr. Соответственно, если в папке startup находится несколько файлов (.tbr), все панели инструментов, определенные в этих файлах будут загружены. Ниже приведен фрагмент файла custom_dirs.dat, # Customers should feel free to edit this file. # #################################################################### # # Customer modifications can follow on here # D:\grip ########################### Конец файла ###################### Строго говоря, создание собственных панелей инструментов не относится к теме программирования на языке GRIP и вообще не входит в раздел UG/Open, но для рассказа о правилах построения пользовательских панелей инструментов этот раздел книги подходит как нельзя лучше. Позже мы добавим в эту панель кнопку для запуска приложения User Function. Если вам удалось повторить примеры, рассмотренные в книге, или заработала ваша первая, самостоятельно разработанная GRIP-программа – тогда знакомство с основами этого простого, но достаточно гибкого и мощного языка для создания собственных графических приложений можно считать состоявшимся. UG/Open User Function Общие положения UG/Open API (User Function) – это набор библиотек и подпрограмм, позволяющих внешнему приложению получить доступ к объектам модели Unigraphics. UG/Open API позволяет программным способом моделировать детали и сборки, выпускать чертежи, формировать модели по расчетам приложения. Практически все интерактивные функции Unigraphics доступны посредством UG/Open API, однако имеется целый класс объектов, формирование которых возможно только программным методом. В зависимости от способа построения программное приложение, созданное пользователем, может функционировать как внешнее или внутреннее. Внешнее (или независимое) приложение запускается как самостоятельный (stand alone) процесс средствами операционной системы или как процесс, порождаемый Unigraphics. Так как внешнее приложение не имеет средств отображения графической информации, единственно доступные в этом случае средства вывода – формирование CGI (Computer Graphic Metafile), файла, который затем можно просматривать средствами Unigraphics, или непосредственный вывод информации на внешнее устройство (принтер, плоттер). Главная отличительная особенность внешних приложений заключается в том, что для их запуска не требуется запуск собственно Unigraphics, в то же время, внешнее приложение имеет возможность открывать существующие модели Unigraphics и оперировать с содержащейся в них информацией. Внутреннее (или интегрированное) приложение может быть запущено только из активной сессии Unigraphics и загружается в основное пространство процесса Unigraphics. Будучи однажды загруженным в процесс Unigraphics, приложение резидентно остается в нем либо до прекращения сессии Unigraphics, либо до принудительной выгрузки из системы. Внутренние приложения, как правило, имеют меньший размер и большую скорость выполнения по сравнению с внешними приложениями. Кроме этого, результат работы внутреннего приложения отображается в графическом окне Unigraphics. UG/Open API имеет интерфейс языка С (стандарт ANSI); заголовочные .h-файлы поддерживают язык C++. Создаем проект UG/Open Для создания пользовательского приложения UG/Open необходимо наличие установленной на компьютере среды разработки приложений Microsoft Visual Studio C++ 6.0. В общем случае внутреннее приложение UG/Open представляет собой построенную по определенным правилам динамическую библиотеку DLL, подгружаемую к процессу Unigraphics, а внешнее приложение UG/Open – обычное 32разрядное EXE-приложение Windows. Рис. 7.27. Шаблон для Visual Studio C++ Для того чтобы облегчить пользователю процесс создания собственного приложения, в состав поставляемого программного обеспечения включен шаблон проекта Microsoft Visual Studio, применимый как для построения внешнего, так и внутреннего приложения UG/Open. Этот AWX-файл находится в папке $UGII_BASE_DIR$/UGOPEN (см. рис. 7.27) и в зависимости от установленной версии Unigraphics может иметь следующее название, например – UgOpen_v18.awx (для 18-й версии Unigraphics). Для использования этого шаблона в среде Microsoft Visual Studio необходимо скопировать файл UgOpen_v18.awx в соответствующую папку шаблонов; на нашем компьютере она имеет такое расположение C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Template. Все необходимые приготовления сделаны, и можно приступить к созданию первого приложения UG/Open User Function. В качестве примера позвольте предложить вам реализацию построения весьма замысловатой кривой, заданной параметрическим способом (x = x(t), y = y(t)). Формулы, определяющие эту кривую, позаимствованы из рубрики «Занимательный Компьютер» журнала Scientific American (№3, 1985 год). «Безумие» - именно такое название дали авторы журнала этой кривой. Действительно, несмотря на то, что кривая задается достаточно простыми формулами в полярной форме: x = sin(0.99t) – 0.7cos(3.01t); y = cos(1.01t) + 0.1sin(15.03t), где переменная t - угол по отношению к положительному направлению оси Х, радиус-вектор совершает 100 полных оборотов (что соответствует значению t=36000), прежде чем кривая замкнется, а полученная «осцилограмма» напоминает сеть, наброшенную на некий трехмерный объект. Воспроизвести такую кривую интерактивными методами просто нереально. Даже использование методов построения кривых по аналитическим законам не всегда поможет в подобных ситуациях – слишком велика общая длина кривой. Поэтому предлагаем построить ее из отрезков прямых линий и не просто построить изображение кривой на экране, а получить CLS-файл управляющей программы для фрезерногравировального станка с числовым программным управлением для последующей гравировки этого замысловатого узора на металле, стекле и т.п. Мы уже проделали такой эксперимент, результат гравировки алмазным резцом по стеклянной пластине – на приводимом снимке. Для создания приложения UG/Open запускаем Microsoft Visual Studio 6.0 и создаем новый проект: File -> New. В предлагаемом диалоговом окне выбираем закладку Projects и в качестве шаблона проекта указываем UG/OpenAppWizard V18 (см. рис. 7.28). Именно этот шаблон определяется файлом UgOpen_v18.awx. Определите папку (Location:), в которой будет размещен проект и дайте название создаваемому приложению (можете следовать приводимому примеру и назовите проект Mesh). Рис. 7.28. Выбор шаблона UG/Open Далее в действие вступает мастер (Wizard) формирования основы будущего приложения, и прежде всего вам будет предложено определить тип приложения (внешнее или внутреннее) и язык программирования (см. рис. 7.29)., с помощью инструкций которого приложение будет создаваться. Рис. 7.29. Выбор языка программирования Для нашего примера определяем тип создаваемого приложения как internal (внутреннее). Приложение активизируется подключением динамической DLL-библиотеки к процессу Unigraphics. В качестве языка программирования будем использовать классический язык С (для реализации нашего примера его возможностей вполне достаточно). Рис. 7.30. Определение способа активизации и выгрузки приложения Далее определяем способ активизации и выгрузки создаваемого приложения (см. рис. 7.30). Так как нет необходимости после завершения работы приложения оставлять его резидентно в памяти, назначаем его автоматическую выгрузку приложения (unload) сразу после завершения его исполнения. Для активизации приложения выберем явный способ запуска (Explicitly). В этом случае запуск приложения производится через меню Unigraphics: File->Execute UG/Open->User Function... После нажатия кнопки “Finish” Visual Studio автоматически формирует рабочий проект Mesh со всеми необходимыми файлами и настройками компиляции и линковки для создания DLL-библиотеки Mesh.dll. В качестве активной конфигурации в меню Visual Studio выберите Win32 Release (наше приложение не столь сложное, чтобы включать отладку): Bild -> Set Active Configuration… (см. рис. 7.31). Рис. 7.31. Выбор активной конфигурации проекта «Заготовка» файла Mesh.c (см. рис. 7.32) включает основную функцию приложения, функцию обработки сообщений о возможных ошибках инициализации и завершения приложения и функцию немедленной его выгрузки. Исходный текст приложения должен размещаться между операторами инициализации приложения UF_initialize() и завершения UF_terminate(). Рис. 7.32. Меню с “заготовкой” файла /************************************************************* ** Mesh.c **************************************************************/ #include <stdio.h> #include <uf.h> #include <uf_ui.h> #include "Mesh.h" extern DllExport void ufusr(char *parm,int *returnCode, int rlen ) { int errorCode = UF_initialize(); //Старт приложения if ( 0 == errorCode ) { // /* Исходный код приложения */ // errorCode = UF_terminate(); // Завершение приложения } PrintErrorMessage( errorCode ); } extern int ufusr_ask_unload( void ) { return( UF_UNLOAD_IMMEDIATELY ); } static void PrintErrorMessage( int errorCode ) { if ( 0 != errorCode ) { char message[133]; UF_get_fail_message( errorCode, message ); UF_UI_set_status( message ); fprintf( stderr, "%s\n", message ); } } Приведем алгоритм работы приложения по построению параметрической кривой: 1. Запрос параметров кривой (габариты прямоугольной области, в которую будет вписана кривая, глубина гравировки, максимальное значение параметра t); 2. Вывод на экран габаритного прямоугольника и изменение масштаба изображения (Fit); 3. Расчет в цикле с заданным шагом по параметру t всех точек кривой, соединение точек отрезками прямых, вывод информации в CLS-файл. Для упрощения приложения предположим, что оно запускается после создания пользователем нового файла модели Unigraphics. Прежде чем приступить к реализации изложенного алгоритма, необходимо отметить, что все APIфункции Unigraphics сгруппированы по разделам и все определения, соглашения или имена переменных, относящиеся к этому разделу, сведены в определенный заголовочный .h-файл. Документация по UG/Open построена также с соблюдением этого принципа, что облегчает поиск требуемой функции или подпрограммы среди сотен API-функций, предоставляемых пользователю. Вот примеры основных разделов и соответствующих им заголовочных файлов. Заголовочный файл Раздел uf_assem.h Работа со сборочными узлами и составляющих их компонентами. uf_curve.h Построение кривых и точек uf_disp.h Управление параметрами отображения информации на экране uf_ui.h Управление элементами пользовательского интерфейса (User Interface) uf_modl.h Программный интерфейс к наиболее общим операциям по работе с твердотельными моделями uf_view.h Управление видами Э то далеко не полный перечень разделов, объединяющих определенные API-функции; приведены только те из них, которые потребуются для реализации нашего примера. Естественно, если вы обращаетесь к какой-либо API-функции Unigraphics, соответствующий заголовочный файл необходимо включить в исходный текст программы. Разберем более подробно те функции, которые будут использованы в нашем приложении. Для более полного изучения UG/Open API адресуем читателя к документации Unigraphics: руководство пользователя содержит не только описание функций и способов обращения к ним, но и большое количество примеров с приведением исходных текстов программ. Прежде всего создадим новый файл модели детали (part), в котором будет создаваться кривая. Функция UF_PART_new, создающая новый файл и делающая этот файл рабочим, выглядит следующим образом: int UF_PART_new( char * part_name , //Имя нового файла int units , // Определение единиц измерения (дюймы или миллиметры) //1 = Миллиметры //2 = Дюймы tag_t * part // Идентификатор вновь созданного файла или NULL_TAG ); Определение функции UF_PART_new находится в файле uf_part.h, его необходимо добавить в список заголовочных файлов. Для ввода параметров создаваемой кривой воспользуемся функцией uc1608(). /***************************************************************** extern UGOPENINTEXPORT int uc1608( char *menu, <input> Сообщение, выводимое в строке подсказки (длина символов). char items[][16], <input> Массив, включающий выводимые на экран строки меню int ip3, int *ia4, <input> Количество пунктов меню <input/output> Начальные значения целочисленных (int) переменных. double *ra5, <input/output> Начальные значения вещественных (double) переменных. int *ip6 <input> сообщения – до 80 Целочисленный массив, определяющий тип вводимых значений. Если ip[n] = 1, вводимое значение будет интерпретироваться как double, если же ip[n] = 0, вводимое значение будет интерпретироваться как целое (int). ); /***************************************************************/ В зависимости от произведенных пользователем действий Функция uc1608 возвращает следующие целочисленные значения: 1 = Нажата кнопка «Back» 2 = Нажата кнопка «Cancel» 3 = Нажата кнопка «OK», но пользователь не изменил начальных значений переменных 4 = Нажата кнопка «OK», при этом пользователь изменил как минимум одно из начальных значений переменных Определение функции uc1608 находится в файле uf_ui.h, его необходимо добавить в список заголовочных файлов. При запуске создаваемого приложения вышеописанное диалоговое окно будет выглядеть примерно так (см. рис. 7.33): Рис. 7.33. Пример диалогового окна Для прекращения выполнения приложения при нажатии пользователем кнопок «Back» или «Cancel» введем в программу проверку возвращаемого функцией uc1608 значения res: if (res == 1 || res == 2) //Нажата кнопка "Back" или "Cancel" { UF_terminate(); } В этом случае дальнейшие построения кривой возможны только при нажатии кнопки «ОК». Параметры кривой могут быть изменены пользователем или приняты в виде предлагаемых начальных значений. Для построения отрезка линии, соединяющей точки кривой с последовательными значениями параметра t, введем определение геометрического объекта Unigraphics: tag_t line; Таким образом объявляется большинство объектов Unigraphics – точки, кривые, поверхности, твердотельные примитивы; tag_t – некий уникальный целочисленный идентификатор объекта модельного пространства, позволяющий программным способом производить создание или удаление объекта, придавать ему определенные свойства или статус (цвет, слой, погашен/высвечен и т.п.). Следует отметить, что при создании нескольких объектов Unigraphics с одним и тем же идентификатором tag_t (такое тоже возможно) значение идентификатора присваивается только последнему из создаваемых объектов. В нашем примере все отрезки линий (а их количество может достигать десятков тысяч) создаются в программе с одним и тем же идентификатором line - в этом случае программно идентифицировать возможно только последний созданный объект. Для идентификации каждого сегмента линии необходимо определить массив объектов tag_t. Для создания отрезка линии с заданными координатами начальной и конечной точки необходимо объявить структуру типа UF_CURVE_line_t (ее определение включает файл uf_curve.h; его необходимо добавить в список заголовочных файлов): UF_CURVE_line_t line_coords; При таком способе определения точек линии координаты стартовой точки записываются в виде: X = line_coords.start_point [0]; Y = line_coords.start_point [1]; Z = line_coords.start_point [2]; А координаты конечной точки: X = line_coords.end_point [0]; Y = line_coords.end_point [1]; Z = line_coords.end_point [2]; Для обращения к тригонометрическим функциям sin() и cos() добавим в список заголовочных файлов math.h и приступим собственно к построению ломаной, аппроксимирующей кривую. Так как все отрезки линий создаются по стартовой и конечной точкам, координаты первой точки ломаной (t=0) рассчитаем вне цикла, а координаты всех последующих – в цикле с изменением параметра t от 0 до максимального значения с заданным приращением. Z-координаты для всех точек положим равными 0; значение глубины фрезерования будет учтено в формируемой управляющей программе для станка с ЧПУ. Приведенная система уравнений формирует кривую, вписанную в прямоугольник со сторонами 3.4 и 2.2 (эти значения определяются множителями перед синусами и косинусами), поэтому, для «растяжки» кривой до заданных в меню габаритов будем умножать получаемые координаты точек на соответствующие коэффициенты. Итак: t=0; line_coords.start_point[0] = (W/3.4) * (sin(0.99 * t) - 0.7 * cos(3.01 * t)); line_coords.start_point[1] = (H/2.2) * (cos(1.01 * t) + 0.1 * sin(15.03 * t)); line_coords.start_point[2] = 0.0; for (t=delta_t; t<=t_max; t=t+delta_t) { line_coords.end_point[0] = (W/3.4) * (sin(0.99 * (t*PI/180.)) - 0.7 * cos(3.01 * (t*PI/180.))); line_coords.end_point[1] = (H/2.2) * (cos(1.01 * (t*PI/180.)) + 0.1 * sin(15.03 * (t*PI/180.))); line_coords.end_point[2] = 0.0; UF_CURVE_create_line (&line_coords, &line); line_coords.start_point[0] = line_coords.end_point[0]; line_coords.start_point[1] = line_coords.end_point[1]; line_coords.start_point[2] = line_coords.end_point[2]; } Определение функции UF_CURVE_create_line находится в файле uf_curve.h; его необходимо добавить в список заголовочных файлов. Небольшое замечание: при вычислении тригонометрических функций для перевода градусов в радианы использовалась константа PI=3.14159…, определенная в файле uf_defs.h. Полный текст файла Mech.c выглядит так: /**************************************************************** ** Mesh.c ****************************************************************/ #include <stdio.h> #include <uf.h> #include <uf_ui.h> #include <uf_curve.h> #include <uf_part.h> #include <math.h> #include "Mesh.h" extern DllExport void ufusr( char *parm, int *returnCode, int rlen ) { int res; char menu[5][16]={"Ширина","Высота","Z гравировки","t max", "Delta t"}; double W, H, Z_eng, t_max, delta_t; int menu_items = 5; int default_int[5] = {1,1,1,1,1}; double default_double[5] = {200.0, 100.0, 0.1, 3600.0, 1.0}; int var_type[5] = {1, 1, 1, 1, 1}; // 1 == double; 0 == int; double t; tag_t line; UF_CURVE_line_t line_coords; int errorCode = UF_initialize(); if ( 0 == errorCode ) { res = UF_PART_new ("Mesh.prt", 1, &part); //Создание новой части res = uc1608("Введите параметры", menu, menu_items, default_int, default_double, var_type); if (res == 1 || res == 2) //Нажата кнопка "Back" или "Cancel" { UF_terminate(); } W H Z_eng t_max delta_t = default_double[0]; = default_double[1]; = default_double[2]; = default_double[3]; = default_double[4]; t=0; line_coords.start_point[0] = (W/3.4) * (sin(0.99 * t) - 0.7 * cos(3.01 * t)); line_coords.start_point[1] = (H/2.2) * (cos(1.01 * t) + 0.1 * sin(15.03 * t)); line_coords.start_point[2] = 0.0; for (t=delta_t; t<=t_max; t=t+delta_t) { line_coords.end_point[0] = (W/3.4) * (sin(0.99 * (t*PI/180.)) - 0.7 * cos(3.01 * (t*PI/180.))); line_coords.end_point[1] = (H/2.2) * (cos(1.01 * (t*PI/180.)) + 0.1 * sin(15.03 * (t*PI/180.))); line_coords.end_point[2] = 0.0; UF_CURVE_create_line (&line_coords, &line); line_coords.start_point[0] = line_coords.end_point[0]; line_coords.start_point[1] = line_coords.end_point[1]; line_coords.start_point[2] = line_coords.end_point[2]; } errorCode = UF_terminate(); } PrintErrorMessage( errorCode ); } extern int ufusr_ask_unload( void ) { return( UF_UNLOAD_IMMEDIATELY ); } static void PrintErrorMessage( int errorCode ) { if ( 0 != errorCode ) { char message[133]; UF_get_fail_message( errorCode, message ); UF_UI_set_status( message ); fprintf( stderr, "%s\n", message ); } } Для формирования динамической библиотеки Mesh.dll воспользуемся меню Microsoft Visual C++ (Build->Build Mesh.dll, «горячая» клавиша – F7) (см. рис. 7.34). Результат этих действий – файл Mesh.dll в папке …\Release. Рис. 7.34. Обращение к функции Build Mesh.dll Запуск приложения User Function Для первого запуска приложения User Function запустите Unigraphics и, используя основное меню File->Execute UG/Open->User Function… (см. рис. 7.35) или комбинацию клавиш Ctrl+U, выберите созданную вами динамическую библиотеку Mesh.dll, которая в данном случае представляет собой внутреннее (internal) приложение UG/Open. Рис. 7.35. Запуск приложения User Function Запуск разработанных пользователем приложений User Function возможен только в том случае, если вы располагаете лицензией на запуск UG/Open. Ниже (см. рис. 7.36) приведен пример выполнения приложения Mesh.dll с различной комбинацией исходных параметров. В первом случае параметр t изменяется от 0 до 3600 градусов (то есть радиус-вектор совершает 10 полных оборотов), а кривая вписывается в прямоугольник с размерами 200х100. Рис. 7.36. Кривая при значении параметра t=3600 Второй рисунок (см. рис. 7.37) показывает эту любопытную кривую во всей красе: параметр t меняется от 0 до 36000 (или 100 полных оборотов радиус-вектора)! Открою вам секрет: это то значение параметра, при котором кривая впервые замыкается. Дальнейшее увеличение параметра t не имеет смысла: координаты точек будут повторяться. Однако это справедливо только для тех коэффициентов, которые приведены в примере (0.99, 1.01, 3.01, 15.03). Попробуйте изменить их – и вы получите совершенно другую, непредсказуемую форму кривой. Более того, в качестве самостоятельного упражнения предлагаем добавить в меню выбора параметров кривой эти коэффициенты, чтобы иметь возможность изменять их, не прибегая к перекомпиляции DLLбиблиотеки. Можно добавить и дополнительные возможности: автоматическое масштабирование изображения после завершения построения, выбор цвета по определенному закону для каждого создаваемого отрезка. Еще одно направление – определение закона изменения Z-координаты для каждой точки, тогда замысловатая кривая престанет быть плоской. Рис. 7.37. Окончательный вид кривой