Авторское приложение для КОМПАС-3D: автоматизируем проектирование редукторов
Развитие новых технологий постоянно ужесточает требования, предъявляемые к инженеру-конструктору. На первое место в современном конструировании выходят скорость и динамичность выполнения проектов (чертежей или моделей) в графическом редакторе, а также возможность быстрого внесения в них изменений без какого бы то ни было влияния на качество выполняемых работ или проектируемого объекта. Наверное, каждый инженер неоднократно сталкивался с задачей создания чертежа или модели на основе уже существующего, когда детали вроде бы и не очень различаются, но перерисовывать необходимо все заново. Для решения этой проблемы в системе КОМПАС-3D имеются средства параметризации, посредством которых можно задать определенные связи между отдельными элементами графического компонента, позволяющие при последующей разработке типовых конструкций не переделывать всю модель (чертеж), а изменить лишь несколько параметров. Это дает возможность многократно использовать единожды построенную модель, значительно сокращает время на формирование новых ее модификаций и т.п.
Но что делать, если одних средств параметризации недостаточно, если проектируемые новые 3D-модели хотя и схожи с эталоном, но имеют различия, не позволяющие использовать параметрические зависимости при построении? Например, когда какие-либо значения принимаются конструктивно или выбираются из справочников в зависимости от третьих величин? Иногда расчетные параметры модели изменяются дискретно (к примеру, модуль зубчатых колес всегда согласовывается со стандартными значениями и не может принимать значений, отличных от приведенных в ГОСТ) или не связаны аналитически ни с одним другим параметром. В этом случае на помощь приходят инструментальные средства разработки дополнительных модулей (прикладных библиотек) для КОМПАС-3D KompasAutomation, которые позволяют использовать всю мощь современного объектно-ориентированного программирования совместно с функциями КОМПАС для создания очень гибких и функциональных приложений. Хорошо владея одним из языков программирования и основами трехмерного моделирования в КОМПАС-3D, можно научиться самостоятельно разрабатывать различные по структуре программные модули под КОМПАС для решения широкого круга узкопрофильных задач конструирования. Такие приложения смогут производить сложные вычисления, самостоятельно выбирать необходимые параметры из баз данных, обмениваться данными с внешними приложениями и, как результат, строить 3D-модель или чертеж неограниченной сложности с учетом всех параметров.
Конечно, практика разработки подключаемых модулей (plug-in) на языках Object Pascal, C++ и др. далеко не нова. Архитектура очень многих известных программ трехмерной графики формируется открытой, обеспечивая пользователям возможность самостоятельно расширять функциональность. Речь, в частности, идет об Adobe Photoshop, 3D Studio Max (некоторые plug-in к 3D Studio Max по своим возможностям даже превышают стандартные средства программы, к которой они подключаются) и др. В этой статье нам хотелось бы рассказать о создании проектно-конструкторских библиотек к системе КОМПАС-3D и о тех возможностях, которые предоставляет проектировщику их использование.
Рис. 1. Главное окно подключаемого модуля «РЕДУКТОР-3D V2.1»
Примером, который будет рассмотрен ниже, может служить написанный автором данной статьи на Delphi проект «РЕДУКТОР-3D V2.1» (рис. 1). Этот модуль может производить проектный расчет одноступенчатых редукторов трех видов: цилиндрического, конического или червячного, с последующим построением трехмерной модели (сборки) выбранного и рассчитанного редуктора в среде КОМПАС-3D. Данный проект носит академический характер, поскольку, несмотря на то что все методики расчета и параметры согласованы с ГОСТом, сами редукторы не привязаны к определенным условиям конкретного производства. Зато проект в полной мере демонстрирует возможности применения объектов автоматизации и то, насколько значимых результатов можно достичь в отдельно взятой отрасли машиностроения, расширив возможности КОМПАС-3D за счет использования подобного plug-in. Уровни функциональности и автоматизации проектов практически неограниченны все зависит лишь от фантазии, конструкторских навыков и профессионального уровня программистов разработчиков САПР. Судите сами исходными данными для производимых «РЕДУКТОРом» расчетов служат три числа: вращающий момент ведомого вала, его угловая скорость и передаточное число редуктора (правда, некоторые параметры перед построением можно изменить по желанию проектировщика, например число зубьев шестерни, угол наклона зубьев и др.). Все остальное программа проделает самостоятельно: определит геометрические характеристики, проведет проверочные расчеты, подберет подшипники и шпонки, выполнит компоновку редуктора. После всего этого библиотека готова к формированию 3D-модели. Без какого-либо вмешательства со стороны пользователя за считаные минуты будут построены все детали и сборочные единицы, входящие в редуктор, и создана сборка. Наглядные примеры того, что можно делать с помощью проектного модуля «РЕДУКТОР-3D V2.1», приведены на рис. 2 и 3 (заметьте, что разрезы в моделях также реализованы программно, а не вручную).
Рис. 2. Цилиндрический шевронный редуктор, построенный с помощью библиотеки «РЕДУКТОР-3D V2.1»
Рис. 3. Конический редуктор, спроектированный в библиотеке «РЕДУКТОР-3D V2.1»
Сколько бы у вас ушло времени на моделирование изображенных на рисунках механизмов вручную, даже при достаточном опыте работы в КОМПАС-3D? День-два, не меньше (это еще без учета времени на проектный и проверочный расчеты, предшествующие моделированию). Тогда как при помощи описанной здесь подключаемой библиотеки все построение обоих редукторов не превысило и 10 минут!
Верится с трудом? Убедитесь сами: скачать библиотеку «РЕДУКТОР-3D V2.1» можно на официальном сайте компании АСКОН (www.ascon.ru) в разделе «Техническая поддержка бесплатное ПО».
Разумеется, на то, чтобы «научить» программу автоматически создавать такие сборки, потребовалось немало времени, но это уже головная боль программистов САПР, а не инженеров. Хотя без помощи опытных конструкторов разработчикам программного обеспечения никак не обойтись, ведь помимо досконального знания приемов объектно-ориентированного программирования нужно неплохо разбираться в сопромате, теоретической механике, основах конструирования и многих других предметных науках.
Остановимся более подробно на некоторых деталях программной реализации формирования сборки в КОМПАС-3D на примере уже знакомой вам программы расчета и проектирования редукторов. На мой взгляд, изложенный далее материал будет интересен не только узкому кругу разработчиков программного обеспечения под КОМПАС, но и широкой аудитории инженеров, поскольку множество реализованных программно подходов к формированию сборки способны впоследствии оказывать серьезную помощь при создании схожих сборок вручную.
Хотелось бы поделиться секретами создания графической трехмерной модели зубчатого зацепления. Казалось бы, здесь все просто: создаем 3D-модели колеса и шестерни, вставляем в сборку и… Возможно, опытному пользователю и не составит труда, используя команды панели «Сопряжения», соединить зубчатые колеса так, чтобы они соприкасались точно по линии зацепления и зубья не «зарывались» друг в друга, даже если зацепление косозубое. Но что делать программисту, который, по сути, формирует сборку «вслепую»? Как быть, когда количество зубьев, модуль зацепления, угол наклона зубьев выражены переменными и каждый раз могут принимать различные значения? Ведь при любых параметрах, введенных пользователем или рассчитанных по алгоритму, программа должна не только корректно строить модели зубчатых колес, но и правильно осуществлять их сборку.
Здесь я считаю нужным, не вдаваясь в подробности, сказать несколько слов о том, как именно в моей программе реализовано построение самих колес чтобы читателю было понятнее, о чем дальше пойдет речь. Зубчатый венец формируется копированием по концентрической сетке выреза между зубьями в заготовке зубчатых колес, имитируя работу зубонарезного инструмента (количество копий равно количеству зубьев). Сам вырез создается с помощью операции вырезания выдавливанием для прямозубых колес или с помощью операции вырезания по сечениям для косозубых (рис. 4).
Рис. 4. Создание зубьев цилиндрического колеса с помощью операции вырезания
Теперь можно приступать к решению ранее поставленной задачи, то есть собственно формирования зубчатого зацепления. Сначала на ум приходит, казалось бы, неплохая идея после вставки деталей в сборку повернуть колесо или шестерню в вертикальной плоскости на определенный угол таким образом, чтобы зубья вошли в зацепление. Но не забывайте, что мы создаем сборку программно. При попытке точно определить значение угла поворота нужно будет учитывать то, что количество зубьев и шестерни, и колеса может быть как парным, так и непарным (в зависимости от передаточного числа редуктора), а также что даже при одинаковом количестве зубьев, но при разных модулях диаметр колес будет разным. Записать однозначную аналитическую зависимость определения угла поворота от перечисленных параметров (модуль, диаметр, число зубьев обеих колес) для меня оказалось непосильной задачей, и я сомневаюсь, существует ли такая зависимость вообще…
На самом деле есть значительно более простой способ, позволяющий не вводить в программу лишних расчетов и даже не изменять положения колес после вставки их в сборку, формируя зацепление на этапе проектирования отдельных деталей, а не сборки. Вы уже наверняка догадались, в чем дело. Необходимо так сформировать зубчатый венец колеса и шестерни, чтобы на оси, соединяющей центры колес, с одной стороны (например, на шестерне) всегда размещался зуб, а с другой (на колесе) вырез. Таким образом, вырезать первым нужно именно ту пару зубьев, которая и будет находиться в зацеплении в собранной передаче, что позволит при сборке просто вставить модели и ничего не подгонять. Задача свелась к построению эскизов вырезов, которые будут соприкасаться в одной точке, если нарисовать их в одной плоскости, но на самом деле они будут размещены в разных моделях. Добиться этого совсем не сложно: точку зацепления следует разместить на линии центров, а эскизы вырезов вычертить по обе стороны этой линии, привязываясь к точке зацепления, но отдельно для шестерни и колеса. Думаю, рис. 5 поможет лучше разобраться в этом. Если у вас все равно возникли вопросы, запустите библиотеку «РЕДУКТОР-3D V2.1», создайте модель цилиндрического редуктора и рассмотрите размещение эскизов в зубчатом зацеплении. После этого, думаю, все вопросы должны исчезнуть.
Рис. 5. Размещение эскизов вырезов при программном моделировании зубчатого зацепления
Такой подход в трехмерном моделировании сложных механизмов может помочь как программисту, так и инженеру-конструктору. Ведь разумно выбранный способ построения отдельных деталей проектируемого агрегата способен в дальнейшем значительно упростить сборку.
После того как созданы вырезы с помощью выдавливания или операции по сечениям при любых значениях модуля, числа зубьев, передаточного числа или угла наклона зубьев, вы получите очень точную модель зубчатого зацепления. Чтобы еще больше усовершенствовать программу, можно строить шестерню не в начале координат, а сместив ее на величину межосевого расстояния a w по одной из координатных осей (у меня это ось Z ). Это нисколько не усложнит процесс моделирования шестерни, зато вся программная сборка ограничится в этом случае двумя-тремя инструкциями вставки 3D-модели колес из соответствующих файлов. По умолчанию все детали установятся в точку начала системы координат, но поскольку шестерня «подвинута» на величину a w , то сборка произойдет сама собой!
Рис. 6. Модель косозубого зубчатого зацепления
Рис. 7. Зубчатое коническое колесо и плоскость, содержащая эскиз для формирования выреза зубов
Не меньший интерес представляет сборка конических колес. Здесь ситуацию значительно усложняют конструктивные особенности конического зацепления, в котором оси колес пересекаются в пространстве под прямым углом. Сама форма конических зубчатых колес достаточно сложна для моделирования. Плоскость, содержащая эскиз для выреза проточки между зубьями, должна быть касательной к боковой поверхности колеса, что имеет форму усеченного конуса, для того, чтобы вырезание выдавливанием формировалось в направлении образующей делительного конуса. В результате простое рисование и размещение эскиза доставит немало трудностей программисту, решившему создать приложение, моделирующее конические колеса. Но, допустим, все это уже позади и ваш модуль успешно создает и трехмерные модели, и колеса, и шестерни. Как собрать их в один механизм, именуемый зубчатой конической передачей?
Скажу сразу: методика создания этой сборки не будет отличаться от той, что применялась для цилиндрической передачи. То есть желательно сразу же строить зубчатые колеса таким образом, чтобы при вставке в сборку они автоматически вошли в зацепление. На словах все просто, а на практике процесс оказался гораздо более сложным.
Внимательно присмотревшись к структуре конического зацепления, легко увидеть, что эскизы вырезов, прилегающих к паре зубьев, которые будут находиться в зацеплении, размещены в разных плоскостях (рис. 8). В отличие от цилиндрической передачи, где оба эскиза лежали в одной торцевой плоскости и при их построении можно было легко привязаться к точке зацепления, в коническом редукторе сложно определить местоположение этой точки в пространстве, общее для обоих эскизов при их построении в разных плоскостях. Можно, конечно, начать решать задачу «в лоб» и попробовать рассчитать угловое смещение одной плоскости относительно другой, а также местоположение в них эскизов. Честно говоря, не видя иного выхода, поначалу я так и сделал. Но, тщетно провозившись дня два, переписав не один десяток строк программного кода, я ни на шаг не сдвинулся с мертвой точки. Программа прекрасно моделировала отдельно шестерню и колесо, но упрямо отказывалась правильно складывать сборку. Окончательно запутавшись в расчетах, я понял, что нужно искать другой выход… И нашел его! Как всегда бывает, выход этот оказался невероятно простым!
Один мой друг когда-то сказал: «Хороший программист ленивый программист»… Действительно, иногда, столкнувшись со сложной задачей, стоит сесть и подумать, прежде чем начинать что-либо делать. Поверьте это может серьезно сэкономить вам время.
Итак, я думал о том, что построение одной плоскости не представляет затруднений. Но каким образом привязать к ней вторую плоскость, я не знал. Вдруг меня осенило: плоскость эскиза выреза зуба колеса и плоскость эскиза профиля зуба шестерни, находящиеся в зацеплении, совпадают! То есть, вы построили, например, плоскость в модели колеса, касательную к торцевой поверхности и содержащую эскиз выреза между зубами. Так вот, в этой же плоскости, но уже в модели шестерни, следует разместить эскиз, но не выреза, а профиля зуба! Проще говоря, на коническом колесе зубчатый венец мы будем вырезать, а на шестерне «приклеивать». При этом начинать следует опять-таки с того выреза в колесе и с того зуба шестерни, которые будут в зацеплении в сборке, а затем делать их копию по концентрической сетке. Для наглядности приведу один пример (рис. 9).
Рис. 8. Зубчатое коническое зацепление
Рис. 9. Модели конического колеса с одним вырезом и конической шестерни с одним зубом
Этот пример вдвойне интересен: помимо демонстрации того, насколько может упроститься сборка вследствие грамотного построения деталей, он показывает, как важно иногда использовать нетрадиционный подход к процессу создания трехмерных моделей. Воображение инженера подсказывает ему способы моделирования деталей, зачастую имитирующие различные методы обработки заготовок (нарезание, точение, штамповка, литье и др.). На самом деле, иногда полезно отойти от стереотипов и начать мыслить абстрактно, не по шаблону, видя перед собой лишь конечный результат готовую модель, а не стандартные пути к ее созданию. В реальной жизни зубчатые колеса изготавливаются, как правило, литьем или штамповкой, а потом в них фрезой вырезается зубчатый венец. И при моделировании (как вручную, так и программно) мы волей-неволей повторяем (имитируем) те же операции. Пример с конической шестерней показал, как нетипичный подход к созданию модели до предела упростил сборку передачи, а сама модель при этом ничуть не пострадала.
Рис. 10. 3D-модель конической шестерни с «приклеенными» зубьями
Рис. 11. Червячный редуктор
Рис. 12. Создание модели вала-червяка
Было бы несправедливо не упомянуть еще об одном типе механических передач, проектирование которых реализовано в подключаемой библиотеке «РЕДУКТОР-3D V2.1». Речь идет о червячных редукторах. Червячное зацепление также задача не из простых, но после всего вышеизложенного создание сборки больше не представляется таким уж сложным делом.
Витки вала-червяка можно сформировать с помощью кинематического вырезания. В качестве траектории вырезания следует взять объект «спираль цилиндрическая» с параметрами, подобранными таким образом, чтобы угол подъема спирали был равен углу подъема витков червяка, а ее диаметр делительному диаметру червяка. Суть программной сборки заключается в определении такого положения эскиза для кинематической операции, чтобы после вырезания витки червяка вошли точно между зубьями червячного колеса (считаем, что на вертикальной оси червячного колеса всегда будет находиться вырез между зубьями). В этом случае особенно изощряться не приходится смещение эскиза несложно рассчитать аналитически. На рис. 13 видно, что расстояние, на которое нужно сместить эскиз, можно принимать как 2,5·P или 3,5·P, где P шаг витков червяка, рассчитывается по формуле P = р·m, а m модуль червячного зацепления. Желательно принимать значение с запасом (3,5·P), поскольку длина нарезной части червяка может быть разной. Полученная сборка представлена на рис. 14.
Рис. 13. Размещение эскиза для кинематического вырезания витков червяка
Рис. 14. Червячное зацепление
В заключение хочу отметить, что возможности автоматизации на основе системы КОМПАС-3D практически безграничны. С помощью современных языков объектно-ориентированного программирования можно создавать гибкие функциональные приложения, способные обеспечить значительную экономию времени и сил на формирование трехмерных моделей и сборок. Подключаемые модули могут быть полезны при серийном производстве (с их помощью можно в считаные минуты получить готовые сборки любого из выпускаемых агрегатов, размеры которых будут занесены в базу данных), использоваться при проектировании новых механизмов (в расчетную часть библиотеки можно включать циклы оптимизации различных параметров с тем, чтобы программа сама находила оптимальный вариант построения), а также для любых других целей в отдельно взятых отраслях машиностроения. Расширение сферы использования конструкторских библиотек и их функциональности значительно упростит работу инженера-проектировщика, а появление все новых библиотек позволит абстрагироваться от рутинной работы и сосредоточиться исключительно на конструировании. Возможно, уже в недалеком будущем, благодаря обширному арсеналу конструкторских библиотек, работа по созданию громоздких трехмерных сборок превратится в увлекательную игру наподобие конструктора. Ведь большая часть рутинной и малоэффективной работы будет быстро выполняться посредством подключаемых модулей. На мой взгляд, КОМПАС-3D одна из наиболее продвинутых графических систем в плане внедрения новых решений в сфере автоматизации и развития трехмерной графики в целом.
Максим Кидрук Студент Национального университета водного хозяйства
и природопользования (г.Ровно, Украина). Сертифицированный специалист
по КОМПАС-3D. |